@solcre-org/core-ui 2.11.9 → 2.11.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"solcre-org-core-ui.mjs","sources":["../../../projects/core-ui-library/src/lib/directives/core-host.directive.ts","../../../projects/core-ui-library/src/lib/components/fields/field-errors/field-errors.component.ts","../../../projects/core-ui-library/src/lib/components/active-filters/active-filters.component.ts","../../../projects/core-ui-library/src/lib/components/active-filters/active-filters.component.html","../../../projects/core-ui-library/src/lib/enums/global/ModalMode.enum.ts","../../../projects/core-ui-library/src/lib/components/fields/types/base/base-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/checkbox-field/checkbox-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/checkbox-field/checkbox-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/date-field/date-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/date-field/date-field.component.html","../../../projects/core-ui-library/src/lib/enums/global/TimeInterval.enum.ts","../../../projects/core-ui-library/src/lib/components/fields/types/datetime-field/datetime-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/datetime-field/datetime-field.component.html","../../../projects/core-ui-library/src/lib/pipelines/icon-compat.pipeline.ts","../../../projects/core-ui-library/src/lib/components/fields/types/file-field/file-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/file-field/file-field.component.html","../../../projects/core-ui-library/src/lib/interfaces/field-configs/number-field-config.interface.ts","../../../projects/core-ui-library/src/lib/components/fields/types/number-field/number-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/number-field/number-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/password-field/password-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/password-field/password-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/select-field/select-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/select-field/select-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/server-select-field/services/server-select.service.ts","../../../projects/core-ui-library/src/lib/components/loader/services/loader.service.ts","../../../projects/core-ui-library/src/lib/components/fields/types/server-select-field/server-select-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/server-select-field/server-select-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/switch-field/switch-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/switch-field/switch-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/text-area-field/text-area-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/text-area-field/text-area-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/text-field/text-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/text-field/text-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/time-field/time-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/time-field/time-field.component.html","../../../projects/core-ui-library/src/lib/directives/DynamicField.directive.ts","../../../projects/core-ui-library/src/lib/interfaces/field-configs/multi-entry-field.config.interface.ts","../../../projects/core-ui-library/src/lib/components/fields/types/multi-entry-field/multi-entry-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/multi-entry-field/multi-entry-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/smart-field/smart-field.component.ts","../../../projects/core-ui-library/src/lib/components/loader/loader.component.ts","../../../projects/core-ui-library/src/lib/components/loader/loader.component.html","../../../projects/core-ui-library/src/lib/components/data-list-item/data-list-item.component.ts","../../../projects/core-ui-library/src/lib/components/data-list-item/data-list-item.component.html","../../../projects/core-ui-library/src/lib/components/data-list/data-list.component.ts","../../../projects/core-ui-library/src/lib/components/data-list/data-list.component.html","../../../projects/core-ui-library/src/lib/components/generic-button/enums/ButtonContext.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-button/enums/ButtonSize.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-button/enums/ButtonType.enum.ts","../../../projects/core-ui-library/src/lib/providers/permission.provider.ts","../../../projects/core-ui-library/src/lib/services/permission.service.ts","../../../projects/core-ui-library/src/lib/components/main-nav/enums/PermissionsResources.enum.ts","../../../projects/core-ui-library/src/lib/services/permission-wrapper.service.ts","../../../projects/core-ui-library/src/lib/components/generic-button/generic-button.component.ts","../../../projects/core-ui-library/src/lib/components/generic-button/generic-button.component.html","../../../projects/core-ui-library/src/lib/enums/global/FieldType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-tabs/generic-tabs.component.ts","../../../projects/core-ui-library/src/lib/components/generic-tabs/generic-tabs.component.html","../../../projects/core-ui-library/src/lib/components/generic-modal/generic-modal.component.ts","../../../projects/core-ui-library/src/lib/components/generic-modal/generic-modal.component.html","../../../projects/core-ui-library/src/lib/components/generic-pagination/services/pagination.service.ts","../../../projects/core-ui-library/src/lib/enums/global/AlertType.enum.ts","../../../projects/core-ui-library/src/lib/services/alert.service.ts","../../../projects/core-ui-library/src/lib/models/security/permission.model.ts","../../../projects/core-ui-library/src/lib/models/users/role.model.ts","../../../projects/core-ui-library/src/lib/models/users/users.model.ts","../../../projects/core-ui-library/src/lib/models/global/file-template-type.model.ts","../../../projects/core-ui-library/src/lib/utilities/date.utility.ts","../../../projects/core-ui-library/src/lib/utilities/isSameDate.util.ts","../../../projects/core-ui-library/src/lib/models/global/file.model.ts","../../../projects/core-ui-library/src/lib/services/global-api-config.service.ts","../../../projects/core-ui-library/src/lib/services/file-upload.service.ts","../../../projects/core-ui-library/src/lib/services/header-configuration.service.ts","../../../projects/core-ui-library/src/lib/enums/global/ApiMethods.enum.ts","../../../projects/core-ui-library/src/lib/services/model-api.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/services/table-data.service.ts","../../../projects/core-ui-library/src/lib/components/generic-pagination/generic-pagination.component.ts","../../../projects/core-ui-library/src/lib/components/generic-pagination/generic-pagination.component.html","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/enums/DialogActions.enum.ts","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/services/confirmation-dialog.service.ts","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/confirmation-dialog.component.html","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/enums/DropdownDirection.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/enums/TableAction.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/services/dropdown.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/dropdown.component.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/dropdown.component.html","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/enums/FilterType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/services/filter.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/filter-modal.component.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/filter-modal.component.html","../../../projects/core-ui-library/src/lib/components/generic-table/services/table-action.service.ts","../../../projects/core-ui-library/src/lib/enums/global/HeaderElementType.enum.ts","../../../projects/core-ui-library/src/lib/services/header.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/services/inline-edit.service.ts","../../../projects/core-ui-library/src/lib/models/global/configuration.model.ts","../../../projects/core-ui-library/src/lib/models/global/file-template.model.ts","../../../projects/core-ui-library/src/lib/models/global/file-type.model.ts","../../../projects/core-ui-library/src/lib/models/users/reset-password.model.ts","../../../projects/core-ui-library/src/lib/services/active-filters-event.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/generic-table.component.ts","../../../projects/core-ui-library/src/lib/components/generic-table/generic-table.component.html","../../../projects/core-ui-library/src/lib/components/alert/alert.component.ts","../../../projects/core-ui-library/src/lib/components/alert/alert-container.component.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/enums/DocumentAction.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/enums/DocumentDisplayMode.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/generic-documentation.component.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/generic-documentation.component.html","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-width.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-height.enum.ts","../../../projects/core-ui-library/src/lib/enums/global/FileType.enum.ts","../../../projects/core-ui-library/src/lib/enums/global/NumberRange.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/layout-breakpoint.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/layout-visibility.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/layout.enums.ts","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-position.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-mobile-type.enum.ts","../../../projects/core-ui-library/src/lib/components/layout/services/layout.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/services/sidebar.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/services/sidebar-mobile-modal.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/services/sidebar-template-registry.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/generic-sidebar.component.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/generic-sidebar.component.html","../../../projects/core-ui-library/src/lib/components/generic-timeline/enums/TimelineStatus.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/enums/TimelineType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/services/timeline.service.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/generic-timeline.component.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/generic-timeline.component.html","../../../projects/core-ui-library/src/lib/components/header/header.component.ts","../../../projects/core-ui-library/src/lib/components/header/header.component.html","../../../projects/core-ui-library/src/lib/components/main-nav/enums/PermissionsActions.enum.ts","../../../projects/core-ui-library/src/lib/components/main-nav/enums/SidebarState.enum.ts","../../../projects/core-ui-library/src/lib/components/main-nav/services/main-nav.service.ts","../../../projects/core-ui-library/src/lib/constants/version.ts","../../../projects/core-ui-library/src/lib/components/main-nav/main-nav.component.ts","../../../projects/core-ui-library/src/lib/components/main-nav/main-nav.component.html","../../../projects/core-ui-library/src/lib/components/layout/services/layout-state.service.ts","../../../projects/core-ui-library/src/lib/components/layout/layout.ts","../../../projects/core-ui-library/src/lib/components/layout/layout.html","../../../projects/core-ui-library/src/lib/components/layout-auth/layout-auth.ts","../../../projects/core-ui-library/src/lib/components/layout-auth/layout-auth.html","../../../projects/core-ui-library/src/lib/components/generic-steps/enums/StepStatus.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/enums/StepType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/enums/StepSize.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/generic-steps.component.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/generic-steps.component.html","../../../projects/core-ui-library/src/lib/enums/global/RatingSize.enum.ts","../../../projects/core-ui-library/src/lib/enums/global/RatingType.enum.ts","../../../projects/core-ui-library/src/lib/services/rating.service.ts","../../../projects/core-ui-library/src/lib/components/generic-rating/generic-rating.component.ts","../../../projects/core-ui-library/src/lib/components/generic-rating/generic-rating.component.html","../../../projects/core-ui-library/src/lib/components/progress-bar/progress-bar-size.enum.ts","../../../projects/core-ui-library/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/core-ui-library/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/core-ui-library/src/lib/components/card/card.component.ts","../../../projects/core-ui-library/src/lib/components/image-modal/image-modal.component.ts","../../../projects/core-ui-library/src/lib/components/image-modal/image-modal.component.html","../../../projects/core-ui-library/src/lib/interceptors/cache-busting.interceptor.ts","../../../projects/core-ui-library/src/lib/interceptors/permissions.interceptor.ts","../../../projects/core-ui-library/src/lib/interfaces/field-configs/file-field-config.interface.ts","../../../projects/core-ui-library/src/lib/services/translation-merge.service.ts","../../../projects/core-ui-library/src/lib/loaders/core-ui-translate.loader.ts","../../../projects/core-ui-library/src/lib/validators/password.validator.ts","../../../projects/core-ui-library/src/lib/providers/translate.providers.ts","../../../projects/core-ui-library/src/lib/providers/permission-enums.provider.ts","../../../projects/core-ui-library/src/lib/providers/permission-service.provider.ts","../../../projects/core-ui-library/src/lib/providers/api-configuration.provider.ts","../../../projects/core-ui-library/src/lib/services/core-ui-translate.service.ts","../../../projects/core-ui-library/src/lib/services/permission-enums.service.ts","../../../projects/core-ui-library/src/public-api.ts","../../../projects/core-ui-library/src/solcre-org-core-ui.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: '[coreHost]', standalone: true })\nexport class CoreHostDirective {\n @HostBinding('attr.coreui-element') coreuiElement = '';\n}","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreHostDirective } from '../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-field-errors',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n template: `\n @if (errors().length > 0) {\n @for (error of errors(); track error) {\n <span class=\"c-entry-error\">{{ error | translate }}</span>\n }\n }\n `,\n styleUrls: []\n})\nexport class FieldErrorsComponent {\n errors = input.required<string[]>();\n} ","import { Component, input, output, computed, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ActiveFilterItem, ActiveFiltersConfig } from '../../interfaces/global/ActiveFiltersConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-active-filters',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './active-filters.component.html',\n styleUrl: './active-filters.component.scss'\n})\nexport class ActiveFiltersComponent {\n private translateService = inject(TranslateService);\n\n activeFilters = input<ActiveFilterItem[]>([]);\n config = input<ActiveFiltersConfig>({});\n \n onFilterRemove = output<ActiveFilterItem>();\n onClearAll = output<void>();\n\n visibleFilters = computed(() => {\n const filters = this.activeFilters();\n const maxVisible = this.config().maxVisibleFilters;\n return maxVisible ? filters.slice(0, maxVisible) : filters;\n });\n\n hasFilters = computed(() => this.activeFilters().length > 0);\n\n showClearButton = computed(() => {\n const config = this.config();\n return config.showClearButton !== false && this.hasFilters();\n });\n\n activeFiltersTitle = computed(() => {\n const config = this.config();\n return config.activeFiltersTitle || 'filters.activeFilters';\n });\n\n clearFiltersLabel = computed(() => {\n const config = this.config();\n return config.clearFiltersLabel || 'filters.clearFilters';\n });\n\n containerClass = computed(() => {\n const config = this.config();\n const baseClass = 'c-active-filters';\n return config.customClass ? `${baseClass} ${config.customClass}` : baseClass;\n });\n\n removeFilter(filter: ActiveFilterItem): void {\n if (filter.removable !== false) {\n this.onFilterRemove.emit(filter);\n }\n }\n\n clearAllFilters(): void {\n this.onClearAll.emit();\n }\n\n getDisplayValue(filter: ActiveFilterItem): string {\n if (filter.displayValue) {\n return filter.displayValue;\n }\n\n const formatters = this.config().formatters;\n if (formatters && formatters[filter.key]) {\n return formatters[filter.key](filter.value);\n }\n\n if (filter.value instanceof Date) {\n return filter.value.toLocaleDateString();\n }\n\n if (Array.isArray(filter.value)) {\n return filter.value.join(', ');\n }\n\n return String(filter.value);\n }\n\n isFilterRemovable(filter: ActiveFilterItem): boolean {\n return filter.removable !== false;\n }\n}\n","<div class=\"c-active-filters u-push-b\" *ngIf=\"hasFilters()\">\n <p class=\"c-active-filters__text\">\n <span class=\"icon-filter\"></span>\n {{ activeFiltersTitle() | translate }}:\n </p>\n \n <button \n *ngFor=\"let filter of visibleFilters()\" \n class=\"c-active-filters__button\" \n type=\"button\"\n [title]=\"filter.label | translate\"\n (click)=\"removeFilter(filter)\"\n [disabled]=\"!isFilterRemovable(filter)\">\n {{ filter.label | translate }}: {{ getDisplayValue(filter) }}\n <span *ngIf=\"isFilterRemovable(filter)\" class=\"icon-close c-active-filters__button-icon\"></span>\n </button>\n \n <button \n *ngIf=\"showClearButton()\"\n class=\"c-active-filters__remove\" \n type=\"button\"\n (click)=\"clearAllFilters()\">\n {{ clearFiltersLabel() | translate }}\n </button>\n</div>\n","export enum ModalMode {\n VIEW = 'view',\n EDIT = 'edit',\n CREATE = 'create',\n FILTER = 'filter'\n}","import { Component, input, output, computed, signal, effect, ElementRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DataBaseModelInterface } from '@solcre-org/core';\n\n@Component({\n selector: 'core-base-field',\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule],\n template: '',\n})\nexport abstract class BaseFieldComponent<T extends DataBaseModelInterface> {\n field = input.required<ModalFieldConfig<T>>();\n value = input.required<any>();\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n protected formControl = signal(new FormControl(''));\n private lastEmittedValue: any = undefined;\n private isEnterPressed = false;\n\n isReadonly = computed(() => {\n if (this.mode() === ModalMode.FILTER) return false;\n if (this.mode() === ModalMode.VIEW) return true;\n return this.evaluateReadonly();\n });\n\n protected evaluateReadonly(): boolean {\n const readonly = this.field().readonly;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.formValue());\n } catch {\n return false;\n }\n }\n return readonly || false;\n }\n\n hasError = computed(() => {\n return this.errors().length > 0;\n });\n\n ngOnInit() {\n this.initializeFormControl();\n }\n\n constructor() {\n effect(() => {\n const newValue = this.value();\n const currentValue = this.formControl().value;\n \n if (this.normalizeValue(newValue) !== this.normalizeValue(currentValue)) {\n this.formControl().setValue(newValue, { emitEvent: false });\n this.lastEmittedValue = newValue;\n }\n });\n }\n\n protected initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n const initialValue = this.value() ?? '';\n \n this.formControl.set(new FormControl(initialValue, validators));\n this.lastEmittedValue = initialValue;\n \n this.formControl().valueChanges.subscribe(newValue => {\n if (this.normalizeValue(newValue) !== this.normalizeValue(this.lastEmittedValue)) {\n this.lastEmittedValue = newValue;\n this.onValueChange(newValue);\n }\n });\n }\n\n private normalizeValue(value: any): string {\n if (value === null || value === undefined) return '';\n return String(value).trim();\n }\n\n protected onBlur(event?: FocusEvent): void {\n if (this.isEnterPressed) {\n this.resetEnterFlag();\n return;\n }\n\n if (event && !this.isRealBlur(event)) {\n return;\n }\n\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n\n private isRealBlur(event: FocusEvent): boolean {\n const relatedTarget = event.relatedTarget as HTMLElement;\n const currentTarget = event.currentTarget as HTMLElement;\n \n if (!relatedTarget) {\n setTimeout(() => {\n const activeElement = document.activeElement as HTMLElement;\n if (!this.isWithinFieldArea(activeElement, currentTarget)) {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n }, 10);\n return false;\n }\n \n return !this.isWithinFieldArea(relatedTarget, currentTarget);\n }\n\n private isWithinFieldArea(target: HTMLElement | null, inputElement: HTMLElement): boolean {\n if (!target || !inputElement) return false;\n \n let fieldContainer = inputElement.closest('.c-entry-item');\n if (!fieldContainer) {\n fieldContainer = inputElement.closest('label') || inputElement.parentElement;\n }\n \n if (!fieldContainer) return false;\n \n return fieldContainer.contains(target);\n }\n\n protected onEnter(event: KeyboardEvent): void {\n this.isEnterPressed = true;\n \n this.onEnterEvent.emit(this.field().key as keyof T);\n \n setTimeout(() => {\n const target = event.target as HTMLInputElement;\n if (target) {\n target.blur();\n }\n }, 10);\n }\n\n private resetEnterFlag(): void {\n setTimeout(() => {\n this.isEnterPressed = false;\n }, 100);\n }\n\n protected onValueChange(newValue: any): void {\n this.valueChange.emit(newValue);\n }\n\n onBlurInput(event?: FocusEvent): void {\n const control = this.formControl();\n if (control) {\n control.markAsTouched();\n this.onBlur(event);\n }\n }\n\n onEnterInput(event: KeyboardEvent): void {\n this.onEnter(event);\n }\n} ","import { Component, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { CheckboxModalFieldConfig, CheckboxOption } from '../../../../interfaces/field-configs/checkbox-field-config.interface';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-checkbox-field',\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './checkbox-field.component.html',\n styleUrl: './checkbox-field.component.scss'\n})\nexport class CheckboxFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n isDisabled = computed(() => this.mode() === ModalMode.VIEW || this.evaluateReadonly());\n \n externalLink = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.externalLink;\n });\n\n detail = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.detail;\n });\n\n options = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.options || [];\n });\n\n allowMultiple = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.allowMultiple ?? true;\n });\n\n isRequired = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.required ?? false;\n });\n\n hasMultipleOptions = computed(() => this.options().length > 0);\n\n hasSeparatedOptions = computed(() => (this.field() as CheckboxModalFieldConfig<T>).checkboxConfig?.separatedOptions ?? false);\n\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n \n effect(() => {\n if (this.formControl() && this.hasMultipleOptions()) {\n const options = this.options();\n const currentValue = this.formControl().value;\n \n if (this.shouldUpdateFromOptions(currentValue, options)) {\n this.updateValueFromSelected();\n }\n }\n });\n }\n \n private shouldUpdateFromOptions(currentValue: any, options: CheckboxOption[]): boolean {\n if ((currentValue === null || currentValue === undefined)) {\n return options.some(option => (option.selected ?? false) === true);\n }\n \n if (this.allowMultiple() && Array.isArray(currentValue) && currentValue.length === 0) {\n return options.some(option => (option.selected ?? false) === true);\n }\n \n if (this.allowMultiple()) {\n const selectedValues = options.filter(opt => (opt.selected ?? false) === true).map(opt => opt.value);\n const currentArray = Array.isArray(currentValue) ? currentValue : [];\n return selectedValues.length > 0 && \n JSON.stringify(selectedValues.sort()) !== JSON.stringify(currentArray.sort());\n } else {\n const selectedOption = options.find(opt => (opt.selected ?? false) === true);\n return (selectedOption && selectedOption.value !== currentValue) as boolean;\n }\n }\n \n private updateValueFromSelected(): void {\n if (this.allowMultiple()) {\n const selectedValues = this.options()\n .filter(option => (option.selected ?? false) === true)\n .map(option => option.value);\n \n if (selectedValues.length > 0) {\n this.formControl().patchValue(selectedValues as never, { emitEvent: false });\n }\n } else {\n const selectedOption = this.options().find(option => (option.selected ?? false) === true);\n if (selectedOption) {\n this.formControl().setValue(selectedOption.value, { emitEvent: false });\n }\n }\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n \n let initialValue = this.getInitialValue();\n \n this.formControl.set(new FormControl<any>(initialValue, validators));\n \n this.formControl().valueChanges.subscribe(newValue => {\n if(newValue !== this.value()) {\n this.onValueChange(newValue);\n }\n });\n }\n \n private getInitialValue(): any {\n if (this.value() !== undefined && this.value() !== null) {\n if (this.hasMultipleOptions() && this.allowMultiple()) {\n return Array.isArray(this.value()) ? this.value() : [this.value()];\n }\n return this.value();\n }\n \n if (this.field().defaultValue !== undefined && this.field().defaultValue !== null) {\n if (this.hasMultipleOptions() && this.allowMultiple()) {\n return Array.isArray(this.field().defaultValue) ? this.field().defaultValue : [this.field().defaultValue];\n }\n return this.field().defaultValue;\n }\n \n if (this.hasMultipleOptions()) {\n if (this.allowMultiple()) {\n const selectedValues = this.options()\n .filter(option => (option.selected ?? false) === true)\n .map(option => option.value);\n \n if (selectedValues.length > 0) {\n return selectedValues;\n }\n \n if (this.isRequired()) {\n const firstOption = this.options()[0];\n return firstOption ? [firstOption.value] : [];\n }\n return [];\n } else {\n const selectedOption = this.options().find(option => (option.selected ?? false) === true);\n \n if (selectedOption) {\n return selectedOption.value;\n }\n \n if (this.isRequired()) {\n const firstOption = this.options()[0];\n return firstOption ? firstOption.value : null;\n }\n return null;\n }\n }\n \n return false;\n }\n\n handleOptionChange(option: CheckboxOption, event: Event): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n this.onOptionChange(option, isChecked);\n }\n\n onOptionChange(option: CheckboxOption, isChecked: boolean): void {\n const currentValue = this.formControl().value;\n \n if (this.allowMultiple()) {\n let newValue = Array.isArray(currentValue) ? [...currentValue] : [];\n \n if (isChecked) {\n if (!newValue.includes(option.value)) {\n newValue.push(option.value);\n }\n } else {\n if (this.isRequired() && newValue.length <= 1) {\n return;\n }\n newValue = newValue.filter(val => val !== option.value);\n }\n \n this.formControl().patchValue(newValue as never);\n } else {\n if (isChecked) {\n this.formControl().setValue(option.value);\n } else if (currentValue === option.value) {\n if (this.isRequired()) {\n return;\n }\n this.formControl().setValue(null);\n }\n }\n }\n\n isOptionSelected(option: CheckboxOption): boolean {\n const currentValue = this.formControl().value;\n \n if (this.allowMultiple()) {\n return Array.isArray(currentValue) && currentValue.includes(option.value);\n } else {\n return currentValue === option.value;\n }\n }\n\n cannotDeselect(option: CheckboxOption): boolean {\n if (!this.isRequired() || !this.isOptionSelected(option)) {\n return false;\n }\n \n const currentValue = this.formControl().value;\n \n if (this.allowMultiple()) {\n const selectedCount = Array.isArray(currentValue) ? currentValue.length : 0;\n return selectedCount <= 1;\n } else {\n return true;\n }\n }\n\n override onValueChange(newValue: any): void {\n super.onValueChange(newValue);\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n\n onRadioChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input && input.checked) {\n const currentValue = this.formControl().value;\n this.formControl().setValue(currentValue || 'true');\n }\n }\n}","<!-- Clase para layout inline cuando hay múltiples opciones -->\n<div class=\"c-entry-toggle-holder\" [class.hasSeparatedOptions]=\"hasSeparatedOptions()\" [class.multiple-inline]=\"hasMultipleOptions()\">\n\n <span class=\"c-entry-text\"\n *ngIf=\"field().label\">{{ field().label | translate }}</span>\n \n @if (hasMultipleOptions()) {\n @for (option of options(); track option.value) {\n\n <!-- ! Solcre: Este .c-entry-toggle debería ser un componente en sí mismo. -->\n <!-- ! Solcre: El cannot-deselect no está over-engineered. Debería ser un Radio. -->\n <label class=\"c-entry-toggle\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [class.cannot-deselect]=\"cannotDeselect(option)\">\n\n <!-- onBlurInput() maneja validaciones y marca el campo como touched para mostrar errores -->\n @if (cannotDeselect(option)) {\n <!-- Usar radio cuando no se puede deseleccionar -->\n <input\n type=\"radio\"\n [attr.id]=\"field().key.toString() + '_' + option.value\"\n [attr.name]=\"field().key.toString()\"\n [checked]=\"isOptionSelected(option)\"\n (change)=\"handleOptionChange(option, $event)\"\n (blur)=\"onBlurInput()\"\n />\n } @else {\n <!-- Usar checkbox normal cuando se puede deseleccionar -->\n <input\n type=\"checkbox\"\n [attr.id]=\"field().key.toString() + '_' + option.value\"\n [attr.name]=\"allowMultiple() ? field().key.toString() + '[]' : field().key.toString()\"\n [checked]=\"isOptionSelected(option)\"\n (change)=\"handleOptionChange(option, $event)\"\n (blur)=\"onBlurInput()\"\n />\n }\n <span class=\"c-entry-toggle__toggle\"></span>\n\n <span class=\"c-entry-toggle__text\">\n {{ option.label | translate }}\n @if(option.externalLink) {\n <!-- Link externo funcional implementado -->\n <a class=\"icon-external-link-thin\" [href]=\"option.externalLink\" target=\"_blank\"></a>\n }\n </span>\n @if(option.detail) {\n <!-- Texto de detalle funcional implementado -->\n <span class=\"c-form-checkbox__detail\">{{ option.detail }}</span>\n }\n </label>\n\n }\n } @else {\n <!-- ! Solcre: Este .c-entry-toggle debería ser un componente en sí mismo. -->\n <!-- ! Solcre: El cannot-deselect no está over-engineered. Debería ser un Radio. -->\n <label class=\"c-entry-toggle\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [class.cannot-deselect]=\"isRequired() && !!formControl().value\">\n\n <!-- onBlurInput() maneja validaciones y marca el campo como touched para mostrar errores -->\n @if (isRequired() && !!formControl().value) {\n <!-- Usar radio cuando es requerido y tiene valor (cannot-deselect) -->\n <input\n type=\"radio\"\n [attr.id]=\"field().key.toString()\"\n [attr.name]=\"field().key.toString()\"\n [checked]=\"!!formControl().value\"\n (change)=\"onRadioChange($event)\"\n (blur)=\"onBlurInput()\"\n />\n } @else {\n <!-- Usar checkbox normal cuando se puede deseleccionar -->\n <input\n type=\"checkbox\"\n [attr.id]=\"field().key.toString()\"\n [attr.name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n />\n }\n <span class=\"c-entry-toggle__toggle\"></span>\n <span class=\"c-entry-toggle__text\">\n {{ field().label | translate }}\n @if(externalLink()) {\n <!-- Link externo funcional implementado -->\n <a class=\"icon-external-link-thin\" [href]=\"externalLink()\" target=\"_blank\"></a>\n }\n </span>\n @if(detail()) {\n <!-- Texto de detalle funcional implementado -->\n <span class=\"c-form-checkbox__detail\">{{ detail() }}</span>\n }\n </label>\n }\n\n <core-field-errors [errors]=\"errors()\" />\n</div> \n ","import { Component, ElementRef, AfterViewInit, OnDestroy, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-date-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './date-field.component.html',\n})\nexport class DateFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> implements AfterViewInit, OnDestroy {\n constructor(private elementRef: ElementRef) {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n \n let initialValue = this.value() ?? '';\n if (initialValue && typeof initialValue === 'string') {\n const date = new Date(initialValue);\n if (!isNaN(date.getTime())) {\n initialValue = date.toISOString().split('T')[0];\n }\n } else if (initialValue instanceof Date) {\n if (!isNaN(initialValue.getTime())) {\n initialValue = initialValue.toISOString().split('T')[0];\n } else {\n initialValue = '';\n }\n }\n \n this.formControl.set(new FormControl(initialValue, validators));\n\n if (initialValue) {\n setTimeout(() => {\n this.formControl().setValue(initialValue, { emitEvent: false });\n }, 0);\n }\n\n this.formControl().valueChanges.subscribe(newValue => {\n if(newValue !== this.value()) {\n this.onValueChange(newValue);\n }\n });\n }\n\n ngAfterViewInit() {\n this.initializeDateInput();\n }\n\n ngOnDestroy() {\n this.removeDateInputListeners();\n }\n\n private initializeDateInput() {\n const input = this.elementRef.nativeElement.querySelector('input[type=\"date\"]');\n if (input) {\n input.addEventListener('click', this.showDatePicker.bind(this));\n input.addEventListener('focus', this.showDatePicker.bind(this));\n input.addEventListener('input', this.updateHasValue.bind(this));\n this.updateHasValue({ target: input });\n }\n }\n\n private removeDateInputListeners() {\n const input = this.elementRef.nativeElement.querySelector('input[type=\"date\"]');\n if (input) {\n input.removeEventListener('click', this.showDatePicker.bind(this));\n input.removeEventListener('focus', this.showDatePicker.bind(this));\n input.removeEventListener('input', this.updateHasValue.bind(this));\n }\n }\n\n private showDatePicker(event: Event) {\n const input = event.target as HTMLInputElement;\n try {\n if (input.showPicker && typeof input.showPicker === 'function') {\n input.showPicker();\n }\n } catch (error) {}\n }\n\n private updateHasValue(event: { target: HTMLInputElement }) {\n if (event.target.value) {\n event.target.classList.add('has-value');\n } else {\n event.target.classList.remove('has-value');\n }\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n\n onCalendarClick(event: Event): void {\n const button = event.target as HTMLElement;\n const input = button?.closest('.c-entry-input')?.querySelector('input[type=\"date\"]') as HTMLInputElement;\n if (input && input.showPicker && typeof input.showPicker === 'function') {\n try {\n input.showPicker();\n } catch (error) {}\n }\n }\n}\n","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <span class=\"c-entry-input\"\n [class.is-placeholder]=\"!formControl().value\"\n style=\"--chars: 10\"\n [class.is-invalid]=\"hasError()\">\n \n <input type=\"date\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\">\n \n <button class=\"c-entry-input__addon icon-calendar-thin\" \n tabindex=\"-1\"\n type=\"button\"\n (click)=\"onCalendarClick($event)\"></button>\n\n \n </span>\n <core-field-errors [errors]=\"errors()\" />\n</label>\n","export enum TimeInterval {\n MINUTES_15 = '15_MINUTES',\n MINUTES_30 = '30_MINUTES',\n HOURLY = 'HOURLY',\n}","import { Component, computed, input, output, signal, SimpleChanges, OnInit, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { TimeInterval } from '../../../../enums/global/TimeInterval.enum';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-datetime-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './datetime-field.component.html',\n})\nexport class DatetimeFieldComponent<T extends DataBaseModelInterface> implements OnInit {\n field = input.required<ModalFieldConfig<T>>();\n value = input<Date | null>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<Date | null>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n ModalMode = ModalMode;\n TimeInterval = TimeInterval;\n\n selectedDate = signal<Date | null>(null);\n selectedHour = signal<number>(0);\n selectedMinute = signal<number>(0);\n\n hours: number[] = Array.from({ length: 24 }, (_, i) => i);\n\n hoursOptions = computed(() => {\n return this.hours.map(hour => ({\n value: hour,\n label: hour.toString().padStart(2, '0')\n }));\n });\n\n availableMinutes = computed(() => {\n const interval = this.field().timeInterval;\n switch (interval) {\n case TimeInterval.MINUTES_15:\n return [0, 15, 30, 45];\n case TimeInterval.MINUTES_30:\n return [0, 30];\n case TimeInterval.HOURLY:\n return [0];\n default:\n return Array.from({ length: 60 }, (_, i) => i);\n }\n });\n\n minutesOptions = computed(() => {\n return this.availableMinutes().map(minute => ({\n value: minute,\n label: minute.toString().padStart(2, '0')\n }));\n });\n\n formattedDate = computed(() => {\n const date = this.selectedDate();\n if (!date || isNaN(date.getTime())) return '';\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n return `${year}-${month}-${day}`;\n });\n\n isDisabled = computed(() => {\n if (this.mode() === ModalMode.FILTER) return false;\n if (this.mode() === ModalMode.VIEW) return true;\n return this.evaluateReadonly();\n });\n\n hasError = computed(() => {\n return this.errors().length > 0;\n });\n\n private evaluateReadonly(): boolean {\n const readonly = this.field().readonly;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.formValue());\n } catch {\n return false;\n }\n }\n return readonly || false;\n }\n\n constructor() {\n effect(() => {\n const newValue = this.value();\n if (newValue && !isNaN(newValue.getTime())) {\n const newDate = new Date(newValue);\n this.selectedDate.set(newDate);\n this.selectedHour.set(newDate.getHours());\n this.selectedMinute.set(this.roundToNearestInterval(newDate).getMinutes());\n }\n });\n }\n\n ngOnInit(): void {\n this.initializeValues();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) {\n this.initializeValues();\n }\n }\n\n private initializeValues(): void {\n const date = this.value();\n if (date && !isNaN(date.getTime())) {\n const newDate = new Date(date);\n this.selectedDate.set(newDate);\n this.selectedHour.set(newDate.getHours());\n const roundedMinute = this.roundToNearestInterval(newDate).getMinutes();\n this.selectedMinute.set(roundedMinute);\n } else {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n this.selectedDate.set(today);\n this.selectedHour.set(0);\n this.selectedMinute.set(0);\n }\n }\n\n onDateChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const newDate = input.value ? new Date(input.value + 'T00:00:00') : null;\n if (newDate && !isNaN(newDate.getTime())) {\n newDate.setHours(this.selectedHour());\n newDate.setMinutes(this.selectedMinute());\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n this.selectedDate.set(newDate);\n this.emitValue();\n }\n }\n\n onHourChange(value: number): void {\n this.selectedHour.set(value);\n this.emitValue();\n }\n\n onMinuteChange(value: number): void {\n this.selectedMinute.set(value);\n this.emitValue();\n }\n\n private emitValue(): void {\n const date = this.selectedDate();\n if (!date || isNaN(date.getTime())) {\n this.valueChange.emit(null);\n return;\n }\n\n const newDate = new Date(date.getTime());\n newDate.setHours(this.selectedHour());\n newDate.setMinutes(this.selectedMinute());\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n\n this.valueChange.emit(newDate);\n }\n\n private roundToNearestInterval(date: Date): Date {\n const interval = this.field()?.timeInterval;\n if (!interval) return date;\n\n const minutes = date.getMinutes();\n let roundedMinutes: number;\n\n switch (interval) {\n case TimeInterval.MINUTES_15:\n roundedMinutes = Math.round(minutes / 15) * 15;\n break;\n case TimeInterval.MINUTES_30:\n roundedMinutes = Math.round(minutes / 30) * 30;\n break;\n case TimeInterval.HOURLY:\n roundedMinutes = 0;\n break;\n default:\n return date;\n }\n\n const roundedDate = new Date(date);\n roundedDate.setMinutes(roundedMinutes);\n roundedDate.setSeconds(0);\n roundedDate.setMilliseconds(0);\n\n if (roundedMinutes === 60) {\n roundedDate.setHours(roundedDate.getHours() + 1);\n roundedDate.setMinutes(0);\n }\n\n return roundedDate;\n }\n\n onBlur(): void {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n\n onEnter(event: KeyboardEvent): void {\n this.onEnterEvent.emit(this.field().key as keyof T);\n const target = event.target as HTMLElement;\n if (target) {\n target.blur();\n }\n }\n\n onCalendarClick(event: Event): void {\n const button = event.target as HTMLElement;\n const input = button?.closest('.c-entry-input')?.querySelector('input[type=\"date\"]') as HTMLInputElement;\n if (input && input.showPicker && typeof input.showPicker === 'function') {\n try {\n input.showPicker();\n } catch (error) {}\n }\n }\n}","<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <label class=\"c-entry-text\" *ngIf=\"field().label\" [for]=\"field().key.toString()\">{{ field().label | translate }}</label>\n <div class=\"c-entry-datetime\">\n <span class=\"c-entry-input\" [class.is-invalid]=\"hasError()\">\n <input\n type=\"date\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [value]=\"formattedDate()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onDateChange($event)\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"onEnter($any($event))\"\n />\n <button class=\"c-entry-input__addon icon-calendar-thin\" \n tabindex=\"-1\"\n type=\"button\"\n (click)=\"onCalendarClick($event)\"></button>\n </span>\n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [items]=\"hoursOptions()\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [ngModel]=\"selectedHour()\"\n (ngModelChange)=\"onHourChange($event)\"\n [disabled]=\"isDisabled()\"\n [clearable]=\"false\"\n [searchable]=\"false\"\n (blur)=\"onBlur()\"\n placeholder=\"HH\"\n >\n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n <span class=\"c-entry-datetime__separator\">:</span>\n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [items]=\"minutesOptions()\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [ngModel]=\"selectedMinute()\"\n (ngModelChange)=\"onMinuteChange($event)\"\n [disabled]=\"isDisabled()\"\n [clearable]=\"false\"\n [searchable]=\"false\"\n (blur)=\"onBlur()\"\n placeholder=\"MM\"\n >\n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n </div>\n <core-field-errors [errors]=\"errors()\" />\n</div>\n\n\n","// icon-compat.pipe.ts\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'coreIconCompat',\n standalone: true\n})\nexport class IconCompatPipe implements PipeTransform {\n transform(value: string | string[] | null | undefined): string[] {\n if (!value) return [];\n\n const tokens = Array.isArray(value)\n ? value\n : value.split(/\\s+/).filter(Boolean);\n\n const normalized: string[] = [];\n\n for (const t of tokens) {\n if (/^fa-[a-z0-9-]+$/i.test(t)) {\n // Si es fa-xxx → meter 'fa' y el icono\n if (!normalized.includes('fa')) {\n normalized.push('fa');\n }\n normalized.push(t);\n } else if (/^icon-/i.test(t)) {\n // Ya tiene icon-\n normalized.push(t);\n } else {\n // “Pelado” → convertir a icon-\n normalized.push(`icon-${t}`);\n }\n }\n\n return normalized;\n }\n}\n","import { Component, signal, computed, inject, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { AuthService, DataBaseModelInterface } from '@solcre-org/core';\nimport { FileFieldConfig } from '../../../../interfaces/field-configs/file-field-config.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../../../pipelines/icon-compat.pipeline';\n\ninterface ServerFile {\n id: string;\n filename: string;\n size?: number;\n type?: string;\n s3_key?: string;\n created_at?: string;\n updated_at?: string;\n}\n\n@Component({\n selector: 'core-file-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './file-field.component.html',\n styleUrl: './file-field.component.scss',\n})\nexport class FileFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n private authService = inject(AuthService);\n selectedFiles = signal<File[]>([]);\n existingFiles = signal<ServerFile[]>([]);\n previewUrls = signal<string[]>([]);\n errorMessage = signal<string>('');\n errorParams = signal<any>(null);\n\n displayErrorMessage = computed(() => {\n const message = this.errorMessage();\n const params = this.errorParams();\n return message && params ? { key: message, params } : message ? { key: message } : null;\n });\n\n fieldConfig = computed(() => this.field() as FileFieldConfig<T>);\n isEditMode = computed(() => this.mode() === ModalMode.EDIT);\n ModalMode = ModalMode;\n \n allFiles = computed(() => {\n const existing = this.existingFiles();\n const selected = this.selectedFiles();\n return [...existing, ...selected];\n });\n\n override ngOnInit() {\n super.ngOnInit();\n this.initializeFiles();\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n const initialValue = this.value() ?? null;\n\n const cfg = this.fieldConfig();\n const extraValidators: ValidatorFn[] = [];\n if (cfg.multiple && (cfg.minFiles || cfg.maxFiles)) {\n extraValidators.push(this.filesCountValidator(cfg.minFiles, cfg.maxFiles));\n }\n\n this.formControl.set(new FormControl(initialValue, [...validators, ...extraValidators]) as any);\n }\n\n private filesCountValidator(min?: number, max?: number): ValidatorFn {\n return (control: AbstractControl) => {\n const val = control.value;\n const filesArr = Array.isArray(val) ? val : (val ? [val] : []);\n const count = filesArr.length;\n const errors: any = {};\n if (typeof min === 'number' && count < min) {\n errors.minFiles = { required: min, actual: count };\n }\n if (typeof max === 'number' && count > max) {\n errors.maxFiles = { required: max, actual: count };\n }\n return Object.keys(errors).length ? errors : null;\n };\n }\n\n private initializeFiles() {\n const currentValue = this.value();\n \n if (currentValue) {\n if (currentValue instanceof File) {\n this.selectedFiles.set([currentValue]);\n this.generatePreviews([currentValue]);\n } else if (Array.isArray(currentValue)) {\n const files = currentValue.filter(v => v instanceof File);\n const serverFiles = currentValue.filter(v => this.isServerFile(v));\n \n this.selectedFiles.set(files);\n this.existingFiles.set(serverFiles);\n this.generatePreviews(files);\n } else if (this.isServerFile(currentValue)) {\n this.existingFiles.set([currentValue]);\n }\n }\n }\n\n isServerFile(value: any): value is ServerFile {\n return value && typeof value === 'object' && 'id' in value && 'filename' in value;\n }\n\n private generatePreviews(files: File[]) {\n const urls: string[] = [];\n files.forEach(file => {\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n if (e.target?.result) {\n urls.push(e.target.result as string);\n this.previewUrls.set([...urls]);\n }\n };\n reader.readAsDataURL(file);\n }\n });\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) return;\n\n const incoming = Array.from(input.files);\n const cfg = this.fieldConfig();\n\n const currentSelected = this.selectedFiles();\n const combined = cfg.multiple ? [...currentSelected, ...incoming] : [incoming[0]];\n\n if (cfg.accept) {\n const acceptedTypes = cfg.accept.split(',').map(type => type.trim());\n const invalidFiles = combined.filter(file => \n !acceptedTypes.some(type => {\n if (type.startsWith('.')) {\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n }\n const pattern = new RegExp('^' + type.replace('/*', '/.*').replace('*', '.*') + '$');\n return pattern.test(file.type);\n })\n );\n if (invalidFiles.length) {\n this.setLocalError('files.errors.invalidType');\n return;\n }\n }\n\n if (cfg.maxSize) {\n const oversized = combined.filter(f => f.size > cfg.maxSize!);\n if (oversized.length) {\n this.setLocalError('files.errors.maxSize');\n return;\n }\n }\n\n const totalCount = (this.existingFiles().length) + combined.length;\n if (typeof cfg.maxFiles === 'number' && totalCount > cfg.maxFiles) {\n this.setLocalError('files.errors.maxFiles', { required: cfg.maxFiles });\n return;\n }\n if (typeof cfg.minFiles === 'number' && totalCount < cfg.minFiles) {\n this.setLocalError('files.errors.minFiles', { required: cfg.minFiles });\n } else {\n this.clearLocalError();\n }\n\n if (this.isEditMode() && !cfg.multiple) {\n this.existingFiles.set([]);\n }\n\n this.selectedFiles.set(cfg.multiple ? combined : [combined[0]]);\n this.generatePreviews(this.selectedFiles());\n \n this.formControl().markAsTouched();\n this.emitCurrentValue();\n }\n\n private setLocalError(translationKey: string, interpolationParams?: any) {\n this.errorMessage.set(translationKey);\n this.errorParams.set(interpolationParams);\n \n const currentErrors = this.formControl().errors || {};\n (this.formControl() as any).setErrors({ ...currentErrors, fileField: translationKey });\n }\n\n private clearLocalError() {\n this.errorMessage.set('');\n this.errorParams.set(null);\n \n const errs = { ...(this.formControl().errors || {}) };\n if ('fileField' in errs) {\n delete (errs as any).fileField;\n }\n const next = Object.keys(errs).length ? errs : null;\n (this.formControl() as any).setErrors(next);\n }\n\n removeFile(index: number) {\n const all = this.allFiles();\n const fileToRemove = all[index];\n \n if (this.isServerFile(fileToRemove)) {\n const existing = [...this.existingFiles()];\n const idx = existing.findIndex(f => f.id === (fileToRemove as ServerFile).id);\n if (idx !== -1) {\n existing.splice(idx, 1);\n this.existingFiles.set(existing);\n }\n } else { \n const selected = [...this.selectedFiles()];\n const idx = selected.indexOf(fileToRemove as File);\n if (idx !== -1) {\n selected.splice(idx, 1);\n this.selectedFiles.set(selected);\n this.generatePreviews(selected);\n }\n }\n \n this.validateCurrentState();\n \n this.formControl().markAsTouched();\n this.emitCurrentValue();\n }\n\n private validateCurrentState() {\n const cfg = this.fieldConfig();\n const totalCount = this.existingFiles().length + this.selectedFiles().length;\n \n if (typeof cfg.minFiles === 'number' && totalCount < cfg.minFiles) {\n this.setLocalError('files.errors.minFiles', { required: cfg.minFiles });\n } else {\n this.clearLocalError();\n }\n }\n\n private emitCurrentValue() {\n const selected = this.selectedFiles();\n const existing = this.existingFiles();\n \n if (this.fieldConfig().multiple) {\n const all = [...existing, ...selected];\n this.onValueChange(all.length > 0 ? all : null);\n (this.formControl() as any).setValue(all.length > 0 ? all : null, { emitEvent: false });\n } else {\n let toEmit: any = null;\n \n if (selected.length > 0) {\n toEmit = selected[0];\n } else if (existing.length > 0) {\n toEmit = existing[0];\n }\n \n this.onValueChange(toEmit);\n (this.formControl() as any).setValue(toEmit, { emitEvent: false });\n }\n }\n\n getFileIcon(file: File): string {\n if (file.type.startsWith('image/')) return 'icon-image';\n if (file.type.includes('pdf')) return 'icon-file';\n if (file.type.includes('word')) return 'icon-word';\n if (file.type.includes('excel') || file.type.includes('spreadsheet')) return 'icon-excel';\n return 'icon-file';\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n getCurrentDate(): string {\n const now = new Date();\n const day = now.getDate().toString().padStart(2, '0');\n const month = (now.getMonth() + 1).toString().padStart(2, '0');\n const year = now.getFullYear();\n const hours = now.getHours().toString().padStart(2, '0');\n const minutes = now.getMinutes().toString().padStart(2, '0');\n return `${day}/${month}/${year} ${hours}:${minutes}`;\n }\n\n getCurrentUser(): string {\n return this.authService.getLoggedStartData()?.username || '';\n }\n\n getPreviewIndex(file: any): number {\n if (this.isServerFile(file)) return -1;\n return this.selectedFiles().indexOf(file as File);\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}\n","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n @if (field().label) {\n <span class=\"c-entry-text\">{{ field().label | translate }}</span>\n }\n <div class=\"c-entry-file\" [class.has-error]=\"hasError()\">\n @if(fieldConfig().multiple || isEditMode() || allFiles().length === 0) {\n <label class=\"c-entry-file__label\">\n <span class=\"icon-upload c-entry-file__icon\"></span>\n <input\n type=\"file\"\n class=\"c-entry-file__input\"\n (change)=\"onFileSelected($event)\"\n [accept]=\"fieldConfig().accept\"\n [multiple]=\"fieldConfig().multiple\"\n (blur)=\"onBlurInput()\"\n [readonly]=\"isReadonly()\"\n >\n {{ fieldConfig().placeholder ?? fieldConfig().label | translate }}\n @if(fieldConfig().acceptString) {\n <br>\n <span class=\"c-entry-file__filename\" id=\"file-name\">{{ fieldConfig().acceptString }}</span>\n }\n </label>\n }\n\n @if (allFiles().length > 0) {\n <div class=\"c-attachments\">\n <p class=\"c-entry-text\">{{ 'files.attachedFiles' | translate }}</p>\n \n <ul class=\"c-attachments__list\">\n @for (file of allFiles(); track $index; let i = $index) {\n <li class=\"c-attachments__item\">\n <div class=\"c-bulleted-text\">\n @if(!isServerFile(file)) {\n <time>{{ getCurrentDate() }}</time>\n <span>{{ getCurrentUser() }}</span>\n }\n </div>\n \n <div class=\"c-attachments__holder\">\n @if(!isServerFile(file) && file.type.startsWith('image/') && fieldConfig().showPreview !== false) {\n <div class=\"c-attachments__content\">\n @if(getPreviewIndex(file) >= 0 && previewUrls()[getPreviewIndex(file)]) {\n <picture class=\"c-attachments__pic c-pic\">\n <img [src]=\"previewUrls()[getPreviewIndex(file)]\" [alt]=\"file.name\" loading=\"lazy\">\n </picture>\n }\n <div class=\"c-attachments__text\">\n <span class=\"c-attachments__name-file\">{{ file.name }}</span>\n <span class=\"c-attachments__file-size\">({{ formatFileSize(file.size) }})</span>\n </div>\n </div>\n } @else {\n <a class=\"c-attachments__content\">\n @if(isServerFile(file)) {\n <span class=\"icon-file\"></span>\n {{ file.filename }}\n } @else {\n <span [class]=\"getFileIcon(file)\"></span>\n <div class=\"c-attachments__text\">\n <span class=\"c-attachments__name-file\">{{ file.name }}</span>\n <span class=\"c-attachments__file-size\">({{ formatFileSize(file.size) }})</span>\n </div>\n }\n </a>\n }\n\n <div class=\"c-attachments__actions u-flex u-flex--wrap\">\n <button \n type=\"button\" \n class=\"c-link context:error\" \n (click)=\"removeFile(i)\"\n [title]=\"'files.remove' | translate\"\n >\n <span class=\"icon-delete\"></span>\n {{ 'files.remove' | translate }}\n </button>\n\n @if(fieldConfig().customActions) {\n @for(action of fieldConfig().customActions; track action.id) {\n <button \n type=\"button\"\n class=\"c-link c-link--underlined\" \n (click)=\"action.action(file)\"\n [title]=\"action.label | translate\"\n >\n {{ action.label | translate }}\n <span [ngClass]=\"action.icon | coreIconCompat\"></span>\n </button>\n }\n }\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n <core-field-errors [errors]=\"errors()\" />\n @if(displayErrorMessage()) {\n <span class=\"c-entry-error\">{{ displayErrorMessage()!.key | translate:displayErrorMessage()!.params }}</span>\n }\n</label>\n","import { ModalFieldConfig } from '../global/ModalFieldConfig.interface';\n\nexport enum NumberFieldConfigType {\n DEFAULT = 'default',\n WITH_ICON = 'with-icon',\n OUTSIDE = 'outside'\n}\n\nexport interface NumberFieldConfig {\n type?: NumberFieldConfigType;\n icon?: string;\n}\n\nexport interface NumberModalFieldConfig<T> extends ModalFieldConfig<T> {\n numberConfig?: NumberFieldConfig;\n} ","import { Component, ElementRef, AfterViewInit, OnDestroy, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { NumberModalFieldConfig, NumberFieldConfigType } from '../../../../interfaces/field-configs/number-field-config.interface';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-number-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './number-field.component.html',\n styleUrl: './number-field.component.scss'\n})\nexport class NumberFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> implements AfterViewInit, OnDestroy {\n readonly NumberFieldConfigType = NumberFieldConfigType;\n private controls: HTMLButtonElement[] = [];\n\n fieldType = computed(() => (this.field() as NumberModalFieldConfig<T>).numberConfig?.type || NumberFieldConfigType.DEFAULT);\n public iconClass = computed(() => {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n return this.fieldType() === NumberFieldConfigType.WITH_ICON ? numberField.numberConfig?.icon : null;\n });\n\n getCharsWidth(): string | null {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n const chars = (numberField.numberConfig as any)?.chars;\n return chars ? chars.toString() : null;\n }\n\n isDisabled(): boolean {\n return this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n }\n\n getMinValue(): number {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n return (numberField.numberConfig as any)?.min ?? 0;\n }\n\n getMaxValue(): number | null {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n return (numberField.numberConfig as any)?.max ?? null;\n }\n\n isDecrementDisabled(): boolean {\n if (this.isDisabled()) return true;\n const currentValue = Number(this.formControl().value) || 0;\n const minValue = this.getMinValue();\n return currentValue <= minValue;\n }\n\n isIncrementDisabled(): boolean {\n if (this.isDisabled()) return true;\n const currentValue = Number(this.formControl().value) || 0;\n const maxValue = this.getMaxValue();\n return maxValue !== null && currentValue >= maxValue;\n }\n\n constructor(private elementRef: ElementRef) {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n ngAfterViewInit() {\n this.initializeControls();\n }\n\n ngOnDestroy() {\n this.removeControlListeners();\n }\n\n private initializeControls() {\n const formGroup = this.elementRef.nativeElement.closest('.c-form__group');\n if (formGroup) {\n this.controls = Array.from(formGroup.querySelectorAll('.js-input-number-control')) as HTMLButtonElement[];\n this.controls.forEach(control => {\n control.addEventListener('click', this.handleControlClick.bind(this));\n });\n this.updateControlsState();\n }\n }\n\n private removeControlListeners() {\n this.controls.forEach(control => {\n control.removeEventListener('click', this.handleControlClick.bind(this));\n });\n }\n\n private handleControlClick(event: Event) {\n const button = event.currentTarget as HTMLButtonElement;\n const control = button.getAttribute('data-control');\n if (control) {\n const change = parseInt(control);\n if (!isNaN(change)) {\n this.onControlClick(change);\n }\n }\n }\n\n onControlClick(change: number): void {\n if (this.isReadonly()) return;\n const currentValue = Number(this.formControl().value) || 0;\n const newValue = Math.max(0, currentValue + change);\n this.formControl().setValue(newValue.toString());\n }\n\n private updateControlsState() {\n const currentValue = Number(this.formControl().value) || 0;\n this.controls.forEach(control => {\n const controlValue = control.getAttribute('data-control');\n if (controlValue) {\n const changeValue = parseInt(controlValue);\n if (!isNaN(changeValue) && changeValue < 0) {\n control.disabled = currentValue <= 0;\n }\n }\n });\n }\n\n override onValueChange(newValue: any): void {\n const parsedValue = Number(newValue);\n if (isNaN(parsedValue)) {\n this.formControl().setValue('0');\n return;\n }\n \n const validValue = Math.max(0, parsedValue);\n super.onValueChange(validValue);\n this.updateControlsState();\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}","<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!--\n ✅! Solcre: Detalles para Ambos tipos de inputs implementados:\n ✅ title y aria-label de los botones - Ahora usan traducciones dinámicas\n ✅ style=\"--chars: XXX\" - Implementado con getCharsWidth()\n ✅ Botón de Sumar chequea el atributo max - Implementado isIncrementDisabled()\n ✅ Botón de Restar chequea el atributo min - Implementado isDecrementDisabled()\n ✅ Estado disabled agregado (disabled y .is-disabled) - Implementado isDisabled()\n ✅ Atributos min/max agregados a los inputs\n (?) El .c-entry-stepper o .c-entry-input debería ser un componente en sí mismo (No me queda claro esto)\n -->\n\n @if (fieldType() === NumberFieldConfigType.OUTSIDE) {\n\n <div class=\"c-entry-stepper\" \n [style.--chars]=\"getCharsWidth()\"\n [class.is-disabled]=\"isDisabled()\">\n\n <button class=\"c-entry-stepper__control icon-counter-down\"\n type=\"button\"\n [disabled]=\"isDecrementDisabled()\"\n (click)=\"onControlClick(-1)\"\n data-control=\"-1\"\n [title]=\"'number-field.decrement' | translate\"\n [attr.aria-label]=\"'number-field.decrement' | translate\"\n tabindex=\"-1\"></button>\n\n <input class=\"c-entry-input\"\n type=\"number\"\n [min]=\"getMinValue()\"\n [max]=\"getMaxValue()\"\n inputmode=\"numeric\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\">\n\n <button class=\"c-entry-stepper__control icon-counter-up\"\n type=\"button\"\n [disabled]=\"isIncrementDisabled()\"\n (click)=\"onControlClick(1)\"\n data-control=\"1\"\n [title]=\"'number-field.increment' | translate\"\n [attr.aria-label]=\"'number-field.increment' | translate\"\n tabindex=\"-1\"></button>\n </div>\n \n } @else {\n\n <label class=\"c-entry-input\"\n [style.--chars]=\"getCharsWidth()\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\">\n <span *ngIf=\"iconClass()\" class=\"{{ iconClass() | coreIconCompat }}\"></span>\n\n <input\n type=\"number\"\n [min]=\"getMinValue()\"\n [max]=\"getMaxValue()\"\n inputmode=\"decimal\"\n [class.is-disabled]=\"isDisabled()\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n />\n\n <span class=\"c-entry-number-controls\">\n <button class=\"icon-arrow-up\"\n type=\"button\"\n [disabled]=\"isIncrementDisabled()\"\n (click)=\"onControlClick(1)\"\n data-control=\"1\"\n [title]=\"'number-field.increment' | translate\"\n [attr.aria-label]=\"'number-field.increment' | translate\"\n tabindex=\"-1\"\n ></button>\n <button class=\"icon-arrow-down\"\n type=\"button\"\n [disabled]=\"isDecrementDisabled()\"\n (click)=\"onControlClick(-1)\"\n data-control=\"-1\"\n [title]=\"'number-field.decrement' | translate\"\n [attr.aria-label]=\"'number-field.decrement' | translate\"\n tabindex=\"-1\"\n ></button>\n </span>\n </label>\n }\n <core-field-errors [errors]=\"errors()\" />\n</div> <!-- .c-entry-item -->\n","import { Component, signal, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-password-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './password-field.component.html',\n styleUrl: './password-field.component.scss'\n})\nexport class PasswordFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n showPassword = signal(false);\n\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n inputType() {\n return this.showPassword() ? 'text' : 'password';\n }\n\n togglePasswordVisibility() {\n this.showPassword.set(!this.showPassword());\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}","<!-- ! Solcre: Esto lo estoy haciendo a ciegas 😅 -->\n \n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <label class=\"c-entry-input\"\n [class.is-invalid]=\"hasError()\"\n [class.is-readonly]=\"hasError()\"\n [class.is-disabled]=\"hasError()\">\n\n @if (field().prefixIcon) {\n <span class=\"c-entry-input__addon {{ field().prefixIcon }}\"></span>\n }\n\n <input \n [type]=\"inputType()\" \n [formControl]=\"formControl()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n (blur)=\"onBlurInput()\">\n\n <button class=\"c-entry-input__addon\"\n (click)=\"togglePasswordVisibility()\"\n [class]=\"showPassword()? 'icon-password-hide-thin' :'icon-password-thin'\"\n ></button>\n\n </label>\n <core-field-errors [errors]=\"errors()\" />\n</div> <!-- .c-entry-item -->\n\n","import { Component, computed, effect, ViewChild, output, input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { NgSelectModule, NgSelectComponent } from '@ng-select/ng-select';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { SelectFieldConfig } from '../../../../interfaces/field-configs/select-field-config.interface';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n \n@Component({\n selector: 'core-select-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './select-field.component.html',\n styleUrl: './select-field.component.scss'\n})\nexport class SelectFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n @ViewChild(NgSelectComponent) ngSelect!: NgSelectComponent;\n \n override field = input.required<SelectFieldConfig<T>>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n \n private isInitialized = signal<boolean>(false);\n \n computedValue = computed(() => {\n const value = this.value();\n if (this.field().multiple && !Array.isArray(value)) {\n return value ? [value] : [];\n }\n return value;\n });\n \n constructor() {\n super();\n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n \n effect(() => {\n const fieldCfg = this.field() as any;\n if ('dynamicOptions' in fieldCfg && typeof fieldCfg.dynamicOptions === 'function') {\n const newOpts = fieldCfg.dynamicOptions(this.rowData() as any);\n if (Array.isArray(newOpts)) {\n fieldCfg.options = newOpts;\n if (newOpts.length === 0 && this.field().multiple && Array.isArray(this.formControl().value)) {\n setTimeout(() => {\n this.formControl().setValue([] as any, { emitEvent: false });\n this.ngSelect?.clearModel();\n }, 0);\n }\n }\n }\n });\n\n effect(() => {\n const fieldCfg = this.field() as any;\n const formValue = this.formValue();\n \n if ('dynamicValue' in fieldCfg && typeof fieldCfg.dynamicValue === 'function' && formValue) {\n const newValue = fieldCfg.dynamicValue(formValue);\n const currentValue = this.formControl().value;\n \n if (newValue !== null && newValue !== undefined && newValue !== currentValue) {\n setTimeout(() => {\n this.formControl().setValue(newValue, { emitEvent: true });\n this.valueChange.emit(newValue);\n }, 0);\n }\n }\n });\n }\n \n override ngOnInit() {\n super.ngOnInit();\n \n const currentInitialValue = this.formControl().value;\n \n if (!this.field().multiple && typeof currentInitialValue === 'string' && currentInitialValue.trim() === '') {\n this.formControl().setValue(null, { emitEvent: false });\n }\n \n const fieldOptions = this.field().options;\n if (fieldOptions && fieldOptions.length > 0 && currentInitialValue !== null && currentInitialValue !== undefined) {\n const matchingOption = fieldOptions.find(opt => \n opt.value === currentInitialValue || \n String(opt.value) === String(currentInitialValue)\n );\n \n if (matchingOption) {\n setTimeout(() => {\n this.formControl().setValue(currentInitialValue, { emitEvent: false });\n this.isInitialized.set(true);\n }, 0);\n }\n }\n\n setTimeout(() => {\n const fieldCfg = this.field() as any;\n const formValue = this.formValue();\n \n if ('dynamicValue' in fieldCfg && typeof fieldCfg.dynamicValue === 'function' && formValue) {\n const newValue = fieldCfg.dynamicValue(formValue);\n const currentValue = this.formControl().value;\n \n if (newValue !== null && newValue !== undefined && newValue !== currentValue) {\n this.formControl().setValue(newValue, { emitEvent: true });\n this.valueChange.emit(newValue);\n }\n }\n }, 10);\n }\n \n compareWith = (item: any, selected: any): boolean => {\n if (!item || selected === null || selected === undefined) {\n return false;\n }\n \n const itemValue = item.value || item;\n \n if (typeof selected === 'number' && typeof itemValue === 'number') {\n const result = itemValue === selected;\n return result;\n }\n \n if (String(itemValue) === String(selected)) {\n return true;\n }\n \n if (typeof selected === 'object' && selected !== null && 'id' in selected) {\n const result = String(itemValue) === String(selected.id);\n return result;\n }\n \n return false;\n };\n \n override onValueChange(newValue: any): void {\n this.isInitialized.set(true);\n \n let finalValue: string | string[];\n if (this.field().multiple) {\n const currentValue = Array.isArray(this.computedValue()) ? this.computedValue() : [];\n if (!Array.isArray(newValue)) {\n if (currentValue.includes(newValue)) {\n finalValue = (currentValue as string[]).filter((val: string) => val !== newValue);\n } else {\n finalValue = [...currentValue, newValue];\n }\n } else {\n finalValue = newValue;\n }\n } else {\n finalValue = newValue;\n }\n \n const fieldConfig = this.field();\n if (fieldConfig.onSelectionChange && this.formValue()) {\n try {\n const selectedItem = this.findSelectedItem(finalValue);\n const currentFormValue = { ...this.formValue() };\n currentFormValue[this.field().key as keyof T] = finalValue;\n \n const newFormValue = fieldConfig.onSelectionChange(selectedItem, currentFormValue);\n \n this.selectionChange.emit({\n selectedItem,\n newFormValue\n });\n } catch (error) {\n console.error('Error in onSelectionChange:', error);\n }\n }\n \n super.onValueChange(finalValue);\n }\n \n private findSelectedItem(value: any): any {\n if (!value) return null;\n \n const options = this.field().options || [];\n const bindValue = this.field().bindValue || 'value';\n \n if (this.field().multiple && Array.isArray(value)) {\n return options.filter(option => {\n const optionValue = bindValue === 'value' ? option.value : (option as any)[bindValue];\n return value.includes(optionValue);\n });\n } else {\n return options.find(option => {\n const optionValue = bindValue === 'value' ? option.value : (option as any)[bindValue];\n return optionValue === value;\n }) || null;\n }\n }\n \n isOptionSelected(optionValue: string): boolean {\n const currentValue = this.computedValue();\n if (this.field().multiple && Array.isArray(currentValue)) {\n return currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n \n override onBlurInput(): void {\n this.onBlur();\n }\n}","<!-- Todo: Ng select + c-entry-select -->\n \n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n \n <div class=\"c-entry-input c-entry-input--ng-select c-entry-input--ng-select-alt\"\n [class.is-placeholder]=\"formControl().value === null || formControl().value === undefined || formControl().value === ''\"\n [class.is-invalid]=\"hasError()\">\n <ng-select\n [items]=\"field().options ?? []\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [multiple]=\"field().multiple\"\n [formControl]=\"formControl()\"\n [compareWith]=\"compareWith\"\n [class.has-error]=\"hasError()\"\n [readonly]=\"field().readonly\"\n [clearable]=\"true\"\n [searchable]=\"false\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n >\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n {{ item.label | translate }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n <!-- Estilos que aparecen en la etiqueta del item seleccionado -->\n {{ item.label | translate }}\n </ng-template>\n <ng-template ng-notfound-tmp>\n <span class=\"ng-select-notfound\">{{ 'modal.field.serverSelect.noResults' | translate }}</span>\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </div>\n <core-field-errors [errors]=\"errors()\" />\n</div>","import { inject, Injectable } from '@angular/core';\nimport { Observable, map } from 'rxjs';\nimport { ApiResponseModel, ApiService, DataBaseModelInterface } from '@solcre-org/core';\n\nexport interface SearchResponse<T = any> {\n data?: T[];\n [key: string]: T[] | undefined;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServerSelectService {\n private apiService = inject(ApiService);\n\n search<T extends DataBaseModelInterface>(endpoint: string, term: string, searchParam: string = 'search', responseKey?: string, additionalParams?: { [key: string]: any }): Observable<T[]> {\n const processedEndpoint = this.processEndpoint(endpoint);\n \n const queryParams = new URLSearchParams();\n queryParams.set(searchParam, term);\n \n if (additionalParams) {\n Object.entries(additionalParams).forEach(([key, value]) => {\n if (value !== null && value !== undefined && value !== '') {\n queryParams.set(key, String(value));\n }\n });\n }\n \n const url = `${processedEndpoint}${processedEndpoint.includes('?') ? '&' : '?'}${queryParams.toString()}`;\n \n return this.apiService.fetchData(url).pipe(\n map((response: ApiResponseModel) => {\n if (!response?.data) return [];\n \n if (Array.isArray(response.data)) {\n return response.data as T[];\n }\n \n if (responseKey && typeof response.data === 'object' && responseKey in response.data) {\n const items = response.data[responseKey];\n return Array.isArray(items) ? items as T[] : [];\n }\n \n if (response.data.data && Array.isArray(response.data.data)) {\n return response.data.data as T[];\n }\n \n return [];\n })\n );\n }\n\n getInitialItems<T extends DataBaseModelInterface>(endpoint: string, responseKey?: string): Observable<T[]> {\n const processedEndpoint = this.processEndpoint(endpoint);\n return this.apiService.fetchData(processedEndpoint).pipe(\n map((response: ApiResponseModel) => {\n if (!response?.data) return [];\n \n if (Array.isArray(response.data)) {\n return response.data as T[];\n }\n \n if (responseKey && typeof response.data === 'object' && responseKey in response.data) {\n const items = response.data[responseKey];\n return Array.isArray(items) ? items as T[] : [];\n }\n \n if (response.data.data && Array.isArray(response.data.data)) {\n return response.data.data as T[];\n }\n \n return [];\n })\n );\n }\n\n private processEndpoint(template: string): string {\n if (!template.includes(':id')) {\n return template;\n }\n\n let companyId: string | null = null;\n try {\n const startData = JSON.parse(sessionStorage.getItem('startData') || '{}');\n companyId = startData.company_id || null;\n } catch (_) {}\n\n return template.replace(':id', companyId || '');\n }\n} ","import { Injectable, signal, computed } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoaderService {\n private loadingRequests = signal<Map<string, number>>(new Map());\n private activeLoaders = new BehaviorSubject<number>(0);\n public isLoading$ = this.activeLoaders.asObservable();\n\n isLoading = computed(() => this.loadingRequests().size > 0);\n\n showLoader(requestId: string = 'global'): void {\n \n this.loadingRequests.update(requests => {\n const currentCount = requests.get(requestId) || 0;\n requests.set(requestId, currentCount + 1);\n return new Map(requests);\n });\n \n this.activeLoaders.next(this.activeLoaders.value + 1);\n }\n\n hideLoader(requestId: string = 'global'): void {\n let shouldDecrement = false;\n \n this.loadingRequests.update(requests => {\n const currentCount = requests.get(requestId) || 0;\n if (currentCount > 0) {\n shouldDecrement = true;\n if (currentCount === 1) {\n requests.delete(requestId);\n } else {\n requests.set(requestId, currentCount - 1);\n }\n }\n return new Map(requests);\n });\n\n if (shouldDecrement && this.activeLoaders.value > 0) {\n this.activeLoaders.next(this.activeLoaders.value - 1);\n }\n }\n\n clear(): void {\n this.loadingRequests.set(new Map());\n this.activeLoaders.next(0);\n }\n\n getState(): { activeLoaders: number; requests: Record<string, number> } {\n return {\n activeLoaders: this.activeLoaders.value,\n requests: Object.fromEntries(this.loadingRequests())\n };\n }\n}","import { Component, computed, OnInit, OnDestroy, inject, input, ViewChild, signal, AfterViewInit, effect, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { NgSelectModule, NgSelectComponent } from '@ng-select/ng-select';\nimport { Subject, debounceTime, distinctUntilChanged, switchMap, takeUntil, tap, of, map, finalize, throttleTime, catchError } from 'rxjs';\nimport { SelectServerSideConfig } from '../../../../interfaces/field-configs/select-server-side.config.interface';\nimport { ServerSelectService } from './services/server-select.service';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { LoaderService } from '../../../loader/services/loader.service';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n \ninterface SelectItem extends DataBaseModelInterface {\n [key: string]: any;\n}\n \n@Component({\n selector: 'core-server-select-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './server-select-field.component.html',\n styleUrls: ['./server-select-field.component.scss']\n})\nexport class ServerSelectFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('ngSelect') ngSelect!: NgSelectComponent;\n \n override field = input.required<SelectServerSideConfig<T>>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n \n private serverSelectService = inject(ServerSelectService);\n private loaderService = inject(LoaderService);\n private destroy$ = new Subject<void>();\n private initialized = false;\n private isEvaluatingDynamicOptions = false;\n private lastRowDataHash: string | null = null;\n \n constructor() {\n super();\n \n effect(() => {\n const rowData = this.rowData();\n const field = this.field();\n \n if (rowData && field?.dynamicOptions && this.initialized && !this.isEvaluatingDynamicOptions) {\n const currentHash = JSON.stringify(rowData);\n if (currentHash !== this.lastRowDataHash) {\n this.lastRowDataHash = currentHash;\n this.throttledEvaluateDynamicOptions();\n }\n }\n });\n }\n \n private itemsSignal = signal<SelectItem[]>([]);\n items = computed(() => this.itemsSignal());\n \n private isLoadingSignal = signal<boolean>(false);\n isLoading = computed(() => this.isLoadingSignal());\n \n private hasSearchedSignal = signal<boolean>(false);\n hasSearched = computed(() => this.hasSearchedSignal());\n \n private lastSearchResultsSignal = signal<SelectItem[]>([]);\n lastSearchResults = computed(() => this.lastSearchResultsSignal());\n \n searchInput$ = new Subject<string>();\n private dynamicOptionsThrottle$ = new Subject<void>();\n \n computedValue = computed(() => {\n const value = this.value();\n if (!value) return null;\n return this.field().multiple && !Array.isArray(value) ? (value ? [value] : []) : value;\n });\n \n isSearchable = computed(() => {\n return this.mode() !== 'view' && !this.evaluateReadonly();\n });\n \n compareWith = (item: SelectItem | null, selected: any): boolean => {\n if (!item || !selected) return false;\n \n const bindValue = this.field().bindValue ?? 'id';\n const itemValue = item[bindValue];\n const selectedValue = typeof selected === 'object' ? selected[bindValue] : selected;\n \n return itemValue === selectedValue;\n };\n \n getDisplayLabel = (item: SelectItem): string => {\n if (!item) return '';\n \n const fieldConfig = this.field();\n \n if (fieldConfig.labelFormatter) {\n const result = fieldConfig.labelFormatter(item);\n return result ? result.toString().trim() : '';\n }\n \n if (fieldConfig.labelTemplate) {\n let label = fieldConfig.labelTemplate;\n Object.keys(item).forEach(key => {\n const placeholder = `{${key}}`;\n if (label.includes(placeholder)) {\n const value = item[key] || '';\n label = label.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value.toString().trim());\n }\n });\n return label.trim();\n }\n \n if (fieldConfig.labelKeys && fieldConfig.labelKeys.length > 0) {\n const separator = fieldConfig.labelSeparator ?? ' ';\n const result = fieldConfig.labelKeys\n .map(key => item[key] || '')\n .filter(value => value.toString().trim().length > 0)\n .join(separator);\n return result.trim();\n }\n \n const bindLabel = fieldConfig.bindLabel ?? 'name';\n const result = item[bindLabel] || item.toString();\n return result ? result.toString().trim() : '';\n };\n \n private throttledEvaluateDynamicOptions = (): void => {\n this.dynamicOptionsThrottle$.next();\n };\n \n override ngOnInit() {\n super.ngOnInit();\n const currentInitialValue = this.formControl().value;\n if (!this.field().multiple && typeof currentInitialValue === 'string' && currentInitialValue.trim() === '') {\n this.formControl().setValue(null, { emitEvent: false });\n }\n \n if (this.mode() === 'view' || this.evaluateReadonly()) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n \n this.dynamicOptionsThrottle$.pipe(\n throttleTime(300),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.evaluateDynamicOptions();\n });\n \n this.initializeWithOptions();\n this.initializeWithPreloadedOptions();\n this.initializeWithExistingValues();\n \n this.formControl().valueChanges.pipe(\n debounceTime(100),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(value => {\n if (!this.initialized && value) {\n this.initialized = true;\n this.updateItemsWithValue(value);\n }\n });\n \n this.searchInput$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => {\n this.isLoadingSignal.set(true);\n this.hasSearchedSignal.set(true);\n }),\n switchMap(term => {\n const endpointConfig = this.field().endpoint;\n const endpoint = typeof endpointConfig === 'function' ? endpointConfig(this.getCurrentRowData() as T) : endpointConfig;\n const minSearchLength = this.field().minSearchLength ?? 2;\n \n if (!endpoint || !term) {\n this.isLoadingSignal.set(false);\n return of([]);\n }\n \n if (term.length < minSearchLength) {\n this.isLoadingSignal.set(false);\n return of(this.getSelectedItemsOnly());\n }\n \n const searchParam = this.field().searchParam ?? 'search';\n \n let additionalParams: { [key: string]: any } | undefined;\n const fieldConfig = this.field();\n const currentFormValue = this.formValue();\n if (fieldConfig.additionalParams && currentFormValue) {\n try {\n additionalParams = fieldConfig.additionalParams(currentFormValue);\n } catch (error) {\n console.warn('Error evaluating additionalParams:', error);\n additionalParams = undefined;\n }\n }\n \n return this.serverSelectService.search<SelectItem>(endpoint, term, searchParam, this.field().responseKey, additionalParams).pipe(\n map(items => {\n return this.mergeWithSelectedItems(items || []);\n }),\n catchError(error => {\n console.error('Server select search error:', error);\n return of(this.getSelectedItemsOnly());\n }),\n finalize(() => this.isLoadingSignal.set(false))\n );\n }),\n takeUntil(this.destroy$)\n ).subscribe({\n next: (items) => {\n const mergedItems = this.mergeWithSelectedItems(items || []);\n this.updateItemsIfDifferent(mergedItems);\n \n if (items && items.length > 0) {\n this.lastSearchResultsSignal.set(items);\n }\n },\n error: (error) => {\n console.error('Server select search error:', error);\n this.isLoadingSignal.set(false);\n this.hasSearchedSignal.set(false);\n }\n });\n }\n \n private initializeWithOptions(): void {\n const options = this.field().options;\n if (options && options.length > 0) {\n const items = options.map(option => ({\n [this.field().bindValue ?? 'id']: option.value,\n [this.field().bindLabel ?? 'name']: option.label,\n ...option\n }));\n this.setValidOptions(items);\n this.initialized = true;\n }\n }\n \n private getCurrentRowData(): T | null {\n const rowData = this.rowData();\n return rowData;\n }\n \n private initializeWithPreloadedOptions(): void {\n const preloadedOptions = this.field().preloadedOptions;\n if (preloadedOptions && preloadedOptions.length > 0 && this.hasValue()) {\n this.setValidOptions(preloadedOptions);\n this.initialized = true;\n }\n }\n \n private initializeWithExistingValues(): void {\n const initialValue = this.formControl().value;\n if (initialValue && this.hasValue()) {\n this.initialized = true;\n this.updateItemsWithValue(initialValue);\n }\n }\n \n private hasValue(): boolean {\n const value = this.formControl().value;\n if (!value) return false;\n \n if (Array.isArray(value)) {\n return value.length > 0;\n }\n \n if (typeof value === 'string') {\n return value.trim().length > 0;\n }\n \n return true;\n }\n \n private updateItemsWithValue(value: any): void {\n if (!value) return;\n \n const isMultiple = this.field().multiple;\n \n if (isMultiple) {\n if (Array.isArray(value)) {\n if (value.length > 0 && typeof value[0] === 'object') {\n this.setValidOptions(value);\n }\n } else if (typeof value === 'object') {\n this.setValidOptions([value]);\n }\n } else {\n if (typeof value === 'object') {\n this.setValidOptions([value]);\n }\n }\n }\n \n private setValidOptions(options: any[]): void {\n const validOptions = options.filter(option => {\n if (!option) return false;\n \n if (typeof option === 'object') {\n const bindLabel = this.field().bindLabel ?? 'name';\n const labelValue = option[bindLabel];\n return labelValue && labelValue.toString().trim().length > 0;\n }\n \n return option.toString().trim().length > 0;\n });\n \n if (validOptions.length > 0) {\n this.updateItemsIfDifferent(validOptions);\n }\n }\n \n private updateItemsIfDifferent(newItems: SelectItem[]): void {\n const currentItems = this.items();\n const bindValue = this.field().bindValue ?? 'id';\n \n if (currentItems.length !== newItems.length) {\n this.itemsSignal.set(newItems);\n return;\n }\n \n const isDifferent = newItems.some(newItem => {\n return !currentItems.some(currentItem =>\n currentItem[bindValue] === newItem[bindValue]\n );\n });\n \n if (isDifferent) {\n this.itemsSignal.set(newItems);\n }\n }\n \n private mergeWithSelectedItems(newItems: SelectItem[]): SelectItem[] {\n const bindValue = this.field().bindValue ?? 'id';\n const result: SelectItem[] = [];\n const currentValue = this.formControl().value;\n \n result.push(...newItems);\n \n if (currentValue) {\n const selectedValues = Array.isArray(currentValue) ? currentValue : [currentValue];\n \n selectedValues.forEach(selectedValue => {\n const selectedId = typeof selectedValue === 'object' ? selectedValue[bindValue] : selectedValue;\n \n const exists = result.some(item => item[bindValue] === selectedId);\n \n if (!exists && selectedValue && typeof selectedValue === 'object') {\n result.push(selectedValue);\n }\n });\n }\n \n const uniqueItems: SelectItem[] = [];\n const seenIds = new Set();\n \n result.forEach(item => {\n const itemId = item[bindValue];\n if (!seenIds.has(itemId)) {\n seenIds.add(itemId);\n uniqueItems.push(item);\n }\n });\n \n return uniqueItems;\n }\n \n private getSelectedItemsOnly(): SelectItem[] {\n const currentValue = this.formControl().value;\n const bindValue = this.field().bindValue ?? 'id';\n \n if (!currentValue) {\n return [];\n }\n \n const selectedValues = Array.isArray(currentValue) ? currentValue : [currentValue];\n const result: SelectItem[] = [];\n \n selectedValues.forEach(selectedValue => {\n if (selectedValue && typeof selectedValue === 'object') {\n result.push(selectedValue);\n } else if (selectedValue) {\n const existingItem = this.items().find(item => item[bindValue] === selectedValue);\n if (existingItem) {\n result.push(existingItem);\n }\n }\n });\n \n return result;\n }\n \n ngAfterViewInit(): void {\n setTimeout(() => {\n if (!this.initialized) {\n this.initializeWithExistingValues();\n }\n if (this.initialized && this.field().dynamicOptions) {\n this.throttledEvaluateDynamicOptions();\n }\n }, 100);\n }\n \n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n \n override onValueChange(newValue: any): void {\n if (newValue) {\n const itemToAdd = Array.isArray(newValue) ? newValue : [newValue];\n const currentItems = this.items();\n const updatedItems = [...currentItems];\n let hasChanges = false;\n \n itemToAdd.forEach(item => {\n const exists = updatedItems.some(existing =>\n this.compareWith(existing, item)\n );\n if (!exists) {\n updatedItems.push(item);\n hasChanges = true;\n }\n });\n \n if (hasChanges) {\n this.itemsSignal.set(updatedItems);\n }\n \n if (this.ngSelect) {\n this.ngSelect.searchTerm = '';\n }\n }\n \n const fieldConfig = this.field();\n if (fieldConfig.onSelectionChange && this.formValue()) {\n try {\n const selectedItem = this.findSelectedItem(newValue);\n const currentFormValue = { ...this.formValue() };\n currentFormValue[this.field().key as keyof T] = newValue;\n \n const newFormValue = fieldConfig.onSelectionChange(selectedItem, currentFormValue);\n \n this.selectionChange.emit({\n selectedItem,\n newFormValue\n });\n } catch (error) {\n console.error('Error in ServerSelect onSelectionChange:', error);\n }\n }\n \n super.onValueChange(newValue);\n }\n \n private findSelectedItem(value: any): any {\n if (!value) return null;\n \n const currentItems = this.items();\n const bindValue = this.field().bindValue || 'id';\n \n if (this.field().multiple && Array.isArray(value)) {\n return currentItems.filter(item => {\n const itemValue = bindValue === 'id' ? item['id'] : (item as any)[bindValue];\n return value.includes(itemValue);\n });\n } else {\n return currentItems.find(item => {\n const itemValue = bindValue === 'id' ? item['id'] : (item as any)[bindValue];\n return itemValue === value;\n }) || null;\n }\n }\n \n isOptionSelected(optionValue: string): boolean {\n const currentValue = this.computedValue();\n if (this.field().multiple && Array.isArray(currentValue)) {\n return currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n \n override onBlurInput(): void {\n if (!this.hasSearched()) {\n this.itemsSignal.set([]);\n }\n this.onBlur();\n }\n \n onClear() {\n this.itemsSignal.set([]);\n this.hasSearchedSignal.set(false);\n this.isLoadingSignal.set(false);\n \n if (this.ngSelect) {\n this.ngSelect.searchTerm = '';\n }\n super.onValueChange(null);\n }\n \n onSearch(event: { term: string; items: any[] }) {\n const minSearchLength = this.field().minSearchLength ?? 2;\n \n if (!event.term) {\n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.itemsSignal.set(mergedItems);\n this.hasSearchedSignal.set(true);\n } else {\n const selectedItems = this.getSelectedItemsOnly();\n this.itemsSignal.set(selectedItems);\n this.hasSearchedSignal.set(false);\n }\n return;\n }\n \n if (event.term.length < minSearchLength) {\n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.itemsSignal.set(mergedItems);\n this.hasSearchedSignal.set(true);\n } else {\n const selectedItems = this.getSelectedItemsOnly();\n this.itemsSignal.set(selectedItems);\n this.hasSearchedSignal.set(false);\n }\n this.isLoadingSignal.set(false);\n return;\n }\n \n this.searchInput$.next(event.term);\n }\n \n onFocus(): void {\n if (this.initialized && this.field().dynamicOptions && !this.isEvaluatingDynamicOptions) {\n this.throttledEvaluateDynamicOptions();\n }\n \n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.updateItemsIfDifferent(mergedItems);\n this.hasSearchedSignal.set(true);\n return;\n }\n \n if (this.items().length > 0) {\n return;\n }\n \n if (this.items().length === 0) {\n const options = this.field().options;\n if (options && options.length > 0) {\n this.initializeWithOptions();\n return;\n }\n \n if (this.hasValue()) {\n this.initializeWithOptions();\n \n if (this.items().length === 0) {\n this.initializeWithPreloadedOptions();\n }\n \n if (this.items().length === 0) {\n this.initializeWithExistingValues();\n }\n }\n \n if (this.items().length === 0 && !this.hasSearched()) {\n this.hasSearchedSignal.set(false);\n }\n }\n }\n \n onOpen(): void {\n const hasSearchResults = this.lastSearchResults().length > 0;\n const hasCurrentItems = this.items().length > 0;\n const hasValue = this.hasValue();\n \n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.updateItemsIfDifferent(mergedItems);\n this.hasSearchedSignal.set(true);\n return;\n }\n \n if (this.items().length === 0 && this.hasValue()) {\n this.initializeWithExistingValues();\n return;\n }\n \n if (!hasSearchResults && !hasCurrentItems && !hasValue) {\n this.hasSearchedSignal.set(false);\n }\n }\n \n onBeforeOpen(): boolean {\n return true;\n }\n \n onFieldClick(): void {\n if (this.ngSelect) {\n this.ngSelect.focus();\n }\n }\n \n onClose(): void {\n if (this.ngSelect) {\n this.ngSelect.searchTerm = '';\n }\n }\n \n private evaluateDynamicOptions(): void {\n const dynamicOptions = this.field().dynamicOptions;\n \n if (dynamicOptions && !this.isEvaluatingDynamicOptions) {\n this.isEvaluatingDynamicOptions = true;\n const currentData = this.getCurrentRowData();\n \n if (currentData) {\n try {\n const optionItems = dynamicOptions(currentData);\n if (optionItems && Array.isArray(optionItems) && optionItems.length > 0) {\n const items = optionItems.map(option => ({\n [this.field().bindValue ?? 'id']: option.value,\n [this.field().bindLabel ?? 'name']: option.label,\n ...option.data\n }));\n \n const currentItems = this.items();\n const bindValue = this.field().bindValue ?? 'id';\n \n const filteredCurrentItems = currentItems.filter(currentItem => {\n return !items.some(newItem =>\n currentItem[bindValue] === newItem[bindValue]\n );\n });\n \n const combinedItems = [...filteredCurrentItems, ...items];\n this.updateItemsIfDifferent(combinedItems);\n }\n } catch (error) {\n console.error('Error evaluating dynamic options:', error);\n } finally {\n this.isEvaluatingDynamicOptions = false;\n }\n } else {\n this.isEvaluatingDynamicOptions = false;\n }\n }\n }\n}\n ","<!-- ! Solcre: Deberia ser el mismo componente que el select-field.component -->\n<!-- Todo: Ng select + c-entry-select -->\n \n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n \n <!-- ! Solcre: El .c-entry-select deberia ser un componente en sí mismo -->\n <!-- ! Solcre: Sacar el .is-placeholder en el onChange -->\n \n <span class=\"c-entry-input c-entry-input--ng-select\">\n <!-- <div class=\"c-entry-select\"> -->\n \n <ng-select #ngSelect\n [items]=\"items()\"\n [bindValue]=\"field().bindValue ?? 'id'\"\n [multiple]=\"field().multiple\"\n [formControl]=\"formControl()\"\n [compareWith]=\"compareWith\"\n [class.has-error]=\"hasError()\"\n [readonly]=\"field().readonly\"\n [clearable]=\"!!value()\"\n [searchable]=\"isSearchable()\"\n [loading]=\"isLoading()\"\n [typeahead]=\"searchInput$\"\n (blur)=\"onBlurInput()\"\n (click)=\"onFieldClick()\"\n (beforeOpen)=\"onBeforeOpen()\"\n (open)=\"onOpen()\"\n (close)=\"onClose()\"\n [placeholder]=\"(field().placeholder ?? 'commons.select.placeholder') | translate\"\n [virtualScroll]=\"true\"\n (clear)=\"onClear()\"\n (search)=\"onSearch($event)\"\n [clearable]=\"true\"\n >\n <!-- Estilos para cuando se clickea el select para buscar (si es conveniente dejarlo vacío) -->\n <ng-template ng-typetosearch-tmp></ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <!-- Estilos de opciones del select-->\n {{ getDisplayLabel(item) }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n <!-- Estilos que aparecen en la etiqueta del item seleccionado -->\n {{ getDisplayLabel(item) }}\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <span class=\"ng-select-loading\">{{ 'commons.loading' | translate }}</span>\n </ng-template>\n <ng-template ng-notfound-tmp>\n <ng-container *ngIf=\"isLoading(); else noData\">\n <span class=\"ng-select-loading\">{{ 'commons.loading' | translate }}</span>\n </ng-container>\n <ng-template #noData>\n <ng-container *ngIf=\"hasSearched(); else startTyping\">\n <span class=\"ng-select-notfound\">{{ 'modal.field.serverSelect.noResults' | translate }}</span>\n </ng-container>\n <ng-template #startTyping>\n <span class=\"ng-select-start-typing\">{{ 'modal.field.serverSelect.typeToSearch' | translate }}</span>\n </ng-template>\n </ng-template>\n </ng-template>\n </ng-select>\n \n <!-- <span class=\"c-entry-select__arrow icon-arrow-down\"></span> -->\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span> <!-- .c-entry-select || .c-entry-input -->\n <core-field-errors [errors]=\"errors()\" />\n</div> <!-- .c-entry-item -->","import { Component, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { SwitchModalFieldConfig } from '../../../../interfaces/field-configs/switch-field-config.interface';\nimport { FormControl } from '@angular/forms';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-switch-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './switch-field.component.html',\n styleUrl: './switch-field.component.scss'\n})\nexport class SwitchFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n isDisabled = computed(() => this.mode() === 'view' || this.evaluateReadonly());\n \n constructor() {\n super();\n \n effect(() => {\n if (this.formControl()) {\n const currentValue = this.getCurrentValue();\n const formValue = Boolean(this.formControl().value);\n \n if (currentValue !== formValue) {\n this.formControl().setValue(currentValue as any, { emitEvent: false });\n }\n \n const shouldBeDisabled = this.isDisabled();\n if (shouldBeDisabled && this.formControl().enabled) {\n this.formControl().disable({ emitEvent: false });\n } else if (!shouldBeDisabled && this.formControl().disabled) {\n this.formControl().enable({ emitEvent: false });\n }\n }\n });\n }\n \n labelOff = computed(() => {\n const switchField = this.field() as SwitchModalFieldConfig<T>;\n return switchField.switchConfig?.labelOff || 'No';\n });\n\n labelOn = computed(() => {\n const switchField = this.field() as SwitchModalFieldConfig<T>;\n return switchField.switchConfig?.labelOn || 'Sí';\n });\n\n private getCurrentValue(): boolean {\n if (this.value() !== undefined && this.value() !== null) {\n return Boolean(this.value());\n } else if (this.field().defaultValue !== undefined && this.field().defaultValue !== null) {\n return Boolean(this.field().defaultValue);\n } else {\n return false;\n }\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n \n const initialValue = this.getCurrentValue();\n const shouldBeDisabled = this.isDisabled();\n \n this.formControl.set(new FormControl<any>(\n { value: initialValue, disabled: shouldBeDisabled }, \n validators\n ));\n \n this.formControl().valueChanges.subscribe(newValue => {\n if(newValue !== this.value()) {\n this.onValueChange(newValue);\n }\n });\n }\n\n override onValueChange(newValue: any): void {\n super.onValueChange(newValue);\n }\n override onBlurInput(): void {\n this.onBlur();\n }\n} ","<!-- <div class=\"c-entry-toggle-holder\" [class.is-invalid]=\"hasError()\"> -->\n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\"\n *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!-- \n (?)Solcre: El .c-entry-toggle debería ser un componente por si solo\n -->\n <label class=\"c-entry-toggle\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\">\n \n <!-- \n ✅ onBlurInput(): Maneja el evento blur para:\n - Validar el campo al perder el foco\n - Actualizar el estado del formulario \n - Disparar eventos de cambio si es necesario\n -->\n <input\n type=\"checkbox\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n [attr.aria-label]=\"(field().label || field().key.toString()) | translate\"\n (blur)=\"onBlurInput()\"\n />\n <span class=\"c-entry-toggle__text\">{{ labelOff() | translate }}</span>\n <span class=\"c-entry-toggle__switch\"></span>\n <span class=\"c-entry-toggle__text\">{{ labelOn() | translate }}</span>\n </label>\n <core-field-errors [errors]=\"errors()\" />\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { effect } from '@angular/core';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-text-area-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './text-area-field.component.html',\n})\nexport class TextAreaFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n isDisabled(): boolean {\n return this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!-- ! Solcre: Falta un estado disabled -->\n <textarea class=\"c-entry-input\"\n rows=\"4\"\n [class.is-invalid]=\"hasError()\"\n [formControl]=\"formControl()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n (blur)=\"onBlurInput()\">\n </textarea>\n <core-field-errors [errors]=\"errors()\" />\n</label>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { effect } from '@angular/core';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-text-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './text-field.component.html',\n})\nexport class TextFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n isDisabled(): boolean {\n return this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n }\n\n getInputType(): string {\n const fieldConfig = this.field() as any;\n return fieldConfig.inputType || fieldConfig.type || 'text';\n }\n\n getCharsWidth(): string | null {\n const fieldConfig = this.field() as any;\n const chars = fieldConfig.chars || fieldConfig.maxLength;\n return chars ? chars.toString() : null;\n }\n\n override onBlurInput(event?: FocusEvent): void {\n this.onBlur(event);\n }\n\n handleEnterKey(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n this.onEnterInput(keyboardEvent);\n }\n}","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!-- \n ! Solcre: Detalles del input implementados:\n ✅ Estado disabled agregado - Implementado isDisabled()\n ✅ Type dinámico implementado - Acepta text, email, url, tel, etc.\n ✅ style=\"--chars: XXX\" implementado - Ancho adaptable según caracteres\n ✅ PrefixIcon agregado - Soporte para iconos de prefijo\n -->\n\n <span class=\"c-entry-input\"\n [style.--chars]=\"getCharsWidth()\"\n [class.is-readonly]=\"isReadonly() || field().blocked\"\n [class.is-disabled]=\"isDisabled()\">\n @if (field().prefixIcon) {\n <span class=\"c-entry-input__addon\" [class]=\"field().prefixIcon | coreIconCompat\"></span>\n }\n <input \n [type]=\"getInputType()\"\n [class.has-error]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [formControl]=\"formControl()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n (blur)=\"onBlurInput($event)\"\n (keydown.enter)=\"handleEnterKey($event)\"\n />\n <span *ngIf=\"field().blocked\" class=\"c-entry-input__addon icon-locked-thin\"></span>\n </span>\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n</label>\n","import { Component, computed, input, output, signal, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { TimeInterval } from '../../../../enums/global/TimeInterval.enum';\nimport { TimeFieldConfig, TimeOption } from '../../../../interfaces/field-configs/time-field.config.interface';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\nexport interface TimeFieldValue {\n startTime: string | null;\n endTime?: string | null;\n}\n\n@Component({\n selector: 'core-time-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './time-field.component.html',\n})\nexport class TimeFieldComponent<T extends DataBaseModelInterface> {\n field = input.required<ModalFieldConfig<T> & { config?: TimeFieldConfig }>();\n value = input<TimeFieldValue | string | null>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<TimeFieldValue | string | null>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n ModalMode = ModalMode;\n\n selectedStartTime = signal<string | null>(null);\n selectedEndTime = signal<string | null>(null);\n\n config = computed(() => this.field().config || {} as TimeFieldConfig);\n\n availableOptions = computed(() => {\n const baseOptions = this.config().options || [];\n const interval = this.config().timeInterval;\n \n if (interval && baseOptions.length === 0) {\n return this.generateTimeOptions(interval);\n }\n \n return baseOptions;\n });\n\n startTimeOptions = computed(() => {\n return this.availableOptions().map(option => ({\n ...option,\n disabled: option.used || false\n }));\n });\n\n endTimeOptions = computed(() => {\n const startTime = this.selectedStartTime();\n const options = this.availableOptions();\n \n return options.map(option => ({\n ...option,\n disabled: option.used || (startTime ? option.value === startTime : false)\n }));\n });\n\n includeEndTime = computed(() => this.config().includeEndTime || false);\n\n startTimeLabel = computed(() => this.config().startTimeLabel || 'time-field.start-time');\n\n endTimeLabel = computed(() => this.config().endTimeLabel || 'time-field.end-time');\n\n isDisabled = computed(() => {\n if (this.mode() === ModalMode.FILTER) return false;\n if (this.mode() === ModalMode.VIEW) return true;\n return this.evaluateReadonly();\n });\n\n hasError = computed(() => {\n return this.errors().length > 0;\n });\n\n hasRequiredValidators = computed(() => {\n const validators = this.field().validators || [];\n return validators.some(validator => validator === Validators.required);\n });\n\n private evaluateReadonly(): boolean {\n const readonly = this.field().readonly;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.formValue());\n } catch {\n return false;\n }\n }\n return readonly || false;\n }\n\n constructor() {\n effect(() => {\n const newValue = this.value();\n this.initializeFromValue(newValue);\n });\n }\n\n private initializeFromValue(value: TimeFieldValue | string | null): void {\n if (!value) {\n this.selectedStartTime.set(null);\n this.selectedEndTime.set(null);\n return;\n }\n\n if (typeof value === 'string') {\n this.selectedStartTime.set(value);\n this.selectedEndTime.set(null);\n } else if (typeof value === 'object' && value !== null) {\n this.selectedStartTime.set(value.startTime);\n this.selectedEndTime.set(value.endTime || null);\n }\n }\n\n private generateTimeOptions(interval: TimeInterval): TimeOption[] {\n const options: TimeOption[] = [];\n let minutes = 0;\n const totalMinutes = 24 * 60;\n\n let stepMinutes: number;\n switch (interval) {\n case TimeInterval.MINUTES_15:\n stepMinutes = 15;\n break;\n case TimeInterval.MINUTES_30:\n stepMinutes = 30;\n break;\n case TimeInterval.HOURLY:\n stepMinutes = 60;\n break;\n default:\n stepMinutes = 60;\n }\n\n while (minutes < totalMinutes) {\n const hours = Math.floor(minutes / 60);\n const mins = minutes % 60;\n const timeValue = `${hours.toString().padStart(2, '0')}:${mins.toString().padStart(2, '0')}`;\n \n options.push({\n value: timeValue,\n label: timeValue,\n used: false\n });\n\n minutes += stepMinutes;\n }\n\n return options;\n }\n\n onStartTimeChange(value: string | null): void {\n this.selectedStartTime.set(value);\n \n const currentEndTime = this.selectedEndTime();\n if (value && currentEndTime && currentEndTime === value) {\n this.selectedEndTime.set(null);\n }\n \n this.emitValue();\n }\n\n onEndTimeChange(value: string | null): void {\n this.selectedEndTime.set(value);\n this.emitValue();\n }\n\n private emitValue(): void {\n const startTime = this.selectedStartTime();\n const endTime = this.selectedEndTime();\n\n if (this.includeEndTime()) {\n const timeFieldValue: TimeFieldValue = {\n startTime,\n endTime\n };\n this.valueChange.emit(timeFieldValue);\n } else {\n this.valueChange.emit(startTime);\n }\n }\n\n onStartTimeBlur(): void {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n\n onEndTimeBlur(): void {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n}\n","<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\" [class.time-field-range]=\"includeEndTime()\">\n <!-- Start Time Field -->\n <div class=\"time-field-container\">\n <label class=\"c-entry-text\" [for]=\"field().key.toString() + '-start'\">\n {{ startTimeLabel() | translate }}\n @if (hasRequiredValidators()) {\n <span class=\"c-required\">*</span>\n }\n </label>\n \n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [id]=\"field().key.toString() + '-start'\"\n [items]=\"startTimeOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [clearable]=\"!hasRequiredValidators()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"selectedStartTime()\"\n (ngModelChange)=\"onStartTimeChange($event)\"\n (blur)=\"onStartTimeBlur()\"\n [placeholder]=\"'time-field.select-time' | translate\"\n [searchable]=\"false\">\n \n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n @if (item.used) {\n <span class=\"used-indicator\"> ({{ 'time-field.used' | translate }})</span>\n }\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n </div>\n\n <!-- End Time Field (only if includeEndTime is true) -->\n @if (includeEndTime()) {\n <div class=\"time-field-container time-field-end\">\n <label class=\"c-entry-text\" [for]=\"field().key.toString() + '-end'\">\n {{ endTimeLabel() | translate }}\n @if (hasRequiredValidators()) {\n <span class=\"c-required\">*</span>\n }\n </label>\n \n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [id]=\"field().key.toString() + '-end'\"\n [items]=\"endTimeOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [clearable]=\"true\"\n [disabled]=\"isDisabled() || !selectedStartTime()\"\n [ngModel]=\"selectedEndTime()\"\n (ngModelChange)=\"onEndTimeChange($event)\"\n (blur)=\"onEndTimeBlur()\"\n [placeholder]=\"'time-field.select-end-time' | translate\"\n [searchable]=\"false\">\n \n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n @if (item.used) {\n <span class=\"used-indicator\"> ({{ 'time-field.used' | translate }})</span>\n }\n @if (selectedStartTime() && item.value === selectedStartTime()!) {\n <span class=\"unavailable-indicator\"> ({{ 'time-field.unavailable' | translate }})</span>\n }\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n </div>\n }\n\n <!-- Error Messages -->\n @if (hasError()) {\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n }\n</div>\n","import {\n Directive,\n ViewContainerRef,\n ComponentRef,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n output\n} from '@angular/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalMode } from '../enums/global/ModalMode.enum';\nimport { ModalFieldConfig } from '../interfaces/global/ModalFieldConfig.interface';\nimport { CheckboxModalFieldConfig } from '../interfaces/field-configs/checkbox-field-config.interface';\nimport { NumberModalFieldConfig } from '../interfaces/field-configs/number-field-config.interface';\nimport { SwitchModalFieldConfig } from '../interfaces/field-configs/switch-field-config.interface';\nimport { SelectServerSideConfig } from '../interfaces/field-configs/select-server-side.config.interface';\nimport { FilterConfig } from '../components/generic-table/components/filter-modal/interfaces/FilterConfig.interface';\nimport { SelectFieldConfig } from '../interfaces/field-configs/select-field-config.interface';\nimport { TimeFieldConfig } from '../interfaces/field-configs/time-field.config.interface';\nimport { \n CheckboxFieldComponent, \n DateFieldComponent, \n DatetimeFieldComponent, \n FileFieldComponent, \n NumberFieldComponent, \n PasswordFieldComponent, \n SelectFieldComponent, \n ServerSelectFieldComponent, \n SwitchFieldComponent, \n TextAreaFieldComponent, \n TextFieldComponent,\n TimeFieldComponent,\n SmartFieldComponent\n} from '../components';\n\n@Directive({\n selector: '[coreDynamicField]',\n standalone: true\n})\nexport class DynamicFieldDirective<T extends DataBaseModelInterface> implements OnChanges {\n private viewContainerRef = inject(ViewContainerRef);\n\n field = input.required<ModalFieldConfig<T> | CheckboxModalFieldConfig<T> | NumberModalFieldConfig<T> | SwitchModalFieldConfig<T> | SelectServerSideConfig<T> | SelectFieldConfig<T> | FilterConfig<T> | (ModalFieldConfig<T> & { config?: TimeFieldConfig })>();\n value = input.required<any>();\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<any>();\n onEnterEvent = output<any>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n\n private componentRef: ComponentRef<any> | null = null;\n\n private fieldComponents: Record<string, any> = {\n text: TextFieldComponent,\n textarea: TextAreaFieldComponent,\n number: NumberFieldComponent,\n checkbox: CheckboxFieldComponent,\n switch: SwitchFieldComponent,\n select: SelectFieldComponent,\n 'server-select': ServerSelectFieldComponent,\n date: DateFieldComponent,\n datetime: DatetimeFieldComponent,\n time: TimeFieldComponent,\n password: PasswordFieldComponent,\n file: FileFieldComponent,\n };\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['field']?.firstChange || this.shouldReloadComponent(changes)) {\n this.loadComponent();\n } else {\n this.updateComponentInputs();\n }\n }\n\n private shouldReloadComponent(changes: SimpleChanges): boolean {\n return changes['field'] && changes['field'].previousValue?.type !== changes['field'].currentValue?.type;\n }\n\n private updateComponentInputs(): void {\n if (this.componentRef) {\n this.componentRef.setInput('field', this.field());\n this.componentRef.setInput('value', this.value());\n this.componentRef.setInput('mode', this.mode());\n this.componentRef.setInput('errors', this.errors());\n this.componentRef.setInput('rowData', this.rowData());\n this.componentRef.setInput('formValue', this.formValue());\n this.componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n private loadComponent(): void {\n this.viewContainerRef.clear();\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n\n const fieldConfig = this.field();\n \n const hasMultiEntryConfig = fieldConfig && 'multiEntryConfig' in fieldConfig && \n (fieldConfig as any).multiEntryConfig?.allowMultipleEntries;\n \n let componentType: any;\n \n if (hasMultiEntryConfig) {\n componentType = SmartFieldComponent;\n } else {\n componentType = this.fieldComponents[fieldConfig.type];\n }\n \n if (!componentType) {\n return;\n }\n\n this.componentRef = this.viewContainerRef.createComponent(componentType);\n \n this.componentRef.setInput('field', this.field());\n this.componentRef.setInput('value', this.value());\n this.componentRef.setInput('mode', this.mode());\n this.componentRef.setInput('errors', this.errors());\n this.componentRef.setInput('rowData', this.rowData());\n this.componentRef.setInput('formValue', this.formValue());\n\n this.componentRef.instance.valueChange.subscribe((newValue: any) => {\n this.valueChange.emit(newValue);\n });\n\n this.componentRef.instance.onBlurEvent.subscribe((key: any) => {\n this.onBlurEvent.emit(key);\n });\n\n if (this.componentRef.instance.onEnterEvent) {\n this.componentRef.instance.onEnterEvent.subscribe((key: any) => {\n this.onEnterEvent.emit(key);\n });\n }\n\n if (this.componentRef.instance.selectionChange) {\n this.componentRef.instance.selectionChange.subscribe((event: { selectedItem: any; newFormValue: any }) => {\n this.selectionChange.emit(event);\n });\n }\n\n this.componentRef.changeDetectorRef.detectChanges();\n }\n}","export interface MultiEntryFieldConfig {\n allowMultipleEntries?: boolean;\n maxEntries?: number;\n minEntries?: number;\n outputFormat?: MultiEntryOutputFormat;\n customSeparator?: string;\n labels?: {\n add?: string;\n remove?: string;\n };\n format?: (entries: any[], formData: any) => any;\n}\n\nexport enum MultiEntryOutputFormat {\n ARRAY = 'array',\n COMMA_SEPARATED = 'comma_separated',\n CUSTOM_SEPARATOR = 'custom_separator',\n INDIVIDUAL = 'individual',\n CUSTOM_FORMAT = 'custom_format'\n}\n\nexport interface MultiEntryFieldValue {\n entries: any[];\n outputFormat: MultiEntryOutputFormat;\n separator?: string;\n}\n","import { Component, computed, effect, input, output, signal, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DynamicFieldDirective } from '../../../../directives/DynamicField.directive';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { \n MultiEntryFieldConfig, \n MultiEntryOutputFormat, \n MultiEntryFieldValue \n} from '../../../../interfaces/field-configs/multi-entry-field.config.interface';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\nexport interface ExtendedModalFieldConfig<T> extends ModalFieldConfig<T> {\n multiEntryConfig?: MultiEntryFieldConfig;\n}\n\n@Component({\n selector: 'core-multi-entry-field',\n standalone: true,\n imports: [\n CommonModule, \n FormsModule, \n ReactiveFormsModule, \n TranslateModule, \n DynamicFieldDirective,\n FieldErrorsComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './multi-entry-field.component.html',\n styleUrls: ['./multi-entry-field.component.scss']\n})\nexport class MultiEntryFieldComponent<T extends DataBaseModelInterface> implements OnInit {\n field = input.required<ExtendedModalFieldConfig<T>>();\n value = input<any>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n ModalMode = ModalMode;\n\n entries = signal<any[]>([]);\n fieldValues = signal<any[]>([]);\n\n config = computed(() => this.field().multiEntryConfig || {} as MultiEntryFieldConfig);\n allowMultiple = computed(() => this.config().allowMultipleEntries || false);\n maxEntries = computed(() => this.config().maxEntries || 10);\n minEntries = computed(() => this.config().minEntries || 1);\n outputFormat = computed(() => this.config().outputFormat || MultiEntryOutputFormat.ARRAY);\n \n addLabel = computed(() => this.config().labels?.add || 'multi-entry.add-field');\n removeLabel = computed(() => this.config().labels?.remove || 'multi-entry.remove-field');\n\n canAddMore = computed(() => this.entries().length < this.maxEntries());\n canRemove = computed(() => this.entries().length > this.minEntries());\n isDisabled = computed(() => this.mode() === ModalMode.VIEW);\n\n constructor() {\n effect(() => {\n const inputValue = this.value();\n this.initializeEntries(inputValue);\n });\n\n effect(() => {\n const values = this.fieldValues();\n if (values.length > 0) {\n this.emitFormattedValue(values);\n }\n });\n }\n\n ngOnInit() {\n this.initializeEntries(this.value());\n }\n\n private initializeEntries(inputValue: any) {\n if (!inputValue) {\n const initialEntries = Array(this.minEntries()).fill(null).map((_, index) => ({\n id: this.generateEntryId(),\n value: null\n }));\n this.entries.set(initialEntries);\n this.fieldValues.set(Array(this.minEntries()).fill(null));\n return;\n }\n\n let parsedValues: any[] = [];\n \n if (Array.isArray(inputValue)) {\n parsedValues = inputValue;\n } else if (typeof inputValue === 'string') {\n const separator = this.config().customSeparator || ',';\n parsedValues = inputValue.split(separator).map(v => v.trim()).filter(v => v !== '');\n } else {\n parsedValues = [inputValue];\n }\n\n const newEntries = parsedValues.map((value, index) => ({\n id: this.generateEntryId(),\n value: value\n }));\n\n while (newEntries.length < this.minEntries()) {\n newEntries.push({\n id: this.generateEntryId(),\n value: null\n });\n }\n\n this.entries.set(newEntries);\n this.fieldValues.set(newEntries.map(entry => entry.value));\n }\n\n private generateEntryId(): string {\n return `entry_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n addEntry() {\n if (!this.canAddMore() || this.isDisabled()) return;\n\n const currentEntries = this.entries();\n const newEntry = {\n id: this.generateEntryId(),\n value: null\n };\n\n this.entries.set([...currentEntries, newEntry]);\n this.fieldValues.set([...this.fieldValues(), null]);\n }\n\n removeEntry(index: number) {\n if (!this.canRemove() || this.isDisabled()) return;\n\n const currentEntries = this.entries();\n const currentValues = this.fieldValues();\n\n if (index >= 0 && index < currentEntries.length) {\n const newEntries = currentEntries.filter((_, i) => i !== index);\n const newValues = currentValues.filter((_, i) => i !== index);\n\n this.entries.set(newEntries);\n this.fieldValues.set(newValues);\n }\n }\n\n onFieldValueChange(value: any, index: number) {\n const currentValues = [...this.fieldValues()];\n currentValues[index] = value;\n this.fieldValues.set(currentValues);\n\n const currentEntries = [...this.entries()];\n currentEntries[index].value = value;\n this.entries.set(currentEntries);\n }\n\n onFieldBlur(fieldKey: keyof T) {\n this.onBlurEvent.emit(fieldKey);\n }\n\n onFieldEnter(fieldKey: keyof T) {\n this.onEnterEvent.emit(fieldKey);\n }\n\n private emitFormattedValue(values: any[]) {\n const nonEmptyValues = values.filter(v => \n v !== null && \n v !== undefined && \n v !== '' && \n !(Array.isArray(v) && v.length === 0)\n );\n\n let formattedValue: any;\n const config = this.config();\n\n switch (this.outputFormat()) {\n case MultiEntryOutputFormat.ARRAY:\n formattedValue = nonEmptyValues;\n break;\n\n case MultiEntryOutputFormat.COMMA_SEPARATED:\n formattedValue = nonEmptyValues.join(', ');\n break;\n\n case MultiEntryOutputFormat.CUSTOM_SEPARATOR:\n const separator = config.customSeparator || ',';\n formattedValue = nonEmptyValues.join(separator);\n break;\n\n case MultiEntryOutputFormat.INDIVIDUAL:\n formattedValue = nonEmptyValues.length > 0 ? nonEmptyValues[0] : null;\n break;\n\n case MultiEntryOutputFormat.CUSTOM_FORMAT:\n if (config.format && typeof config.format === 'function') {\n try {\n formattedValue = config.format(nonEmptyValues, this.formValue());\n } catch (error) {\n console.error('Error en la función de formato personalizada:', error);\n formattedValue = nonEmptyValues;\n }\n } else {\n console.warn('Formato CUSTOM_FORMAT seleccionado pero no se proporcionó función format');\n formattedValue = nonEmptyValues;\n }\n break;\n\n default:\n formattedValue = nonEmptyValues;\n }\n\n this.valueChange.emit(formattedValue);\n }\n\n createFieldConfigForEntry(index: number): ModalFieldConfig<T> {\n const baseField = this.field();\n \n const { multiEntryConfig, ...fieldConfig } = baseField as ExtendedModalFieldConfig<T>;\n \n return {\n ...fieldConfig,\n key: `${String(fieldConfig.key)}_${index}` as keyof T,\n label: index === 0 ? fieldConfig.label : '',\n } as ModalFieldConfig<T>;\n }\n\n shouldShowActions(index: number): boolean {\n if (!this.allowMultiple()) return false;\n if (this.isDisabled()) return false;\n \n const isLastEntry = index === this.entries().length - 1;\n const hasMultipleEntries = this.entries().length > 1;\n \n return isLastEntry || hasMultipleEntries;\n }\n\n shouldShowAddButton(index: number): boolean {\n return this.shouldShowActions(index) && \n index === this.entries().length - 1 && \n this.canAddMore();\n }\n\n shouldShowRemoveButton(index: number): boolean {\n return this.shouldShowActions(index) && this.canRemove();\n }\n}\n","<div class=\"c-entry-group\">\n @for (entry of entries(); track entry.id; let index = $index) {\n <div class=\"c-entry-item\">\n <!-- Campo dinámico para cada entrada -->\n <div\n coreDynamicField\n [field]=\"createFieldConfigForEntry(index)\"\n [value]=\"entry.value\"\n [mode]=\"mode()\"\n [errors]=\"errors()\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"onFieldValueChange($event, index)\"\n (onBlurEvent)=\"onFieldBlur($event)\"\n (onEnterEvent)=\"onFieldEnter($event)\">\n </div>\n\n <!-- Botones de acción (agregar/eliminar) -->\n @if (shouldShowActions(index)) {\n <div class=\"c-entry-actions\">\n @if (shouldShowAddButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--add\"\n (click)=\"addEntry()\"\n [disabled]=\"isDisabled()\"\n [title]=\"addLabel() | translate\"\n [attr.aria-label]=\"addLabel() | translate\">\n <span class=\"icon-counter-up\"></span>\n {{ addLabel() | translate }}\n </button>\n }\n \n @if (shouldShowRemoveButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--remove\"\n (click)=\"removeEntry(index)\"\n [disabled]=\"isDisabled()\"\n [title]=\"removeLabel() | translate\"\n [attr.aria-label]=\"removeLabel() | translate\">\n <span class=\"icon-counter-down\"></span>\n {{ removeLabel() | translate }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Errores del campo principal -->\n @if (errors().length > 0) {\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n }\n</div>\n","import { Component, computed, input, output, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DynamicFieldDirective } from '../../../../directives/DynamicField.directive';\nimport { MultiEntryFieldComponent, ExtendedModalFieldConfig } from '../multi-entry-field/multi-entry-field.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-smart-field',\n standalone: true,\n imports: [\n CommonModule, \n FormsModule, \n ReactiveFormsModule, \n TranslateModule, \n DynamicFieldDirective,\n MultiEntryFieldComponent\n ],\n hostDirectives: [CoreHostDirective],\n template: `\n @if (shouldUseMultiEntry()) {\n <core-multi-entry-field\n [field]=\"field()\"\n [value]=\"value()\"\n [mode]=\"mode()\"\n [errors]=\"errors()\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"valueChange.emit($event)\"\n (onBlurEvent)=\"onBlurEvent.emit($event)\"\n (onEnterEvent)=\"onEnterEvent.emit($event)\">\n </core-multi-entry-field>\n } @else {\n <div\n coreDynamicField\n [field]=\"field()\"\n [value]=\"value()\"\n [mode]=\"mode()\"\n [errors]=\"errors()\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"valueChange.emit($event)\"\n (onBlurEvent)=\"onBlurEvent.emit($event)\"\n (onEnterEvent)=\"onEnterEvent.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\">\n </div>\n }\n `\n})\nexport class SmartFieldComponent<T extends DataBaseModelInterface> implements OnInit {\n field = input.required<ModalFieldConfig<T> | ExtendedModalFieldConfig<T>>();\n value = input<any>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n\n shouldUseMultiEntry = computed(() => {\n const fieldConfig = this.field() as ExtendedModalFieldConfig<T>;\n return fieldConfig.multiEntryConfig?.allowMultipleEntries || false;\n });\n\n ngOnInit() {}\n}\n","import { Component, input, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderService } from './services/loader.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-loader',\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './loader.component.html',\n styleUrl: './loader.component.scss'\n})\nexport class LoaderComponent {\n private loaderService = inject(LoaderService);\n imageUrl = input<string | null>('favicon.ico');\n requestId = input<string>('global');\n\n isLoading = this.loaderService.isLoading;\n}","@if (isLoading()) {\n <div class=\"loader-container\" [ngClass]=\"{'with-image': imageUrl()}\">\n <div class=\"loader-overlay\"></div>\n\n <div class=\"loader-content\">\n @if (imageUrl()) {\n <img [src]=\"imageUrl()\" alt=\"Loading\" class=\"loader-image\" />\n } @else {\n <div class=\"spinner\">\n <div class=\"pulse\"></div>\n <div class=\"pulse pulse-delay\"></div>\n </div>\n }\n </div>\n </div>\n}","import { Component, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-data-list-item',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './data-list-item.component.html',\n styleUrl: './data-list-item.component.scss'\n})\nexport class DataListItemComponent {\n key = input.required<string>();\n label = input.required<string>();\n value = input<any>(null);\n formattedValue = input<string>('');\n \n customTemplate = input<TemplateRef<any> | null>(null);\n templateContext = input<any>({});\n \n itemCssClasses = input<string>('c-data-list__item c-data-list-item');\n keyCssClasses = input<string>('c-data-list-item__key');\n valueCssClasses = input<string>('c-data-list-item__value');\n customCssClasses = input<{\n item?: string;\n key?: string;\n value?: string;\n }>({});\n \n getItemClasses(): string {\n const defaultClasses = this.itemCssClasses();\n const customClasses = this.customCssClasses().item || '';\n return `${defaultClasses} ${customClasses}`.trim();\n }\n\n getKeyClasses(): string {\n const defaultClasses = this.keyCssClasses();\n const customClasses = this.customCssClasses().key || '';\n return `${defaultClasses} ${customClasses}`.trim();\n }\n\n getValueClasses(): string {\n const defaultClasses = this.valueCssClasses();\n const customClasses = this.customCssClasses().value || '';\n return `${defaultClasses} ${customClasses}`.trim();\n }\n\n hasCustomTemplate(): boolean {\n return this.customTemplate() instanceof TemplateRef;\n }\n}\n","<div [class]=\"getItemClasses()\">\n <p [class]=\"getKeyClasses()\">{{ label() | translate }}</p>\n \n @if (hasCustomTemplate()) {\n <div [class]=\"getValueClasses()\">\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()!\"\n [ngTemplateOutletContext]=\"templateContext()\"\n ></ng-container>\n </div>\n } @else {\n <p [class]=\"getValueClasses()\">\n {{ formattedValue() }}\n </p>\n }\n</div>\n","import { Component, input, computed, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalFieldConfig } from '../../interfaces/global/ModalFieldConfig.interface';\nimport { DataListItem } from '../../interfaces/global/DataListItem.interface';\nimport { FieldType } from '../../enums/global/FieldType.enum';\nimport { DataListItemComponent } from '../data-list-item/data-list-item.component';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-data-list',\n standalone: true,\n imports: [CommonModule, TranslateModule, DataListItemComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './data-list.component.html',\n styleUrl: './data-list.component.scss'\n})\nexport class DataListComponent<T = any> {\n items = input<DataListItem[]>([]);\n fields = input<ModalFieldConfig<T>[]>([]);\n data = input<T | null>(null);\n \n customTemplate = input<TemplateRef<any> | null>(null);\n \n showEmptyMessage = input<boolean>(true);\n emptyMessage = input<string>('modal.noData');\n cssClasses = input<string>('c-data-list');\n\n normalizedItems = computed(() => {\n const itemsList = this.items();\n const fieldsList = this.fields();\n \n if (itemsList.length > 0) {\n return itemsList;\n }\n \n if (fieldsList.length > 0) {\n return this.convertFieldsToItems(fieldsList);\n }\n \n return [];\n });\n\n visibleItems = computed(() => {\n const data = this.data();\n return this.normalizedItems().filter((item: DataListItem) => {\n if (item.visible === undefined) return true;\n if (typeof item.visible === 'function') {\n return item.visible(data);\n }\n return item.visible;\n });\n });\n\n hasData = computed(() => {\n const data = this.data();\n const items = this.normalizedItems();\n \n if (this.items().length > 0) {\n return true;\n }\n \n return data !== null && data !== undefined && items.length > 0;\n });\n\n hasVisibleItems = computed(() => {\n return this.visibleItems().length > 0;\n });\n\n shouldShowContent = computed(() => {\n return this.hasData() && this.hasVisibleItems();\n });\n\n shouldShowEmptyMessage = computed(() => {\n return this.showEmptyMessage() && !this.shouldShowContent();\n });\n\n private convertFieldsToItems(fields: ModalFieldConfig<T>[]): DataListItem[] {\n const data = this.data();\n \n return fields.map(field => ({\n key: field.key as string,\n label: field.label,\n value: data ? data[field.key] : undefined,\n visible: field.visible,\n format: field.format,\n customTemplate: field.customViewTemplate\n }));\n }\n\n getItemValue(item: DataListItem): any {\n const data = this.data();\n \n if (item.value !== undefined) {\n return item.value;\n }\n \n if (data && item.key) {\n return (data as any)[item.key];\n }\n \n return null;\n }\n\n getFormattedValue(item: DataListItem): string {\n if (item.formattedValue !== undefined) {\n return item.formattedValue;\n }\n \n const value = this.getItemValue(item);\n const data = this.data();\n \n if (item.format) {\n return item.format(value, data);\n }\n\n return this.getDefaultFormattedValue(value);\n }\n\n private getDefaultFormattedValue(value: any): string {\n if (value === null || value === undefined) {\n return '-';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) return '-';\n return value.map(item => this.formatSingleValue(item)).join(', ');\n }\n\n return this.formatSingleValue(value);\n }\n\n private formatSingleValue(value: any): string {\n if (value === null || value === undefined) return '-';\n \n if (typeof value === 'boolean') {\n return value ? 'Sí' : 'No';\n }\n\n if (typeof value === 'object') {\n if (value.label) return value.label;\n if (value.name) return value.name;\n if (value.title) return value.title;\n if (value.filename) return value.filename;\n return JSON.stringify(value);\n }\n\n if (typeof value === 'number') {\n return value.toString();\n }\n\n return String(value);\n }\n\n getItemTemplateContext(item: DataListItem): any {\n const data = this.data();\n const value = this.getItemValue(item);\n \n return {\n $implicit: value,\n item: item,\n data: data\n };\n }\n\n getItemTemplateRef(item: DataListItem): TemplateRef<any> | null {\n return item.customTemplate instanceof TemplateRef ? item.customTemplate : null;\n }\n}","<div [class]=\"cssClasses()\">\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: data(),\n items: visibleItems(),\n getFormattedValue: getFormattedValue.bind(this)\n }\"\n ></ng-container>\n } @else if (shouldShowContent()) {\n @for (item of visibleItems(); track item.key) {\n <core-data-list-item\n [key]=\"item.key\"\n [label]=\"item.label\"\n [value]=\"getItemValue(item)\"\n [formattedValue]=\"getFormattedValue(item)\"\n [customTemplate]=\"getItemTemplateRef(item)\"\n [templateContext]=\"getItemTemplateContext(item)\"\n [customCssClasses]=\"item.cssClasses || {}\">\n </core-data-list-item>\n }\n } @else if (shouldShowEmptyMessage()) {\n <div class=\"c-data-list__empty\">\n <p>{{ emptyMessage() | translate }}</p>\n </div>\n }\n</div>\n","export enum ButtonContext {\n DEFAULT = 'default',\n ERROR = 'error',\n SUCCESS = 'success'\n} ","export enum ButtonSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n} ","export enum ButtonType {\n PRIMARY = 'c-btn',\n STROKE = 'c-btn--stroke', \n SECONDARY = 'c-btn--secondary',\n ICON = 'c-icon-btn',\n ICON_FILL = 'c-icon-btn--fill',\n LINK = 'c-link',\n LINK_UNDERLINED = 'c-link--underlined',\n LINK_SECONDARY = 'c-link--secondary',\n LINK_SECONDARY_UNDERLINED = 'c-link--secondary c-link--underlined'\n} ","import { InjectionToken } from '@angular/core';\nimport { PermissionProvider } from '../interfaces/global/PermissionProvider.interface';\n\nexport const PERMISSION_PROVIDER = new InjectionToken<PermissionProvider>('PERMISSION_PROVIDER');\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { UsersModel } from '../models/users/users.model';\nimport { PermissionModel } from '../models/security/permission.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n private userSubject = new BehaviorSubject<UsersModel | null>(null);\n user$ = this.userSubject.asObservable();\n\n setUser(user: UsersModel | null) {\n this.userSubject.next(user);\n }\n\n getUser(): UsersModel | null {\n return this.userSubject.value;\n }\n\n hasPermission(resource: string, action: string): boolean {\n const user = this.userSubject.value;\n if (!user || !user.roles) {\n return false;\n }\n\n if (user.roles.some(role => !role.permissions)) {\n return true;\n }\n\n const hasPermission = user.roles.some(role =>\n role.permissions?.some(\n perm => {\n const matches = perm.resource === resource && perm.action === action && perm.is_active;\n if (matches) {\n }\n return matches;\n }\n )\n );\n\n return hasPermission;\n }\n\n hasAnyPermission(resources: string[], action: string): boolean {\n return resources.some(resource => this.hasPermission(resource, action));\n }\n\n getPermissions(): PermissionModel[] {\n const user = this.userSubject.value;\n if (!user || !user.roles) return [];\n \n return user.roles.flatMap(role => role.permissions?.filter(perm => perm?.is_active) || []).filter((perm): perm is PermissionModel => perm !== undefined);\n }\n}","export enum PermissionsResources {\n USERS = 'users',\n ROLES = 'roles',\n RESERVATIONS = 'reservations',\n PERMISSIONS = 'permissions',\n COMPANIES = 'companies',\n SERVICES = 'services',\n ROOMS = 'rooms',\n AUDIT_LOGS = 'audit_logs',\n EMPLOYEES = 'employees',\n COMPANIES_AZF_PROCEDURES = 'companies_azf_procedures',\n COMPANIES_CONFIGURATION = 'companies_configuration',\n COMPANIES_CONTACTS = 'companies_contacts',\n COMPANIES_INVENTORY = 'companies_inventory',\n COMPANIES_LEGALS = 'companies_legals',\n COMPANIES_CONTRACTUAL_INFORMATION = 'companies_contractual_info',\n COMPANIES_TELEWORK = 'companies_remote_work',\n MY_COMPANY = 'my_company',\n MY_COMPANY_AZF_PROCEDURE = 'my_company_azf_procedures',\n MY_COMPANY_CONTACTS = 'my_company_contacts',\n MY_COMPANY_CONFIGURATION = 'my_company_configuration',\n MY_COMPANY_INVENTORY = 'my_company_inventory',\n MY_COMPANY_LEGALS = 'my_company_legals',\n MY_COMPANY_CONTRACTUAL_INFORMATION = 'my_company_contractual_info',\n MY_COMPANY_TELEWORK = 'my_company_remote_work',\n FILE_TEMPLATES = 'file_templates',\n CONFIGURATION = 'configuration',\n}","import { Injectable, inject, Optional } from '@angular/core';\nimport { PERMISSION_PROVIDER } from '../providers/permission.provider';\nimport { PermissionProvider } from '../interfaces/global/PermissionProvider.interface';\nimport { ExtendedPermissionProvider } from '../interfaces/global/ExtendedPermissionProvider.interface';\nimport { PermissionService } from './permission.service';\nimport { PermissionsResources } from '../components/main-nav/enums/PermissionsResources.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionWrapperService implements PermissionProvider {\n private externalProvider = inject(PERMISSION_PROVIDER, { optional: true }) as (PermissionProvider & ExtendedPermissionProvider) | null;\n private fallbackService = inject(PermissionService);\n\n private get activeProvider() {\n return this.externalProvider || this.fallbackService;\n }\n\n constructor() {\n this.copyProviderMethods(this.fallbackService);\n \n if (this.externalProvider) {\n this.copyProviderMethods(this.externalProvider);\n this.extendPermissionsResources();\n }\n }\n\n private extendPermissionsResources(): void {\n if (!this.externalProvider) return;\n\n const additionalResources = this.getAdditionalResources();\n \n if (additionalResources && typeof additionalResources === 'object') {\n Object.keys(additionalResources).forEach(key => {\n const value = additionalResources[key];\n if (typeof value === 'string' && !(key in PermissionsResources)) {\n (PermissionsResources as any)[key] = value;\n }\n });\n }\n }\n\n private getAdditionalResources(): Record<string, string> | null {\n if (!this.externalProvider) return null;\n\n const provider = this.externalProvider as ExtendedPermissionProvider;\n\n const directResources = provider.additionalResources || \n provider.customResources || \n provider.extendedResources || \n provider.resources || \n provider.RESOURCES;\n\n if (directResources && typeof directResources === 'object') {\n return directResources;\n }\n\n if (typeof provider.getAdditionalResources === 'function') {\n try {\n const result = provider.getAdditionalResources();\n if (result && typeof result === 'object') {\n return result;\n }\n } catch (error) {\n console.warn('Error calling getAdditionalResources:', error);\n }\n }\n\n if (typeof provider.getCustomResources === 'function') {\n try {\n const result = provider.getCustomResources();\n if (result && typeof result === 'object') {\n return result;\n }\n } catch (error) {\n console.warn('Error calling getCustomResources:', error);\n }\n }\n\n if (typeof provider.getResources === 'function') {\n try {\n const result = provider.getResources();\n if (result && typeof result === 'object') {\n return result;\n }\n } catch (error) {\n console.warn('Error calling getResources:', error);\n }\n }\n\n return null;\n }\n\n private copyProviderMethods(provider: any) {\n const proto = Object.getPrototypeOf(provider);\n const propertyNames = Object.getOwnPropertyNames(proto);\n \n propertyNames.forEach(prop => {\n if (prop !== 'constructor') {\n const shouldOverride = this.externalProvider && provider === this.externalProvider;\n \n if (!(prop in this) || shouldOverride) {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(proto, prop);\n if (descriptor) {\n if (typeof descriptor.value === 'function') {\n (this as any)[prop] = (...args: any[]) => {\n return descriptor.value.apply(provider, args);\n };\n } else if (descriptor.get || descriptor.set) {\n Object.defineProperty(this, prop, {\n get: descriptor.get ? () => descriptor.get!.call(provider) : undefined,\n set: descriptor.set ? (value) => descriptor.set!.call(provider, value) : undefined,\n enumerable: descriptor.enumerable,\n configurable: true\n });\n }\n }\n } catch (error) {\n console.warn(`Could not copy property ${prop}:`, error);\n }\n }\n }\n });\n\n Object.getOwnPropertyNames(provider).forEach(prop => {\n const shouldOverride = this.externalProvider && provider === this.externalProvider;\n \n if (!(prop in this) || shouldOverride) {\n try {\n const value = provider[prop];\n if (typeof value === 'function') {\n (this as any)[prop] = value.bind(provider);\n } else {\n Object.defineProperty(this, prop, {\n get: () => provider[prop],\n set: (newValue) => provider[prop] = newValue,\n enumerable: true,\n configurable: true\n });\n }\n } catch (error) {\n console.warn(`Could not copy instance property ${prop}:`, error);\n }\n }\n });\n }\n\n hasPermission(resource: string, action: string): boolean {\n return this.activeProvider.hasPermission(resource, action);\n }\n\n setUser(user: any): void {\n this.activeProvider.setUser(user);\n }\n\n getUser(): any {\n return this.activeProvider.getUser();\n }\n\n callMethod(methodName: string, ...args: any[]): any {\n const provider = this.activeProvider;\n if (provider && typeof (provider as any)[methodName] === 'function') {\n return (provider as any)[methodName](...args);\n }\n throw new Error(`Method ${methodName} not found in permission provider`);\n }\n\n hasMethod(methodName: string): boolean {\n const provider = this.activeProvider;\n return provider && typeof (provider as any)[methodName] === 'function';\n }\n\n getAllResources(): typeof PermissionsResources {\n return PermissionsResources;\n }\n\n hasResource(resourceKey: string): boolean {\n return resourceKey in PermissionsResources;\n }\n\n getResourceValue(resourceKey: string): string | undefined {\n return (PermissionsResources as any)[resourceKey];\n }\n\n extendResources(additionalResources: Record<string, string>): void {\n Object.keys(additionalResources).forEach(key => {\n const value = additionalResources[key];\n if (typeof value === 'string' && !(key in PermissionsResources)) {\n (PermissionsResources as any)[key] = value;\n }\n });\n }\n}\n","import { Component, input, output, computed, inject, HostBinding } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonConfig } from './interfaces/ButtonConfig.interface';\nimport { ButtonActionEvent } from './interfaces/ButtonActionEvent.interface';\nimport { ButtonType } from './enums/ButtonType.enum';\nimport { ButtonContext } from './enums/ButtonContext.enum';\nimport { ButtonSize } from './enums/ButtonSize.enum';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-generic-button',\n standalone: true,\n imports: [CommonModule, RouterModule, TranslateModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-button.component.html',\n})\nexport class GenericButtonComponent {\n public ButtonType = ButtonType;\n public ButtonContext = ButtonContext;\n public ButtonSize = ButtonSize;\n \n private permissionService = inject(PermissionWrapperService);\n\n config = input.required<ButtonConfig>();\n data = input<any>(null);\n\n buttonClick = output<ButtonActionEvent>();\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.config().globalCustomClass || '';\n }\n\n isDisabled = computed(() => {\n if (this.config().disabled) return true;\n if (this.config().loading) return true;\n if (this.config().requiredPermission) {\n return !this.permissionService.hasPermission(\n this.config().requiredPermission!.resource,\n this.config().requiredPermission!.action\n );\n }\n return false;\n });\n\n buttonClasses = computed(() => {\n const config = this.config();\n const classes: string[] = [];\n \n classes.push(config.type);\n \n if (config.context && config.context !== ButtonContext.DEFAULT) {\n classes.push(`context:${config.context}`);\n }\n \n if (config.size && config.size !== ButtonSize.MEDIUM) {\n classes.push(`size:${config.size}`);\n }\n \n if (this.isDisabled()) {\n classes.push('is-disabled');\n }\n \n if (config.loading) {\n classes.push('is-loading');\n }\n \n if (config.customClass) {\n classes.push(config.customClass);\n }\n \n return classes.join(' ');\n });\n\n isLink = computed(() => {\n const type = this.config().type;\n return type === ButtonType.LINK || \n type === ButtonType.LINK_UNDERLINED || \n type === ButtonType.LINK_SECONDARY;\n });\n\n isIconOnly = computed(() => {\n const type = this.config().type;\n const hasOnlyIcon = (type === ButtonType.ICON || type === ButtonType.ICON_FILL);\n return hasOnlyIcon && !this.hasText();\n });\n\n shouldShowText = computed(() => {\n return this.hasText();\n });\n\n hasIcon = computed(() => {\n return !!this.config().icon;\n });\n\n hasText = computed(() => {\n return !!this.config().text;\n });\n\n iconPositionLeft = computed(() => {\n return !this.config().iconPosition || this.config().iconPosition === 'left';\n });\n\n iconPositionRight = computed(() => {\n return this.config().iconPosition === 'right';\n });\n\n onClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const actionEvent: ButtonActionEvent = {\n originalEvent: event,\n buttonConfig: this.config(),\n data: this.data()\n };\n\n this.buttonClick.emit(actionEvent);\n }\n\n getAriaLabel(): string {\n return this.config().ariaLabel ?? this.config().text ?? '';\n }\n\n getTitle(): string {\n return this.config().tooltip ?? (this.isIconOnly() ? this.config().text ?? '' : '');\n }\n} ","<ng-container *ngIf=\"config().routerLink && !isDisabled(); else normalButton\">\n <button \n [class]=\"buttonClasses()\"\n [routerLink]=\"config().routerLink\"\n [queryParams]=\"config().queryParams\"\n [fragment]=\"config().fragment\"\n [attr.aria-label]=\"getAriaLabel() | translate\"\n [attr.title]=\"getTitle() | translate\"\n [attr.id]=\"config().id\"\n [disabled]=\"isDisabled()\"\n (click)=\"onClick($event)\"\n [class.c-tooltip-container]=\"config().tooltipConfig?.hasTooltip\"\n type=\"button\">\n \n <span \n *ngIf=\"hasIcon() && iconPositionLeft()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <ng-container *ngIf=\"shouldShowText()\">\n {{ (config().text ?? '') | translate }}\n </ng-container>\n \n <span \n *ngIf=\"hasIcon() && iconPositionRight()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <span *ngIf=\"config().loading\" class=\"spinner\"></span>\n\n <span *ngIf=\"config().tooltipConfig?.hasTooltip && !isDisabled()\" class=\"c-tooltip c-tooltip--{{config().tooltipConfig?.position}}\">\n {{ config().tooltipConfig?.text ?? '' | translate }}\n </span>\n </button>\n</ng-container>\n\n<ng-template #normalButton>\n <ng-container *ngIf=\"config().href && !isDisabled(); else regularButton\">\n <a \n [class]=\"buttonClasses()\"\n [href]=\"config().href\"\n [target]=\"config().target || '_self'\"\n [attr.aria-label]=\"getAriaLabel() | translate\"\n [attr.title]=\"getTitle() | translate\"\n [attr.id]=\"config().id\"\n (click)=\"onClick($event)\"\n type=\"button\"\n [class.c-tooltip-container]=\"config().tooltipConfig?.hasTooltip\">\n \n <span \n *ngIf=\"hasIcon() && iconPositionLeft()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <ng-container *ngIf=\"shouldShowText()\">\n {{ (config().text ?? '') | translate }}\n </ng-container>\n \n <span \n *ngIf=\"hasIcon() && iconPositionRight()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <span *ngIf=\"config().loading\" class=\"spinner\"></span>\n\n <span *ngIf=\"config().tooltipConfig?.hasTooltip && !isDisabled()\" class=\"c-tooltip c-tooltip--{{config().tooltipConfig?.position}}\">\n {{ config().tooltipConfig?.text ?? '' | translate }}\n </span>\n </a>\n </ng-container>\n</ng-template>\n\n<ng-template #regularButton>\n <button \n [class]=\"buttonClasses()\"\n [attr.aria-label]=\"getAriaLabel() | translate\"\n [attr.title]=\"getTitle() | translate\"\n [attr.id]=\"config().id\"\n [disabled]=\"isDisabled()\"\n (click)=\"onClick($event)\"\n type=\"button\"\n [class.c-tooltip-container]=\"config().tooltipConfig?.hasTooltip\">\n \n <span \n *ngIf=\"hasIcon() && iconPositionLeft()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <ng-container *ngIf=\"shouldShowText()\">\n {{ (config().text ?? '') | translate }}\n </ng-container>\n \n <span \n *ngIf=\"hasIcon() && iconPositionRight()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <span *ngIf=\"config().loading\" class=\"spinner\"></span>\n\n <span *ngIf=\"config().tooltipConfig?.hasTooltip && !isDisabled()\" class=\"c-tooltip c-tooltip--{{config().tooltipConfig?.position}}\">\n {{ config().tooltipConfig?.text ?? '' | translate }}\n </span>\n </button>\n</ng-template> ","export enum FieldType {\n TEXT = 'text',\n TEXTAREA = 'textarea',\n NUMBER = 'number',\n CHECKBOX = 'checkbox',\n SELECT = 'select',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n PASSWORD = 'password',\n SWITCH = 'switch',\n SERVER_SELECT = 'server-select',\n FILE = 'file'\n}\n\nexport enum NumberFieldType {\n DEFAULT = 'default',\n DECIMAL = 'decimal',\n INTEGER = 'integer'\n}","import { \n Component, \n input, \n output, \n TemplateRef, \n ContentChild,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GenericTabConfig } from './interfaces/tab-config.interface';\nimport { GenericTabClickEvent } from './interfaces/tab-click.interface';\nimport { GenericTab } from './interfaces/tab.interface';\n\n@Component({\n selector: 'nav[core-generic-tabs]',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './generic-tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'config().containerClass'\n }\n})\nexport class GenericTabsComponent {\n\n config = input<GenericTabConfig>({\n tabs: [],\n containerClass: 'c-tabs',\n listClass: 'c-tabs__list',\n itemClass: 'c-tabs__item',\n linkClass: 'c-tabs__link',\n activeClass: 'is-active',\n disabledClass: 'disabled'\n });\n\n activeTabId = input<string | null>(null);\n hasTabErrors = input<(tabId: string) => boolean>(() => false);\n\n tabClick = output<GenericTabClickEvent>();\n tabChange = output<GenericTab>();\n\n @ContentChild('customTabTemplate') customTabTemplate?: TemplateRef<any>;\n\n onTabClick(tab: GenericTab, index: number, event: Event): void {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n const clickEvent: GenericTabClickEvent = {\n tab,\n index,\n originalEvent: event\n };\n\n this.tabClick.emit(clickEvent);\n this.tabChange.emit(tab);\n }\n\n isTabActive(tab: GenericTab): boolean {\n return this.activeTabId() ? tab.id === this.activeTabId() : !!tab.active;\n }\n\n getTabClasses(tab: GenericTab): string {\n const classes = [this.config().linkClass || 'c-tabs__link'];\n \n if (this.isTabActive(tab) && this.config().activeClass) {\n classes.push(this.config().activeClass!);\n }\n \n if (tab.disabled && this.config().disabledClass) {\n classes.push(this.config().disabledClass!);\n }\n \n if (tab.customClass) {\n classes.push(tab.customClass);\n }\n \n return classes.join(' ');\n }\n\n getTabLabel(tab: GenericTab): string {\n return tab.translationKey ? '' : (tab.label || '');\n }\n\n hasCustomTemplate(): boolean {\n return !!(this.customTabTemplate && this.config().allowCustomTemplate);\n }\n} ","<ul [class]=\"config().listClass\">\n @for (tab of config().tabs; track tab.id; let i = $index) {\n <li [class]=\"config().itemClass\">\n @if (hasCustomTemplate()) {\n <ng-container \n [ngTemplateOutlet]=\"customTabTemplate || null\" \n [ngTemplateOutletContext]=\"{\n $implicit: tab,\n index: i,\n isActive: isTabActive(tab),\n onClick: onTabClick.bind(this, tab, i)\n }\">\n </ng-container>\n } @else {\n <!-- DEV: Aplicar componente button generico -->\n <button\n type=\"button\"\n [class]=\"getTabClasses(tab)\"\n [disabled]=\"tab.disabled\"\n (click)=\"onTabClick(tab, i, $event)\"\n >\n @if (tab.translationKey) {\n {{ tab.translationKey | translate }}\n } @else {\n {{ getTabLabel(tab) }}\n }\n @if (hasTabErrors()(tab.id)) {\n <span class=\"icon-alert-circle\"></span>\n }\n </button>\n }\n </li>\n }\n</ul> ","import { Component, input, output, signal, effect, TemplateRef, inject, ElementRef, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormGroup, FormBuilder } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { DynamicFieldDirective } from '../../directives/DynamicField.directive';\nimport { ModalFieldConfig } from '../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalTabConfig } from '../../interfaces/global/ModalTabConfig.interface';\nimport { ModalMode } from '../../enums/global/ModalMode.enum';\nimport { ModalButtonConfig } from '../../interfaces/global/ModalButtonConfig.interface';\nimport { FieldType } from '../../enums/global/FieldType.enum';\nimport { ModalValidationResult } from '../../interfaces/global/ModalValidationResult.interface';\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\nimport { GenericTabsComponent } from '../generic-tabs/generic-tabs.component';\nimport { GenericTab } from '../generic-tabs/interfaces/tab.interface';\nimport { GenericTabConfig } from '../generic-tabs/interfaces/tab-config.interface';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { DataListComponent } from '../data-list/data-list.component';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-modal',\n standalone: true,\n imports: [\n CommonModule, \n FormsModule, \n ReactiveFormsModule, \n TranslateModule, \n DynamicFieldDirective,\n GenericTabsComponent,\n GenericButtonComponent,\n DataListComponent,\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-modal.component.html',\n})\nexport class GenericModalComponent<T extends DataBaseModelInterface> {\n private elementRef = inject(ElementRef);\n private formBuilder = inject(FormBuilder);\n private domSanitizer = inject(DomSanitizer);\n \n public ModalMode = ModalMode;\n public FieldType = FieldType;\n\n isClosing = signal(false);\n isOpen = input.required<boolean>();\n mode = input.required<ModalMode>();\n data = input<T | null>(null);\n fields = input<ModalFieldConfig<T>[]>([]);\n tabs = input<ModalTabConfig<T>[]>([]);\n title = input.required<string>();\n isMultiple = input<boolean>();\n customTemplate = input<TemplateRef<any> | null>(null);\n customViewTemplate = input<TemplateRef<any> | null>(null);\n buttonConfig = input<ModalButtonConfig<T>[]>([]);\n modelFactory = input<((data: Partial<T>) => T) | null>(null);\n errors = input<string[]>([]);\n validators = input<((data: T) => string[])[]>([]);\n\n save = output<T>();\n close = output<void>();\n modalData = output<T>();\n\n editedData = signal<T | null>(null);\n internalErrors = signal<string[]>([]);\n fieldErrors = signal<{ [key: string]: string[] }>({});\n isInitialized = signal<boolean>(false);\n form = signal<FormGroup>(this.formBuilder.group({}));\n activeTabId = signal<string>('');\n \n hasTabs = computed(() => this.tabs().length > 0);\n \n allFields = computed(() => {\n if (this.hasTabs()) {\n return this.tabs().flatMap(tab => tab.fields);\n }\n return this.fields();\n });\n \n activeTabFields = computed(() => {\n if (!this.hasTabs()) return this.fields();\n \n const activeTab = this.tabs().find(tab => tab.tabId === this.activeTabId());\n return activeTab ? activeTab.fields : [];\n });\n\n visibleFieldsForView = computed(() => {\n const fieldsToProcess = this.hasTabs() ? this.activeTabFields() : this.fields();\n \n return fieldsToProcess\n .map(field => this.getFieldConfig(field))\n .filter(field => field.visible === true);\n });\n\n dataListItems = computed(() => {\n const fieldsToProcess = this.hasTabs() ? this.activeTabFields() : this.fields();\n const data = this.editedData();\n \n if (!data) return [];\n \n return fieldsToProcess\n .map(field => this.getFieldConfig(field))\n .filter(field => field.visible === true)\n .map(field => ({\n key: field.key as string,\n label: field.label,\n value: data[field.key],\n formattedValue: this.getFormattedValue(field, data[field.key]),\n visible: true\n }));\n });\n \n visibleTabs = computed(() => {\n return this.tabs().filter(tab => tab.visible !== false);\n });\n\n hasErrors = computed(() => {\n return Object.values(this.fieldErrors()).some(errors => errors.length > 0) || \n this.internalErrors().length > 0;\n });\n\n genericTabsConfig = computed<GenericTabConfig>(() => ({\n tabs: this.visibleTabs().map(tab => ({\n id: tab.tabId,\n translationKey: tab.tabLabel\n })),\n containerClass: 'c-tabs',\n listClass: 'c-tabs__list',\n itemClass: 'c-tabs__item',\n linkClass: 'c-tabs__link',\n activeClass: 'is-active',\n disabledClass: 'disabled'\n }));\n\n closeButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.ICON,\n icon: 'icon-cross',\n ariaLabel: 'modal.close',\n customClass: 'c-modal__close'\n }));\n\n defaultCancelButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.SECONDARY,\n text: this.mode() === ModalMode.VIEW ? 'modal.close' : 'modal.cancel'\n }));\n\n defaultSaveButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: 'modal.save',\n disabled: this.hasErrors()\n }));\n\n hasTabErrorsFunction = (tabId: string): boolean => {\n return this.hasTabErrors(tabId);\n };\n\n getCustomButtonConfig(button: ModalButtonConfig<T>): ButtonConfig {\n return {\n type: this.getButtonTypeFromClass(button.class || ''),\n text: button.text,\n disabled: button.disabled,\n customClass: button.class || ''\n };\n }\n\n private getButtonTypeFromClass(className: string): ButtonType {\n if (className.includes('c-btn--secondary')) {\n return ButtonType.SECONDARY;\n }\n if (className.includes('c-btn--stroke')) {\n return ButtonType.STROKE;\n }\n if (className.includes('c-icon-btn')) {\n return ButtonType.ICON;\n }\n if (className.includes('c-link')) {\n return ButtonType.LINK;\n }\n return ButtonType.PRIMARY;\n }\n\n onCustomButtonClick(button: ModalButtonConfig<T>): void {\n button.action(this.data());\n }\n\n constructor() {\n effect(() => {\n const isModalOpen = this.isOpen();\n const data = this.data();\n\n if (!isModalOpen) {\n this.editedData.set(null);\n this.internalErrors.set([]);\n this.fieldErrors.set({});\n this.isInitialized.set(false);\n return;\n }\n\n if (!this.isInitialized()) {\n this.initializeData();\n this.initializeActiveTab();\n this.isInitialized.set(true);\n }\n });\n }\n\n private initializeData(): void {\n const data = this.data();\n const mode = this.mode();\n\n let newInstance: T;\n if (data) {\n newInstance = Object.create(Object.getPrototypeOf(data)) as T;\n Object.assign(newInstance, data);\n } else if (mode === ModalMode.CREATE) {\n const factory = this.modelFactory();\n if (factory) {\n newInstance = factory({});\n } else {\n newInstance = {\n getId: () => 0,\n } as T;\n }\n } else {\n this.editedData.set(null);\n return;\n }\n\n const formGroup: { [key: string]: any } = {};\n this.allFields().forEach(field => {\n const fieldKey = field.key as keyof T;\n const payloadKey = (field.keyToPayload ?? field.key) as keyof T;\n \n const modeConfig = field.modes?.[this.mode()];\n const defaultValue = modeConfig?.defaultValue ?? field.defaultValue;\n \n if (this.mode() === ModalMode.CREATE) {\n if (defaultValue !== undefined && newInstance[fieldKey] === undefined) {\n if (typeof defaultValue === 'function') {\n const computedValue = defaultValue(newInstance);\n newInstance[payloadKey] = computedValue;\n } else {\n newInstance[payloadKey] = defaultValue as any;\n }\n }\n } else if (this.mode() === ModalMode.EDIT) {\n if (typeof defaultValue === 'function') {\n const computedValue = defaultValue(newInstance);\n newInstance[payloadKey] = computedValue;\n }\n }\n\n const validators = modeConfig?.validators ?? field.validators ?? [];\n formGroup[fieldKey as string] = [newInstance[fieldKey], validators];\n });\n\n this.form.set(this.formBuilder.group(formGroup));\n \n setTimeout(() => {\n Object.values(this.form().controls).forEach(control => {\n control.markAsUntouched();\n });\n \n this.fieldErrors.set({});\n this.internalErrors.set([]);\n }, 0);\n \n this.editedData.set(newInstance);\n \n setTimeout(() => {\n this.modalData.emit(newInstance);\n }, 1);\n }\n \n private initializeActiveTab(): void {\n if (this.hasTabs()) {\n const firstVisibleTab = this.visibleTabs()[0];\n if (firstVisibleTab) {\n this.activeTabId.set(firstVisibleTab.tabId);\n }\n }\n }\n\n private validateField(fieldKey: keyof T, value: any): ModalValidationResult {\n const field = this.allFields().find(f => f.key === fieldKey);\n const control = this.form().get(fieldKey as string);\n const result: ModalValidationResult = {\n fieldErrors: [],\n internalErrors: []\n };\n\n if (!field || !control) return result;\n\n if (control.touched) {\n const modeConfig = field.modes?.[this.mode()];\n const errorMessages = modeConfig?.errorMessages ?? field.errorMessages ?? {};\n if (control.errors) {\n result.fieldErrors = Object.keys(control.errors).map(errorKey => \n errorMessages[errorKey] || errorKey\n );\n }\n }\n\n if (field.linkedFieldKey && field.duration && value instanceof Date) {\n const linkedControl = this.form().get(field.linkedFieldKey as string);\n if (linkedControl) {\n const durationMs = field.duration * 3600 * 1000;\n const linkedValue = new Date(value.getTime() + durationMs);\n linkedControl.setValue(linkedValue, { emitEvent: false });\n }\n }\n\n if (control.touched) {\n const dataToValidate = this.editedData();\n if (dataToValidate) {\n result.internalErrors = this.validators()\n .flatMap(validator => validator(dataToValidate));\n }\n }\n\n return result;\n }\n\n onFieldValueChange(fieldKey: keyof T, newValue: any): void {\n this.updateField(fieldKey, newValue);\n\n const control = this.form().get(fieldKey as string);\n if (control) {\n control.markAsTouched();\n \n const validationResult = this.validateField(fieldKey, newValue);\n\n this.fieldErrors.update(current => ({\n ...current,\n [fieldKey as string]: validationResult.fieldErrors\n }));\n this.internalErrors.set(validationResult.internalErrors);\n \n this.modalData.emit(this.editedData()!);\n }\n }\n\n onSelectionChange(event: { selectedItem: any; newFormValue: any }): void {\n if (event.newFormValue && this.editedData()) {\n this.editedData.set(event.newFormValue as T);\n \n Object.keys(event.newFormValue).forEach(key => {\n const control = this.form().get(key);\n if (control) {\n control.setValue(event.newFormValue[key], { emitEvent: false });\n }\n });\n \n setTimeout(() => {\n this.modalData.emit(event.newFormValue as T);\n }, 1);\n }\n }\n\n updateField(fieldKey: keyof T, value: any): void {\n if (!this.editedData()) return;\n\n const field = this.allFields().find(f => f.key === fieldKey);\n if (!field) return;\n\n const payloadKey = (field.keyToPayload ?? field.key) as keyof T;\n \n if (field.type === FieldType.FILE) {\n this.editedData.update(data => {\n if (data) {\n data[payloadKey] = value as any;\n }\n return data;\n });\n } else {\n this.editedData.update(data => {\n if (data) {\n data[payloadKey] = value as any;\n }\n return data;\n });\n }\n\n const control = this.form().get(fieldKey as string);\n if (control) {\n control.setValue(value, { emitEvent: false });\n }\n }\n\n validateAllFields(): void {\n const allErrors: { [key: string]: string[] } = {};\n let allInternalErrors: string[] = [];\n\n this.allFields().forEach(field => {\n const modeConfig = field.modes?.[this.mode()];\n if (modeConfig?.visible === false) return;\n\n const control = this.form().get(field.key as string);\n if (control) {\n if (control.touched) {\n const value = control.value;\n const validationResult = this.validateField(field.key, value);\n \n if (validationResult.fieldErrors.length > 0) {\n allErrors[field.key as string] = validationResult.fieldErrors;\n }\n \n allInternalErrors = [...allInternalErrors, ...validationResult.internalErrors];\n }\n }\n });\n\n this.fieldErrors.set(allErrors);\n this.internalErrors.set([...new Set(allInternalErrors)]);\n }\n \n\n getFieldErrors(fieldKey: keyof T): string[] {\n return this.fieldErrors()[fieldKey as string] || [];\n }\n\n getFormattedValue(field: ModalFieldConfig<T>, value: any): string {\n const modeConfig = field.modes?.[this.mode()];\n if (modeConfig?.format) {\n return modeConfig.format(value, this.editedData()!);\n }\n\n if (field.format) {\n return field.format(value, this.editedData()!);\n }\n\n if (value === null || value === undefined) {\n return '-';\n }\n\n if (field.type === FieldType.DATE || field.type === FieldType.DATETIME) {\n const date = new Date(value);\n return field.type === FieldType.DATETIME \n ? date.toLocaleString() \n : date.toLocaleDateString();\n }\n\n if (field.type === FieldType.SELECT && field.options) {\n const option = field.options.find(opt => opt.value === value);\n return option ? option.label : value?.toString() || '-';\n }\n\n if (field.type === FieldType.CHECKBOX || field.type === FieldType.SWITCH) {\n return value ? 'Sí' : 'No';\n }\n\n if (Array.isArray(value)) {\n if (field.options) {\n return value\n .map(v => field.options?.find(opt => opt.value === v)?.label || v)\n .join(', ');\n }\n return value.join(', ');\n }\n\n return value?.toString() || '-';\n }\n\n hasCustomViewTemplate(field: ModalFieldConfig<T>): boolean {\n const modeConfig = field.modes?.[this.mode()];\n return !!(modeConfig?.customViewTemplate || field.customViewTemplate);\n }\n\n isTemplateRef(template: any): template is TemplateRef<any> {\n return template && typeof template === 'object' && 'createEmbeddedView' in template;\n }\n\n getCustomTemplate(field: ModalFieldConfig<T>): TemplateRef<any> | null {\n const modeConfig = field.modes?.[this.mode()];\n const template = modeConfig?.customViewTemplate || field.customViewTemplate;\n \n if (this.isTemplateRef(template)) {\n return template;\n }\n \n return null;\n }\n\n getSafeHtml(field: ModalFieldConfig<T>, value: any): SafeHtml {\n const modeConfig = field.modes?.[this.mode()];\n const template = modeConfig?.customViewTemplate || field.customViewTemplate;\n \n if (template && typeof template === 'function') {\n const htmlContent = template(value, this.editedData()!);\n return this.domSanitizer.bypassSecurityTrustHtml(htmlContent);\n }\n \n return '';\n }\n\n onSave(): void {\n Object.values(this.form().controls).forEach(control => {\n control.markAsTouched();\n });\n this.validateAllFields();\n\n if (this.hasErrors()) {\n return;\n }\n\n const data = this.editedData();\n if (data) {\n const filteredData = this.filterPayloadData(data);\n this.save.emit(filteredData);\n }\n }\n\n private filterPayloadData(data: T): T {\n let clonedData: T;\n \n const factory = this.modelFactory();\n if (factory) {\n clonedData = factory(data as Partial<T>);\n } else {\n clonedData = Object.create(Object.getPrototypeOf(data)) as T;\n Object.assign(clonedData, data);\n \n if (typeof (clonedData as any).getId !== 'function' && typeof (data as any).getId === 'function') {\n (clonedData as any).getId = (data as any).getId.bind(clonedData);\n }\n }\n\n if (typeof (clonedData as any).toPayload === 'function') {\n const payloadKeys = (clonedData as any).toPayload();\n const filteredData = Object.create(Object.getPrototypeOf(clonedData)) as T;\n \n Object.keys(payloadKeys).forEach(key => {\n if (key in clonedData) {\n (filteredData as any)[key] = (clonedData as any)[key];\n }\n });\n \n if (typeof (clonedData as any).getId === 'function') {\n (filteredData as any).getId = (clonedData as any).getId.bind(filteredData);\n }\n \n this.convertEmptyStringsToNull(filteredData);\n return filteredData;\n }\n\n this.allFields().forEach(field => {\n const fieldConfig = this.getFieldConfig(field);\n const shouldInclude = fieldConfig.includeInPayload !== false;\n \n if (!shouldInclude) {\n const targetKey = (fieldConfig.keyToPayload ?? field.key) as keyof T;\n delete clonedData[targetKey];\n } else if (field.keyToPayload && field.keyToPayload !== field.key) {\n delete clonedData[field.key];\n }\n });\n\n this.convertEmptyStringsToNull(clonedData);\n\n return clonedData;\n }\n\n private convertEmptyStringsToNull(data: T): void {\n Object.keys(data).forEach(key => {\n const value = (data as any)[key];\n \n if (typeof value === 'string' && value.trim() === '') {\n (data as any)[key] = null;\n } else if (Array.isArray(value)) {\n (data as any)[key] = value.map(item => \n typeof item === 'string' && item.trim() === '' ? null : item\n );\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n this.convertEmptyStringsToNull(value);\n }\n });\n }\n\n onClose(): void {\n this.isClosing.set(true);\n \n const overlay = this.elementRef.nativeElement.querySelector('.c-modal__overlay');\n const onAnimationEnd = (e: AnimationEvent) => {\n if (e.target === overlay && this.isClosing()) {\n this.isClosing.set(false);\n this.close.emit();\n overlay.removeEventListener('animationend', onAnimationEnd);\n }\n };\n\n overlay.addEventListener('animationend', onAnimationEnd);\n }\n\n getFieldConfig(field: ModalFieldConfig<T>): ModalFieldConfig<T> {\n const modeConfig = field.modes?.[this.mode()];\n if (!modeConfig) return { \n ...field, \n visible: this.evaluateVisibility(field.visible),\n readonly: this.evaluateReadonly(field.readonly)\n };\n return {\n ...field,\n defaultValue: modeConfig.defaultValue ?? field.defaultValue,\n readonly: this.evaluateReadonly(modeConfig.readonly ?? field.readonly),\n options: modeConfig.options ?? field.options,\n validators: modeConfig.validators ?? field.validators,\n errorMessages: modeConfig.errorMessages ?? field.errorMessages,\n multiple: modeConfig.multiple ?? field.multiple,\n visible: this.evaluateVisibility(modeConfig.visible ?? field.visible),\n includeInPayload: modeConfig.includeInPayload ?? field.includeInPayload\n };\n }\n\n private evaluateVisibility(visible: boolean | (() => boolean) | ((formValue: any) => boolean) | undefined): boolean {\n if (visible === undefined) return true;\n if (typeof visible === 'function') {\n try {\n return visible(this.editedData());\n } catch {\n try {\n return (visible as () => boolean)();\n } catch {\n return true;\n }\n }\n }\n return visible;\n }\n\n private evaluateReadonly(readonly: boolean | ((formValue: any) => boolean) | undefined): boolean {\n if (readonly === undefined) return false;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.editedData());\n } catch {\n return false;\n }\n }\n return readonly;\n }\n\n onBlurEvent(fieldKey: keyof T): void {\n const control = this.form().get(fieldKey as string);\n if (control) {\n const validationResult = this.validateField(fieldKey, control.value);\n\n this.fieldErrors.update(current => ({\n ...current,\n [fieldKey as string]: validationResult.fieldErrors\n }));\n\n if (validationResult.internalErrors.length > 0) {\n this.internalErrors.set(validationResult.internalErrors);\n }\n }\n }\n \n onTabChange(tabId: string): void {\n this.activeTabId.set(tabId);\n }\n\n onGenericTabChange(tab: GenericTab): void {\n this.activeTabId.set(tab.id);\n }\n \n hasTabErrors(tabId: string): boolean {\n const tab = this.tabs().find(t => t.tabId === tabId);\n if (!tab) return false;\n \n return tab.fields.some(field => {\n const fieldErrors = this.getFieldErrors(field.key);\n return fieldErrors.length > 0;\n });\n }\n}","<div class=\"c-modal\" [class.is-visible]=\"isOpen()\" [class.is-closing]=\"isClosing()\">\n <div class=\"c-modal__overlay\" (click)=\"onClose()\"></div>\n <div class=\"c-modal__holder\">\n <div class=\"c-modal__header\">\n <p class=\"c-modal__title\">\n {{ title() | translate }}\n </p>\n <core-generic-button\n [config]=\"closeButtonConfig()\"\n (buttonClick)=\"onClose()\">\n </core-generic-button>\n </div>\n <div class=\"c-modal__body\">\n @if (editedData()) {\n @if (hasTabs()) {\n <nav core-generic-tabs\n [config]=\"genericTabsConfig()\"\n [activeTabId]=\"activeTabId()\"\n [hasTabErrors]=\"hasTabErrorsFunction\"\n (tabChange)=\"onGenericTabChange($event)\">\n </nav>\n }\n\n @if (mode() === ModalMode.VIEW) {\n <core-data-list\n [items]=\"dataListItems()\"\n [customTemplate]=\"customViewTemplate()\"\n [emptyMessage]=\"'modal.noData'\"\n ></core-data-list>\n } @else {\n <div class=\"c-entry-group\">\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: editedData(),\n mode: mode(),\n updateField: onFieldValueChange.bind(this),\n save: onSave.bind(this),\n close: onClose.bind(this),\n activeTabId: activeTabId(),\n onTabChange: onTabChange.bind(this),\n getFieldErrors: getFieldErrors.bind(this),\n validateAllFields: validateAllFields.bind(this),\n hasErrors: hasErrors()\n }\"\n ></ng-container>\n } @else {\n @for (field of (hasTabs() ? activeTabFields() : fields()); track field.key) {\n @if (getFieldConfig(field).visible) {\n <div\n coreDynamicField\n [field]=\"getFieldConfig(field)\"\n [value]=\"editedData()![field.key]\"\n [mode]=\"mode()\"\n [errors]=\"getFieldErrors(field.key)\"\n [rowData]=\"editedData()\"\n [formValue]=\"editedData()\"\n (valueChange)=\"onFieldValueChange(field.key, $event)\"\n (onBlurEvent)=\"validateAllFields()\"\n (selectionChange)=\"onSelectionChange($event)\"\n ></div>\n }\n }\n }\n </div> <!-- .c-entry-group -->\n }\n } @else {\n <p>{{ 'modal.noData' | translate }}</p>\n }\n </div>\n <div class=\"c-modal__bottom\">\n @if (buttonConfig().length > 0) {\n @for (button of buttonConfig(); track $index) {\n <core-generic-button\n [config]=\"getCustomButtonConfig(button)\"\n [data]=\"data()\"\n (buttonClick)=\"onCustomButtonClick(button)\">\n </core-generic-button>\n }\n } @else {\n <core-generic-button\n [config]=\"defaultCancelButtonConfig()\"\n (buttonClick)=\"onClose()\">\n </core-generic-button>\n @if (mode() !== ModalMode.VIEW) {\n <core-generic-button\n [config]=\"defaultSaveButtonConfig()\"\n (buttonClick)=\"onSave()\">\n </core-generic-button>\n }\n }\n </div>\n </div>\n</div>","import { Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface PaginationEvent {\n page: number;\n size: number;\n tableId: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginationService {\n private paginationState = new Map<string, {\n currentPage: ReturnType<typeof signal<number>>;\n pageSize: ReturnType<typeof signal<number>>;\n totalItems: ReturnType<typeof signal<number>>;\n totalPages: ReturnType<typeof signal<number>>;\n pageSizeOptions: number[];\n }>();\n\n private paginationChange = new Subject<PaginationEvent>();\n paginationChange$ = this.paginationChange.asObservable();\n\n initialize(tableId: string, totalItems: number, pageSizeOptions: number[] = [25, 30, 50, 100]): void {\n if (!this.paginationState.has(tableId)) {\n this.paginationState.set(tableId, {\n currentPage: signal(1),\n pageSize: signal(pageSizeOptions[0]),\n totalItems: signal(totalItems),\n totalPages: signal(Math.ceil(totalItems / pageSizeOptions[0])),\n pageSizeOptions\n });\n }\n }\n\n getCurrentPage(tableId: string) {\n return this.getState(tableId).currentPage;\n }\n\n getPageSize(tableId: string) {\n return this.getState(tableId).pageSize;\n }\n\n getTotalItems(tableId: string) {\n return this.getState(tableId).totalItems;\n }\n\n getTotalPages(tableId: string) {\n return this.getState(tableId).totalPages;\n }\n\n getPageSizeOptions(tableId: string): number[] {\n return this.getState(tableId).pageSizeOptions;\n }\n\n setCurrentPage(tableId: string, page: number): void {\n const state = this.getState(tableId);\n \n if (page >= 1 && page <= state.totalPages() && page !== state.currentPage()) {\n state.currentPage.set(page);\n this.emitPaginationChange(tableId);\n }\n }\n\n setPageSize(tableId: string, size: number): void {\n const state = this.getState(tableId);\n \n if (size !== state.pageSize()) {\n state.pageSize.set(size);\n state.totalPages.set(Math.ceil(state.totalItems() / size));\n state.currentPage.set(1);\n this.emitPaginationChange(tableId);\n }\n }\n\n setTotalItems(tableId: string, total: number): void {\n const state = this.getState(tableId);\n state.totalItems.set(total);\n state.totalPages.set(Math.ceil(total / state.pageSize()));\n }\n\n setTotalPages(tableId: string, pages: number): void {\n const state = this.getState(tableId);\n state.totalPages.set(pages);\n }\n\n private getState(tableId: string) {\n const state = this.paginationState.get(tableId);\n if (!state) {\n throw new Error(`Pagination state not initialized for table ${tableId}`);\n }\n return state;\n }\n\n private emitPaginationChange(tableId: string): void {\n const state = this.getState(tableId);\n const event = {\n page: state.currentPage(),\n size: state.pageSize(),\n tableId\n };\n \n this.paginationChange.next(event);\n }\n\n destroy(tableId: string): void {\n this.paginationState.delete(tableId);\n }\n}","export enum AlertType {\n DEFAULT = 'default',\n ERROR = 'error',\n SUCCESS = 'success',\n HIGHLIGHTED = 'highlight',\n WAITING = 'waiting'\n}","import { Injectable, signal, TemplateRef } from '@angular/core';\nimport { AlertType } from '../enums/global/AlertType.enum';\nimport { Alert } from '../interfaces/global/Alert.interface';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlertService {\n private alerts = signal<Alert[]>([]);\n alerts$ = this.alerts.asReadonly();\n\n show(alert: Alert) {\n const defaultConfig = {\n autoClose: true,\n duration: 5000,\n icon: this.getDefaultIcon(alert.type),\n inBottom: false\n };\n\n const newAlert = { ...defaultConfig, ...alert };\n this.alerts.update(alerts => [...alerts, newAlert]);\n\n if (newAlert.autoClose) {\n setTimeout(() => {\n this.remove(newAlert);\n }, newAlert.duration);\n }\n }\n\n remove(alertToRemove: Alert) {\n this.alerts.update(alerts => alerts.filter(alert => alert !== alertToRemove));\n }\n\n private getDefaultIcon(type: AlertType): string {\n switch (type) {\n case AlertType.SUCCESS:\n return 'icon-check';\n case AlertType.ERROR:\n return 'icon-alert';\n case AlertType.HIGHLIGHTED:\n return 'icon-alert';\n case AlertType.WAITING:\n return 'icon-clock';\n case AlertType.DEFAULT:\n return 'icon-check';\n default:\n return 'icon-alert';\n }\n }\n} ","import { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class PermissionModel implements DataBaseModelInterface {\n constructor(\n public id?: string,\n public name?: string,\n public description?: string,\n public resource?: string,\n public action?: string,\n public is_active?: boolean,\n ) {}\n\n public fromJSON(json: any): PermissionModel {\n if (json) {\n this.id = json.id;\n this.name = json.name;\n this.description = json.description;\n this.resource = json.resource;\n this.action = json.action;\n this.is_active = json.is_active;\n }\n return this;\n }\n\n public fromJSONList(json: any): PermissionModel[] {\n if (json) {\n return json.map((element: any) => new PermissionModel().fromJSON(element));\n }\n return [];\n }\n\n public toJSON() {\n return {\n \"id\": this.id,\n \"name\": this.name,\n \"description\": this.description,\n \"resource\": this.resource,\n \"action\": this.action,\n \"is_active\": this.is_active,\n };\n }\n\n public getId() {\n return this.id ?? \"\";\n }\n\n public getReference() {\n return this.name ?? \"\"; \n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { UsersModel } from \"./users.model\";\nimport { PermissionModel } from \"../security/permission.model\";\n\nexport class RoleModel implements DataBaseModelInterface {\n constructor(\n public id?: string,\n public name?: string,\n public description?: string,\n public is_active?: boolean,\n public permissions?: PermissionModel[],\n public users?: UsersModel[],\n ) {}\n\n public fromJSON(json: any): RoleModel {\n if (json) {\n this.id = json.id;\n this.name = json.name;\n this.description = json.description;\n this.is_active = json.is_active;\n this.permissions = new PermissionModel().fromJSONList(json.permissions) || [];\n this.users = new UsersModel().fromJSONList(json.users) || [];\n }\n return this;\n }\n\n public fromJSONList(json: any): RoleModel[] { \n if (json) {\n return json.map((element: any) => new RoleModel().fromJSON(element));\n }\n return [];\n }\n\n public toJSON() {\n return {\n \"id\": this.id,\n \"name\": this.name,\n \"description\": this.description,\n \"is_active\": this.is_active,\n \"permissions\": this.permissions,\n \"users\": this.users,\n };\n }\n\n public getId() {\n return this.id ?? \"\";\n }\n\n public getReference() {\n return this.name ?? \"\"; \n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { RoleModel } from \"./role.model\";\nimport { CompanyInfo } from \"../../interfaces/user/company-info.interface\";\n\n\n\nexport class UsersModel implements DataBaseModelInterface {\n constructor(\n public id?: string,\n public username?: string,\n public email?: string,\n public first_name?: string,\n public last_name?: string,\n public password?: string,\n public company_id?: string | null,\n public roles?: RoleModel[],\n public role_ids?: string[],\n public is_admin?: boolean,\n public company?: CompanyInfo | null\n ) {}\n\n public fromJSON(json: any): UsersModel {\n if (json) {\n this.id = json.id;\n this.username = json.username;\n this.email = json.email;\n this.first_name = json.first_name;\n this.last_name = json.last_name;\n this.password = json.password;\n this.company_id = json.company_id ?? null;\n this.roles = new RoleModel().fromJSONList(json.roles) || [];\n this.role_ids = [];\n this.is_admin = json.is_admin;\n this.company = json.company;\n }\n return this;\n }\n\n public fromJSONList(json: any): UsersModel[] {\n if (json) {\n return json.map((element: any) => new UsersModel().fromJSON(element));\n }\n return [];\n }\n\n public toJSON() {\n return {\n \"id\": this.id,\n \"username\": this.username,\n \"email\": this.email,\n \"first_name\": this.first_name,\n \"last_name\": this.last_name,\n \"password\": this.password,\n \"company_id\": this.company_id,\n \"roles\": this.roles,\n \"role_ids\": this.role_ids,\n \"is_admin\": this.is_admin,\n \"company\": this.company\n };\n }\n\n public getId() {\n return this.id ?? \"\";\n }\n\n public getReference() {\n return this.username ?? \"\"; \n }\n}","\nimport { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class FileTemplateType implements DataBaseModelInterface {\n public id: string;\n public code: string;\n constructor(data: Partial<FileTemplateType> = {}) {\n this.id = data.id || '';\n this.code = data.code || '';\n }\n\n public fromJSON(json: any): FileTemplateType {\n if (json) {\n this.id = json.id || '';\n this.code = json.code || '';\n }\n\n return this;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n code: this.code,\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.code;\n }\n}","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport class DateUtility {\n static fromUTCtoUruguay(date: string | Date, outputFormat: string = 'DD/MM/YYYY HH:mm'): string {\n try {\n if (!date) {\n return '';\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n dayJsObj = dayjs.utc(date);\n } else {\n dayJsObj = dayjs.utc(date);\n }\n\n return dayJsObj.tz('America/Montevideo').format(outputFormat);\n } catch (e) {\n console.error('Error al convertir fecha de UTC a Uruguay:', e);\n return '';\n }\n }\n\n static fromUTCtoUruguayWithInputFormat(\n date: string | Date, \n inputFormat?: string,\n outputFormat: string = 'DD/MM/YYYY HH:mm'\n ): string {\n try {\n if (!date) {\n return '';\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n if (inputFormat) {\n dayJsObj = dayjs(date, inputFormat).utc();\n if (!dayJsObj.isValid()) {\n console.error('Error al parsear fecha con formato personalizado:', date, inputFormat);\n return '';\n }\n } else {\n dayJsObj = dayjs.utc(date);\n }\n } else {\n dayJsObj = dayjs.utc(date);\n }\n\n if (!dayJsObj.isValid()) {\n console.error('Fecha inválida:', date);\n return '';\n }\n\n return dayJsObj.tz('America/Montevideo').format(outputFormat);\n } catch (e) {\n console.error('Error al convertir fecha de UTC a Uruguay con formato de entrada:', e);\n return '';\n }\n }\n\n\n static fromUTCtoUruguayDate(date: string | Date): Date | null {\n try {\n if (!date) {\n return null;\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n dayJsObj = dayjs.utc(date);\n } else {\n dayJsObj = dayjs.utc(date);\n }\n\n return dayJsObj.tz('America/Montevideo').toDate();\n } catch (e) {\n console.error('Error al convertir fecha de UTC a Uruguay:', e);\n return null;\n }\n }\n\n static getCurrentUruguayTime(outputFormat: string = 'DD/MM/YYYY HH:mm'): string {\n try {\n return dayjs().tz('America/Montevideo').format(outputFormat);\n } catch (e) {\n console.error('Error al obtener fecha actual de Uruguay:', e);\n return '';\n }\n }\n\n static fromUruguayToUTC(date: string | Date, outputFormat: string = 'DD/MM/YYYY HH:mm'): string {\n try {\n if (!date) {\n return '';\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n dayJsObj = dayjs.tz(date, 'America/Montevideo');\n } else {\n dayJsObj = dayjs.tz(date, 'America/Montevideo');\n }\n\n return dayJsObj.utc().format(outputFormat);\n } catch (e) {\n console.error('Error al convertir fecha de Uruguay a UTC:', e);\n return '';\n }\n }\n\n static isSameDayInUruguay(date1: string | Date, date2: string | Date): boolean {\n try {\n if (!date1 || !date2) {\n return false;\n }\n\n const uruguayDate1 = this.fromUTCtoUruguayDate(date1);\n const uruguayDate2 = this.fromUTCtoUruguayDate(date2);\n\n if (!uruguayDate1 || !uruguayDate2) {\n return false;\n }\n\n return dayjs.tz(uruguayDate1, 'America/Montevideo').isSame(\n dayjs.tz(uruguayDate2, 'America/Montevideo'), \n 'day'\n );\n } catch (e) {\n console.error('Error al comparar fechas en Uruguay:', e);\n return false;\n }\n }\n} ","export const isSameDate = (date1: Date, date2: Date): boolean => {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { UsersModel } from \"../users/users.model\";\nimport { FileTemplateType } from \"./file-template-type.model\";\nimport { DateUtility } from \"../../utilities\";\n\nexport class FileModel implements DataBaseModelInterface {\n public id: string;\n public filename: string;\n public s3_key: string;\n public size: number;\n public type: string;\n public file_type: FileTemplateType;\n public uploaded_by_id: string;\n public created_at: string;\n public updated_at: string;\n public uploaded_by: UsersModel;\n\n constructor(data: Partial<FileModel> = {}) {\n this.id = data.id || '';\n this.filename = data.filename || '';\n this.s3_key = data.s3_key || '';\n this.size = data.size || 0;\n this.type = data.type || '';\n this.file_type = data.file_type || new FileTemplateType();\n this.uploaded_by_id = data.uploaded_by_id || '';\n this.created_at = data.created_at || '';\n this.updated_at = data.updated_at || '';\n this.uploaded_by = data.uploaded_by || new UsersModel();\n }\n\n public fromJSON(json: any): FileModel {\n if (json) {\n this.id = json.id || '';\n this.filename = json.filename || '';\n this.s3_key = json.s3_key || '';\n this.size = json.size || 0;\n this.type = json.type || '';\n this.file_type = json.file_type || new FileTemplateType();\n this.uploaded_by_id = json.uploaded_by_id || '';\n this.created_at = json.created_at ? DateUtility.fromUTCtoUruguay(json.created_at, 'YYYY-MM-DD HH:mm:ss') : '';\n this.updated_at = json.updated_at ? DateUtility.fromUTCtoUruguay(json.updated_at, 'YYYY-MM-DD HH:mm:ss') : '';\n this.uploaded_by = json.uploaded_by || new UsersModel();\n }\n return this;\n }\n\n public static fromJSONList(json: any[]): FileModel[] {\n return json.map((element: any) => new FileModel().fromJSON(element));\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n filename: this.filename,\n s3_key: this.s3_key,\n size: this.size,\n type: this.type,\n file_type: this.file_type,\n uploaded_by_id: this.uploaded_by_id,\n created_at: this.created_at,\n updated_at: this.updated_at,\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.filename;\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiService } from '@solcre-org/core';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GlobalApiConfigService {\n private apiService = inject(ApiService);\n private currentConfig: ApiConfig | null = null;\n\n public configure(config: ApiConfig): void {\n this.currentConfig = config;\n this.apiService.setConfig({\n apiUrl: config.apiUrl\n });\n }\n\n public getConfig(): ApiConfig | null {\n return this.currentConfig;\n }\n\n public getApiUrl(): string | null {\n return this.currentConfig ? this.currentConfig.apiUrl : null;\n }\n\n public isConfigured(): boolean {\n return this.currentConfig !== null;\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { Observable, switchMap, map, catchError, throwError } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ApiService, ApiResponseModel } from '@solcre-org/core';\nimport { FileModel } from '../models/global/file.model';\nimport { PresignedUrlRequest } from '../interfaces/global/PresignedUrlRequest.interface';\nimport { PresignedUrlResponse } from '../interfaces/global/PresignedUrlResponse.interface';\nimport { ConfirmUploadRequest } from '../interfaces/global/ConfirmUploadRequest.interface';\nimport { PresignedDownloadUrlResponse } from '../interfaces/global/PresignedDownloadUrlResponse.interface';\nimport { FileType } from '../enums/global/FileType.enum';\nimport { LoaderService } from '../components/loader/services/loader.service';\nimport { AlertService } from './alert.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AlertType } from '../enums/global/AlertType.enum';\nimport { GlobalApiConfigService } from './global-api-config.service';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n private apiService = inject(ApiService);\n private httpClient = inject(HttpClient);\n private loaderService = inject(LoaderService);\n private alertService = inject(AlertService);\n private translateService = inject(TranslateService);\n private globalApiConfigService = inject(GlobalApiConfigService);\n\n private getPresignedUrl(request: PresignedUrlRequest): Observable<PresignedUrlResponse> {\n const FILES_PRESIGNED_URL: string = this.globalApiConfigService.getConfig()?.filesPresignedUrl || '';\n return this.apiService.createObj(FILES_PRESIGNED_URL, request).pipe(\n map((res: ApiResponseModel) => res.data as PresignedUrlResponse),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.presigned_url_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n \n private uploadToS3(file: File, presignedUrl: PresignedUrlResponse): Observable<void> {\n const headers = new HttpHeaders({});\n return this.httpClient.put(presignedUrl.url, file, { \n headers,\n responseType: 'text'\n }).pipe(\n map(() => void 0),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.s3_upload_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n private confirmUpload(request: ConfirmUploadRequest): Observable<FileModel> {\n const FILES_CONFIRM_UPLOAD: string = this.globalApiConfigService.getConfig()?.filesConfirmUploadUrl || '';\n return this.apiService.createObj(FILES_CONFIRM_UPLOAD, request).pipe(\n map((res: ApiResponseModel) => new FileModel().fromJSON(res.data)),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.confirm_upload_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n public uploadFile(\n file: File, \n companyId: string, \n fileType: FileType\n ): Observable<FileModel> {\n this.loaderService.showLoader();\n\n const presignedRequest: PresignedUrlRequest = {\n company_id: companyId,\n file_type_code: fileType,\n filename: file.name,\n content_type: file.type\n };\n\n return this.getPresignedUrl(presignedRequest).pipe(\n switchMap((presignedUrl: PresignedUrlResponse) => {\n return this.uploadToS3(file, presignedUrl).pipe(\n switchMap(() => {\n const confirmRequest: ConfirmUploadRequest = {\n s3_key: presignedUrl.s3_key,\n filename: file.name,\n content_type: file.type,\n size: file.size,\n file_type_code: fileType,\n company_id: companyId\n };\n return this.confirmUpload(confirmRequest);\n })\n );\n }),\n map((fileModel: FileModel) => {\n return fileModel;\n }),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.general_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n }),\n map((result) => {\n this.loaderService.hideLoader();\n return result;\n }),\n catchError((error) => {\n this.loaderService.hideLoader();\n return throwError(() => error);\n })\n );\n }\n\n public uploadMultipleFiles(\n files: File[], \n companyId: string, \n fileType: FileType\n ): Observable<FileModel[]> {\n const uploadObservables = files.map(file => \n this.uploadFile(file, companyId, fileType)\n );\n\n return new Observable(observer => {\n Promise.all(uploadObservables.map(obs => obs.toPromise()))\n .then(results => {\n observer.next(results as FileModel[]);\n observer.complete();\n })\n .catch(error => {\n observer.error(error);\n });\n });\n }\n\n public getPresignedDownloadUrl(fileId: string): Observable<string> {\n const FILES_PRESIGNED_DOWNLOAD_URL: string = this.globalApiConfigService.getConfig()?.filesDownloadUrl || '';\n const endpoint = FILES_PRESIGNED_DOWNLOAD_URL.replace(':id', fileId);\n \n return this.apiService.fetchData(endpoint).pipe(\n map((res: ApiResponseModel) => {\n const response = res.data as PresignedDownloadUrlResponse;\n return response.url;\n }),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.presigned_download_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n public getPresignedFile(fileId: string, download: boolean = false, filename?: string): Observable<void> {\n this.loaderService.showLoader();\n\n return this.getPresignedDownloadUrl(fileId).pipe(\n switchMap((downloadUrl: string) => {\n if (download) {\n this.downloadWithIframe(downloadUrl);\n\n return new Observable<void>(observer => {\n observer.next();\n observer.complete();\n });\n } else {\n window.open(downloadUrl, '_blank');\n return new Observable<void>(observer => {\n observer.next();\n observer.complete();\n });\n }\n }),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.file_access_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n }),\n map((result) => {\n this.loaderService.hideLoader();\n return result;\n }),\n catchError((error) => {\n this.loaderService.hideLoader();\n return throwError(() => error);\n })\n );\n }\n\n private downloadWithIframe(url: string): void {\n const iframe = document.createElement('iframe');\n iframe.id = 'download-iframe-' + Date.now();\n iframe.src = url;\n iframe.style.display = 'none';\n iframe.style.visibility = 'hidden';\n iframe.style.position = 'absolute';\n iframe.style.left = '-9999px';\n \n document.body.appendChild(iframe);\n \n setTimeout(() => {\n const existingIframe = document.getElementById(iframe.id);\n if (existingIframe) {\n document.body.removeChild(existingIframe);\n }\n }, 5000);\n }\n\n public configureApiUrl(apiUrl: string): void {\n this.globalApiConfigService.configure({ apiUrl });\n }\n\n public configureApi(config: ApiConfig): void {\n this.globalApiConfigService.configure(config);\n }\n} ","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { CustomHeader } from '../interfaces/global/CustomHeader.interface';\nimport { HeaderConfiguration, HeaderConfigurationStrategy } from '../interfaces/global/HeaderConfiguration.interface';\nimport { ApiMethods } from '../enums/global/ApiMethods.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderConfigurationService {\n private configurationSubject = new BehaviorSubject<HeaderConfiguration>({});\n private strategySubject = new BehaviorSubject<HeaderConfigurationStrategy>({\n strategy: 'merge',\n priority: ['context', 'endpoint', 'global']\n });\n\n public configuration$ = this.configurationSubject.asObservable();\n public strategy$ = this.strategySubject.asObservable();\n\n setGlobalHeaders(headers: {\n get?: CustomHeader[];\n post?: CustomHeader[];\n put?: CustomHeader[];\n patch?: CustomHeader[];\n delete?: CustomHeader[];\n }): void {\n const currentConfig = this.configurationSubject.value;\n const newConfig = {\n ...currentConfig,\n global: { ...currentConfig.global, ...headers }\n };\n \n this.configurationSubject.next(newConfig);\n }\n\n setContextHeaders(contextKey: string, headers: {\n get?: CustomHeader[];\n post?: CustomHeader[];\n put?: CustomHeader[];\n patch?: CustomHeader[];\n delete?: CustomHeader[];\n }): void {\n const currentConfig = this.configurationSubject.value;\n const newConfig = {\n ...currentConfig,\n contexts: {\n ...currentConfig.contexts,\n [contextKey]: { ...currentConfig.contexts?.[contextKey], ...headers }\n }\n };\n \n this.configurationSubject.next(newConfig);\n }\n\n setEndpointHeaders(endpoint: string, headers: {\n get?: CustomHeader[];\n post?: CustomHeader[];\n put?: CustomHeader[];\n patch?: CustomHeader[];\n delete?: CustomHeader[];\n }): void {\n const currentConfig = this.configurationSubject.value;\n const newConfig = {\n ...currentConfig,\n endpoints: {\n ...currentConfig.endpoints,\n [endpoint]: { ...currentConfig.endpoints?.[endpoint], ...headers }\n }\n };\n \n this.configurationSubject.next(newConfig);\n }\n\n setStrategy(strategy: HeaderConfigurationStrategy): void {\n this.strategySubject.next(strategy);\n }\n\n getProcessedHeaders(\n method: ApiMethods,\n options?: {\n contextKey?: string;\n endpoint?: string;\n }\n ): Record<string, string> {\n const config = this.configurationSubject.value;\n const strategy = this.strategySubject.value;\n\n const headerSources: CustomHeader[][] = [];\n \n strategy.priority?.forEach(priorityType => {\n switch (priorityType) {\n case 'global':\n if (config.global?.[method]) {\n headerSources.push(config.global[method]!);\n }\n break;\n case 'context':\n if (options?.contextKey && config.contexts?.[options.contextKey]?.[method]) {\n headerSources.push(config.contexts[options.contextKey][method]!);\n }\n break;\n case 'endpoint':\n if (options?.endpoint && config.endpoints?.[options.endpoint]?.[method]) {\n headerSources.push(config.endpoints[options.endpoint][method]!);\n }\n break;\n }\n });\n\n let processedHeaders: Record<string, string> = {};\n \n switch (strategy.strategy) {\n case 'override':\n const lastSource = headerSources.reverse().find(source => source.length > 0);\n if (lastSource) {\n processedHeaders = this.mergeHeaders([lastSource]);\n }\n break;\n \n case 'append':\n processedHeaders = this.mergeHeaders(headerSources);\n break;\n \n case 'merge':\n default:\n processedHeaders = this.mergeHeaders(headerSources);\n break;\n }\n\n return processedHeaders;\n }\n\n private mergeHeaders(headerSources: CustomHeader[][]): Record<string, string> {\n const merged: Record<string, string> = {};\n \n headerSources.forEach(headerArray => {\n headerArray.forEach(headerObj => {\n Object.entries(headerObj).forEach(([key, value]) => {\n if (value !== undefined) {\n merged[key] = value;\n }\n });\n });\n });\n \n return merged;\n }\n\n clearAllHeaders(): void {\n this.configurationSubject.next({});\n }\n\n clearContextHeaders(contextKey: string): void {\n const currentConfig = this.configurationSubject.value;\n if (currentConfig.contexts) {\n delete currentConfig.contexts[contextKey];\n this.configurationSubject.next({ ...currentConfig });\n }\n }\n\n getCurrentConfiguration(): HeaderConfiguration {\n return this.configurationSubject.value;\n }\n\n onConfigurationChange(): Observable<HeaderConfiguration> {\n return this.configuration$;\n }\n}\n","export enum ApiMethods {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete'\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiResponseModel, ApiService } from '@solcre-org/core';\nimport { Observable, BehaviorSubject, tap, map, finalize, Subscription, throwError, catchError, forkJoin, of } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { zip } from 'rxjs';\nimport { LoaderService } from '../components/loader/services/loader.service';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { MoreDataConfig } from '../components/generic-table/interfaces/MoreDataConfig.interface';\nimport { AlertService } from './alert.service';\nimport { FileUploadService } from './file-upload.service';\nimport { FileModel } from '../models/global/file.model';\nimport { FileType } from '../enums/global/FileType.enum';\nimport { AlertType } from '../enums/global/AlertType.enum';\nimport { FilterParams } from '../interfaces/global/FilterParams.interface';\nimport { PaginatedResponse } from '../interfaces/global/PaginatedResponse.interface';\nimport { ApiResponse } from '../interfaces/global/ApiResponse.interface';\nimport { GlobalApiConfigService } from './global-api-config.service';\nimport { HeaderConfigurationService } from './header-configuration.service';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\nimport { ApiMethods } from '../enums/global/ApiMethods.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModelApiService<T extends DataBaseModelInterface> {\n private apiService = inject(ApiService);\n private loaderService = inject(LoaderService);\n private router = inject(Router);\n private alertService = inject(AlertService);\n private fileUploadService = inject(FileUploadService);\n private globalApiConfigService = inject(GlobalApiConfigService);\n private headerConfigService = inject(HeaderConfigurationService);\n\n private routerSubscription: Subscription;\n private dataSubject = new BehaviorSubject<PaginatedResponse<T>>({ items: [], total: 0, page: 1, pages: 1, size: 25 });\n private moreDataSubjects = new Map<string, BehaviorSubject<any[]>>();\n private customErrorHandler?: (error: any, defaultMessage: string, operation: string) => string;\n\n private currentContext?: string;\n private currentEndpoint?: string;\n\n data$ = this.dataSubject.asObservable();\n customArrayDataKey = new BehaviorSubject<string>('');\n customArrayDataKey$ = this.customArrayDataKey.asObservable();\n\n constructor() {\n this.routerSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.resetData();\n }\n });\n }\n\n resetData(): void {\n this.dataSubject.next({ items: [], total: 0, page: 1, pages: 1, size: 25 });\n this.moreDataSubjects.forEach(subject => subject.next([]));\n }\n\n setContext(contextKey: string): void {\n this.currentContext = contextKey;\n }\n\n setEndpoint(endpoint: string): void {\n this.currentEndpoint = endpoint;\n }\n\n private getProcessedHeaders(method: ApiMethods): Record<string, string> | undefined {\n const headers = this.headerConfigService.getProcessedHeaders(method, {\n contextKey: this.currentContext,\n endpoint: this.currentEndpoint\n });\n\n return Object.keys(headers).length > 0 ? headers : undefined;\n }\n\n setErrorHandler(handler?: (error: any, defaultMessage: string, operation: string) => string): void {\n this.customErrorHandler = handler;\n }\n\n private extractErrorMessage(error: any, defaultMessage: string, operation: string = 'operation'): string {\n if (this.customErrorHandler) {\n return this.customErrorHandler(error, defaultMessage, operation);\n }\n\n return defaultMessage;\n }\n\n loadData(endpoint: string, modelFactory: (json: any) => T, filterParams?: FilterParams, customArrayKey?: string): void {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const queryParams = filterParams ? this.buildQueryString(filterParams) : '';\n const url = queryParams ? `${endpoint}?${queryParams}` : endpoint;\n const customHeaders = this.getProcessedHeaders(ApiMethods.GET);\n\n const fetchCall = customHeaders\n ? this.apiService.fetchData(url, undefined, customHeaders)\n : this.apiService.fetchData(url);\n \n fetchCall.pipe(\n map((res: ApiResponseModel) => {\n if (!res || !res.data) {\n return { items: [], total: 0, page: 1, pages: 1, size: 25 } as PaginatedResponse<T>;\n }\n\n const arrayKey = customArrayKey || this.customArrayDataKey.value;\n\n if (arrayKey !== '') {\n if (typeof res.data === 'object' && res.data[arrayKey]) {\n if (Array.isArray(res.data[arrayKey])) {\n const customItems = res.data[arrayKey].map((item: any) => modelFactory(item));\n return {\n items: customItems,\n total: res.data.totalItems || res.data.total_items || customItems.length,\n page: res.data.page || 1,\n pages: res.data.pages || res.data.page_count || 1,\n size: res.data.size || customItems.length\n } as PaginatedResponse<T>;\n }\n }\n return { \n items: [],\n total: 0,\n page: 1,\n pages: 1,\n size: 0 \n } as PaginatedResponse<T>;\n }\n\n if (typeof res.data === 'object' && 'data' in res.data) {\n const items = Array.isArray(res.data.data) ? res.data.data.map((item: any) => modelFactory(item)) : [];\n return {\n items,\n total: res.data.total_items || items.length,\n page: res.data.page || 1,\n pages: res.data.page_count || 1,\n size: res.data.size || 25\n } as PaginatedResponse<T>;\n }\n\n const items = Array.isArray(res.data) ? res.data.map((item: any) => modelFactory(item)) : [];\n return {\n items,\n total: items.length,\n page: 1,\n pages: 1,\n size: items.length\n } as PaginatedResponse<T>;\n }),\n tap(data => {\n this.dataSubject.next(data);\n })\n ).subscribe({\n error: (error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_FETCH', 'fetch');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n this.dataSubject.next(this.dataSubject.value);\n this.loaderService.hideLoader();\n },\n complete: () => {\n this.loaderService.hideLoader();\n }\n });\n }\n\n private buildQueryString(params: FilterParams): string {\n return Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null && value !== '')\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n return value\n .map(v => `${encodeURIComponent(key)}[]=${encodeURIComponent(v)}`)\n .join('&');\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&');\n }\n\n loadMoreData(configs: MoreDataConfig<any>[]): void {\n if (configs.length === 0) return;\n \n const observables = configs.map(config => {\n if (!this.moreDataSubjects.has(config.key)) {\n this.moreDataSubjects.set(config.key, new BehaviorSubject<any[]>([]));\n }\n \n return this.apiService.fetchData(config.endpoint).pipe(\n map((res: ApiResponseModel) => {\n if (!res || !res.data) {\n return { key: config.key, data: [] };\n }\n\n let dataArray: any[] = [];\n \n if (typeof res.data === 'object' && 'data' in res.data && Array.isArray(res.data.data)) {\n dataArray = res.data.data;\n } else if (Array.isArray(res.data)) {\n dataArray = res.data;\n }\n \n const mappedData = dataArray.map(item => {\n const modelInstance = new config.model();\n \n if (modelInstance.fromJSON && typeof modelInstance.fromJSON === 'function') {\n modelInstance.fromJSON(item);\n }\n \n return modelInstance;\n });\n \n return { key: config.key, data: mappedData };\n }),\n catchError(error => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: 'commons.notifications.ERROR_FETCH',\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return of({ key: config.key, data: [] });\n })\n );\n });\n\n forkJoin(observables).subscribe({\n next: (results) => {\n results.forEach(result => {\n const subject = this.moreDataSubjects.get(result.key);\n if (subject) {\n subject.next(result.data);\n }\n });\n },\n error: () => {\n configs.forEach(config => {\n const subject = this.moreDataSubjects.get(config.key);\n if (subject) {\n subject.next([]);\n }\n });\n }\n });\n }\n\n getMoreData(key: string): any[] {\n return this.moreDataSubjects.has(key) ? [...this.moreDataSubjects.get(key)!.value] : [];\n }\n\n getMoreDataObservable(key: string): Observable<any[]> {\n const subject = this.moreDataSubjects.get(key);\n if (!subject) {\n this.moreDataSubjects.set(key, new BehaviorSubject<any[]>([]));\n }\n return this.moreDataSubjects.get(key)!.asObservable();\n }\n\n private callApiWithHeaders<TApiResult>(\n method: (...args: any[]) => Observable<TApiResult>,\n args: any[],\n headers?: Record<string, string>\n ): Observable<TApiResult> {\n return headers ? method(...args, headers) : method(...args);\n }\n\n createItem(endpoint: string, item: T, modelFactory: (json: any) => T): Observable<T> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n\n const customHeaders = this.getProcessedHeaders(ApiMethods.POST);\n\n const createCall = customHeaders\n ? this.apiService.createObj(endpoint, item, false, customHeaders)\n : this.apiService.createObj(endpoint, item, false);\n \n return createCall.pipe(\n map((res: ApiResponseModel) => modelFactory(res.data)),\n tap(createdItem => {\n const currentData = this.dataSubject.value;\n this.dataSubject.next({ ...currentData, items: [...currentData.items, createdItem] });\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_CREATE',\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_CREATE', 'create');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n updateItem(endpoint: string, id: number | string, item: T, modelFactory: (json: any) => T): Observable<T> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const updateWithPatch = this.globalApiConfigService.getConfig()?.updateWithPatch;\n const customHeaders = this.getProcessedHeaders(updateWithPatch ? ApiMethods.PATCH : ApiMethods.PUT);\n \n const updateCall = updateWithPatch\n ? (customHeaders \n ? this.apiService.partialUpdateObj(endpoint, id, item, false, customHeaders)\n : this.apiService.partialUpdateObj(endpoint, id, item, false))\n : (customHeaders \n ? this.apiService.updateObj(endpoint, id, item, false, customHeaders)\n : this.apiService.updateObj(endpoint, id, item, false));\n \n return updateCall.pipe(\n map((res: ApiResponseModel) => modelFactory(res.data)),\n tap(updatedItem => {\n const currentData = this.dataSubject.value;\n const updatedData = {\n ...currentData,\n items: currentData.items.map(d => d.getId() === updatedItem.getId() ? updatedItem : d)\n };\n this.dataSubject.next(updatedData);\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_UPDATE',\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_UPDATE', 'update');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n getItemById(endpoint: string, id: number | string, modelFactory: (json: any) => T): Observable<T> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const customHeaders = this.getProcessedHeaders(ApiMethods.GET);\n const url = `${endpoint}/${id}`;\n \n const fetchCall = customHeaders\n ? this.apiService.fetchData(url, undefined, customHeaders)\n : this.apiService.fetchData(url);\n \n return fetchCall.pipe(\n map((res: ApiResponseModel) => {\n if (!res || !res.data) {\n throw new Error('No data found');\n }\n return modelFactory(res.data);\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_FETCH', 'getById');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n deleteItem(endpoint: string, id: number | string): Observable<boolean> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const customHeaders = this.getProcessedHeaders(ApiMethods.DELETE);\n \n const deleteCall = customHeaders \n ? this.apiService.deleteObj(endpoint, id, customHeaders)\n : this.apiService.deleteObj(endpoint, id);\n \n return deleteCall.pipe(\n tap(() => {\n const currentData = this.dataSubject.value;\n const updatedData = {\n ...currentData,\n items: currentData.items.filter(d => d.getId() !== id)\n };\n this.dataSubject.next(updatedData);\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_DELETE',\n autoClose: true,\n inBottom: true,\n duration: 5000,\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_DELETE', 'delete');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n deleteItems(endpoint: string, ids: (number | string)[]): Observable<boolean[]> {\n this.loaderService.showLoader();\n const deleteObservables = ids.map(id => this.deleteItem(endpoint, id));\n return zip(...deleteObservables).pipe(\n tap(() => {\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_DELETE',\n autoClose: true,\n inBottom: false,\n duration: 5000\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_DELETE', 'deleteMultiple');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n getData(): T[] {\n return this.dataSubject.value.items;\n }\n\n refreshData(endpoint: string, modelFactory: (json: any) => T): void {\n this.loadData(endpoint, modelFactory);\n }\n\n uploadFile(file: File, companyId: string, fileType: FileType): Observable<FileModel> {\n return this.fileUploadService.uploadFile(file, companyId, fileType);\n }\n\n uploadMultipleFiles(files: File[], companyId: string, fileType: FileType): Observable<FileModel[]> {\n return this.fileUploadService.uploadMultipleFiles(files, companyId, fileType);\n }\n\n getPresignedDownloadUrl(fileId: string): Observable<string> {\n return this.fileUploadService.getPresignedDownloadUrl(fileId);\n }\n\n getPresignedFile(fileId: string, download: boolean = true, filename?: string): Observable<void> {\n return this.fileUploadService.getPresignedFile(fileId, download, filename);\n }\n\n ngOnDestroy(): void {\n if (this.routerSubscription) {\n this.routerSubscription.unsubscribe();\n }\n this.moreDataSubjects.forEach(subject => subject.complete());\n this.moreDataSubjects.clear();\n }\n\n public configureApiUrl(apiUrl: string): void {\n this.globalApiConfigService.configure({ apiUrl });\n }\n\n public configureApi(config: ApiConfig): void {\n this.globalApiConfigService.configure(config);\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { PaginationService } from '../../generic-pagination/services/pagination.service';\nimport { LoaderService } from '../../loader/services/loader.service';\nimport { tap } from 'rxjs/operators';\nimport { FilterParams } from '../../../interfaces/global/FilterParams.interface';\nimport { ModelApiService } from '../../../services/model-api.service';\nimport { PaginatedResponse } from '../../../interfaces/global/PaginatedResponse.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableDataService<T extends DataBaseModelInterface & { [key: string]: any }> {\n private modelApiService = inject(ModelApiService<T>);\n private loaderService = inject(LoaderService);\n private displayedDataSubject = new BehaviorSubject<T[]>([]);\n private currentEndpoint: string | null = null;\n private currentModelFactory: ((json: any) => T) | null = null;\n private currentFilterParams: FilterParams | undefined = undefined;\n private currentPaginationParams: { page: number; size: number } | undefined = undefined;\n private currentCustomParams: Record<string, any> | undefined = undefined;\n private isPaginationEnabled: boolean = true;\n private currentCustomArrayKey: string | undefined = undefined;\n private isLoading: boolean = false;\n \n data$ = this.modelApiService.data$;\n displayedData$ = this.displayedDataSubject.asObservable();\n\n setData(newData: T[]): void {\n this.displayedDataSubject.next([...newData]);\n }\n\n getData(): T[] {\n const data = this.modelApiService.getData() as PaginatedResponse<T> | T[];\n return Array.isArray(data) ? data : data.items || [];\n }\n\n getDisplayedData(): T[] {\n return [...this.displayedDataSubject.value];\n }\n \n setEndpoint(\n endpoint: string, \n modelFactory: (json: any) => T, \n loaderId?: string, \n enablePagination: boolean = true, \n customArrayKey?: string,\n customParams?: Record<string, any>\n ): void {\n this.currentEndpoint = endpoint;\n this.currentModelFactory = modelFactory;\n this.isPaginationEnabled = enablePagination;\n this.currentCustomArrayKey = customArrayKey;\n this.currentCustomParams = customParams;\n\n if (enablePagination) {\n this.currentPaginationParams = { page: 1, size: 25 };\n } else {\n this.currentPaginationParams = undefined;\n }\n \n this.loadData(undefined, this.currentPaginationParams, loaderId);\n }\n\n private loadData(filterParams?: FilterParams, paginationParams?: { page: number; size: number }, loaderId?: string): void {\n if (!this.currentEndpoint || !this.currentModelFactory) {\n return;\n }\n\n if (this.isLoading) {\n return;\n }\n\n this.isLoading = true;\n\n if (loaderId) {\n this.loaderService.showLoader(loaderId);\n }\n\n if (filterParams !== undefined) {\n this.currentFilterParams = filterParams;\n }\n\n if (paginationParams !== undefined) {\n this.currentPaginationParams = paginationParams;\n }\n\n let params: FilterParams = {\n ...this.currentCustomParams,\n ...this.currentFilterParams\n };\n \n if (this.isPaginationEnabled && this.currentPaginationParams) {\n params = {\n ...params,\n page: this.currentPaginationParams.page,\n size: this.currentPaginationParams.size\n };\n }\n\n this.modelApiService.loadData(\n this.currentEndpoint,\n this.currentModelFactory,\n params,\n this.currentCustomArrayKey\n );\n\n setTimeout(() => {\n this.isLoading = false;\n }, 100);\n }\n\n updateCustomParams(customParams: Record<string, any> | undefined, loaderId?: string): void {\n if (JSON.stringify(this.currentCustomParams) !== JSON.stringify(customParams)) {\n this.currentCustomParams = customParams;\n this.loadData(this.currentFilterParams, this.currentPaginationParams, loaderId);\n }\n }\n\n refreshWithFilters(filterParams?: FilterParams, loaderId?: string): void {\n if (this.isPaginationEnabled) {\n this.currentPaginationParams = { \n page: 1, \n size: this.currentPaginationParams?.size || 25 \n };\n }\n const paginationParams = this.isPaginationEnabled ? this.currentPaginationParams : undefined;\n this.loadData(filterParams, paginationParams, loaderId);\n }\n\n updateDisplayedData(\n filteredData: T[],\n enablePagination: boolean,\n paginationService: PaginationService,\n tableId: string,\n itemsLoaded: number\n ): void {\n if (!this.currentEndpoint) {\n let displayed: T[];\n if (enablePagination) {\n const startIndex = (paginationService.getCurrentPage(tableId)() - 1) * paginationService.getPageSize(tableId)();\n const endIndex = startIndex + paginationService.getPageSize(tableId)();\n displayed = filteredData.slice(startIndex, endIndex);\n } else {\n displayed = filteredData.slice(0, itemsLoaded);\n }\n this.displayedDataSubject.next([...displayed]);\n } else {\n this.displayedDataSubject.next([...filteredData]);\n }\n }\n\n updatePagination(page: number, size: number, loaderId?: string): void {\n if (this.currentEndpoint) {\n if (page !== this.currentPaginationParams?.page || size !== this.currentPaginationParams?.size) {\n this.loadData(this.currentFilterParams, { page, size }, loaderId);\n }\n }\n }\n\n createItem(endpoint: string, item: T, modelFactory: (json: any) => T): Observable<T> {\n if (!endpoint || !modelFactory) {\n throw new Error('Endpoint and modelFactory are required');\n }\n return this.modelApiService.createItem(endpoint, item, modelFactory);\n }\n\n updateItem(endpoint: string, updatedItem: T, modelFactory: (json: any) => T): Observable<T> {\n if (!endpoint || !modelFactory) {\n throw new Error('Endpoint and modelFactory are required');\n }\n return this.modelApiService.updateItem(endpoint, updatedItem.getId(), updatedItem, modelFactory);\n }\n\n deleteItem(endpoint: string, item: T): Observable<boolean> {\n return this.modelApiService.deleteItem(endpoint, item.getId()).pipe(\n tap(() => {\n const paginationParams = this.isPaginationEnabled ? this.currentPaginationParams : undefined;\n this.loadData(this.currentFilterParams, paginationParams);\n })\n );\n }\n\n updateFilters(filterValues: Map<string, any>, loaderId?: string): void {\n if (!this.currentEndpoint || !this.currentModelFactory) {\n console.log('No endpoint or model factory defined for updateFilters');\n return;\n \n }\n \n const filterParams: FilterParams = {};\n filterValues.forEach((value, key) => {\n if (value !== undefined && value !== null && value !== '') {\n filterParams[key] = value;\n }\n });\n\n const normalizedCurrentFilters: FilterParams = {};\n if (this.currentFilterParams) {\n Object.keys(this.currentFilterParams).forEach(key => {\n const value = this.currentFilterParams![key];\n if (value !== undefined && value !== null && value !== '') {\n normalizedCurrentFilters[key] = value;\n }\n });\n }\n\n const currentFiltersStr = JSON.stringify(normalizedCurrentFilters);\n const newFiltersStr = JSON.stringify(filterParams);\n \n if (currentFiltersStr !== newFiltersStr) {\n this.loadData(filterParams, { page: 1, size: this.currentPaginationParams?.size || 25 }, loaderId);\n }\n }\n\n isEndpointConfigured(): boolean {\n return this.currentEndpoint !== null && this.currentModelFactory !== null;\n }\n\n updateGlobalFilter(value: string, loaderId?: string): void {\n if (!this.currentEndpoint || !this.currentModelFactory) {\n \n return;\n }\n \n const currentSearch = this.currentFilterParams?.['search'] || '';\n const normalizedValue = value.trim();\n \n if (currentSearch !== normalizedValue) {\n const filterParams: FilterParams = { ...this.currentFilterParams };\n \n if (normalizedValue === '') {\n delete filterParams['search'];\n } else {\n filterParams['search'] = normalizedValue;\n }\n \n this.loadData(filterParams, { page: 1, size: this.currentPaginationParams?.size || 25 }, loaderId);\n }\n }\n\n updateRowData(\n rowId: string | number, \n updatedFields: { [key: string]: any },\n updateFunction?: (row: T) => T\n ): void {\n const currentDisplayedData = this.getDisplayedData();\n const updatedDisplayedData = currentDisplayedData.map(row => {\n if (row.getId() === rowId) {\n if (updateFunction) {\n return updateFunction(row);\n }\n return this.applyFieldUpdates(row, updatedFields);\n }\n return row;\n });\n \n this.displayedDataSubject.next(updatedDisplayedData);\n }\n\n private applyFieldUpdates(row: T, updatedFields: { [key: string]: any }): T {\n const updatedRow = { ...row };\n \n Object.keys(updatedFields).forEach(fieldKey => {\n const fieldValue = updatedFields[fieldKey];\n \n if (fieldKey.includes('.')) {\n this.setNestedProperty(updatedRow, fieldKey, fieldValue);\n } else {\n (updatedRow as any)[fieldKey] = fieldValue;\n }\n });\n \n return updatedRow;\n }\n\n private setNestedProperty(obj: any, path: string, value: any): void {\n const keys = path.split('.');\n let current = obj;\n \n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (!current[key] || typeof current[key] !== 'object') {\n current[key] = {};\n }\n current = current[key];\n }\n \n current[keys[keys.length - 1]] = value;\n }\n}","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PaginationService } from './services/pagination.service';\nimport { TableDataService } from '../generic-table/services/table-data.service';\nimport { Subscription } from 'rxjs';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-pagination',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-pagination.component.html'\n})\nexport class GenericPaginationComponent implements OnInit, OnDestroy {\n @Input() tableId!: string;\n @Input() isServerSide: boolean = false;\n\n private subscription: Subscription | null = null;\n\n constructor(\n public paginationService: PaginationService,\n private tableDataService: TableDataService<any>\n ) {}\n\n ngOnInit(): void {\n if (this.isServerSide) {\n this.subscription = this.paginationService.paginationChange$.subscribe(event => {\n if (event.tableId === this.tableId) {\n this.tableDataService.updatePagination(event.page, event.size);\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n getCurrentPage(): number {\n return this.paginationService.getCurrentPage(this.tableId)();\n }\n\n getPageSize(): number {\n return this.paginationService.getPageSize(this.tableId)();\n }\n\n getTotalItems(): number {\n return this.paginationService.getTotalItems(this.tableId)();\n }\n\n getTotalPages(): number {\n return this.paginationService.getTotalPages(this.tableId)();\n }\n\n getPageSizeOptions(): number[] {\n return this.paginationService.getPageSizeOptions(this.tableId);\n }\n\n onPageChange(page: number): void {\n this.paginationService.setCurrentPage(this.tableId, page);\n }\n\n handlePageSizeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n if (select) {\n const newSize = parseInt(select.value, 25);\n if (!isNaN(newSize)) {\n this.paginationService.setPageSize(this.tableId, newSize);\n }\n }\n }\n\n getDisplayedRange(): { start: number; end: number } {\n const currentPage = this.getCurrentPage();\n const pageSize = this.getPageSize();\n const totalItems = this.getTotalItems();\n \n const start = (currentPage - 1) * pageSize + 1;\n const end = Math.min(currentPage * pageSize, totalItems);\n \n return { start, end };\n }\n\n getVisiblePages(): (number | string)[] {\n const currentPage = this.getCurrentPage();\n const totalPages = this.getTotalPages();\n const pages: (number | string)[] = [];\n \n if (totalPages <= 7) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (currentPage <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(totalPages);\n } else if (currentPage >= totalPages - 3) {\n pages.push(1);\n pages.push('...');\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push('...');\n for (let i = currentPage - 1; i <= currentPage + 1; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(totalPages);\n }\n }\n \n return pages;\n }\n}","@if (getTotalItems() > 0) {\n <div class=\"c-pagination\">\n <p class=\"c-pagination__summary\">\n {{ 'pagination.viewing' | translate }} \n <span>{{ getDisplayedRange().start }}-{{ getDisplayedRange().end }}</span> \n {{ 'pagination.of' | translate }} \n <span>{{ getTotalItems() }}</span>\n </p>\n\n <nav class=\"c-pager\">\n <ul class=\"c-pager__list\">\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === 1\" \n (click)=\"onPageChange(getCurrentPage() - 1)\">\n <span class=\"icon-arrow-left\"></span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of getVisiblePages()\">\n <li class=\"c-pager__item\">\n @if (page === '...') {\n <span class=\"c-pager__link\">...</span>\n } @else {\n <a class=\"c-pager__link\" \n [class.is-active]=\"getCurrentPage() === page\"\n (click)=\"onPageChange(+page)\">\n {{ page }}\n </a>\n }\n </li>\n </ng-container>\n\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === getTotalPages()\"\n (click)=\"onPageChange(getCurrentPage() + 1)\">\n <span class=\"icon-arrow-right\"></span>\n </a>\n </li>\n </ul>\n </nav>\n </div>\n}","export enum DialogActions {\n CONFIRM = 'dialog.confirm',\n CANCEL = 'dialog.cancel',\n}","import { Injectable, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ConfirmationDialogConfig } from '../interfaces/ConfirmDialogConfig.interface';\nimport { DialogActions } from '../enums/DialogActions.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmationDialogService {\n private isOpen = signal<boolean>(false);\n isOpen$ = this.isOpen.asReadonly();\n\n private config = signal<ConfirmationDialogConfig>({ title: '' });\n config$ = this.config.asReadonly();\n\n private responseSubject = new Subject<string | boolean | undefined>();\n private response$ = this.responseSubject.asObservable();\n\n openDelete(title: string, message?: string, validationValue?: string): Observable<string | boolean | undefined> {\n return this.open({\n title,\n message,\n type: 'delete',\n icon: 'icon-delete',\n confirmButtonText: 'dialog.delete',\n cancelButtonText: 'dialog.cancel',\n confirmButtonClass: 'c-btn context:error',\n inputConfig: validationValue ? {\n label: 'dialog.confirmName',\n placeholder: 'dialog.enterName',\n validationValue\n } : undefined,\n showCloseButton: true\n });\n }\n\n openConfirm(config: ConfirmationDialogConfig): Observable<string | boolean | undefined> {\n return this.open({\n ...config,\n type: 'default',\n size: config.size || 'default',\n showCloseButton: config.showCloseButton ?? true\n });\n }\n\n private open(config: ConfirmationDialogConfig): Observable<string | boolean | undefined> {\n this.config.set({\n ...config,\n confirmButtonText: config.confirmButtonText ?? DialogActions.CONFIRM,\n cancelButtonText: config.cancelButtonText ?? DialogActions.CANCEL,\n messageParams: config.messageParams ?? {},\n showCloseButton: config.showCloseButton ?? true\n });\n this.isOpen.set(true);\n return this.response$;\n }\n\n confirm(value?: string | boolean): void {\n this.responseSubject.next(value);\n this.close();\n }\n\n cancel(): void {\n this.responseSubject.next(undefined);\n this.close();\n }\n\n private close(): void {\n this.isOpen.set(false);\n this.config.set({ title: '' });\n const newSubject = new Subject<string | boolean | undefined>();\n const oldSubject = this.responseSubject;\n this.responseSubject = newSubject;\n this.response$ = this.responseSubject.asObservable();\n oldSubject.complete();\n }\n\n\n openWithOptionalInput(\n title: string, \n message?: string, \n inputLabel?: string, \n inputPlaceholder?: string\n ): Observable<string | boolean | undefined> {\n return this.open({\n title,\n message,\n type: 'default',\n confirmButtonText: 'dialog.confirm',\n cancelButtonText: 'dialog.cancel',\n inputConfig: inputLabel ? {\n label: inputLabel,\n placeholder: inputPlaceholder || '',\n } : undefined,\n showCloseButton: true\n });\n }\n\n updateConfig(config: Partial<ConfirmationDialogConfig>): void {\n this.config.update(currentConfig => ({\n ...currentConfig,\n ...config\n }));\n }\n}","import { Component, input, output, signal, ElementRef, ViewChild, ContentChild, TemplateRef, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ConfirmationDialogConfig } from './interfaces/ConfirmDialogConfig.interface';\nimport { DialogActions } from './enums/DialogActions.enum';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-confirmation-dialog',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormsModule, GenericButtonComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './confirmation-dialog.component.html'\n})\nexport class ConfirmationDialogComponent {\n @ViewChild('popup') popupElement?: ElementRef;\n @ViewChild('overlay') overlayElement?: ElementRef;\n @ContentChild('customContent') customContentTemplate?: TemplateRef<any>;\n\n isOpen = input.required<boolean>();\n config = input.required<ConfirmationDialogConfig>();\n\n confirm = output<string | boolean | undefined>();\n cancel = output<void>();\n\n inputValue = signal<string>('');\n isClosing = signal<boolean>(false);\n\n closeButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.ICON,\n icon: 'icon-cross',\n ariaLabel: 'common.close',\n globalCustomClass: 'c-popup__close'\n }));\n\n cancelButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.SECONDARY,\n text: this.cancelButtonText\n }));\n\n confirmButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: this.confirmButtonText,\n context: this.config().type === 'delete' ? ButtonContext.ERROR : ButtonContext.DEFAULT,\n disabled: this.isConfirmDisabled(),\n customClass: this.config().confirmButtonClass || ''\n }));\n\n get confirmButtonText(): string {\n return this.config().confirmButtonText ?? DialogActions.CONFIRM;\n }\n\n get cancelButtonText(): string {\n return this.config().cancelButtonText ?? DialogActions.CANCEL;\n }\n\n get hasCustomContent(): boolean {\n return !!this.customContentTemplate;\n }\n\n onConfirm(): void {\n const inputConfig = this.config().inputConfig;\n \n const valueToEmit = inputConfig?.validationValue ? this.inputValue() : true;\n \n this.closeWithAnimation(() => {\n this.confirm.emit(valueToEmit);\n });\n }\n\n onCancel(): void {\n this.closeWithAnimation(() => {\n this.cancel.emit();\n });\n }\n\n onInputChange(value: string): void {\n this.inputValue.set(value);\n }\n\n isConfirmDisabled(): boolean {\n if (this.config().disableConfirm) {\n return true;\n }\n\n const inputConfig = this.config().inputConfig;\n if (!inputConfig) return false;\n \n if (!inputConfig.validationValue) {\n return false;\n }\n \n if (inputConfig.validationValue && this.inputValue() !== inputConfig.validationValue) {\n return true;\n }\n\n return false;\n }\n\n private closeWithAnimation(callback: () => void): void {\n if (!this.popupElement) return;\n\n const popup = this.popupElement.nativeElement;\n const overlay = this.overlayElement?.nativeElement;\n\n popup.classList.add('is-closing');\n\n if (overlay) {\n overlay.addEventListener(\n 'animationend',\n () => {\n if (popup.classList.contains('is-closing')) {\n popup.classList.remove('is-visible', 'is-closing');\n callback();\n }\n },\n { once: true }\n );\n } else {\n setTimeout(() => {\n popup.classList.remove('is-visible', 'is-closing');\n callback();\n }, 300);\n }\n }\n}","<div class=\"c-popup\" \n [class.c-popup--xl]=\"config().size === 'xl'\" \n [class.is-visible]=\"isOpen()\" \n [ngClass]=\"config().customClass\"\n #popup \n *ngIf=\"isOpen()\">\n <div class=\"c-popup__overlay\" (click)=\"onCancel()\" #overlay></div>\n <div class=\"c-popup__holder\">\n @if(config().showCloseButton) {\n <core-generic-button\n [config]=\"closeButtonConfig()\"\n (buttonClick)=\"onCancel()\">\n </core-generic-button>\n }\n @if (config().icon) {\n <span class=\"c-popup__icon\" [ngClass]=\"config().icon | coreIconCompat\"></span>\n }\n\n <p class=\"c-popup__title u-heading u-fz--600\">\n {{ config().title | translate: config().messageParams }}\n </p>\n\n @if (config().customTemplate) {\n <ng-container *ngTemplateOutlet=\"config().customTemplate!; context: config().customTemplateContext\"></ng-container>\n } @else {\n \n @if (config().message) {\n <p class=\"c-popup__text u-text\">\n {{ config().message ?? '' | translate: config().messageParams }}\n </p>\n }\n\n @if (config().inputConfig) {\n <label class=\"c-popup__form c-entry-item\">\n <span class=\"c-entry-text\">\n {{ config().inputConfig?.label ?? '' | translate }}\n @if (!config().inputConfig?.validationValue) {\n <!-- Todo: Dónde está el .u-text--muted ? -->\n <span class=\"u-text--muted\"> ({{ 'common.optional' | translate }})</span>\n }\n </span>\n <input \n class=\"c-entry-input\"\n type=\"text\"\n [placeholder]=\"config().inputConfig?.placeholder ?? '' | translate\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"onInputChange($event)\"\n [required]=\"!!config().inputConfig?.validationValue\"\n >\n </label>\n }\n\n }\n\n <div class=\"u-flex u-push-t--xl\">\n @if (config().showCancelButton !== false) {\n <core-generic-button\n [config]=\"cancelButtonConfig()\"\n (buttonClick)=\"onCancel()\">\n </core-generic-button>\n }\n @if (config().showConfirmButton !== false) {\n <core-generic-button\n [config]=\"confirmButtonConfig()\"\n (buttonClick)=\"onConfirm()\">\n </core-generic-button>\n }\n </div>\n </div>\n</div>","export enum DropdownDirection {\n UP = 'up',\n DOWN = 'down'\n}","export enum TableAction {\n VIEW = 'view',\n EDIT = 'edit',\n DELETE = 'delete',\n SELECT = 'select',\n CREATE = 'create'\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DropdownService {\n private openDropdownId = new BehaviorSubject<number | null>(null);\n dropdownState$ = this.openDropdownId.asObservable();\n\n isDropdownOpen(id: number): boolean {\n return this.openDropdownId.value === id;\n }\n\n openDropdown(id: number): void {\n if (this.openDropdownId.value === id) {\n this.closeDropdown();\n } else {\n this.openDropdownId.next(id);\n }\n }\n\n closeDropdown(): void {\n this.openDropdownId.next(null);\n }\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n input,\n output,\n TemplateRef,\n ViewContainerRef,\n inject,\n OnDestroy,\n computed\n} from '@angular/core';\nimport { CustomAction } from '../../interfaces/CustomAction.interface';\nimport { TableAction } from './enums/TableAction.enum';\nimport { DropdownService } from './services/dropdown.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { TableActionConfig } from '../../interfaces/TableActionConfig.interface';\nimport { PermissionWrapperService } from '../../../../services/permission-wrapper.service';\nimport { Overlay, OverlayRef, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { GenericButtonComponent } from '../../../generic-button/generic-button.component';\nimport { ButtonConfig } from '../../../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../../../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../../../generic-button/enums/ButtonContext.enum';\nimport { ButtonActionEvent } from '../../../generic-button/interfaces/ButtonActionEvent.interface';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-dropdown',\n standalone: true,\n imports: [TranslateModule, CommonModule, OverlayModule, GenericButtonComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss'\n})\nexport class DropdownComponent<T> implements OnDestroy {\n private permissionService = inject(PermissionWrapperService);\n private viewContainerRef = inject(ViewContainerRef);\n private overlayRef: OverlayRef | null = null;\n private subscription: Subscription | null = null;\n \n rowId = input<number>(0);\n triggerElementId = input<string>('');\n extraDefaultActions = input<any[]>([]);\n extraCustomActions = input<CustomAction<T>[]>([]);\n row = input<T | null>(null);\n\n actionTriggered = output<{ action: TableAction; row: T }>();\n customActionTriggered = output<{ action: CustomAction<T>; row: T }>();\n\n TableAction = TableAction;\n\n defaultActionsConfigs = computed(() => \n this.extraDefaultActions().map(actionConfig => ({\n actionConfig,\n buttonConfig: this.getDefaultActionButtonConfig(actionConfig)\n }))\n );\n\n customActionsConfigs = computed(() => \n this.extraCustomActions().map(customAction => ({\n customAction,\n buttonConfig: this.getCustomActionButtonConfigForRow(customAction)\n }))\n );\n\n @ViewChild('dropdownMenu') dropdownMenu!: TemplateRef<any>;\n\n constructor(private overlay: Overlay, public dropdownService: DropdownService) {\n this.subscription = this.dropdownService.dropdownState$.subscribe((openId: number | null) => {\n if (openId === this.rowId()) {\n this.showDropdown();\n } else {\n this.closeDropdown();\n }\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.closeDropdown();\n }\n\n private showDropdown() {\n if (this.overlayRef) {\n return;\n }\n\n const triggerElement = document.getElementById(this.triggerElementId());\n if (!triggerElement) {\n return;\n }\n\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.overlay.position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8\n }\n ])\n .withFlexibleDimensions(true)\n .withPush(false)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: ['c-submenu-options', 'dropdown-panel']\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const portal = new TemplatePortal(this.dropdownMenu, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n setTimeout(() => {\n const element = this.overlayRef?.overlayElement;\n if (element) {\n const nav = element.querySelector('.c-submenu-options__nav');\n if (nav) {\n nav.classList.add('is-visible');\n }\n }\n });\n\n this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());\n }\n\n closeDropdown() {\n if (this.overlayRef) {\n const element = this.overlayRef.overlayElement;\n if (element) {\n const nav = element.querySelector('.c-submenu-options__nav');\n if (nav) {\n nav.classList.remove('is-visible');\n }\n }\n \n setTimeout(() => {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.dropdownService.closeDropdown();\n }\n }, 200);\n }\n }\n\n triggerAction(action: TableAction): void {\n const currentRow = this.row();\n if (currentRow) {\n this.actionTriggered.emit({ action, row: currentRow });\n }\n this.closeDropdown();\n }\n\n triggerCustomAction(action: CustomAction<T>): void {\n const currentRow = this.row();\n if (currentRow) {\n this.customActionTriggered.emit({ action, row: currentRow });\n }\n this.closeDropdown();\n }\n\n hasPermission(action: TableActionConfig | CustomAction<T>): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n getActionLabel(action: TableAction): string {\n switch (action) {\n case TableAction.VIEW:\n return 'table.view';\n case TableAction.EDIT:\n return 'table.edit';\n case TableAction.DELETE:\n return 'table.delete';\n case TableAction.CREATE:\n return 'table.create';\n default:\n return '';\n }\n }\n\n getDefaultActionButtonConfig(actionConfig: TableActionConfig): ButtonConfig {\n return {\n type: ButtonType.LINK,\n text: this.getActionLabel(actionConfig.action),\n icon: actionConfig.icon || (actionConfig.action === TableAction.DELETE ? 'icon-delete' : 'icon-more'),\n context: actionConfig.action === TableAction.DELETE ? ButtonContext.ERROR : undefined\n };\n }\n\n getCustomActionButtonConfig(customAction: CustomAction<T>): ButtonConfig {\n return {\n type: ButtonType.LINK,\n text: customAction.label,\n icon: customAction.icon,\n customClass: 'c-link--secondary'\n };\n }\n\n getCustomActionButtonConfigForRow(customAction: CustomAction<T>): ButtonConfig {\n const baseConfig = this.getCustomActionButtonConfig(customAction);\n \n const currentRow = this.row();\n const isDisabled = currentRow && customAction.shouldDisable ? customAction.shouldDisable(currentRow) : false;\n \n return {\n ...baseConfig,\n disabled: isDisabled\n };\n }\n\n onButtonClick(event: ButtonActionEvent, action: any): void {\n if (typeof action === 'object' && 'action' in action) {\n this.triggerAction(action.action);\n } else {\n this.triggerCustomAction(action);\n }\n }\n}\n","<ng-template #dropdownMenu>\n <nav class=\"c-submenu-options__nav\">\n <ul class=\"c-submenu-options__list\">\n @for (actionConfigItem of defaultActionsConfigs(); track actionConfigItem.actionConfig.action){\n @if (hasPermission(actionConfigItem.actionConfig)) {\n <li class=\"c-submenu-options__item\">\n <core-generic-button\n [config]=\"actionConfigItem.buttonConfig\"\n (buttonClick)=\"onButtonClick($event, actionConfigItem.actionConfig)\">\n </core-generic-button>\n </li>\n }\n }\n @for (customActionItem of customActionsConfigs(); track customActionItem.customAction.label || $index) {\n @if (hasPermission(customActionItem.customAction)) {\n <li class=\"c-submenu-options__item\">\n <core-generic-button\n [config]=\"customActionItem.buttonConfig\"\n (buttonClick)=\"onButtonClick($event, customActionItem.customAction)\">\n </core-generic-button>\n </li>\n }\n }\n </ul>\n </nav></ng-template\n>\n","export enum FilterType {\n TEXT = 'text',\n SELECT = 'select',\n NUMBER = 'number',\n CHECKBOX = 'checkbox',\n SWITCH = 'switch',\n SERVER_SELECT = 'server-select',\n DATE = 'date',\n DATETIME = 'datetime',\n PASSWORD = 'password',\n TEXTAREA = 'textarea'\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FilterConfig } from '../interfaces/FilterConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilterService<T extends DataBaseModelInterface & { [key: string]: any }> {\n private filteredDataSubject = new BehaviorSubject<T[]>([]);\n private globalFilterValueSubject = new BehaviorSubject<string>('');\n private customFilterValuesSubject = new BehaviorSubject<Map<string, any>>(new Map());\n private sortColumnSubject = new BehaviorSubject<string | null>(null);\n private sortDirectionSubject = new BehaviorSubject<'asc' | 'desc' | null>(null);\n\n private filterChangeSubject = new Subject<void>();\n filterChange$ = this.filterChangeSubject.asObservable();\n\n filteredData$ = this.filteredDataSubject.asObservable();\n globalFilterValue$ = this.globalFilterValueSubject.asObservable();\n customFilterValues$ = this.customFilterValuesSubject.asObservable();\n sortColumn$ = this.sortColumnSubject.asObservable();\n sortDirection$ = this.sortDirectionSubject.asObservable();\n\n getFilteredData(): T[] {\n return [...this.filteredDataSubject.value];\n }\n\n getSortColumn(): string | null {\n return this.sortColumnSubject.value;\n }\n\n getSortDirection(): 'asc' | 'desc' | null {\n return this.sortDirectionSubject.value;\n }\n\n applyAllFilters(data: T[], customFilters: FilterConfig<T>[], showFilter: boolean): void {\n let filtered = [...data];\n\n const filterValues = this.customFilterValuesSubject.value;\n customFilters.forEach((filter: FilterConfig<T>) => {\n const key = filter.key.toString();\n const value = filterValues.get(key);\n if (value != null) {\n filtered = filtered.filter(row => filter.filterFn(row, value));\n }\n });\n\n if (showFilter && this.globalFilterValueSubject.value) {\n filtered = filtered.filter(row =>\n Object.values(row).some(val =>\n val?.toString().toLowerCase().includes(this.globalFilterValueSubject.value)\n )\n );\n }\n\n this.filteredDataSubject.next(filtered);\n this.filterChangeSubject.next();\n }\n\n applyGlobalFilter(value: string): void {\n this.globalFilterValueSubject.next(value.trim().toLowerCase());\n this.filterChangeSubject.next();\n }\n\n applyCustomFilters(filterValues: Map<string, any>): void {\n this.customFilterValuesSubject.next(new Map(filterValues));\n this.filterChangeSubject.next();\n }\n\n setCustomFilters(filterValues: Map<string, any>): void {\n this.customFilterValuesSubject.next(new Map(filterValues));\n this.filterChangeSubject.next();\n }\n\n setCustomFiltersSilent(filterValues: Map<string, any>): void {\n this.customFilterValuesSubject.next(new Map(filterValues));\n }\n\n setGlobalFilter(value: string): void {\n this.globalFilterValueSubject.next(value.trim().toLowerCase());\n this.filterChangeSubject.next();\n }\n\n setGlobalFilterSilent(value: string): void {\n this.globalFilterValueSubject.next(value.trim().toLowerCase());\n }\n\n sortData(columnKey: string): void {\n if (this.sortColumnSubject.value === columnKey) {\n this.sortDirectionSubject.next(this.sortDirectionSubject.value === 'asc' ? 'desc' : 'asc');\n } else {\n this.sortColumnSubject.next(columnKey);\n this.sortDirectionSubject.next('asc');\n }\n this.applySort();\n }\n\n applySort(): void {\n const sortColumn = this.sortColumnSubject.value;\n const sortDirection = this.sortDirectionSubject.value;\n if (!sortColumn || !sortDirection) return;\n\n const sorted = [...this.filteredDataSubject.value].sort((a, b) => {\n const valueA = a[sortColumn as keyof T];\n const valueB = b[sortColumn as keyof T];\n const comparison = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n return sortDirection === 'asc' ? comparison : -comparison;\n });\n this.filteredDataSubject.next(sorted);\n }\n\n getCustomFilters(): Map<string, any> {\n return this.customFilterValuesSubject.value;\n }\n}","import { Component, ElementRef, inject, computed, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule, ReactiveFormsModule, FormGroup, FormBuilder } from '@angular/forms';\nimport { FilterConfig } from './interfaces/FilterConfig.interface';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldType } from '../../../../enums/global/FieldType.enum';\nimport { DynamicFieldDirective } from '../../../../directives/DynamicField.directive';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { GenericButtonComponent } from '../../../generic-button/generic-button.component';\nimport { ButtonConfig } from '../../../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../../../generic-button/enums/ButtonType.enum';\nimport { input, output, signal } from '@angular/core';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-filter-modal',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormsModule, ReactiveFormsModule, DynamicFieldDirective, GenericButtonComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './filter-modal.component.html',\n styleUrls: ['./filter-modal.component.scss']\n})\nexport class FilterModalComponent<T extends DataBaseModelInterface> implements OnChanges {\n private formBuilder = inject(FormBuilder);\n private elementRef = inject(ElementRef);\n \n isClosing = signal(false);\n isOpen = input(false);\n filters = input<FilterConfig<T>[]>([]);\n currentFilterValues = input<Map<string, any>>(new Map());\n \n close = output<void>();\n filterChange = output<Map<string, any>>();\n clearFilters = output<void>();\n globalFilterChange = output<string>();\n\n readonly FieldType = FieldType;\n readonly ModalMode = ModalMode;\n \n filterValues = signal<Map<string, any>>(new Map());\n globalFilterValue = signal('');\n form = signal<FormGroup>(this.formBuilder.group({}));\n clearTrigger = signal<number>(0);\n\n hasActiveFilters = computed(() => {\n const hasCustomFilters = this.filterValues().size > 0;\n const hasGlobalFilter = this.globalFilterValue().trim().length > 0;\n return hasCustomFilters || hasGlobalFilter;\n });\n\n closeButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.ICON,\n icon: 'icon-cross',\n ariaLabel: 'common.close',\n customClass: 'c-modal__close'\n }));\n\n clearButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.LINK,\n text: 'table.clearFilters',\n disabled: !this.hasActiveFilters()\n }));\n\n applyButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: 'table.apply'\n }));\n\n constructor() {\n this.initializeForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['filters'] && !changes['filters'].firstChange) {\n this.initializeForm();\n this.resetValues();\n }\n \n if (changes['currentFilterValues']) {\n this.filterValues.set(new Map(changes['currentFilterValues'].currentValue || new Map()));\n this.updateFormWithFilterValues();\n }\n \n if (changes['isOpen'] && changes['isOpen'].currentValue === true) {\n this.updateFormWithFilterValues();\n }\n }\n\n private initializeForm(): void {\n const formGroup: Record<string, any> = {};\n this.filters().forEach(filter => {\n formGroup[filter.key.toString()] = [''];\n });\n this.form.set(this.formBuilder.group(formGroup));\n }\n\n private resetValues(): void {\n this.filterValues.set(new Map());\n this.globalFilterValue.set('');\n this.clearTrigger.update(value => value + 1);\n \n const form = this.form();\n this.filters().forEach(filter => {\n const control = form.get(filter.key.toString());\n if (control) {\n control.setValue('', { emitEvent: false });\n control.markAsPristine();\n control.markAsUntouched();\n }\n });\n \n if (this.currentFilterValues().size === 0) {\n this.updateFormWithFilterValues();\n }\n }\n\n private updateFormWithFilterValues(): void {\n const form = this.form();\n \n this.filters().forEach(filter => {\n const control = form.get(filter.key.toString());\n if (control) {\n control.setValue('', { emitEvent: false });\n }\n });\n \n this.filterValues().forEach((value, key) => {\n const control = form.get(key);\n if (control) {\n control.setValue(value, { emitEvent: false });\n }\n });\n }\n\n getFieldConfig(filter: FilterConfig<T>): FilterConfig<T> {\n return {\n ...filter,\n modes: {\n [ModalMode.FILTER]: {\n visible: true,\n validators: filter.validators\n }\n }\n };\n }\n\n getFieldValue(filterKey: string): any {\n const trigger = this.clearTrigger();\n return this.filterValues().get(filterKey) ?? '';\n }\n\n updateFilter(key: string, value: any): void {\n const newValues = new Map(this.filterValues());\n \n if (value === '' || value === null || value === undefined) {\n newValues.delete(key);\n } else {\n newValues.set(key, value);\n }\n \n this.filterValues.set(newValues);\n \n const control = this.form().get(key);\n if (control) {\n control.setValue(value, { emitEvent: false });\n }\n }\n\n updateGlobalFilterValue(value: string): void {\n this.globalFilterValue.set(value);\n }\n\n onApply(): void {\n const transformedValues = new Map<string, any>();\n \n this.filterValues().forEach((value, key) => {\n const filter = this.filters().find(f => f.key.toString() === key);\n \n if (filter?.transformValue) {\n transformedValues.set(key, filter.transformValue(value));\n } else {\n transformedValues.set(key, value);\n }\n });\n \n this.filterChange.emit(transformedValues);\n this.onClose();\n }\n\n onClear(): void {\n this.filterValues.set(new Map());\n this.globalFilterValue.set('');\n this.clearTrigger.update(value => value + 1);\n \n const form = this.form();\n this.filters().forEach(filter => {\n const control = form.get(filter.key.toString());\n if (control) {\n control.setValue('', { emitEvent: false });\n control.markAsPristine();\n control.markAsUntouched();\n }\n });\n \n this.globalFilterChange.emit('');\n this.clearFilters.emit();\n this.filterChange.emit(new Map());\n \n setTimeout(() => {\n this.onClose();\n }, 100);\n }\n\n onClose(): void {\n this.isClosing.set(true);\n \n const overlay = this.elementRef.nativeElement.querySelector('.c-modal__overlay');\n if (!overlay) {\n this.isClosing.set(false);\n this.close.emit();\n return;\n }\n \n const onAnimationEnd = (e: AnimationEvent) => {\n if (e.target === overlay && this.isClosing()) {\n this.isClosing.set(false);\n this.close.emit();\n overlay.removeEventListener('animationend', onAnimationEnd);\n }\n };\n\n overlay.addEventListener('animationend', onAnimationEnd);\n }\n}","<div class=\"c-modal\" [class.is-visible]=\"isOpen()\" [class.is-closing]=\"isClosing()\">\n <div class=\"c-modal__overlay\" (click)=\"onClose()\"></div>\n <div class=\"c-modal__holder\">\n <div class=\"c-modal__header\">\n <p class=\"c-modal__title\">\n {{ \"table.filterBy\" | translate }}\n </p>\n <core-generic-button\n [config]=\"closeButtonConfig()\"\n (buttonClick)=\"onClose()\">\n </core-generic-button>\n </div>\n <div class=\"c-modal__body\">\n <form class=\"c-entry-group\">\n @for (filter of filters(); track filter.key.toString() + '-' + clearTrigger()) {\n <div coreDynamicField [field]=\"getFieldConfig(filter)\" [value]=\"getFieldValue(filter.key.toString())\"\n [mode]=\"ModalMode.FILTER\" (valueChange)=\"updateFilter(filter.key.toString(), $event)\">\n </div>\n }\n </form>\n </div>\n <div class=\"c-modal__bottom\">\n <core-generic-button\n [config]=\"clearButtonConfig()\"\n (buttonClick)=\"onClear()\">\n </core-generic-button>\n <core-generic-button\n [config]=\"applyButtonConfig()\"\n (buttonClick)=\"onApply()\">\n </core-generic-button>\n </div>\n </div>\n</div>","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalMode } from '../../../enums/global/ModalMode.enum';\nimport { ModalFieldConfig } from '../../../interfaces/global/ModalFieldConfig.interface';\nimport { TableAction } from '../components/dropdown/enums/TableAction.enum';\nimport { FieldType } from '../../../enums/global/FieldType.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableActionService<T extends DataBaseModelInterface & { [key: string]: any }> {\n private selectedRowsSubject = new BehaviorSubject<T[]>([]);\n private isModalOpenSubject = new BehaviorSubject<boolean>(false);\n private modalModeSubject = new BehaviorSubject<ModalMode>(ModalMode.VIEW);\n private modalDataSubject = new BehaviorSubject<T | null>(null);\n private modalFieldsToShowSubject = new BehaviorSubject<ModalFieldConfig<T>[]>([]);\n private modalTitleSubject = new BehaviorSubject<string>('');\n\n selectedRows$ = this.selectedRowsSubject.asObservable();\n isModalOpen$ = this.isModalOpenSubject.asObservable();\n modalMode$ = this.modalModeSubject.asObservable();\n modalData$ = this.modalDataSubject.asObservable();\n modalFieldsToShow$ = this.modalFieldsToShowSubject.asObservable();\n modalTitle$ = this.modalTitleSubject.asObservable();\n\n getSelectedRows(): T[] {\n return [...this.selectedRowsSubject.value];\n }\n\n getModalMode(): ModalMode {\n return this.modalModeSubject.value;\n }\n\n toggleRow(row: T): void {\n const currentRows = this.selectedRowsSubject.value;\n const index = currentRows.indexOf(row);\n if (index > -1) {\n this.selectedRowsSubject.next(currentRows.filter(r => r !== row));\n } else {\n this.selectedRowsSubject.next([...currentRows, row]);\n }\n }\n\n masterToggle(displayedData: T[]): void {\n const currentRows = this.selectedRowsSubject.value;\n const allSelected = displayedData.every(row => currentRows.includes(row));\n if (allSelected) {\n this.selectedRowsSubject.next(currentRows.filter(row => !displayedData.includes(row)));\n } else {\n const newRows = [...currentRows];\n displayedData.forEach(row => {\n if (!newRows.includes(row)) newRows.push(row);\n });\n this.selectedRowsSubject.next(newRows);\n }\n }\n\n clearInvalidSelections(data: T[]): void {\n this.selectedRowsSubject.next(this.selectedRowsSubject.value.filter(row => data.includes(row)));\n }\n\n getIsModalOpen(): boolean {\n return this.isModalOpenSubject.value;\n }\n\n getModalData(): T | null {\n return this.modalDataSubject.value;\n }\n\n getModalFieldsToShow(): ModalFieldConfig<T>[] {\n return [...this.modalFieldsToShowSubject.value];\n }\n\n getModalTitle(): string {\n return this.modalTitleSubject.value;\n }\n\n openModal(mode: ModalMode, row: T, fields: ModalFieldConfig<T>[], customTitle?: string): void {\n this.modalModeSubject.next(mode);\n this.modalFieldsToShowSubject.next([...fields]);\n \n let modalData: T;\n if (mode === ModalMode.CREATE) {\n modalData = this.initializeDefaultData(fields, row);\n this.modalTitleSubject.next(customTitle || 'modal.createTitle');\n } else {\n modalData = this.initializeDefaultData(fields, row, true);\n this.modalTitleSubject.next(\n customTitle ||\n (mode === ModalMode.VIEW ? 'modal.viewTitle' : 'modal.editTitle')\n );\n }\n \n this.modalDataSubject.next(modalData);\n this.isModalOpenSubject.next(true);\n }\n \n private initializeDefaultData(fields: ModalFieldConfig<T>[], template: T, isEditMode: boolean = false): T {\n const newData = Object.create(Object.getPrototypeOf(template)) as T;\n const defaultValues: Partial<T> = {};\n \n if (isEditMode) {\n Object.assign(defaultValues, template);\n }\n \n fields.forEach(field => {\n const key = field.key as keyof T;\n if (isEditMode && defaultValues[key] !== undefined && defaultValues[key] !== null) {\n if (field.type === FieldType.SELECT) {\n const value = defaultValues[key];\n if (field.multiple) {\n const values = Array.isArray(value) ? value : [value];\n defaultValues[key] = (values as any[])\n .map(item => {\n if (item && typeof item === 'object') {\n return item.getId ? item.getId() : item.id ?? null;\n }\n return item;\n })\n .filter(id => id !== null && id !== undefined) as any;\n } else {\n const singleValue = Array.isArray(value) ? value[0] : value;\n defaultValues[key] = (singleValue\n ? (typeof singleValue === 'object'\n ? (singleValue.getId ? singleValue.getId() : singleValue.id ?? '')\n : singleValue)\n : '') as any;\n }\n }\n return;\n }\n \n switch (field.type) {\n case FieldType.CHECKBOX:\n defaultValues[key] = (field.defaultValue ?? false) as any;\n break;\n case FieldType.NUMBER:\n defaultValues[key] = (field.defaultValue ?? 0) as any;\n break;\n case FieldType.SELECT:\n defaultValues[key] = field.multiple\n ? (field.defaultValue ?? []) as any\n : (field.defaultValue ?? (field.options?.[0]?.value ?? '')) as any;\n break;\n case FieldType.TEXTAREA:\n case FieldType.TEXT:\n default:\n defaultValues[key] = (field.defaultValue ?? '') as any;\n break;\n }\n });\n \n Object.assign(newData, defaultValues);\n return newData;\n }\n\n closeModal(): void {\n this.isModalOpenSubject.next(false);\n this.modalDataSubject.next(null);\n this.modalFieldsToShowSubject.next([]);\n this.modalTitleSubject.next('');\n }\n\n triggerAction(action: TableAction, row?: T, fields: ModalFieldConfig<T>[] = []): { action: TableAction; row?: T } | null {\n if (row && (action === TableAction.VIEW || action === TableAction.EDIT)) {\n this.openModal(\n action === TableAction.VIEW ? ModalMode.VIEW : ModalMode.EDIT,\n row,\n fields\n );\n return null;\n } else if (action === TableAction.CREATE) {\n this.openModal(ModalMode.CREATE, row || ({} as T), fields);\n return null;\n } else if (row) {\n return { action, row };\n }\n return null;\n }\n}","export enum HeaderElementType {\n GLOBAL_ACTIONS = 'globalActions',\n CUSTOM_ACTIONS = 'customActions', \n FILTER = 'filter',\n CREATE = 'create',\n CUSTOM_TEMPLATE = 'customTemplate'\n} ","import { inject, Injectable, signal, TemplateRef } from '@angular/core';\nimport { GlobalAction } from '../components/generic-table/interfaces/GlobalAction.interface';\nimport { FilterConfig } from '../components/generic-table/components/filter-modal/interfaces/FilterConfig.interface';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HeaderActionConfig, HeaderConfig } from '../interfaces/global/HeaderActionConfig.interface';\nimport { HeaderOrderConfig, HeaderElementConfig } from '../interfaces/global/HeaderOrderConfig.interface';\nimport { HeaderElementType } from '../enums/global/HeaderElementType.enum';\nimport { ButtonConfig } from '../components/generic-button/interfaces/ButtonConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderService {\n private translateService = inject(TranslateService);\n private title = signal<string>('');\n private text = signal<string>('');\n private globalActions = signal<GlobalAction<any>[]>([]);\n private showFilter = signal<boolean>(false);\n private customFilters = signal<FilterConfig<any>[]>([]);\n private showCreateButton = signal<boolean>(false);\n private hasCreatePermission = signal<boolean>(false);\n \n private isVisible = signal<boolean>(true);\n private customActions = signal<HeaderActionConfig[]>([]);\n private showDefaultFilter = signal<boolean>(true);\n private showDefaultCreate = signal<boolean>(true);\n private headerOrder = signal<HeaderOrderConfig | undefined>(undefined);\n private customTemplate = signal<TemplateRef<any> | null>(null);\n private filterButtonConfig = signal<Partial<ButtonConfig> | undefined>(undefined);\n private createButtonConfig = signal<Partial<ButtonConfig> | undefined>(undefined);\n\n setHeaderData(data: {\n title?: string;\n text?: string;\n globalActions?: GlobalAction<any>[];\n showFilter?: boolean;\n customFilters?: FilterConfig<any>[];\n showCreateButton?: boolean;\n hasCreatePermission?: boolean;\n }) {\n if (data.title !== undefined) this.title.set(data.title);\n if (data.text !== undefined) this.text.set(data.text);\n if (data.globalActions !== undefined) this.globalActions.set(data.globalActions);\n if (data.showFilter !== undefined) this.showFilter.set(data.showFilter);\n if (data.customFilters !== undefined) this.customFilters.set(data.customFilters);\n if (data.showCreateButton !== undefined) this.showCreateButton.set(data.showCreateButton);\n if (data.hasCreatePermission !== undefined) this.hasCreatePermission.set(data.hasCreatePermission);\n }\n\n getTitle() {\n return this.title;\n }\n\n getText() {\n return this.text;\n }\n\n getGlobalActions() {\n return this.globalActions;\n }\n\n getShowFilter() {\n return this.showFilter;\n }\n\n getCustomFilters() {\n return this.customFilters;\n }\n\n getShowCreateButton() {\n return this.showCreateButton;\n }\n\n getHasCreatePermission() {\n return this.hasCreatePermission;\n }\n\n getCustomTemplate() {\n return this.customTemplate;\n }\n\n setCustomTemplate(template: TemplateRef<any> | null) {\n this.customTemplate.set(template);\n }\n\n clearHeaderData() {\n this.title.set('');\n this.text.set('');\n this.globalActions.set([]);\n this.showFilter.set(false);\n this.customFilters.set([]);\n this.showCreateButton.set(false);\n this.hasCreatePermission.set(false);\n this.headerOrder.set(undefined);\n this.customTemplate.set(null);\n this.filterButtonConfig.set(undefined);\n this.createButtonConfig.set(undefined);\n }\n\n setTitle(title: string) {\n this.title.set(title);\n }\n\n setText(text: string) {\n this.text.set(text);\n }\n\n setHeaderConfig(config: HeaderConfig) {\n if (config.title !== undefined) this.title.set(config.title);\n if (config.text !== undefined) this.text.set(config.text);\n if (config.visible !== undefined) this.isVisible.set(config.visible);\n if (config.showDefaultFilter !== undefined) this.showDefaultFilter.set(config.showDefaultFilter);\n if (config.showDefaultCreate !== undefined) this.showDefaultCreate.set(config.showDefaultCreate);\n if (config.customActions !== undefined) this.customActions.set(config.customActions);\n if (config.globalActions !== undefined) this.globalActions.set(config.globalActions);\n if (config.customFilters !== undefined) this.customFilters.set(config.customFilters);\n if (config.hasCreatePermission !== undefined) this.hasCreatePermission.set(config.hasCreatePermission);\n if (config.headerOrder !== undefined) this.headerOrder.set(config.headerOrder);\n if (config.customTemplate !== undefined) this.customTemplate.set(config.customTemplate);\n if (config.filterButtonConfig !== undefined) this.filterButtonConfig.set(config.filterButtonConfig);\n if (config.createButtonConfig !== undefined) this.createButtonConfig.set(config.createButtonConfig);\n }\n\n getIsVisible() {\n return this.isVisible;\n }\n\n getCustomActions() {\n return this.customActions;\n }\n\n getShowDefaultFilter() {\n return this.showDefaultFilter;\n }\n\n getShowDefaultCreate() {\n return this.showDefaultCreate;\n }\n\n showHeader() {\n this.isVisible.set(true);\n }\n\n hideHeader() {\n this.isVisible.set(false);\n }\n\n addCustomAction(action: HeaderActionConfig) {\n this.customActions.update(actions => [...actions, action]);\n }\n\n removeCustomAction(actionId: string) {\n this.customActions.update(actions => actions.filter(action => action.id !== actionId));\n }\n\n updateCustomAction(actionId: string, updates: Partial<HeaderActionConfig>) {\n this.customActions.update(actions => \n actions.map(action => \n action.id === actionId ? { ...action, ...updates } : action\n )\n );\n }\n\n clearCustomActions() {\n this.customActions.set([]);\n }\n\n getHeaderOrder() {\n return this.headerOrder;\n }\n\n setHeaderOrder(order: HeaderOrderConfig) {\n this.headerOrder.set(order);\n }\n\n getFilterButtonConfig() {\n return this.filterButtonConfig;\n }\n\n getCreateButtonConfig() {\n return this.createButtonConfig;\n }\n\n getOrderedElements(): HeaderElementConfig[] {\n const order = this.headerOrder();\n \n if (!order || !order.useCustomOrder || !order.elements) {\n return [\n { type: HeaderElementType.GLOBAL_ACTIONS, visible: true, position: 1 },\n { type: HeaderElementType.CUSTOM_ACTIONS, visible: true, position: 2 },\n { type: HeaderElementType.FILTER, visible: true, position: 3 },\n { type: HeaderElementType.CREATE, visible: true, position: 4 },\n { type: HeaderElementType.CUSTOM_TEMPLATE, visible: true, position: 5 }\n ];\n }\n\n return order.elements\n .filter(element => element.visible !== false)\n .sort((a, b) => (a.position || 0) - (b.position || 0));\n }\n\n isElementVisible(elementType: HeaderElementType): boolean {\n const order = this.headerOrder();\n \n if (!order || !order.useCustomOrder || !order.elements) {\n switch (elementType) {\n case HeaderElementType.GLOBAL_ACTIONS:\n return this.globalActions().length > 0;\n case HeaderElementType.CUSTOM_ACTIONS:\n return this.customActions().length > 0;\n case HeaderElementType.FILTER:\n return this.showDefaultFilter() && (this.showFilter() || this.customFilters().length > 0);\n case HeaderElementType.CREATE:\n return this.showDefaultCreate() && this.showCreateButton() && this.hasCreatePermission();\n case HeaderElementType.CUSTOM_TEMPLATE:\n return this.customTemplate() !== null;\n default:\n return false;\n }\n }\n\n const element = order.elements.find(el => el.type === elementType);\n \n if (!element || element.visible === false) {\n return false;\n }\n\n switch (elementType) {\n case HeaderElementType.GLOBAL_ACTIONS:\n return this.globalActions().length > 0;\n case HeaderElementType.CUSTOM_ACTIONS:\n return this.customActions().length > 0;\n case HeaderElementType.FILTER:\n return this.showDefaultFilter() && (this.showFilter() || this.customFilters().length > 0);\n case HeaderElementType.CREATE:\n return this.showDefaultCreate() && this.showCreateButton() && this.hasCreatePermission();\n case HeaderElementType.CUSTOM_TEMPLATE:\n return this.customTemplate() !== null;\n default:\n return false;\n }\n }\n} ","import { Injectable, signal, computed, OutputEmitterRef } from '@angular/core';\nimport { Subject, Subscription, switchMap, of, debounceTime } from 'rxjs';\nimport { ModalFieldConfig } from '../../../interfaces/global/ModalFieldConfig.interface';\nimport { ColumnConfig } from '../interfaces/ColumnConfig.interface';\nimport { InlineEditConfig } from '../interfaces/InlineEditConfig.interface';\nimport { DataBaseModelInterface } from '@solcre-org/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InlineEditService<T extends DataBaseModelInterface & { [key: string]: any }> {\n isInlineEditMode = signal<boolean>(false);\n editingRows = signal<Set<number>>(new Set());\n editingCells = signal<Map<string, { value: any; hasChanges: boolean; originalValue: any }>>(new Map());\n editingErrors = signal<Map<string, string[]>>(new Map());\n private processingCells = signal<Set<string>>(new Set());\n \n private pendingSaveCells = signal<Set<string>>(new Set());\n \n private immediateSaveSubject = new Subject<{ rowId: number; column: string; value: any; source: 'blur' | 'enter' }>();\n \n private subscriptions: Subscription[] = [];\n private inlineEditConfig: InlineEditConfig<T> | undefined;\n \n private onInlineEditSaveCallback?: (event: { row: T; column: string; value: any; allChanges: Map<string, any> }) => void;\n private onInlineEditModeChangedCallback?: (mode: boolean) => void;\n private onInlineEditValidationErrorCallback?: (event: { rowId: number; column: string; errors: string[] }) => void;\n private getDisplayedDataCallback?: () => T[];\n\n constructor() {}\n\n initialize(config: {\n inlineEditConfig?: InlineEditConfig<T>;\n onInlineEditSave: (event: { row: T; column: string; value: any; allChanges: Map<string, any> }) => void;\n onInlineEditModeChanged: (mode: boolean) => void;\n onInlineEditValidationError: (event: { rowId: number; column: string; errors: string[] }) => void;\n getDisplayedData: () => T[];\n }) {\n this.inlineEditConfig = config.inlineEditConfig;\n this.onInlineEditSaveCallback = config.onInlineEditSave;\n this.onInlineEditModeChangedCallback = config.onInlineEditModeChanged;\n this.onInlineEditValidationErrorCallback = config.onInlineEditValidationError;\n this.getDisplayedDataCallback = config.getDisplayedData;\n \n this.setupSubscriptions();\n }\n\n private setupSubscriptions() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions = [];\n\n this.subscriptions.push(\n this.immediateSaveSubject.pipe(\n debounceTime(50),\n switchMap(({ rowId, column, value, source }) => {\n this.performInlineEdit(rowId, column, value, source);\n return of(true);\n })\n ).subscribe()\n );\n }\n\n updateConfig(config?: InlineEditConfig<T>) {\n this.inlineEditConfig = config;\n this.setupSubscriptions();\n }\n\n toggleInlineEditMode(): void {\n const newMode = !this.isInlineEditMode();\n this.isInlineEditMode.set(newMode);\n \n if (!newMode) {\n this.editingCells.set(new Map());\n this.editingErrors.set(new Map());\n this.pendingSaveCells.set(new Set());\n this.editingRows.set(new Set());\n }\n \n this.onInlineEditModeChangedCallback?.(newMode);\n }\n\n toggleRowEditMode(rowId: number): void {\n const currentEditingRows = new Set(this.editingRows());\n \n if (currentEditingRows.has(rowId)) {\n currentEditingRows.delete(rowId);\n \n const currentCells = new Map(this.editingCells());\n const currentErrors = new Map(this.editingErrors());\n const currentPendingSaves = new Set(this.pendingSaveCells());\n \n Array.from(currentCells.keys()).forEach(cellKey => {\n if (cellKey.startsWith(`${rowId}_`)) {\n currentCells.delete(cellKey);\n currentErrors.delete(cellKey);\n currentPendingSaves.delete(cellKey);\n }\n });\n \n this.editingCells.set(currentCells);\n this.editingErrors.set(currentErrors);\n this.pendingSaveCells.set(currentPendingSaves);\n } else {\n currentEditingRows.add(rowId);\n }\n \n this.editingRows.set(currentEditingRows);\n this.onInlineEditModeChangedCallback?.(currentEditingRows.size > 0);\n }\n\n isRowInEditMode(rowId: number): boolean {\n return this.editingRows().has(rowId);\n }\n\n isCellProcessing(row: T, column: ColumnConfig<T>): boolean {\n const cellKey = this.getCellKey(row, column);\n return this.processingCells().has(cellKey);\n }\n\n setCellProcessing(row: T, column: ColumnConfig<T>, isProcessing: boolean): void {\n const cellKey = this.getCellKey(row, column);\n const processing = new Set(this.processingCells());\n \n if (isProcessing) {\n processing.add(cellKey);\n } else {\n processing.delete(cellKey);\n }\n \n this.processingCells.set(processing);\n }\n\n isColumnEditable(column: ColumnConfig<T>, row?: T): boolean {\n if (!this.inlineEditConfig) return false;\n \n if (row && !this.isRowInEditMode(row.getId() as number)) return false;\n \n const hasEditableColumn = this.inlineEditConfig.editableColumns.some(col => col.key === column.key);\n if (!hasEditableColumn) return false;\n \n if (this.inlineEditConfig.shouldShowForRow && row) {\n return this.inlineEditConfig.shouldShowForRow(row);\n }\n \n return true;\n }\n\n getCellKey(row: T, column: ColumnConfig<T>): string {\n return `${row.getId()}_${column.key as string}`;\n }\n\n getEditingValue(row: T, column: ColumnConfig<T>): any {\n const cellKey = this.getCellKey(row, column);\n const editingValue = this.editingCells().get(cellKey);\n \n if (editingValue) {\n return editingValue.value;\n }\n \n const originalValue = this.inlineEditConfig?.getInitialValue \n ? this.inlineEditConfig.getInitialValue(row, column.key as string)\n : row[column.key as keyof T];\n \n return originalValue;\n }\n\n ensureCellInitialized(row: T, column: ColumnConfig<T>): void {\n const cellKey = this.getCellKey(row, column);\n const currentCells = this.editingCells();\n \n if (!currentCells.has(cellKey)) {\n const originalValue = this.inlineEditConfig?.getInitialValue \n ? this.inlineEditConfig.getInitialValue(row, column.key as string)\n : row[column.key as keyof T];\n \n const updatedCells = new Map(currentCells);\n updatedCells.set(cellKey, {\n value: originalValue,\n hasChanges: false,\n originalValue: originalValue\n });\n this.editingCells.set(updatedCells);\n }\n }\n\n onCellValueChange(row: T, column: ColumnConfig<T>, value: any): void {\n this.ensureCellInitialized(row, column);\n \n const cellKey = this.getCellKey(row, column);\n const currentCells = new Map(this.editingCells());\n \n const cellData = currentCells.get(cellKey)!;\n \n const hasRealChange = this.normalizeValue(cellData.originalValue) !== this.normalizeValue(value);\n \n if (hasRealChange || cellData.value !== value) {\n currentCells.set(cellKey, {\n ...cellData,\n value: value,\n hasChanges: hasRealChange\n });\n \n this.editingCells.set(currentCells);\n \n if (hasRealChange) {\n this.validateCellValue(row, column, value);\n }\n }\n }\n\n private normalizeValue(value: any): string {\n if (value === null || value === undefined) return '';\n return String(value).trim();\n }\n\n private validateCellValue(row: T, column: ColumnConfig<T>, value: any): void {\n if (!this.inlineEditConfig) return;\n \n const editableColumn = this.inlineEditConfig.editableColumns.find(col => col.key === column.key);\n if (!editableColumn?.validators) return;\n \n const errors: string[] = [];\n const cellKey = this.getCellKey(row, column);\n \n editableColumn.validators.forEach(validator => {\n const result = validator({ value } as any);\n if (result && typeof result === 'object') {\n Object.keys(result).forEach(errorKey => {\n if (editableColumn.errorMessages?.[errorKey]) {\n errors.push(editableColumn.errorMessages[errorKey]);\n } else {\n errors.push(`Validation error: ${errorKey}`);\n }\n });\n }\n });\n \n const currentErrors = new Map(this.editingErrors());\n if (errors.length > 0) {\n currentErrors.set(cellKey, errors);\n this.onInlineEditValidationErrorCallback?.({\n rowId: row.getId() as number,\n column: column.key as string,\n errors\n });\n } else {\n currentErrors.delete(cellKey);\n }\n \n this.editingErrors.set(currentErrors);\n }\n\n getCellErrors(row: T, column: ColumnConfig<T>): string[] {\n const cellKey = this.getCellKey(row, column);\n return this.editingErrors().get(cellKey) || [];\n }\n\n private performInlineEdit(rowId: number, column: string, value: any, source: 'blur' | 'enter'): void {\n const displayedData = this.getDisplayedDataCallback?.();\n if (!displayedData) return;\n \n const row = displayedData.find(r => r.getId() === rowId);\n if (!row) return;\n \n const targetCellKey = this.getCellKey(row, { key: column } as ColumnConfig<T>);\n \n if (this.processingCells().has(targetCellKey) || this.pendingSaveCells().has(targetCellKey)) {\n return;\n }\n \n const currentCells = this.editingCells();\n const targetCellData = currentCells.get(targetCellKey);\n \n if (!targetCellData || !targetCellData.hasChanges) {\n return;\n }\n \n const pendingSaves = new Set(this.pendingSaveCells());\n pendingSaves.add(targetCellKey);\n this.pendingSaveCells.set(pendingSaves);\n \n const allChanges = new Map<string, any>();\n currentCells.forEach((cellData, cellKey) => {\n if (cellKey.startsWith(`${rowId}_`) && cellData.hasChanges) {\n const columnKey = cellKey.split('_')[1];\n allChanges.set(columnKey, cellData.value);\n }\n });\n \n if (allChanges.size > 0) {\n this.onInlineEditSaveCallback?.({\n row,\n column,\n value,\n allChanges\n });\n \n const updatedCells = new Map(currentCells);\n allChanges.forEach((savedValue, columnKey) => {\n const cellKey = `${rowId}_${columnKey}`;\n const cellData = updatedCells.get(cellKey);\n if (cellData) {\n updatedCells.set(cellKey, { \n ...cellData, \n hasChanges: false,\n originalValue: savedValue\n });\n }\n });\n this.editingCells.set(updatedCells);\n }\n \n const updatedPendingSaves = new Set(this.pendingSaveCells());\n updatedPendingSaves.delete(targetCellKey);\n this.pendingSaveCells.set(updatedPendingSaves);\n }\n\n getInlineEditableConfig(column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n if (!this.inlineEditConfig) return undefined;\n \n return this.inlineEditConfig.editableColumns.find(col => col.key === column.key);\n }\n\n getInlineEditableConfigWithState(row: T, column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n const config = this.getInlineEditableConfig(column);\n if (!config) return undefined;\n\n const configWithState = { ...config };\n const isProcessing = this.isCellProcessing(row, column);\n \n if (isProcessing) {\n configWithState.readonly = true;\n configWithState.blocked = true;\n }\n\n return configWithState;\n }\n\n onCellBlur(row: T, column: ColumnConfig<T>): void {\n this.performSave(row, column, 'blur');\n }\n\n onCellEnter(row: T, column: ColumnConfig<T>): void {\n this.performSave(row, column, 'enter');\n }\n\n private performSave(row: T, column: ColumnConfig<T>, source: 'blur' | 'enter'): void {\n this.ensureCellInitialized(row, column);\n \n const cellKey = this.getCellKey(row, column);\n \n if (this.pendingSaveCells().has(cellKey)) {\n return;\n }\n \n const currentValue = this.getEditingValue(row, column);\n this.validateCellValue(row, column, currentValue);\n \n const cellData = this.editingCells().get(cellKey);\n \n if (cellData && cellData.hasChanges) {\n this.immediateSaveSubject.next({\n rowId: row.getId() as number,\n column: column.key as string,\n value: currentValue,\n source: source\n });\n }\n }\n\n destroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.immediateSaveSubject.complete();\n this.processingCells.set(new Set());\n this.editingCells.set(new Map());\n this.editingErrors.set(new Map());\n this.pendingSaveCells.set(new Set());\n this.editingRows.set(new Set());\n this.isInlineEditMode.set(false);\n }\n}\n","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { AddressModel } from \"../../interfaces/global/Adress.interface\";\nexport class ConfigurationModel implements DataBaseModelInterface {\n public id: string;\n public email_notification: string;\n public correspondence_address: AddressModel | null;\n public delivery_address: AddressModel | null;\n\n constructor(data: Partial<ConfigurationModel> = {}) {\n this.id = data.id || '';\n this.email_notification = data.email_notification || '';\n this.correspondence_address = data.correspondence_address || null;\n this.delivery_address = data.delivery_address || null;\n }\n\n public fromJSON(json: any): ConfigurationModel {\n if (json) {\n this.id = json.id || '';\n this.email_notification = json.email_notification || '';\n this.correspondence_address = json.correspondence_address || null;\n this.delivery_address = json.delivery_address || null;\n }\n return this;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n email_notification: this.email_notification,\n correspondence_address: this.correspondence_address,\n delivery_address: this.delivery_address\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.id;\n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { UsersModel } from \"../users/users.model\";\nimport { DateUtility } from \"../../utilities/date.utility\";\nimport { FileModel } from \"./file.model\";\nexport class FileTemplateModel implements DataBaseModelInterface {\n public id: string;\n public name: string;\n public details: string;\n public file_type: string | null;\n public type_code: string | null;\n public file_id: string;\n public file: FileModel;\n public uploaded_by: UsersModel;\n public created_at: string;\n public updated_at: string;\n\n constructor(data: Partial<FileTemplateModel> = {}) {\n this.id = data.id || '';\n this.name = data.name || '';\n this.details = data.details || '';\n this.file_type = data.file_type || null;\n this.type_code = data.type_code || null;\n this.file_id = data.file_id || '';\n this.file = data.file || new FileModel();\n this.uploaded_by = data.uploaded_by || new UsersModel();\n this.created_at = data.created_at || '';\n this.updated_at = data.updated_at || '';\n }\n\n public fromJSON(json: any): FileTemplateModel {\n if (json) {\n this.id = json.id || '';\n this.name = json.name || '';\n this.details = json.details || '';\n \n if (json.file_type) {\n if (typeof json.file_type === 'object' && json.file_type.code) {\n this.file_type = json.file_type.code;\n } else {\n this.file_type = json.file_type;\n }\n } else {\n this.file_type = null;\n }\n this.type_code = json.type_code || null;\n this.file_id = json.file_id || '';\n this.file = json.file || new FileModel();\n this.uploaded_by = json.uploaded_by || new UsersModel();\n this.created_at = json.created_at ? DateUtility.fromUTCtoUruguay(json.created_at, 'YYYY-MM-DD HH:mm:ss') : '';\n this.updated_at = json.updated_at ? DateUtility.fromUTCtoUruguay(json.updated_at, 'YYYY-MM-DD HH:mm:ss') : '';\n }\n return this;\n }\n\n public toJSON(): any {\n const payload: any = {\n id: this.id,\n name: this.name,\n details: this.details,\n file_type: this.file_type,\n type_code: this.type_code,\n file_id: this.file_id,\n created_at: this.created_at,\n updated_at: this.updated_at,\n };\n\n if (this.file && !(this.file instanceof File) && this.file.id) {\n payload.file = this.file.toJSON ? this.file.toJSON() : this.file;\n }\n\n return payload;\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.name;\n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class FileTypeModel implements DataBaseModelInterface {\n public id: string;\n public code: string;\n\n constructor(data: Partial<FileTypeModel> = {}) {\n this.id = data.id || '';\n this.code = data.code || '';\n }\n\n public fromJSON(json: any): FileTypeModel {\n if (json) {\n this.id = json.id || '';\n this.code = json.code || '';\n }\n return this;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n code: this.code,\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.code;\n }\n}\n","import { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class ResetPasswordModel implements DataBaseModelInterface {\n constructor(\n public userId?: string,\n public newPassword?: string,\n public confirmPassword?: string,\n ) {}\n\n public fromJSON(json: any): ResetPasswordModel {\n if(json) {\n this.userId = json.userId;\n this.newPassword = json.newPassword;\n this.confirmPassword = json.confirmPassword;\n }\n return this;\n }\n\n public toJSON() {\n return {\n \"userId\": this.userId,\n \"newPassword\": this.newPassword,\n \"confirmPassword\": this.confirmPassword,\n }\n }\n\n public getReference() {\n return this.userId ?? \"\";\n }\n\n public getId() {\n return this.userId ?? \"\";\n }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ActiveFilterItem } from '../interfaces/global/ActiveFiltersConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActiveFiltersEventService {\n private filterRemovedSubject = new Subject<ActiveFilterItem>();\n private filtersClearedSubject = new Subject<void>();\n\n filterRemoved$ = this.filterRemovedSubject.asObservable();\n filtersCleared$ = this.filtersClearedSubject.asObservable();\n\n emitFilterRemoved(filter: ActiveFilterItem): void {\n this.filterRemovedSubject.next(filter);\n }\n\n emitFiltersCleared(): void {\n this.filtersClearedSubject.next();\n }\n}\n","import { Component, input, output, signal, computed, ViewChild, ElementRef, HostListener, inject, OnInit, OnDestroy, AfterViewInit, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GenericModalComponent } from '../generic-modal/generic-modal.component';\nimport { GenericPaginationComponent } from '../generic-pagination/generic-pagination.component';\nimport { FilterService } from './components/filter-modal/services/filter.service';\nimport { ModelApiService } from '../../services/model-api.service';\nimport { Subscription, switchMap, forkJoin, of, catchError, timeout, debounceTime, Subject } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalMode } from '../../enums/global/ModalMode.enum';\nimport { ModalFieldConfig } from '../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalTabConfig } from '../../interfaces/global/ModalTabConfig.interface';\nimport { CustomAction } from './interfaces/CustomAction.interface';\nimport { GlobalAction } from './interfaces/GlobalAction.interface';\nimport { PaginationService } from '../generic-pagination/services/pagination.service';\nimport { TableDataService } from './services/table-data.service';\nimport { TableActionService } from './services/table-action.service';\nimport { TableAction } from './components/dropdown/enums/TableAction.enum';\nimport { ColumnConfig } from './interfaces/ColumnConfig.interface';\nimport { TableActionConfig } from './interfaces/TableActionConfig.interface';\nimport { ConfirmationDialogService } from '../confirmation-dialog/services/confirmation-dialog.service';\nimport { FilterConfig } from './components/filter-modal/interfaces/FilterConfig.interface';\nimport { LoaderService } from '../loader/services/loader.service';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { DropdownService } from './components/dropdown/services/dropdown.service';\nimport { HeaderService } from '../../services/header.service';\nimport { FilterModalComponent } from './components/filter-modal/filter-modal.component';\nimport { ExpansionConfig } from './interfaces/ExpansionConfig.interface';\nimport { FileUploadConfig } from '../../interfaces/global/FileUploadConfig.interface';\nimport { FieldType } from '../../enums/global/FieldType.enum';\nimport { FileType } from '../../enums/global/FileType.enum';\nimport { FileFieldConfig } from '../../interfaces/field-configs/file-field-config.interface';\nimport { RowStyleConfig } from './interfaces/RowStyleConfig.interface';\nimport { ColumnDisabledConfig } from './interfaces/ColumnDisabledConfig.interface';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { ButtonActionEvent } from '../generic-button/interfaces/ButtonActionEvent.interface';\nimport { HeaderOrderConfig } from '../../interfaces/global/HeaderOrderConfig.interface';\nimport { DynamicFieldDirective } from '../../directives/DynamicField.directive';\nimport { InlineEditConfig } from './interfaces/InlineEditConfig.interface';\nimport { InlineEditService } from './services/inline-edit.service';\nimport { MoreDataConfig } from './interfaces/MoreDataConfig.interface';\nimport { FileModel } from '../../models';\nimport { ActiveFilterItem, ActiveFiltersConfig } from '../../interfaces/global/ActiveFiltersConfig.interface';\nimport { ActiveFiltersComponent } from '../active-filters/active-filters.component';\nimport { ActiveFiltersEventService } from '../../services/active-filters-event.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-table',\n standalone: true,\n imports: [\n CommonModule, \n TranslateModule, \n GenericModalComponent, \n GenericPaginationComponent, \n DropdownComponent,\n FilterModalComponent,\n GenericButtonComponent,\n DynamicFieldDirective,\n ActiveFiltersComponent,\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-table.component.html',\n styleUrl: './generic-table.component.scss',\n providers: [TableDataService, FilterService, PaginationService, ModelApiService, InlineEditService],\n})\nexport class GenericTableComponent<T extends DataBaseModelInterface & { [key: string]: any }> implements OnInit, OnDestroy, AfterViewInit {\n public paginationService = inject(PaginationService);\n public tableDataService = inject(TableDataService<T>);\n public filterService = inject(FilterService<T>);\n public tableActionService = inject(TableActionService<T>);\n public modelApiService = inject(ModelApiService<T>);\n public loaderService = inject(LoaderService);\n private confirmationDialogService = inject(ConfirmationDialogService);\n private permissionService = inject(PermissionWrapperService);\n private dropdownService = inject(DropdownService);\n private headerService = inject(HeaderService);\n public inlineEditService = inject(InlineEditService<T>);\n private activeFiltersEventService = inject(ActiveFiltersEventService);\n\n public TableAction = TableAction;\n public ModalMode = ModalMode;\n public ButtonType = ButtonType;\n public FieldType = FieldType;\n\n public tableId: string = `table-${Math.random().toString(36).substring(2, 9)}`;\n\n columns = input.required<ColumnConfig<T>[]>();\n modalFields = input<ModalFieldConfig<T>[]>([]);\n modalTabs = input<ModalTabConfig<T>[]>([]);\n actions = input.required<TableActionConfig[]>();\n customActions = input<CustomAction<T>[]>([]);\n globalActions = input<GlobalAction<T>[]>([]);\n pageSizeOptions = input<number[] | undefined>(undefined);\n showFilter = input(true);\n showSelection = input(false);\n showActions = input(true);\n showCreateButton = input(true);\n filterButtonConfig = input<Partial<ButtonConfig> | undefined>(undefined);\n createButtonConfig = input<Partial<ButtonConfig> | undefined>(undefined);\n dataInput = input<T[]>([]);\n customFilters = input<FilterConfig<T>[]>([]);\n enablePagination = input(true);\n modelFactory = input<((data: any) => T) | undefined>(undefined);\n endpoint = input<string | undefined>(undefined);\n customParams = input<Record<string, any> | undefined>(undefined);\n customArrayKey = input<string | undefined>(undefined);\n listTitle = input<string | undefined>(undefined);\n moreData = input<MoreDataConfig<any>[]>([]);\n inModal = input(false);\n expansionConfig = input<ExpansionConfig<T> | undefined>(undefined);\n fileUploadConfig = input<FileUploadConfig | undefined>(undefined);\n rowStyleConfigs = input<RowStyleConfig<T>[]>([]);\n columnDisabledConfigs = input<ColumnDisabledConfig<T>[]>([]);\n headerOrder = input<HeaderOrderConfig | undefined>(undefined);\n showActiveFilters = input<boolean>(false);\n activeFiltersConfig = input<ActiveFiltersConfig>({});\n\n customEdit = input<(item: T) => void>();\n customDelete = input<(item: T) => void>();\n customView = input<(item: T) => void>();\n customSave = input<(item: T, mode: ModalMode) => void>();\n useCustomSave = input<boolean>(false);\n onApiError = input<(error: any, defaultMessage: string, operation: string) => string>();\n\n actionTriggered = output<{ action: TableAction; row?: T }>();\n selectionChanged = output<T[]>();\n dataCreated = output<T>();\n dataUpdated = output<T>();\n dataDeleted = output<T[]>();\n onMoreDataLoaded = output<Map<string, any[]>>();\n globalActionTriggered = output<{ action: GlobalAction<T>; selectedRows: T[] }>();\n modalData = output<T>();\n beforeSave = output<{ data: T; mode: ModalMode }>();\n onFilterChange = output<Map<string, any>>();\n onClearFilters = output<void>();\n activeFilterRemoved = output<ActiveFilterItem>();\n activeFiltersCleared = output<void>();\n \n hasTabs = computed(() => this.modalTabs().length > 0);\n allModalFields = computed(() => {\n if (this.hasTabs()) {\n return this.modalTabs().flatMap(tab => tab.fields);\n }\n return this.modalFields();\n });\n\n displayedColumns = computed(() => {\n const cols = this.columns().map(col => col.key as string);\n if (this.showSelection()) cols.unshift('select');\n if (this.expansionConfig()?.enabled) cols.unshift('expand');\n if (this.showActions() && (this.actions().length > 0 || this.customActions().length > 0)) cols.push('actions');\n return cols;\n });\n\n infiniteScrollPageSize = signal(25);\n itemsLoaded = signal(25);\n\n displayedData = signal<T[]>([]);\n originalUnsortedData = signal<T[]>([]);\n selectedRows = signal<T[]>([]);\n expandedRows = signal<Set<number>>(new Set());\n\n regularCustomActions = computed(() => {\n const actions = this.customActions().filter(action => !action.isExtra);\n return actions;\n });\n extraCustomActions = computed(() => {\n const actions = this.customActions().filter(action => action.isExtra);\n return actions;\n });\n\n getVisibleCustomActions(row: T, isExtra: boolean = false): CustomAction<T>[] {\n const actions = this.customActions()\n .filter(action => action.isExtra === isExtra)\n .filter(action => {\n if (!action.shouldShow) return true;\n const shouldShow = action.shouldShow(row);\n return shouldShow;\n });\n \n return actions;\n }\n\n hasExtraCustomActions = computed(() => this.extraCustomActions().length > 0);\n\n regularDefaultActions = computed(() => this.actions().filter(action => !action.isExtra));\n extraDefaultActions = computed(() => this.actions().filter(action => action.isExtra));\n hasExtraDefaultActions = computed(() => this.extraDefaultActions().length > 0);\n\n hasExtraActions = computed(() => {\n const hasExtraDefaultActionsWithPermissions = this.extraDefaultActions().some(action => this.hasPermission(action));\n const hasExtraCustomActionsWithPermissions = this.extraCustomActions().some(action => this.hasPermission(action));\n return hasExtraDefaultActionsWithPermissions || hasExtraCustomActionsWithPermissions;\n });\n\n currentFilterValues = signal<Map<string, any>>(new Map());\n\n currentActiveFilters = computed(() => this.generateActiveFilters());\n\n hasExtraActionsForRow(row: T): boolean {\n const hasExtraDefaultActionsWithPermissions = this.extraDefaultActions().some(action => this.hasPermission(action));\n const hasExtraCustomActionsWithPermissions = this.getVisibleCustomActions(row, true).some(action => this.hasPermission(action));\n return hasExtraDefaultActionsWithPermissions || hasExtraCustomActionsWithPermissions;\n }\n\n currentSortColumn = signal<string | null>(null);\n currentSortDirection = signal<'asc' | 'desc' | null>(null);\n\n @ViewChild('sentinel', { static: false }) sentinel!: ElementRef;\n @ViewChild('dropdownTrigger') dropdownTrigger?: ElementRef;\n @ViewChild('dropdown') dropdown?: DropdownComponent<T>;\n private observer!: IntersectionObserver;\n private subscriptions: Subscription[] = [];\n private isInitialized = false;\n\n isFilterModalOpen = signal(false);\n\n activeSubmenuId = signal<number | null>(null);\n\n private readonly MAIN_DATA_LOADER_ID = 'main-data';\n private readonly MORE_DATA_LOADER_PREFIX = 'more-data-';\n private readonly FILTER_LOADER_ID = 'filter-data';\n private readonly LOADER_TIMEOUT = 10000;\n\n private loadingStates = {\n mainData: false,\n filterData: false,\n moreData: new Set<string>()\n };\n\n private loaderTimeouts = new Map<string, any>();\n\n inlineEditConfig = input<InlineEditConfig<T> | undefined>(undefined);\n\n inlineEditSave = output<{ row: T; column: string; value: any; allChanges: Map<string, any> }>();\n inlineEditModeChanged = output<boolean>();\n inlineEditValidationError = output<{ rowId: number; column: string; errors: string[] }>();\n\n constructor() {\n window.addEventListener('filterRequested', () => {\n this.showFiltersPopup();\n });\n\n window.addEventListener('createRequested', () => {\n this.triggerAction(TableAction.CREATE);\n });\n\n window.addEventListener('globalActionTriggered', ((event: CustomEvent) => {\n this.triggerGlobalAction(event.detail);\n }) as EventListener);\n\n effect(() => {\n this.updateHeaderService();\n });\n\n effect(() => {\n const config = this.inlineEditConfig();\n if (this.inlineEditService && config !== undefined) {\n this.inlineEditService.updateConfig(config);\n }\n });\n\n effect(() => {\n const inputData = this.dataInput();\n if (!this.endpoint() || this.endpoint() === '') {\n setTimeout(() => {\n if (this.isInitialized && inputData) {\n this.processDataInput(inputData);\n }\n }, 0);\n }\n });\n\n effect(() => {\n const params = this.customParams();\n if (this.isInitialized && this.endpoint()) {\n this.tableDataService.updateCustomParams(params, this.MAIN_DATA_LOADER_ID);\n }\n });\n }\n\n private processDataInput(inputData: T[]): void {\n if ((!this.endpoint() || this.endpoint() === '') && Array.isArray(inputData)) {\n if (this.currentSortColumn() === null && this.currentSortDirection() === null) {\n this.originalUnsortedData.set([...inputData]);\n }\n \n this.displayedData.set([...inputData]);\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n this.checkAndHideLoader();\n }\n }\n\n ngOnInit() {\n if (this.isInitialized) {\n return;\n }\n\n this.currentFilterValues.set(new Map(this.filterService.getCustomFilters()));\n\n this.loaderService.showLoader(this.MAIN_DATA_LOADER_ID);\n this.startLoaderTimeout(this.MAIN_DATA_LOADER_ID);\n this.loadingStates.mainData = true;\n\n if (this.enablePagination()) {\n this.paginationService.initialize(\n this.tableId,\n this.endpoint() ? 0 : this.filterService.getFilteredData().length,\n this.pageSizeOptions()\n );\n\n this.subscriptions.push(\n this.paginationService.paginationChange$.subscribe(event => {\n if (event.tableId === this.tableId && this.endpoint()) {\n this.tableDataService.updatePagination(event.page, event.size, this.MAIN_DATA_LOADER_ID);\n } else if (!this.endpoint()) {\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n }\n })\n );\n }\n\n this.itemsLoaded.set(\n this.enablePagination() \n ? this.paginationService.getPageSize(this.tableId)() \n : this.infiniteScrollPageSize()\n );\n\n this.subscriptions.push(\n this.tableDataService.data$.subscribe({\n next: (data) => {\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n \n if (!data) {\n this.displayedData.set([]);\n this.checkAndHideLoader();\n return;\n }\n\n if (this.endpoint()) {\n const serverData = data as { total?: number; items?: T[]; page?: number; pages?: number; size?: number };\n \n if (this.enablePagination()) {\n if (serverData.total !== undefined) {\n this.paginationService.setTotalItems(this.tableId, serverData.total);\n }\n // Comentado: No ajustar automáticamente el pageSize basado en la respuesta del servidor\n // para evitar requests duplicadas cuando el servidor devuelve el número real de items\n // if (serverData.size !== undefined && serverData.size !== this.paginationService.getPageSize(this.tableId)()) {\n // this.paginationService.setPageSize(this.tableId, serverData.size);\n // }\n if (serverData.page !== undefined) {\n this.paginationService.setCurrentPage(this.tableId, serverData.page);\n }\n if (serverData.pages !== undefined) {\n this.paginationService.setTotalPages(this.tableId, serverData.pages);\n }\n }\n const items = serverData.items || [];\n this.updateDisplayedDataFromServer(items);\n } else {\n const items = Array.isArray(data.items) ? data.items : [];\n this.filterService.applyAllFilters(items, this.customFilters(), this.showFilter());\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n }\n\n this.checkAndHideLoader();\n },\n error: (error) => {\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n this.checkAndHideLoader();\n }\n })\n );\n\n this.subscriptions.push(\n this.filterService.filterChange$.subscribe(() => {\n this.currentFilterValues.set(new Map(this.filterService.getCustomFilters()));\n if (!this.endpoint()) {\n this.loaderService.showLoader(this.FILTER_LOADER_ID);\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.loadingStates.filterData = true;\n \n setTimeout(() => {\n this.filterService.applyAllFilters(this.tableDataService.getData(), this.customFilters(), this.showFilter());\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n this.loadingStates.filterData = false;\n this.checkAndHideLoader();\n }, 0);\n }\n })\n );\n\n if (this.moreData().length > 0) {\n const moreDataKeys = new Set(this.moreData().map(config => config.key));\n moreDataKeys.forEach(key => this.loadingStates.moreData.add(key));\n\n this.moreData().forEach(config => {\n const loaderId = this.MORE_DATA_LOADER_PREFIX + config.key;\n this.loaderService.showLoader(loaderId);\n this.startLoaderTimeout(loaderId);\n });\n\n this.moreData().forEach(config => {\n this.subscriptions.push(\n this.modelApiService.getMoreDataObservable(config.key).subscribe({\n next: (data) => {\n const moreDataMap = new Map<string, any[]>();\n moreDataMap.set(config.key, data || []);\n this.onMoreDataLoaded.emit(moreDataMap);\n \n this.loadingStates.moreData.delete(config.key);\n const loaderId = this.MORE_DATA_LOADER_PREFIX + config.key;\n this.loaderService.hideLoader(loaderId);\n this.clearLoaderTimeout(loaderId);\n this.checkAndHideLoader();\n },\n error: (error) => {\n const moreDataMap = new Map<string, any[]>();\n moreDataMap.set(config.key, []);\n this.onMoreDataLoaded.emit(moreDataMap);\n \n this.loadingStates.moreData.delete(config.key);\n const loaderId = this.MORE_DATA_LOADER_PREFIX + config.key;\n this.loaderService.hideLoader(loaderId);\n this.clearLoaderTimeout(loaderId);\n this.checkAndHideLoader();\n }\n })\n );\n });\n\n if (this.endpoint() && this.modelFactory()) {\n this.tableDataService.setEndpoint(\n this.endpoint()!, \n this.modelFactory()!, \n this.MAIN_DATA_LOADER_ID, \n this.enablePagination(), \n this.customArrayKey(),\n this.customParams()\n );\n this.modelApiService.setErrorHandler(this.onApiError());\n this.modelApiService.loadMoreData(this.moreData());\n }\n } else if (this.endpoint() && this.modelFactory()) {\n this.tableDataService.setEndpoint(\n this.endpoint()!, \n this.modelFactory()!, \n this.MAIN_DATA_LOADER_ID, \n this.enablePagination(), \n this.customArrayKey(),\n this.customParams()\n );\n this.modelApiService.setErrorHandler(this.onApiError());\n }\n\n this.isInitialized = true;\n\n this.inlineEditService.initialize({\n inlineEditConfig: this.inlineEditConfig(),\n onInlineEditSave: (event) => this.inlineEditSave.emit(event),\n onInlineEditModeChanged: (mode) => this.inlineEditModeChanged.emit(mode),\n onInlineEditValidationError: (event) => this.inlineEditValidationError.emit(event),\n getDisplayedData: () => this.displayedData()\n });\n\n if (this.dataInput()) {\n this.processDataInput(this.dataInput());\n }\n }\n\n private updateDisplayedDataFromServer(data: T[]): void {\n if (!Array.isArray(data)) {\n data = [];\n }\n\n if (this.currentSortColumn() === null && this.currentSortDirection() === null) {\n this.originalUnsortedData.set([...data]);\n }\n\n if (this.endpoint() && this.endpoint() !== '') {\n this.displayedData.set([...data]);\n } else {\n this.tableDataService.updateDisplayedData(\n data,\n this.enablePagination(),\n this.paginationService,\n this.tableId,\n this.itemsLoaded()\n );\n const displayed = this.tableDataService.getDisplayedData();\n this.displayedData.set([...displayed]);\n }\n }\n\n applyGlobalFilter(event: Event | string): void {\n const value = typeof event === 'string' ? event : (event.target as HTMLInputElement).value;\n this.filterService.setGlobalFilter(value);\n if (this.endpoint()) {\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateGlobalFilter(value, this.FILTER_LOADER_ID);\n }\n }\n\n applyCustomFilters(filterValues: Map<string, any>): void {\n this.filterService.setCustomFilters(filterValues);\n if (this.endpoint()) {\n const transformedFilters = this.transformFiltersForPayload(filterValues);\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateFilters(transformedFilters, this.FILTER_LOADER_ID);\n }\n }\n\n sortData(column: ColumnConfig<T>): void {\n if (column.sortable === false) return;\n \n const columnKey = column.key as string;\n \n if (this.currentSortColumn() === columnKey) {\n if (this.currentSortDirection() === 'asc') {\n this.currentSortDirection.set('desc');\n } else if (this.currentSortDirection() === 'desc') {\n this.currentSortColumn.set(null);\n this.currentSortDirection.set(null);\n this.resetToOriginalOrder();\n return;\n }\n } else {\n this.currentSortColumn.set(columnKey);\n this.currentSortDirection.set('asc');\n }\n \n if (this.endpoint()) {\n const currentData = this.displayedData();\n this.sortCurrentData(currentData, columnKey);\n } else {\n this.filterService.sortData(columnKey);\n }\n }\n\n getSortTitle(column: ColumnConfig<T>): string {\n if (column.sortable === false) return '';\n \n const columnKey = column.key as string;\n if (this.currentSortColumn() === columnKey) {\n if (this.currentSortDirection() === 'asc') {\n return 'table.sort.desc';\n } else if (this.currentSortDirection() === 'desc') {\n return 'table.sort.reset';\n }\n }\n return 'table.sort.asc';\n }\n\n private resetToOriginalOrder(): void {\n const originalData = this.originalUnsortedData();\n if (originalData.length > 0) {\n this.displayedData.set([...originalData]);\n } else if (!this.endpoint()) {\n const inputData = this.dataInput();\n this.displayedData.set([...inputData]);\n }\n else if (this.endpoint() && originalData.length === 0) {\n this.tableDataService.refreshWithFilters();\n }\n }\n \n private sortCurrentData(data: T[], columnKey: string): void {\n const sortDirection = this.currentSortDirection();\n if (!sortDirection) return;\n \n const sorted = [...data].sort((a, b) => {\n const valueA = a[columnKey as keyof T];\n const valueB = b[columnKey as keyof T];\n \n if (valueA == null && valueB == null) return 0;\n if (valueA == null) return sortDirection === 'asc' ? -1 : 1;\n if (valueB == null) return sortDirection === 'asc' ? 1 : -1;\n \n const comparison = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n return sortDirection === 'asc' ? comparison : -comparison;\n });\n \n this.displayedData.set(sorted);\n }\n\n isAllSelected(): boolean {\n return this.displayedData().every(row => this.selectedRows().includes(row));\n }\n\n masterToggle(): void {\n this.tableActionService.masterToggle(this.displayedData());\n }\n\n toggleRow(row: T): void {\n this.tableActionService.toggleRow(row);\n }\n\n isRowSelected(row: T): boolean {\n return this.selectedRows().includes(row);\n }\n\n getFormattedValue(row: T, column: ColumnConfig<T>): string {\n const value = row[column.key as keyof T];\n return column.format ? column.format(value, row) : (value?.toString() || '');\n }\n\n hasAction(action: TableAction): boolean {\n return this.actions().some(config => config.action === action);\n }\n\n triggerAction(action: TableAction, row?: T): void {\n if (this.endpoint() && this.modelFactory()) {\n const result = this.tableActionService.triggerAction(action, row, this.allModalFields()); \n if (result) {\n if (action === TableAction.DELETE && row) {\n this.confirmationDialogService\n .openDelete('dialog.confirmDeletionTitle', 'dialog.confirmDeletionSingle')\n .subscribe(confirmed => {\n if (confirmed) {\n this.tableDataService.deleteItem(this.endpoint()!, row).subscribe({\n next: (success) => {\n if (success) {\n this.dataDeleted.emit([row]);\n }\n },\n error: (error) => {\n console.error('Error deleting item:', error);\n }\n });\n }\n });\n } else {\n this.actionTriggered.emit(result);\n }\n }\n } else {\n switch (action) {\n case TableAction.EDIT:\n if (this.customEdit() && row) {\n this.customEdit()!(row);\n this.actionTriggered.emit({ action, row });\n }\n break;\n case TableAction.DELETE:\n if (this.customDelete() && row) {\n this.customDelete()!(row);\n this.actionTriggered.emit({ action, row });\n }\n break;\n case TableAction.VIEW:\n if (this.customView() && row) {\n this.customView()!(row);\n this.actionTriggered.emit({ action, row });\n }\n break;\n case TableAction.CREATE:\n if (this.customEdit()) {\n this.customEdit()!(null as any);\n this.actionTriggered.emit({ action });\n }\n break;\n }\n }\n }\n\n triggerCustomAction(action: CustomAction<T>, row: T): void {\n action.callback(row);\n }\n\n triggerGlobalAction(action: GlobalAction<T>): void {\n action.callback(this.selectedRows());\n this.globalActionTriggered.emit({ action, selectedRows: this.selectedRows() });\n }\n\n isGlobalActionDisabled(action: GlobalAction<T>): boolean {\n if (!action.requiresSelection) return false;\n const selectionCount = this.selectedRows().length;\n const minSelection = action.minSelection ?? 1;\n const maxSelection = action.maxSelection ?? Infinity;\n return selectionCount < minSelection || selectionCount > maxSelection;\n }\n\n onModalSave(updatedData: T): void {\n const modalMode = this.tableActionService.getModalMode();\n \n this.beforeSave.emit({ data: updatedData, mode: modalMode });\n \n if (this.useCustomSave() && this.customSave()) {\n this.customSave()!(updatedData, modalMode);\n return;\n }\n \n if (!this.endpoint() || !this.modelFactory()) return;\n \n const fileFields = this.allModalFields().filter(field => \n field.type === FieldType.FILE && this.hasFileUploadConfig(field)\n );\n \n if (fileFields.length > 0) {\n this.handleFileUploadsAndSave(updatedData, fileFields);\n } else {\n this.performSaveOperation(updatedData);\n }\n }\n\n private hasFileUploadConfig(field: ModalFieldConfig<T>): boolean {\n const globalConfig = this.fileUploadConfig();\n const fileField = field as FileFieldConfig<T>;\n const hasFieldConfig = !!fileField.fileUploadConfig;\n \n if (globalConfig) return true;\n \n return hasFieldConfig;\n }\n\n private isServerFile(value: any): value is FileModel {\n return value && (\n value instanceof FileModel || \n (typeof value === 'object' && 'id' in value && 'filename' in value && !(value instanceof File))\n );\n }\n\n private getCompanyId(data: T, field: ModalFieldConfig<T>): string | undefined {\n const fileField = field as FileFieldConfig<T>;\n if (fileField.fileUploadConfig) {\n if (fileField.fileUploadConfig.staticCompanyId) {\n return fileField.fileUploadConfig.staticCompanyId;\n }\n if (fileField.fileUploadConfig.companyIdSource) {\n return (data as any)[fileField.fileUploadConfig.companyIdSource];\n }\n }\n \n const globalConfig = this.fileUploadConfig();\n if (globalConfig) {\n if (globalConfig.staticCompanyId) {\n return globalConfig.staticCompanyId;\n }\n if (globalConfig.companyIdSource) {\n return (data as any)[globalConfig.companyIdSource];\n }\n }\n \n return undefined;\n }\n\n private getFileType(field: ModalFieldConfig<T>, data: T): FileType {\n const fileField = field as FileFieldConfig<T>;\n \n if (fileField.fileUploadConfig?.fileTypeResolver) {\n return fileField.fileUploadConfig.fileTypeResolver(data);\n }\n \n if (fileField.fileUploadConfig?.fileType) {\n return fileField.fileUploadConfig.fileType;\n }\n \n const globalConfig = this.fileUploadConfig();\n \n if (globalConfig?.fileTypeResolver) {\n return globalConfig.fileTypeResolver(data);\n }\n \n if (globalConfig?.fileType) {\n return globalConfig.fileType;\n }\n \n throw new Error('No se pudo determinar el FileType para la subida de archivos');\n }\n\n private handleFileUploadsAndSave(updatedData: T, fileFields: ModalFieldConfig<T>[]): void {\n \n type UploadResult = {\n field: ModalFieldConfig<T>;\n isServerFile: boolean;\n fileModel: FileModel | null;\n error?: boolean;\n } | null;\n \n const uploadObservables = fileFields.map(field => {\n const fileValue = (updatedData as any)[field.key];\n \n if (this.isServerFile(fileValue)) {\n return of({ field, isServerFile: true, fileModel: fileValue } as UploadResult);\n }\n \n if (!fileValue || !(fileValue instanceof File)) {\n return of(null as UploadResult);\n }\n \n const companyId = this.getCompanyId(updatedData, field);\n const fileType = this.getFileType(field, updatedData);\n \n if (!companyId) {\n return of(null);\n }\n \n return this.modelApiService.uploadFile(fileValue, companyId, fileType).pipe(\n switchMap(fileModel => {\n return of({ field, isServerFile: false, fileModel } as UploadResult);\n }),\n catchError((error: any) => {\n return of({ field, isServerFile: false, fileModel: null, error: true } as UploadResult);\n })\n );\n });\n\n forkJoin(uploadObservables).pipe(\n timeout(30000),\n catchError((error: any) => {\n throw error;\n })\n ).subscribe({\n next: (results) => {\n results.forEach(result => {\n if (result && result.fileModel && !(result as any).error) {\n const field = result.field;\n const fileField = field as FileFieldConfig<T>;\n const fileIdTarget = fileField.fileUploadConfig?.fileIdTarget || 'file_id';\n \n if (result.isServerFile) {\n (updatedData as any)[fileIdTarget] = result.fileModel.id;\n } else {\n (updatedData as any)[fileIdTarget] = result.fileModel.id;\n }\n \n }\n });\n \n this.performSaveOperation(updatedData);\n },\n error: (error) => {\n }\n });\n }\n\n private createSafePayload(updatedData: T): any {\n if (typeof (updatedData as any).toPayload === 'function') {\n const payloadKeys = (updatedData as any).toPayload();\n const filteredPayload: any = {};\n \n Object.keys(payloadKeys).forEach(key => {\n if (key in updatedData) {\n const value = (updatedData as any)[key];\n if (!(value instanceof File)) {\n filteredPayload[key] = value;\n }\n }\n });\n \n return filteredPayload;\n }\n\n let payload = updatedData.toJSON ? updatedData.toJSON() : { ...updatedData };\n \n Object.keys(payload).forEach(key => {\n if (payload[key] instanceof File) {\n delete payload[key];\n }\n });\n \n return payload;\n }\n\n private performSaveOperation(updatedData: T): void {\n const modalMode = this.tableActionService.getModalMode();\n \n if (modalMode === ModalMode.CREATE) {\n const payload = this.createSafePayload(updatedData);\n this.modelApiService.createItem(this.endpoint()!, payload as unknown as T, this.modelFactory()!).subscribe({\n next: (createdItem) => {\n this.dataCreated.emit(updatedData);\n this.sortDataByReference();\n this.tableActionService.closeModal();\n },\n error: (error) => {\n console.error('Error creating item:', error);\n }\n });\n } else {\n const payload = this.createSafePayload(updatedData);\n \n this.modelApiService.updateItem(this.endpoint()!, updatedData.getId(), payload as unknown as T, this.modelFactory()!).subscribe({\n next: (updatedItem) => {\n this.dataUpdated.emit(updatedData);\n this.sortDataByReference();\n this.tableActionService.closeModal();\n },\n error: (error) => {\n console.error('Error updating item:', error);\n }\n });\n }\n }\n\n public closeModal(): void {\n this.tableActionService.closeModal();\n }\n\n public emitDataEvent(data: T, mode: ModalMode): void {\n if (mode === ModalMode.CREATE) {\n this.dataCreated.emit(data);\n } else {\n this.dataUpdated.emit(data);\n }\n }\n\n getRowId(row: T): number {\n return row.getId() as number;\n }\n\n hasPermission(action: TableActionConfig | CustomAction<T> | GlobalAction<T> | TableActionConfig): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n showFiltersPopup(): void {\n this.isFilterModalOpen.set(true);\n }\n\n closeFiltersPopup(): void {\n this.isFilterModalOpen.set(false);\n }\n\n handleFilterChange(filterValues: Map<string, any>): void {\n this.onFilterChange.emit(filterValues);\n this.filterService.setCustomFilters(filterValues);\n if (this.endpoint()) {\n const transformedFilters = this.transformFiltersForPayload(filterValues);\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateFilters(transformedFilters, this.FILTER_LOADER_ID);\n }\n }\n\n private transformFiltersForPayload(filterValues: Map<string, any>): Map<string, any> {\n const transformedFilters = new Map<string, any>();\n \n filterValues.forEach((value, key) => {\n const filterConfig = this.customFilters().find(filter => filter.key.toString() === key);\n const payloadKey = filterConfig?.keyToPayload || key;\n transformedFilters.set(payloadKey, value);\n });\n \n return transformedFilters;\n }\n\n handleClearFilters(): void {\n this.filterService.setCustomFilters(new Map());\n if (this.endpoint()) {\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateFilters(new Map(), this.FILTER_LOADER_ID);\n this.onClearFilters.emit();\n }\n }\n\n toggleSubmenu(rowId: number, event: Event): void {\n event.stopPropagation();\n this.dropdownService.openDropdown(rowId);\n }\n\n @HostListener('document:click')\n closeSubmenu(): void {\n this.dropdownService.closeDropdown();\n }\n\n getActionLabel(action: TableAction): string {\n switch (action) {\n case TableAction.VIEW:\n return 'table.view';\n case TableAction.EDIT:\n return 'table.edit';\n case TableAction.DELETE:\n return 'table.delete';\n case TableAction.CREATE:\n return 'table.create';\n default:\n return '';\n }\n }\n\n toggleRowExpansion(row: T): void {\n const rowId = row.getId() as number;\n const expanded = new Set(this.expandedRows());\n \n if (expanded.has(rowId)) {\n expanded.delete(rowId);\n } else {\n expanded.add(rowId);\n }\n \n this.expandedRows.set(expanded);\n }\n\n isRowExpanded(row: T): boolean {\n return this.expandedRows().has(row.getId() as number);\n }\n\n getExpansionIcon(row: T): string {\n const config = this.expansionConfig();\n if (!config) return 'icon-chevron-down';\n \n return this.isRowExpanded(row) \n ? (config.collapseIcon || 'icon-arrow-up')\n : (config.expandIcon || 'icon-info');\n }\n\n getRowClasses(row: T): string {\n const rowConfigs = this.rowStyleConfigs();\n if (!rowConfigs || rowConfigs.length === 0) {\n return '';\n }\n\n const applicableConfigs = rowConfigs\n .filter(config => config.condition(row))\n .sort((a, b) => (b.priority || 0) - (a.priority || 0));\n\n return applicableConfigs.map(config => config.className).join(' ');\n }\n\n isRowDisabled(row: T): boolean {\n const disabledConfigs = this.columnDisabledConfigs();\n if (!disabledConfigs || disabledConfigs.length === 0) {\n return false;\n }\n\n return disabledConfigs.some(config => config.condition(row));\n }\n\n isColumnDisabledForRow(row: T, column: ColumnConfig<T>): boolean {\n const disabledConfigs = this.columnDisabledConfigs();\n if (!disabledConfigs || disabledConfigs.length === 0) {\n return false;\n }\n\n const applicableConfigs = disabledConfigs\n .filter(config => config.condition(row))\n .sort((a, b) => (b.priority || 0) - (a.priority || 0));\n\n if (applicableConfigs.length === 0) {\n return false;\n }\n\n for (const config of applicableConfigs) {\n if (!config.columns || config.columns.length === 0) {\n return true;\n }\n \n if (config.columns.includes(column.key)) {\n return true;\n }\n }\n\n return false;\n }\n\n getCellDisabledClasses(row: T, column: ColumnConfig<T>): string {\n const disabledConfigs = this.columnDisabledConfigs();\n if (!disabledConfigs || disabledConfigs.length === 0) {\n return '';\n }\n\n const applicableConfigs = disabledConfigs\n .filter(config => config.condition(row))\n .sort((a, b) => (b.priority || 0) - (a.priority || 0));\n\n const classes: string[] = [];\n\n for (const config of applicableConfigs) {\n if (!config.columns || config.columns.length === 0) {\n classes.push(config.disabledClass || 'is-disabled');\n }\n else if (config.columns.includes(column.key)) {\n classes.push(config.disabledClass || 'is-disabled');\n }\n }\n\n return classes.join(' ');\n }\n\n private generateActiveFilters(): ActiveFilterItem[] {\n const activeFilters: ActiveFilterItem[] = [];\n const currentFilters = this.currentFilterValues();\n \n if (!currentFilters || currentFilters.size === 0) {\n return activeFilters;\n }\n\n currentFilters.forEach((value, key) => {\n if (value !== undefined && value !== null && value !== '') {\n const filterConfig = this.customFilters().find(filter => \n filter.key.toString() === key\n );\n \n if (filterConfig) {\n const activeFilter: ActiveFilterItem = {\n key,\n label: filterConfig.label || key,\n value,\n displayValue: this.formatFilterValue(key, value, filterConfig),\n removable: true\n };\n \n activeFilters.push(activeFilter);\n }\n }\n });\n\n return activeFilters;\n }\n\n private formatFilterValue(key: string, value: any, filterConfig?: FilterConfig<T>): string {\n const formatters = this.activeFiltersConfig().formatters;\n \n if (formatters && formatters[key]) {\n return formatters[key](value);\n }\n\n if (filterConfig && filterConfig.options) {\n if (Array.isArray(value)) {\n const labels = value.map(v => {\n const option = filterConfig.options!.find(opt => opt.value === v);\n return option ? option.label : v;\n });\n return labels.join(', ');\n } else {\n const option = filterConfig.options.find(opt => opt.value === value);\n return option ? option.label : String(value);\n }\n }\n\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n\n if (Array.isArray(value)) {\n return value.join(', ');\n }\n\n return String(value);\n }\n\n onActiveFilterRemove(filter: ActiveFilterItem): void {\n this.handleFilterRemoved(filter);\n }\n\n onActiveFiltersClear(): void {\n this.handleFiltersCleared();\n }\n\n private handleFilterRemoved(filter: ActiveFilterItem): void {\n const currentFilters = new Map(this.filterService.getCustomFilters());\n currentFilters.delete(filter.key);\n this.currentFilterValues.set(currentFilters);\n \n if (this.endpoint()) {\n const transformedFilters = this.transformFiltersForPayload(currentFilters);\n const filterParams: { [key: string]: any } = {};\n transformedFilters.forEach((value, key) => {\n filterParams[key] = value;\n });\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.refreshWithFilters(filterParams, this.FILTER_LOADER_ID);\n this.filterService.setCustomFiltersSilent(currentFilters);\n } else {\n this.filterService.setCustomFilters(currentFilters);\n }\n \n this.activeFilterRemoved.emit(filter);\n }\n\n private handleFiltersCleared(): void {\n this.currentFilterValues.set(new Map());\n \n if (this.endpoint()) {\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.refreshWithFilters({}, this.FILTER_LOADER_ID);\n this.filterService.setCustomFiltersSilent(new Map());\n this.filterService.setGlobalFilterSilent('');\n } else {\n this.filterService.setCustomFilters(new Map());\n this.filterService.setGlobalFilter('');\n }\n \n this.activeFiltersCleared.emit();\n }\n\n private updateHeaderService() {\n if (this.inModal()) return;\n \n this.headerService.setHeaderData({\n title: this.listTitle(),\n globalActions: this.globalActions(),\n showFilter: this.showFilter(),\n customFilters: this.customFilters(),\n showCreateButton: this.showCreateButton(),\n hasCreatePermission: this.hasAction(TableAction.CREATE),\n });\n\n this.headerService.setHeaderConfig({\n title: this.listTitle(),\n globalActions: this.globalActions(),\n showDefaultFilter: this.showFilter(),\n showDefaultCreate: this.showCreateButton(),\n customFilters: this.customFilters(),\n headerOrder: this.headerOrder(),\n filterButtonConfig: this.filterButtonConfig(),\n createButtonConfig: this.createButtonConfig(),\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n \n this.inlineEditService.destroy();\n \n this.loaderTimeouts.forEach((timeoutId) => {\n clearTimeout(timeoutId);\n });\n this.loaderTimeouts.clear();\n \n this.loadingStates.moreData.clear();\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n \n this.loaderService.hideLoader(this.MAIN_DATA_LOADER_ID);\n this.loaderService.hideLoader(this.FILTER_LOADER_ID);\n this.loadingStates.moreData.forEach(key => {\n this.loaderService.hideLoader(this.MORE_DATA_LOADER_PREFIX + key);\n });\n \n window.removeEventListener('filterRequested', () => {\n this.showFiltersPopup();\n });\n\n window.removeEventListener('createRequested', () => {\n this.triggerAction(TableAction.CREATE);\n });\n\n window.removeEventListener('globalActionTriggered', ((event: CustomEvent) => {\n this.triggerGlobalAction(event.detail);\n }) as EventListener);\n\n if (!this.inModal()) {\n this.headerService.clearHeaderData();\n }\n }\n\n ngAfterViewInit() {\n if (!this.enablePagination() && this.sentinel) {\n this.setupInfiniteScroll();\n }\n }\n\n setupInfiniteScroll(): void {\n if (this.observer) this.observer.disconnect();\n this.observer = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && this.itemsLoaded() < this.filterService.getFilteredData().length) {\n this.loadMoreItems();\n }\n }, { threshold: 0.1 });\n this.observer.observe(this.sentinel.nativeElement);\n }\n\n loadMoreItems(): void {\n const newItemsLoaded = Math.min(this.itemsLoaded() + this.infiniteScrollPageSize(), this.filterService.getFilteredData().length);\n this.itemsLoaded.set(newItemsLoaded);\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n }\n\n onModalData(data: T): void {\n this.modalData.emit(data);\n }\n\n getExpandButtonConfig(row: T): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: this.getExpansionIcon(row),\n ariaLabel: this.isRowExpanded(row) ? 'table.collapse' : 'table.expand',\n customClass: this.expansionConfig()?.buttonClass || 'c-icon-btn'\n };\n }\n\n getActionButtonConfig(action: TableAction, actionConfig: TableActionConfig): ButtonConfig {\n const configs: Record<string, Partial<ButtonConfig>> = {\n [TableAction.VIEW]: {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-search',\n ariaLabel: 'table.view',\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || 'table.view',\n position: actionConfig.tooltipPosition || 'bottom'\n },\n // text: 'table.view'\n },\n [TableAction.EDIT]: {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-edit',\n ariaLabel: 'table.edit',\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || 'table.edit',\n position: actionConfig.tooltipPosition || 'bottom'\n },\n // text: 'table.edit'\n },\n [TableAction.DELETE]: {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-delete',\n ariaLabel: 'table.delete',\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || 'table.delete',\n position: actionConfig.tooltipPosition || 'bottom'\n },\n context: ButtonContext.ERROR,\n // text: 'table.delete'\n }\n };\n\n const config = configs[action] || {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-more',\n ariaLabel: action,\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || action,\n position: actionConfig.tooltipPosition || 'bottom'\n },\n text: action\n };\n\n return {\n ...config,\n customClass: actionConfig.class || 'c-icon-btn'\n } as ButtonConfig;\n }\n\n getCustomActionButtonConfig(customAction: CustomAction<T>): ButtonConfig {\n const hasLabel = !!customAction.label;\n const isIconButton = customAction.class === 'c-icon-btn';\n const isLinkStyle = customAction.class?.includes('c-link') || customAction.class?.includes('c-btn');\n \n const defaultConfig: ButtonConfig = {\n type: ButtonType.ICON,\n icon: customAction.icon,\n ariaLabel: customAction.title,\n text: customAction.label,\n tooltipConfig: {\n hasTooltip: true,\n text: customAction.tooltip || customAction.title,\n position: customAction.tooltipPosition || 'bottom'\n },\n customClass: customAction.class || 'c-icon-btn',\n showTextOnIcon: hasLabel && (isLinkStyle || !isIconButton)\n };\n\n if (customAction.buttonConfig) {\n return {\n ...defaultConfig,\n ...customAction.buttonConfig\n };\n }\n\n return defaultConfig;\n }\n\n getCustomActionButtonConfigForRow(customAction: CustomAction<T>, row: T): ButtonConfig {\n const baseConfig = this.getCustomActionButtonConfig(customAction);\n \n const isDisabled = customAction.shouldDisable ? customAction.shouldDisable(row) : false;\n \n return {\n ...baseConfig,\n disabled: isDisabled\n };\n }\n\n getMoreActionsButtonConfig(rowId: number): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-more',\n ariaLabel: 'table.moreActions',\n customClass: 'c-icon-btn',\n id: `dropdown-trigger-${rowId}`\n };\n }\n\n onButtonClick(event: ButtonActionEvent, action: any, row?: T): void {\n if (typeof action === 'string') {\n this.triggerAction(action as TableAction, row);\n } else {\n this.triggerCustomAction(action as CustomAction<T>, row!);\n }\n }\n\n onExpandButtonClick(event: ButtonActionEvent, row: T): void {\n this.toggleRowExpansion(row);\n }\n\n onMoreActionsClick(event: ButtonActionEvent, rowId: number): void {\n this.toggleSubmenu(rowId, event.originalEvent);\n }\n\n private sortDataByReference(): void {\n const currentData = this.displayedData();\n if (!currentData || currentData.length === 0) {\n return;\n }\n\n const firstItem = currentData[0];\n if (!firstItem || typeof firstItem.getReference !== 'function') {\n return;\n }\n\n try {\n const sortedData = [...currentData].sort((a, b) => {\n const refA = a.getReference();\n const refB = b.getReference();\n \n if (refA == null && refB == null) return 0;\n if (refA == null) return 1;\n if (refB == null) return -1;\n \n const stringA = String(refA).toLowerCase();\n const stringB = String(refB).toLowerCase();\n \n return stringA.localeCompare(stringB);\n });\n\n this.displayedData.set(sortedData);\n } catch (error) {\n console.warn('Error al ordenar por getReference():', error);\n }\n }\n\n private startLoaderTimeout(loaderId: string): void {\n if (this.loaderTimeouts.has(loaderId)) {\n clearTimeout(this.loaderTimeouts.get(loaderId));\n }\n\n const timeoutId = setTimeout(() => {\n this.loaderService.hideLoader(loaderId);\n \n if (loaderId === this.MAIN_DATA_LOADER_ID) {\n this.loadingStates.mainData = false;\n } else if (loaderId === this.FILTER_LOADER_ID) {\n this.loadingStates.filterData = false;\n } else if (loaderId.startsWith(this.MORE_DATA_LOADER_PREFIX)) {\n const key = loaderId.replace(this.MORE_DATA_LOADER_PREFIX, '');\n this.loadingStates.moreData.delete(key);\n }\n \n this.loaderTimeouts.delete(loaderId);\n this.checkAndHideLoader();\n }, this.LOADER_TIMEOUT);\n\n this.loaderTimeouts.set(loaderId, timeoutId);\n }\n\n private clearLoaderTimeout(loaderId: string): void {\n if (this.loaderTimeouts.has(loaderId)) {\n clearTimeout(this.loaderTimeouts.get(loaderId));\n this.loaderTimeouts.delete(loaderId);\n }\n }\n\n private checkAndHideLoader(): void {\n const isMainDataLoading = this.loadingStates.mainData;\n const isFilterDataLoading = this.loadingStates.filterData;\n const moreDataPending = this.loadingStates.moreData.size;\n \n if (!isMainDataLoading) {\n this.loaderService.hideLoader(this.MAIN_DATA_LOADER_ID);\n this.clearLoaderTimeout(this.MAIN_DATA_LOADER_ID);\n }\n\n if (!isFilterDataLoading) {\n this.loaderService.hideLoader(this.FILTER_LOADER_ID);\n this.clearLoaderTimeout(this.FILTER_LOADER_ID);\n }\n\n if (!isMainDataLoading && !isFilterDataLoading && moreDataPending === 0) {\n this.loaderTimeouts.forEach((timeoutId, loaderId) => {\n clearTimeout(timeoutId);\n this.loaderService.hideLoader(loaderId);\n });\n this.loaderTimeouts.clear();\n }\n }\n\n toggleInlineEditMode(): void {\n this.inlineEditService.toggleInlineEditMode();\n }\n\n toggleRowEditMode(rowId: number): void {\n this.inlineEditService.toggleRowEditMode(rowId);\n }\n\n isRowInEditMode(rowId: number): boolean {\n return this.inlineEditService.isRowInEditMode(rowId);\n }\n\n isCellProcessing(row: T, column: ColumnConfig<T>): boolean {\n return this.inlineEditService.isCellProcessing(row, column);\n }\n\n setCellProcessing(row: T, column: ColumnConfig<T>, isProcessing: boolean): void {\n this.inlineEditService.setCellProcessing(row, column, isProcessing);\n }\n\n isColumnEditable(column: ColumnConfig<T>, row?: T): boolean {\n return this.inlineEditService.isColumnEditable(column, row);\n }\n\n getCellKey(row: T, column: ColumnConfig<T>): string {\n return this.inlineEditService.getCellKey(row, column);\n }\n\n getEditingValue(row: T, column: ColumnConfig<T>): any {\n return this.inlineEditService.getEditingValue(row, column);\n }\n\n onCellValueChange(row: T, column: ColumnConfig<T>, value: any): void {\n this.inlineEditService.onCellValueChange(row, column, value);\n }\n\n getCellErrors(row: T, column: ColumnConfig<T>): string[] {\n return this.inlineEditService.getCellErrors(row, column);\n }\n\n getInlineEditableConfig(column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n return this.inlineEditService.getInlineEditableConfig(column);\n }\n\n getInlineEditableConfigWithState(row: T, column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n return this.inlineEditService.getInlineEditableConfigWithState(row, column);\n }\n\n onCellBlur(row: T, column: ColumnConfig<T>): void {\n this.inlineEditService.onCellBlur(row, column);\n }\n\n onCellEnter(row: T, column: ColumnConfig<T>): void {\n this.inlineEditService.onCellEnter(row, column);\n }\n\n updateRowData(\n rowId: string | number, \n updatedFields: { [key: string]: any },\n updateFunction?: (row: T) => T\n ): void {\n this.tableDataService.updateRowData(rowId, updatedFields, updateFunction);\n }\n}","@if (showActiveFilters()) {\n <core-active-filters\n [activeFilters]=\"currentActiveFilters()\"\n [config]=\"activeFiltersConfig()\"\n (onFilterRemove)=\"onActiveFilterRemove($event)\"\n (onClearAll)=\"onActiveFiltersClear()\">\n </core-active-filters>\n}\n\n<div class=\"c-table\" [class.in-modal]=\"inModal()\" [class.inline-edit-mode]=\"inlineEditService.isInlineEditMode()\">\n <table>\n <thead>\n <tr>\n @if (showSelection()) {\n <!-- Todo: Tabla con row selection -->\n <th class=\"select-column\">\n <input type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"masterToggle()\" />\n </th>\n }\n @for (column of columns(); track $index) {\n <th [ngClass]=\"column.align ? 'u-align-' + column.align : ''\">\n @if (column.sortable !== false) {\n <!-- ✅ Solcre: Agregado [title] dinámico y capacidad de volver al estado sin selección -->\n <button class=\"c-table-order\" tabindex=\"-1\"\n [class.is-asc]=\"currentSortColumn() === column.key && currentSortDirection() === 'asc'\"\n [class.is-desc]=\"currentSortColumn() === column.key && currentSortDirection() === 'desc'\"\n [title]=\"getSortTitle(column) | translate\" (click)=\"sortData(column)\">\n {{ column.label | translate }}\n <span class=\"c-table-order__controls\">\n <span class=\"c-table-order__arrow--desc icon-arrow-up\"></span>\n <span class=\"c-table-order__arrow--asc icon-arrow-down\"></span>\n </span>\n </button>\n <!-- <button \n class=\"c-table__order\" \n [class.is-asc]=\"currentSortColumn() === column.key && currentSortDirection() === 'asc'\" \n [class.is-desc]=\"currentSortColumn() === column.key && currentSortDirection() === 'desc'\"\n (click)=\"sortData(column)\">\n {{ column.label | translate }}\n <span class=\"icon-order-arrow\"></span>\n </button> -->\n } @else {\n {{ column.label | translate }}\n }\n </th>\n }\n @if (showActions() && (actions().length > 0 || customActions().length > 0)) {\n <th class=\"u-align-right\">{{ 'table.actions' | translate }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of displayedData(); track row.getId()) {\n <tr [ngClass]=\"getRowClasses(row)\" \n [class.is-editing-inline]=\"isRowInEditMode(row.getId())\"\n [class.is-disabled]=\"isRowDisabled(row)\">\n @if (showSelection()) {\n <!-- Todo: Tabla con row selection -->\n <td class=\"select-column\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"toggleRow(row)\" />\n </td>\n }\n @for (column of columns(); track $index) {\n <td [attr.data-label]=\"column.label | translate\" \n [ngClass]=\"[\n column.align ? 'u-align-' + column.align : '',\n getCellDisabledClasses(row, column)\n ]\" \n [class.is-editing]=\"isColumnEditable(column, row)\"\n [class.is-column-disabled]=\"isColumnDisabledForRow(row, column)\">\n @if (column.template) {\n <!-- Todo: Ver qué es esto -->\n <ng-container *ngTemplateOutlet=\"column.template; context: { $implicit: row, column: column }\"></ng-container>\n } @else if (isColumnEditable(column, row)) {\n <!-- !Solcre: Modo de edición en línea usando DynamicField -->\n <div class=\"c-table__inline-edit\">\n <strong class=\"c-table__mobile-heading\">{{ column.label | translate }}:</strong>\n <div\n coreDynamicField\n [field]=\"getInlineEditableConfigWithState(row, column)!\"\n [value]=\"getEditingValue(row, column)\"\n [mode]=\"ModalMode.EDIT\"\n [errors]=\"getCellErrors(row, column)\"\n [rowData]=\"row\"\n (valueChange)=\"onCellValueChange(row, column, $event)\"\n (onBlurEvent)=\"onCellBlur(row, column)\"\n (onEnterEvent)=\"onCellEnter(row, column)\"\n ></div>\n </div>\n } @else {\n <div class=\"c-table__content\">\n <strong class=\"c-table__mobile-heading\">{{ column.label | translate }}:</strong> {{ getFormattedValue(row,\n column) }}\n </div>\n }\n </td>\n }\n\n <!-- Actions-->\n\n @if (showActions() && (actions().length > 0 || customActions().length > 0 || expansionConfig()?.enabled)) {\n\n <td class=\"u-align-right\">\n <div class=\"c-table__actions\">\n\n @for (actionConfig of regularDefaultActions(); track actionConfig.action) {\n @if (hasPermission(actionConfig)) {\n @if (actionConfig.action === TableAction.VIEW || actionConfig.action === TableAction.EDIT ||\n actionConfig.action === TableAction.DELETE) {\n <core-generic-button [config]=\"getActionButtonConfig(actionConfig.action, actionConfig)\"\n (buttonClick)=\"onButtonClick($event, actionConfig.action, row)\">\n </core-generic-button>\n }\n }\n }\n @for (customAction of getVisibleCustomActions(row, false); track customAction.label || $index) {\n @if (hasPermission(customAction)) {\n <core-generic-button [config]=\"getCustomActionButtonConfigForRow(customAction, row)\"\n (buttonClick)=\"onButtonClick($event, customAction, row)\">\n </core-generic-button>\n }\n }\n\n @if (hasExtraActionsForRow(row)) {\n <core-generic-button [config]=\"getMoreActionsButtonConfig(row.getId())\" [data]=\"row\"\n (buttonClick)=\"onMoreActionsClick($event, row.getId())\" #dropdownTrigger>\n </core-generic-button>\n <core-dropdown [rowId]=\"row.getId()\" [extraDefaultActions]=\"extraDefaultActions()\"\n [extraCustomActions]=\"getVisibleCustomActions(row, true)\" [row]=\"row\"\n [triggerElementId]=\"'dropdown-trigger-' + row.getId()\"\n (actionTriggered)=\"triggerAction($event.action, $event.row)\"\n (customActionTriggered)=\"triggerCustomAction($event.action, $event.row)\" #dropdown>\n </core-dropdown>\n }\n\n @if (expansionConfig()?.enabled) {\n <!-- ✅ Solcre: Celda dedicada para expansión en su posición correcta -->\n <core-generic-button [config]=\"getExpandButtonConfig(row)\" (buttonClick)=\"onExpandButtonClick($event, row)\">\n </core-generic-button>\n }\n\n </div> <!-- .c-table__actions -->\n </td> <!-- td parent of .c-table__actions -->\n } <!-- @if (showActions() -->\n\n\n </tr>\n @if (expansionConfig()?.enabled && isRowExpanded(row)) {\n <!-- Todo: Ver que es esto -->\n <tr class=\"expansion-row\" [ngClass]=\"getRowClasses(row)\">\n <td [attr.colspan]=\"displayedColumns().length\" class=\"expansion-content\">\n <ng-container *ngTemplateOutlet=\"expansionConfig()!.template; context: { $implicit: row }\">\n </ng-container>\n </td>\n </tr>\n }\n } @empty {\n <tr>\n <!-- Todo: Estilo .no-data -->\n <td [attr.colspan]=\"displayedColumns().length\">\n <p class=\"c-placeholder\">{{ 'table.noData' | translate }}</p>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div> <!-- .c-table -->\n\n<!-- Todo: Todo lo que viene dsp de la tabla -->\n\n@if (!enablePagination()) {\n<!-- Todo: Ver qué onda esto -->\n<div #sentinel class=\"sentinel\"></div>\n}\n\n@if (enablePagination()) {\n<!-- Todo: Ver qué onda esto -->\n<core-generic-pagination [tableId]=\"tableId\"></core-generic-pagination>\n}\n\n<core-generic-modal [isOpen]=\"tableActionService.getIsModalOpen()\" [mode]=\"tableActionService.getModalMode()\"\n [data]=\"tableActionService.getModalData()\" [fields]=\"hasTabs() ? [] : tableActionService.getModalFieldsToShow()\"\n [tabs]=\"hasTabs() ? modalTabs() : []\" [title]=\"tableActionService.getModalTitle()\" [modelFactory]=\"modelFactory() || null\"\n (save)=\"onModalSave($event)\" (close)=\"tableActionService.closeModal()\" (modalData)=\"onModalData($event)\">\n</core-generic-modal>\n\n<core-filter-modal [isOpen]=\"isFilterModalOpen()\" [filters]=\"customFilters()\" [currentFilterValues]=\"currentFilterValues()\" (close)=\"closeFiltersPopup()\"\n (filterChange)=\"handleFilterChange($event)\" (globalFilterChange)=\"applyGlobalFilter($event)\"\n (clearFilters)=\"handleClearFilters()\">\n</core-filter-modal>","import { Component, input, computed, TemplateRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertType } from '../../enums/global/AlertType.enum';\nimport { Alert } from '../../interfaces/global/Alert.interface';\nimport { AlertService } from '../../services/alert.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-alert',\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [CoreHostDirective],\n template: `\n <div [class]=\"alert().inBottom ? 'c-bottom-alert' : 'c-alert'\" [ngClass]=\"alertClass()\">\n <span class=\"c-bottom-alert__icon\" [ngClass]=\"alert().icon\"></span>\n <div>\n @if (alert().customTemplate) {\n <ng-container [ngTemplateOutlet]=\"alert().customTemplate!\" [ngTemplateOutletContext]=\"alert().templateContext\"></ng-container>\n } @else {\n <p>\n <ng-content></ng-content>\n </p>\n }\n </div>\n <button class=\"c-bottom-alert__close icon-cross-thin u-tap-size\" (click)=\"close()\"></button>\n </div>\n `\n})\nexport class AlertComponent {\n alert = input.required<Alert>();\n \n private alertService = inject(AlertService);\n \n alertClass = computed(() => {\n switch (this.alert().type) {\n case AlertType.ERROR:\n return 'context:error';\n case AlertType.SUCCESS:\n return 'context:success';\n case AlertType.HIGHLIGHTED:\n return 'context:highlight';\n case AlertType.WAITING:\n return 'context:waiting';\n case AlertType.DEFAULT:\n return '';\n default:\n return '';\n }\n });\n\n close() {\n this.alertService.remove(this.alert());\n }\n} ","import { Component, inject } from '@angular/core';\n\nimport { AlertComponent } from './alert.component';\nimport { AlertService } from '../../services/alert.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-alert-container',\n standalone: true,\n imports: [AlertComponent, TranslateModule],\n hostDirectives: [CoreHostDirective],\n template: `\n <div class=\"c-bottom-alert-holder\">\n @for (alert of alertService.alerts$(); track alert) {\n <core-alert [alert]=\"alert\">\n @if (!alert.customTemplate) {\n {{ alert.message | translate }}\n }\n </core-alert>\n }\n </div> \n `,\n})\nexport class AlertContainerComponent {\n protected alertService = inject(AlertService);\n} ","export enum DocumentAction {\n DOWNLOAD = 'download',\n DELETE = 'delete',\n HELP = 'help',\n UPLOAD = 'upload'\n} ","export enum DocumentDisplayMode {\n GRID = 'grid',\n LIST = 'list'\n} ","import { Component, input, output, signal, computed, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DocumentItem } from './interfaces/DocumentItem.interface';\nimport { DocumentConfig } from './interfaces/DocumentConfig.interface';\nimport { DocumentActionEvent } from './interfaces/DocumentActionEvent.interface';\nimport { DocumentDisplayMode } from './enums/DocumentDisplayMode.enum';\nimport { DocumentAction } from './enums/DocumentAction.enum';\nimport { DatePipe } from '@angular/common';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-documentation',\n standalone: true,\n imports: [CommonModule, TranslateModule, GenericButtonComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-documentation.component.html',\n styleUrl: './generic-documentation.component.scss'\n})\nexport class GenericDocumentationComponent implements OnInit, OnDestroy {\n public DocumentDisplayMode = DocumentDisplayMode;\n public DocumentAction = DocumentAction;\n\n documents = input<DocumentItem[]>([]);\n config = input<DocumentConfig>({\n displayMode: DocumentDisplayMode.GRID,\n showUploadDate: true,\n showUploadedBy: true,\n showDescription: true,\n allowDownload: true,\n allowDelete: false,\n allowHelp: false,\n customDateFormat: 'dd/MM/yyyy HH:mm',\n emptyStateMessage: 'documentation.noDocuments',\n emptyStateIcon: 'icon-file-not-found'\n });\n loading = input<boolean>(false);\n permissions = input<{\n canDownload?: boolean;\n canDelete?: boolean;\n canHelp?: boolean;\n canUpload?: boolean;\n }>({});\n\n actionTriggered = output<DocumentActionEvent>();\n uploadRequested = output<Event>();\n\n hasDocuments = computed(() => this.documents().length > 0);\n \n displayMode = computed(() => this.config().displayMode);\n \n isGridMode = computed(() => this.displayMode() === DocumentDisplayMode.GRID);\n isListMode = computed(() => this.displayMode() === DocumentDisplayMode.LIST);\n\n selectedDocuments = signal<DocumentItem[]>([]);\n\n uploadButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: 'documentation.upload',\n icon: 'icon-upload',\n customClass: 'c-empty-state__action'\n }));\n\n constructor() {}\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n }\n\n getDownloadButtonConfig(document: DocumentItem): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-download',\n ariaLabel: 'documentation.download',\n tooltip: 'documentation.download',\n customClass: '',\n disabled: !this.canPerformAction(DocumentAction.DOWNLOAD, document)\n };\n }\n\n getDeleteButtonConfig(document: DocumentItem): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-delete',\n ariaLabel: 'documentation.delete',\n tooltip: 'documentation.delete',\n context: ButtonContext.ERROR,\n customClass: '',\n disabled: !this.canPerformAction(DocumentAction.DELETE, document)\n };\n }\n\n getHelpButtonConfig(document: DocumentItem): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-help',\n ariaLabel: 'documentation.help',\n tooltip: 'documentation.help',\n customClass: '',\n disabled: !this.canPerformAction(DocumentAction.HELP, document)\n };\n }\n\n onButtonClick(action: DocumentAction, document: DocumentItem, event?: Event): void {\n this.onDocumentAction(action, document, event);\n }\n\n onDocumentAction(action: DocumentAction, document: DocumentItem, event?: Event): void {\n if (!this.canPerformAction(action, document)) {\n return;\n }\n\n const actionEvent: DocumentActionEvent = {\n action,\n document,\n event\n };\n\n this.actionTriggered.emit(actionEvent);\n }\n\n onUploadClick(event: Event): void {\n if (!this.canUpload()) {\n return;\n }\n this.uploadRequested.emit(event);\n }\n\n canPerformAction(action: DocumentAction, document: DocumentItem): boolean {\n const permissions = this.permissions();\n const config = this.config();\n\n switch (action) {\n case DocumentAction.DOWNLOAD:\n return config.allowDownload !== false && \n document.canDownload !== false &&\n (permissions.canDownload !== false);\n \n case DocumentAction.DELETE:\n return config.allowDelete === true && \n document.canDelete === true &&\n (permissions.canDelete === true);\n \n case DocumentAction.HELP:\n return config.allowHelp === true && \n document.hasHelp === true &&\n (permissions.canHelp === true);\n \n default:\n return false;\n }\n }\n\n canUpload(): boolean {\n const permissions = this.permissions();\n return permissions.canUpload === true;\n }\n\n formatDate(date: Date | string): string {\n const config = this.config();\n const dateFormat = config.customDateFormat || 'dd/MM/yyyy HH:mm';\n \n if (typeof date === 'string') {\n date = new Date(date);\n }\n \n return new DatePipe('en-US').transform(date, dateFormat) || '';\n }\n\n getFileIcon(document: DocumentItem): string {\n if (document.fileType) {\n const extension = document.fileType.toLowerCase();\n switch (extension) {\n case 'pdf':\n return 'icon-file-pdf';\n case 'doc':\n case 'docx':\n return 'icon-file-word';\n case 'xls':\n case 'xlsx':\n return 'icon-file-excel';\n case 'jpg':\n case 'jpeg':\n case 'png':\n case 'gif':\n return 'icon-file-image';\n default:\n return 'icon-file';\n }\n }\n return 'icon-file';\n }\n\n trackByDocumentId(index: number, document: DocumentItem): string | number {\n return document.id;\n }\n\n getEmptyStateIcon(): string {\n return this.config().emptyStateIcon || 'icon-file';\n }\n\n getEmptyStateMessage(): string {\n return this.config().emptyStateMessage || 'documentation.noDocuments';\n }\n}\n","<div *ngIf=\"!loading() && hasDocuments() && isGridMode()\" class=\"c-components-grid\">\n <div \n *ngFor=\"let document of documents(); trackBy: trackByDocumentId\" \n class=\"c-doc\">\n \n <div class=\"c-bulleted-text\" *ngIf=\"config().showUploadDate || config().showUploadedBy\">\n <time \n *ngIf=\"config().showUploadDate\"\n \n [attr.datetime]=\"document.uploadedDate\">\n <span [class]=\"getFileIcon(document)\"></span>\n {{ formatDate(document.uploadedDate) }}\n </time>\n <span \n *ngIf=\"config().showUploadedBy\"\n >\n {{ document.uploadedBy }}\n </span>\n </div>\n\n <div class=\"c-doc__file c-doc-file\">\n <div>\n <p class=\"c-doc__name\">{{ document.name }}</p>\n <p \n *ngIf=\"config().showDescription && document.description\"\n class=\"c-doc__description\">\n {{ document.description }}\n </p>\n </div>\n <!-- DEV: Ajustar botones -->\n <div class=\"c-doc__group-btns\">\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DOWNLOAD, document)\"\n [config]=\"getDownloadButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DOWNLOAD, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DELETE, document)\"\n [config]=\"getDeleteButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DELETE, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.HELP, document)\"\n [config]=\"getHelpButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.HELP, document, $event.originalEvent)\">\n </core-generic-button>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!loading() && hasDocuments() && isListMode()\" class=\"c-components-grid\">\n <ul class=\"c-doc-list\">\n <li \n *ngFor=\"let document of documents(); trackBy: trackByDocumentId\" \n class=\"c-doc-list__item\">\n \n <div class=\"c-doc\">\n <div class=\"c-bulleted-text\" *ngIf=\"config().showUploadDate || config().showUploadedBy\">\n <time \n *ngIf=\"config().showUploadDate\"\n [attr.datetime]=\"document.uploadedDate\">\n <span [class]=\"getFileIcon(document)\"></span>\n {{ formatDate(document.uploadedDate) }}\n </time>\n <span \n *ngIf=\"config().showUploadedBy\">\n {{ document.uploadedBy }}\n </span>\n </div>\n\n <div class=\"c-doc__file c-doc-file\">\n <div>\n <p class=\"c-doc__name\">{{ document.name }}</p>\n <p \n *ngIf=\"config().showDescription && document.description\"\n class=\"c-doc__description\">\n {{ document.description }}\n </p>\n </div>\n\n <div class=\"c-doc__group-btns\">\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DOWNLOAD, document)\"\n [config]=\"getDownloadButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DOWNLOAD, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DELETE, document)\"\n [config]=\"getDeleteButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DELETE, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.HELP, document)\"\n [config]=\"getHelpButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.HELP, document, $event.originalEvent)\">\n </core-generic-button>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n\n<!-- Loading state -->\n<div *ngIf=\"loading()\" class=\"c-empty-state\">\n <div class=\"c-empty-state__content\">\n <span class=\"c-empty-state__icon icon-loading\"></span>\n <p class=\"c-empty-state__message\">{{ 'commons.loading' | translate }}</p>\n </div>\n</div>\n\n<!-- Empty state - No documents -->\n<div *ngIf=\"!loading() && !hasDocuments()\" class=\"c-empty-state\">\n <div class=\"c-empty-state__content\">\n <span class=\"c-empty-state__icon\" [class]=\"getEmptyStateIcon()\"></span>\n <p class=\"c-empty-state__message\">{{ getEmptyStateMessage() | translate }}</p>\n \n <!-- Upload button if user can upload -->\n <core-generic-button \n *ngIf=\"canUpload()\"\n [config]=\"uploadButtonConfig()\"\n (buttonClick)=\"onUploadClick($event.originalEvent)\">\n </core-generic-button>\n </div>\n</div>\n","export enum SidebarWidth {\n DEFAULT = 'default',\n WIDE = 'wide'\n}","export enum SidebarHeight {\n DEFAULT = 'default',\n FULL = 'full'\n}","export enum FileType {\n COMPANY_INVENTORY = 'company_inventory',\n COMPANY_LEGAL = 'company_legals',\n COMPANY_AZF_PROCEDURE = 'company_azf_procedure',\n COMPANY_TELEWORK = 'company_remote_work',\n FILE_TEMPLATE = 'file_template',\n COMPANY_EMPLOYEES_BULK = 'company_employees_bulk'\n} ","export enum NumberRange {\n MIN = 'min',\n MAX = 'max'\n}","export enum LayoutBreakpoint {\n MOBILE = 'mobile',\n TABLET = 'tablet',\n DESKTOP = 'desktop'\n}","export enum SidebarVisibility {\n SHOW = 'show',\n HIDE = 'hide'\n}","export enum LayoutType {\n DEFAULT = 'default'\n}","export enum SidebarPosition {\n LEFT = 'left',\n RIGHT = 'right'\n}","export enum SidebarMobileType {\n SELECT = 'select',\n SCROLL = 'scroll',\n MODAL = 'modal'\n}\n","import { Injectable, signal, computed } from '@angular/core';\nimport { LayoutConfig, SidebarConfig } from '../../../interfaces';\nimport { LayoutType, SidebarHeight, SidebarVisibility, SidebarWidth } from '../../../enums';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n \n private layoutConfig = signal<LayoutConfig>({\n layout: LayoutType.DEFAULT,\n sidebarLeft: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n },\n sidebarRight: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n }\n });\n\n public layout = computed(() => this.layoutConfig().layout);\n public sidebarLeft = computed(() => this.layoutConfig().sidebarLeft);\n public sidebarRight = computed(() => this.layoutConfig().sidebarRight);\n\n public dataAttributes = computed(() => ({\n 'data-layout': this.layout(),\n 'data-sidebar-left': this.sidebarLeft().visibility,\n 'data-sidebar-left-w': this.sidebarLeft().width,\n 'data-sidebar-left-h': this.sidebarLeft().height,\n 'data-sidebar-right': this.sidebarRight().visibility,\n 'data-sidebar-right-w': this.sidebarRight().width,\n 'data-sidebar-right-h': this.sidebarRight().height\n }));\n\n setLayoutConfig(config: LayoutConfig): void {\n this.layoutConfig.set(config);\n }\n\n setSidebarLeft(config: SidebarConfig): void {\n this.layoutConfig.update(current => ({\n ...current,\n sidebarLeft: config\n }));\n }\n\n setSidebarRight(config: SidebarConfig): void {\n this.layoutConfig.update(current => ({\n ...current,\n sidebarRight: config\n }));\n }\n\n showLeftSidebar(width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.setSidebarLeft({\n visibility: SidebarVisibility.SHOW,\n width,\n height\n });\n }\n\n hideLeftSidebar(): void {\n this.setSidebarLeft({\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n });\n }\n\n toggleLeftSidebar(): void {\n const currentVisibility = this.sidebarLeft().visibility;\n if (currentVisibility === SidebarVisibility.SHOW) {\n this.hideLeftSidebar();\n } else {\n this.showLeftSidebar();\n }\n }\n\n showRightSidebar(width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.setSidebarRight({\n visibility: SidebarVisibility.SHOW,\n width,\n height\n });\n }\n\n hideRightSidebar(): void {\n this.setSidebarRight({\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n });\n }\n\n toggleRightSidebar(): void {\n const currentVisibility = this.sidebarRight().visibility;\n if (currentVisibility === SidebarVisibility.SHOW) {\n this.hideRightSidebar();\n } else {\n this.showRightSidebar();\n }\n }\n\n reset(): void {\n this.setLayoutConfig({\n layout: LayoutType.DEFAULT,\n sidebarLeft: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n },\n sidebarRight: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n }\n });\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { SidebarComponentConfig } from '../../../interfaces/layout/sidebar-component.interface';\nimport { SidebarWidth } from '../../../enums/layout/sidebar-width.enum';\nimport { SidebarHeight } from '../../../enums/layout/sidebar-height.enum';\nimport { SidebarVisibility } from '../../../enums/layout/layout-visibility.enum';\nimport { LayoutService } from '../../layout/services/layout.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarService {\n private layoutService = inject(LayoutService);\n\n private currentLeftConfig: SidebarComponentConfig | null = null;\n private currentRightConfig: SidebarComponentConfig | null = null;\n\n setLeftSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.currentLeftConfig = config;\n this.layoutService.showLeftSidebar(width, height);\n }\n\n hideLeftSidebar(): void {\n this.currentLeftConfig = null;\n this.layoutService.hideLeftSidebar();\n }\n\n setRightSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.currentRightConfig = config;\n this.layoutService.showRightSidebar(width, height);\n }\n\n hideRightSidebar(): void {\n this.currentRightConfig = null;\n this.layoutService.hideRightSidebar();\n }\n\n getCurrentLeftConfig(): SidebarComponentConfig | null {\n return this.currentLeftConfig;\n }\n\n getCurrentRightConfig(): SidebarComponentConfig | null {\n return this.currentRightConfig;\n }\n} ","import { Injectable, signal, TemplateRef } from '@angular/core';\nimport { SidebarComponentConfig } from '../../../interfaces/layout/sidebar-component.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarMobileModalService {\n private isModalOpen = signal(false);\n private modalConfig = signal<SidebarComponentConfig | null>(null);\n \n public isOpen(): boolean {\n return this.isModalOpen();\n }\n \n openModal(config: SidebarComponentConfig): void {\n this.modalConfig.set(config);\n this.isModalOpen.set(true);\n }\n \n closeModal(): void {\n this.isModalOpen.set(false);\n this.modalConfig.set(null);\n }\n \n getModalState() {\n return {\n isOpen: this.isModalOpen.asReadonly(),\n config: this.modalConfig.asReadonly()\n };\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\n\nexport interface SidebarTemplateContext {\n config: any;\n position: string;\n onItemClick: (item: any) => void;\n onSubItemClick: (subItem: any) => void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarTemplateRegistryService {\n private templates = new Map<string, TemplateRef<SidebarTemplateContext>>();\n\n registerTemplate(key: string, template: TemplateRef<SidebarTemplateContext>): void {\n this.templates.set(key, template);\n }\n\n getTemplate(key: string): TemplateRef<SidebarTemplateContext> | null {\n return this.templates.get(key) || null;\n }\n\n unregisterTemplate(key: string): void {\n this.templates.delete(key);\n }\n\n hasTemplate(key: string): boolean {\n return this.templates.has(key);\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.templates.keys());\n }\n} ","import { Component, input, output, inject, TemplateRef, computed, OnInit, signal, effect, HostListener, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponentConfig } from '../../interfaces/layout/sidebar-component.interface';\nimport { SidebarItem } from '../../interfaces/layout/sidebar-item.interface';\nimport { SidebarSubItem } from '../../interfaces/layout/sidebar-sub-item.interface';\nimport { SidebarService } from './services/sidebar.service';\nimport { SidebarPosition } from '../../enums/layout/sidebar-position.enum';\nimport { SidebarMobileType } from '../../enums/layout/sidebar-mobile-type.enum';\nimport { SidebarMobileModalService } from './services/sidebar-mobile-modal.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SidebarTemplateRegistryService } from './services/sidebar-template-registry.service';\nimport { AlertService } from '../../services/alert.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\nimport { ModalButtonConfig } from '../../interfaces';\n\n@Component({\n selector: 'core-generic-sidebar',\n standalone: true,\n imports: [CommonModule, TranslateModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-sidebar.component.html',\n styleUrl: './generic-sidebar.component.scss'\n})\nexport class GenericSidebarComponent implements OnInit {\n private sidebarService = inject(SidebarService);\n private templateRegistry = inject(SidebarTemplateRegistryService);\n private alertService = inject(AlertService);\n private mobileModalService = inject(SidebarMobileModalService);\n \n config = input<SidebarComponentConfig | null>(null);\n position = input<SidebarPosition>(SidebarPosition.LEFT);\n customTemplate = input<TemplateRef<any> | null>(null);\n \n itemClicked = output<SidebarItem>();\n subItemClicked = output<SidebarSubItem>();\n\n sidebarContentTemplate = viewChild.required<TemplateRef<any>>('sidebarContentTemplate');\n\n SidebarMobileType = SidebarMobileType;\n\n private screenWidth = signal(typeof window !== 'undefined' ? window.innerWidth : 1024);\n\n public get modalService() {\n return this.mobileModalService;\n }\n\n public getFilteredItems() {\n const currentConfig = this.getConfig();\n return currentConfig?.items || [];\n }\n\n isMobileView = computed(() => {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n const maxBreakpoint = responsiveConfig?.maxMobileBreakpoint ?? 980;\n const minBreakpoint = responsiveConfig?.minMobileBreakpoint ?? 0;\n \n return this.screenWidth() <= maxBreakpoint && this.screenWidth() >= minBreakpoint;\n });\n\n getMobileType = computed(() => {\n const config = this.getConfig();\n return config?.responsiveConfig?.mobileType ?? SidebarMobileType.SELECT;\n });\n\n getMaxScrollItems = computed(() => {\n const config = this.getConfig();\n return config?.responsiveConfig?.maxScrollItems ?? 10;\n });\n\n getScrollableItems = computed(() => {\n const items = this.getConfig()?.items || [];\n const maxItems = this.getMaxScrollItems();\n return this.getMobileType() === SidebarMobileType.SCROLL ? items.slice(0, maxItems) : items;\n });\n\n modalState = this.mobileModalService.getModalState();\n\n hasValidConfiguration = computed(() => {\n const currentConfig = this.getConfig();\n if (!currentConfig) return false;\n \n const hasItems = currentConfig.items && currentConfig.items.length > 0;\n const hasCustomTemplate = !!(currentConfig.customTemplate || this.customTemplate());\n const hasTemplateKey = !!(currentConfig.templateKey && this.templateRegistry.hasTemplate(currentConfig.templateKey));\n \n return hasItems || hasCustomTemplate || hasTemplateKey;\n });\n\n shouldUseCustomTemplate = computed(() => {\n const currentConfig = this.getConfig();\n return !!(currentConfig?.customTemplate || this.customTemplate() || \n (currentConfig?.templateKey && this.templateRegistry.hasTemplate(currentConfig.templateKey)));\n });\n\n getActiveTemplate = computed(() => {\n const currentConfig = this.getConfig();\n \n if (currentConfig?.customTemplate) {\n return currentConfig.customTemplate;\n }\n \n if (this.customTemplate()) {\n return this.customTemplate();\n }\n \n if (currentConfig?.templateKey) {\n return this.templateRegistry.getTemplate(currentConfig.templateKey);\n }\n \n return null;\n });\n\n modalButtons = computed<ModalButtonConfig<any>[]>(() => {\n const config = this.getConfig();\n const customButtons = config?.responsiveConfig?.modalButtons;\n \n if (customButtons && customButtons.length > 0) {\n return customButtons;\n }\n \n return [\n {\n text: 'modal.cancel',\n action: () => this.mobileModalService.closeModal(),\n },\n ];\n });\n\n ngOnInit(): void {\n if (!this.hasValidConfiguration()) {\n }\n \n this.updateScreenWidth();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.updateScreenWidth();\n }\n\n private updateScreenWidth(): void {\n if (typeof window !== 'undefined') {\n this.screenWidth.set(window.innerWidth);\n }\n }\n\n onItemClick(item: SidebarItem): void {\n if (!item.disabled && item.action) {\n item.action();\n }\n this.itemClicked.emit(item);\n }\n\n onSubItemClick(subItem: SidebarSubItem): void {\n if (!subItem.disabled && subItem.action) {\n subItem.action();\n }\n this.subItemClicked.emit(subItem);\n }\n\n getConfig(): SidebarComponentConfig | null {\n if (this.config()) {\n return this.config();\n }\n return this.position() === SidebarPosition.LEFT \n ? this.sidebarService.getCurrentLeftConfig()\n : this.sidebarService.getCurrentRightConfig();\n }\n\n getTitleDisplay(): string {\n const currentConfig = this.getConfig();\n if (!currentConfig?.title) return '';\n \n if (currentConfig.titleNeedsTranslation === false) {\n return currentConfig.title;\n }\n \n if (currentConfig.titleNeedsTranslation === true) {\n return currentConfig.title;\n }\n \n if (currentConfig.title.includes('.')) {\n return currentConfig.title;\n }\n \n return currentConfig.title;\n }\n\n shouldTranslateTitle(): boolean {\n const currentConfig = this.getConfig();\n if (!currentConfig?.title) return false;\n \n if (currentConfig.titleNeedsTranslation !== undefined) {\n return currentConfig.titleNeedsTranslation;\n }\n \n return currentConfig.title.includes('.');\n }\n\n get hasSubmenu(): boolean {\n const items = this.getConfig()?.items || [];\n return items.some(item => item.children && item.children.length > 0);\n }\n\n openMobileModal(): void {\n const config = this.getConfig();\n if (config) {\n this.mobileModalService.openModal(config);\n }\n }\n\n closeMobileModal(): void {\n this.mobileModalService.closeModal();\n }\n\n onMobileSelectChange(event: any): void {\n const selectedId = event.target.value;\n const items = this.getConfig()?.items || [];\n \n for (const item of items) {\n if (item.id === selectedId) {\n this.onItemClick(item);\n return;\n }\n if (item.children) {\n for (const subItem of item.children) {\n if (subItem.id === selectedId) {\n this.onSubItemClick(subItem);\n return;\n }\n }\n }\n }\n }\n\n shouldShowMobileVersion(): boolean {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return false;\n \n return this.isMobileView();\n }\n\n shouldShowDesktopVersion(): boolean {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n return !this.isMobileView();\n }\n\n shouldRenderSidebar(): boolean {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n if (this.isMobileView() && this.getMobileType() === SidebarMobileType.MODAL) {\n return false;\n }\n \n return true;\n }\n} ","@if(getConfig() && hasValidConfiguration() && shouldRenderSidebar()) {\n\n @if(getConfig()?.backButton) {\n <button class=\"c-back-link\" (click)=\"getConfig()?.backButton?.action()\">\n <span class=\"icon-arrow-left\"></span>\n @if(getConfig()?.backButton?.labelNeedsTranslation && getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label | translate }}\n } @else if(getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label }}\n }\n </button>\n }\n\n @if (shouldShowMobileVersion()) {\n \n @if (getMobileType() === SidebarMobileType.SELECT) {\n <div class=\"c-sidebar-mobile\">\n <label class=\"c-entry-input\">\n <select (change)=\"onMobileSelectChange($event)\">\n <option value=\"\">Seleccionar...</option>\n @for(item of getConfig()?.items || []; track item.id) {\n @if(item.children && item.children.length > 0) {\n <optgroup [label]=\"item.label\">\n @for(subItem of item.children; track subItem.id) {\n <option [disabled]=\"subItem.disabled\" [value]=\"subItem.id\">\n {{ subItem.label }}\n </option>\n }\n </optgroup>\n } @else {\n <option [disabled]=\"item.disabled\" [value]=\"item.id\">\n {{ item.label }}\n </option>\n }\n }\n </select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </label>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.SCROLL) {\n <div class=\"c-sidebar-mobile c-sidebar-mobile--scroll\">\n <nav class=\"c-sidenav c-sidenav--mobile-scroll\">\n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n <ul class=\"c-sidenav__list c-sidenav__list--scrollable\">\n @for(item of getScrollableItems(); track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.MODAL) {\n <!-- El modal se renderiza desde el componente layout usando el servicio -->\n <!-- No renderizamos nada aquí para ocultar completamente el sidebar -->\n }\n }\n\n @if (shouldShowDesktopVersion()) {\n <nav class=\"c-sidenav\" style=\"--_layout-padd-y: calc(var(--space-y) * 1.8);\">\n \n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n @if(shouldUseCustomTemplate()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n }\n} \n\n<ng-template #sidebarContentTemplate>\n <nav class=\"c-sidenav c-sidenav--modal\">\n @if(shouldUseCustomTemplate()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem); modalService.closeModal()\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item); modalService.closeModal()\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n</ng-template>","export enum TimelineStatus {\n EN_PROCESO = 'En proceso',\n PENDIENTE_APROBACION_CLIENTE = 'Pendiente aprobación cliente',\n COMPLETADO = 'Completado',\n RECHAZADO = 'Rechazado',\n CANCELADO = 'Cancelado',\n PENDIENTE = 'Esperando documentación',\n APROBADO = 'Aprobado',\n INICIADO = 'Iniciado',\n PENDIENTE_CLIENTE = 'Pendiente cliente'\n} ","export enum TimelineType {\n STANDARD = 'standard',\n CUSTOM = 'custom',\n MINIMAL = 'minimal'\n} ","import { Injectable } from '@angular/core';\nimport { TimelineItem } from '../interfaces/TimelineItem.interface';\nimport { TimelineStatus } from '../enums/TimelineStatus.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TimelineService {\n\n constructor() { }\n\n formatDate(date: string | Date, format: string = 'dd/MM/yyyy HH:mm'): string {\n if (!date) return '';\n \n const dateObj = typeof date === 'string' ? new Date(date) : date;\n \n if (isNaN(dateObj.getTime())) {\n return date.toString();\n }\n\n const day = String(dateObj.getDate()).padStart(2, '0');\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\n const year = dateObj.getFullYear();\n const hours = String(dateObj.getHours()).padStart(2, '0');\n const minutes = String(dateObj.getMinutes()).padStart(2, '0');\n\n return format\n .replace('dd', day)\n .replace('MM', month)\n .replace('yyyy', year.toString())\n .replace('HH', hours)\n .replace('mm', minutes);\n }\n\n getStatusClass(status: string): string {\n const statusClassMap: { [key: string]: string } = {\n [TimelineStatus.EN_PROCESO]: 'c-timeline__status--in-progress',\n [TimelineStatus.PENDIENTE_APROBACION_CLIENTE]: 'c-timeline__status--pending',\n [TimelineStatus.COMPLETADO]: 'c-timeline__status--completed',\n [TimelineStatus.RECHAZADO]: 'c-timeline__status--rejected',\n [TimelineStatus.CANCELADO]: 'c-timeline__status--cancelled',\n [TimelineStatus.PENDIENTE]: 'c-timeline__status--pending',\n [TimelineStatus.APROBADO]: 'c-timeline__status--approved',\n [TimelineStatus.INICIADO]: 'c-timeline__status--started',\n [TimelineStatus.PENDIENTE_CLIENTE]: 'c-timeline__status--pending-client'\n };\n\n return statusClassMap[status] || 'c-timeline__status--default';\n }\n\n validateTimelineItem(item: TimelineItem): boolean {\n return !!(item.text && item.date && item.status);\n }\n\n sortTimelineItems(items: TimelineItem[], ascending: boolean = false): TimelineItem[] {\n return [...items].sort((a, b) => {\n const dateA = new Date(a.date).getTime();\n const dateB = new Date(b.date).getTime();\n return ascending ? dateA - dateB : dateB - dateA;\n });\n }\n\n filterByStatus(items: TimelineItem[], statuses: string[]): TimelineItem[] {\n if (!statuses || statuses.length === 0) return items;\n return items.filter(item => statuses.includes(item.status));\n }\n} ","import { Component, input, output, computed, inject, TemplateRef, ContentChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TimelineItem } from './interfaces/TimelineItem.interface';\nimport { TimelineConfig } from './interfaces/TimelineConfig.interface';\nimport { TimelineStatus } from './enums/TimelineStatus.enum';\nimport { TimelineType } from './enums/TimelineType.enum';\nimport { TimelineService } from './services/timeline.service';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-timeline',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n GenericButtonComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-timeline.component.html',\n styleUrl: './generic-timeline.component.scss'\n})\nexport class GenericTimelineComponent {\n private timelineService = inject(TimelineService);\n\n @ContentChild('timelineTemplate') customTemplate!: TemplateRef<any>;\n\n items = input<TimelineItem[]>([]);\n config = input<Partial<TimelineConfig>>({});\n dateFormat = input<string>('dd/MM/yyyy HH:mm');\n showDate = input<boolean>(true);\n showStatus = input<boolean>(true);\n enableActions = input<boolean>(true);\n customClass = input<string>('');\n emptyMessage = input<string>('timeline.noItems');\n sortAscending = input<boolean>(false);\n filterStatuses = input<string[]>([]);\n type = input<TimelineType>(TimelineType.STANDARD);\n\n itemClicked = output<TimelineItem>();\n actionClicked = output<{ item: TimelineItem, action: string }>();\n \n processedItems = computed(() => {\n let processedItems = [...this.items()];\n \n if (this.filterStatuses().length > 0) {\n processedItems = this.timelineService.filterByStatus(processedItems, this.filterStatuses());\n }\n \n processedItems = this.timelineService.sortTimelineItems(processedItems, this.sortAscending());\n \n return processedItems;\n });\n\n mergedConfig = computed((): TimelineConfig => {\n const defaultConfig: TimelineConfig = {\n items: this.items(),\n dateFormat: this.dateFormat(),\n showDate: this.showDate(),\n showStatus: this.showStatus(),\n customClass: this.customClass(),\n emptyMessage: this.emptyMessage(),\n enableActions: this.enableActions()\n };\n \n return { ...defaultConfig, ...this.config() };\n });\n\n hasItems = computed(() => this.processedItems().length > 0);\n hasCustomTemplate = computed(() => !!this.customTemplate || !!this.mergedConfig().customTemplate);\n\n public TimelineStatus = TimelineStatus;\n public TimelineType = TimelineType;\n public ButtonType = ButtonType;\n public ButtonContext = ButtonContext;\n\n formatDate(date: string | Date): string {\n return this.timelineService.formatDate(date, this.mergedConfig().dateFormat || 'dd/MM/yyyy HH:mm');\n }\n\n getStatusClass(status: string): string {\n return this.timelineService.getStatusClass(status);\n }\n\n getItemClasses(item: TimelineItem): string {\n const classes = ['c-timeline__item'];\n \n if (item.isActive) {\n classes.push('is-active');\n }\n \n if (item.customClass) {\n classes.push(item.customClass);\n }\n \n return classes.join(' ');\n }\n\n getTimelineClasses(): string {\n const classes = ['c-timeline'];\n \n const customClass = this.mergedConfig().customClass;\n if (customClass) {\n classes.push(customClass);\n }\n \n if (this.type() !== TimelineType.STANDARD) {\n classes.push(`c-timeline--${this.type()}`);\n }\n \n return classes.join(' ');\n }\n\n onItemClick(item: TimelineItem): void {\n this.itemClicked.emit(item);\n }\n\n onActionClick(item: TimelineItem, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n \n if (item.actionCallback) {\n item.actionCallback();\n }\n \n this.actionClicked.emit({ item, action: item.actionText || 'action' });\n }\n\n getActionButtonConfig(item: TimelineItem): ButtonConfig {\n return {\n type: ButtonType.PRIMARY,\n text: item.actionText || 'timeline.action',\n customClass: item.actionClass || 'c-btn',\n ariaLabel: item.actionText || 'timeline.action',\n icon: item.actionIcon || ''\n };\n }\n\n isValidItem(item: TimelineItem): boolean {\n return this.timelineService.validateTimelineItem(item);\n }\n\n trackByItemId(index: number, item: TimelineItem): any {\n return item.id || index;\n }\n}\n","<div class=\"c-timeline-container\">\n @if (hasItems()) {\n <ul [class]=\"getTimelineClasses()\">\n @for (item of processedItems(); track trackByItemId($index, item)) {\n @if (isValidItem(item)) {\n <li [class]=\"getItemClasses(item)\" (click)=\"onItemClick(item)\">\n <div class=\"c-timeline__info\">\n @if (hasCustomTemplate()) {\n @if (customTemplate) {\n <ng-container *ngTemplateOutlet=\"customTemplate; context: { $implicit: item, index: $index }\"></ng-container>\n } @else if (mergedConfig().customTemplate) {\n <ng-container *ngTemplateOutlet=\"mergedConfig().customTemplate!; context: { $implicit: item, index: $index }\"></ng-container>\n }\n } @else {\n <div>\n <p class=\"u-text\">{{ item.text }}</p>\n <div class=\"c-bulleted-text\">\n @if (mergedConfig().showDate) {\n <time [attr.datetime]=\"item.date\">\n {{ formatDate(item.date) }}\n </time>\n }\n @if (mergedConfig().showStatus) {\n <span \n [ngClass]=\"getStatusClass(item.status)\">\n {{ item.status }}\n </span>\n }\n </div>\n </div>\n }\n \n @if (mergedConfig().enableActions && item.actionText && item.isActive) {\n <core-generic-button\n [config]=\"getActionButtonConfig(item)\"\n (clicked)=\"onActionClick(item, $event)\">\n </core-generic-button>\n }\n </div>\n </li>\n }\n }\n </ul>\n } @else {\n <div class=\"c-timeline-empty\">\n <p class=\"c-timeline-empty__message\">\n {{ mergedConfig().emptyMessage! | translate }}\n </p>\n </div>\n }\n</div>\n","import { Component, inject, OnInit, output, ChangeDetectorRef } from '@angular/core';\nimport { AuthService } from '@solcre-org/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { HeaderService } from '../../services/header.service';\nimport { GlobalAction } from '../generic-table/interfaces/GlobalAction.interface';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { HeaderActionConfig } from '../../interfaces/global/HeaderActionConfig.interface';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonActionEvent } from '../generic-button/interfaces/ButtonActionEvent.interface';\nimport { HeaderElementType } from '../../enums/global/HeaderElementType.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-header',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n GenericButtonComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './header.component.html',\n styleUrl: './header.component.scss'\n})\nexport class HeaderComponent implements OnInit {\n private authService: AuthService = inject(AuthService);\n private router: Router = inject(Router);\n public headerService = inject(HeaderService);\n private permissionService = inject(PermissionWrapperService);\n private cdr = inject(ChangeDetectorRef);\n\n public HeaderElementType = HeaderElementType;\n\n title: string = 'ASDSAS';\n\n user: any;\n isDarkMode: boolean = false;\n\n filterRequested = output<void>();\n createRequested = output<void>();\n globalActionTriggered = output<GlobalAction<any>>();\n\n constructor() {\n this.user = this.authService.getLoggedUser();\n }\n\n ngOnInit(): void {\n const savedTheme = localStorage.getItem('theme');\n this.isDarkMode = savedTheme === 'dark';\n this.applyTheme();\n }\n\n toggleTheme(): void {\n this.isDarkMode = !this.isDarkMode;\n this.applyTheme();\n localStorage.setItem('theme', this.isDarkMode ? 'dark' : 'light');\n }\n\n private applyTheme(): void {\n if (this.isDarkMode) {\n document.body.classList.add('dark-mode');\n } else {\n document.body.classList.remove('dark-mode');\n }\n }\n\n logout(): void {\n this.authService.logout();\n this.router.navigate(['/app/auth']);\n }\n\n getGlobalActionButtonConfig(action: GlobalAction<any>): ButtonConfig {\n const config: ButtonConfig = {\n type: this.getButtonTypeFromClass(action.class || ''),\n text: action.label,\n icon: action.icon || 'default-icon',\n disabled: this.isGlobalActionDisabled(action),\n ariaLabel: action.label,\n customClass: action.class || '',\n requiredPermission: action.requiredPermission\n };\n\n if (action.tooltip) {\n config.tooltipConfig = {\n hasTooltip: true,\n text: action.tooltip,\n position: action.tooltipPosition || 'bottom'\n };\n }\n\n return config;\n }\n\n getCustomActionButtonConfig(action: HeaderActionConfig): ButtonConfig {\n const config: ButtonConfig = {\n type: this.getButtonTypeFromClass(action.class || ''),\n text: action.label,\n icon: action.icon,\n disabled: this.isCustomActionDisabled(action),\n ariaLabel: action.label,\n customClass: action.class || '',\n requiredPermission: action.requiredPermission,\n id: action.id\n };\n\n if (action.tooltip) {\n config.tooltipConfig = {\n hasTooltip: true,\n text: action.tooltip,\n position: action.tooltipPosition || 'bottom'\n };\n }\n\n return config;\n }\n\n getFilterButtonConfig(): ButtonConfig {\n const defaultConfig: ButtonConfig = {\n type: ButtonType.ICON,\n icon: 'icon-filter',\n ariaLabel: 'table.filter',\n tooltipConfig: {\n hasTooltip: true,\n text: 'table.filter',\n position: 'bottom'\n }\n };\n\n const customConfig = this.headerService.getFilterButtonConfig()();\n \n return customConfig ? { ...defaultConfig, ...customConfig } : defaultConfig;\n }\n\n getCreateButtonConfig(): ButtonConfig {\n const defaultConfig: ButtonConfig = {\n type: ButtonType.PRIMARY,\n text: 'table.create',\n icon: 'icon-add',\n ariaLabel: 'table.create',\n tooltipConfig: {\n hasTooltip: true,\n text: 'table.create',\n position: 'bottom'\n }\n };\n\n const customConfig = this.headerService.getCreateButtonConfig()();\n \n return customConfig ? { ...defaultConfig, ...customConfig } : defaultConfig;\n }\n\n private getButtonTypeFromClass(className: string): ButtonType {\n if (className.includes('c-btn--stroke')) return ButtonType.STROKE;\n if (className.includes('c-btn--secondary')) return ButtonType.SECONDARY;\n if (className.includes('c-icon-btn--fill')) return ButtonType.ICON_FILL;\n if (className.includes('c-icon-btn')) return ButtonType.ICON;\n if (className.includes('c-link--underlined')) return ButtonType.LINK_UNDERLINED;\n if (className.includes('c-link--secondary')) return ButtonType.LINK_SECONDARY;\n if (className.includes('c-link')) return ButtonType.LINK;\n if (className.includes('c-btn')) return ButtonType.PRIMARY;\n return ButtonType.PRIMARY;\n }\n\n onGlobalButtonClick(event: ButtonActionEvent, action: GlobalAction<any>): void {\n if (this.hasPermission(action)) {\n this.triggerGlobalAction(action);\n }\n }\n\n onCustomButtonClick(event: ButtonActionEvent, action: HeaderActionConfig): void {\n if (this.isCustomActionVisible(action) && !this.isCustomActionDisabled(action)) {\n this.triggerCustomAction(action);\n }\n }\n\n onFilterButtonClick(): void {\n this.showFiltersPopup();\n }\n\n onCreateButtonClick(): void {\n this.triggerCreate();\n }\n\n hasPermission(action: GlobalAction<any>): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n isGlobalActionDisabled(action: GlobalAction<any>): boolean {\n return action.isDisabled ?? false;\n }\n\n triggerGlobalAction(action: GlobalAction<any>): void {\n this.globalActionTriggered.emit(action);\n }\n\n showFiltersPopup(): void {\n this.filterRequested.emit();\n }\n\n triggerCreate(): void {\n this.createRequested.emit();\n }\n\n hasCustomActionPermission(action: HeaderActionConfig): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n isCustomActionVisible(action: HeaderActionConfig): boolean {\n return action.visible !== false && this.hasCustomActionPermission(action);\n }\n\n isCustomActionDisabled(action: HeaderActionConfig): boolean {\n return action.disabled ?? false;\n }\n\n triggerCustomAction(action: HeaderActionConfig): void {\n if (!this.isCustomActionDisabled(action)) {\n action.callback();\n }\n }\n\n getHeaderTitle(): string {\n return this.headerService.getTitle()();\n }\n\n getHeaderText(): string {\n return this.headerService.getText()();\n }\n}","<!--\n MODELO:\n <div class=\"o-layout__header c-header\">\n <div class=\"c-header__row\">\n\n <div class=\"c-header__group\">\n\n <h2 class=\"c-header__heading u-heading\">Listado de usuarios</h2>\n <div class=\"c-header__text u-text\"></div>\n\n </div>\n\n <div class=\"c-header__group u-flex\">\n\n <button class=\"c-icon-btn\"><span class=\"icon-excel\"></span></button>\n <button class=\"c-icon-btn\"><span class=\"icon-filter\"></span></button>\n <button class=\"c-btn\"><span class=\"icon-add\"></span> Agregar</button>\n\n </div>\n\n </div>\n </div>\n-->\n\n@if (headerService.getIsVisible()()) {\n <div class=\"c-header\">\n <div class=\"c-header__row\">\n\n <div class=\"c-header__group\">\n\n <h2 class=\"c-header__heading u-heading\">{{ getHeaderTitle() }}</h2>\n\n </div>\n\n <div class=\"c-header__group u-flex\">\n\n @for (element of headerService.getOrderedElements(); track element.type) {\n @if (headerService.isElementVisible(element.type)) {\n \n @switch (element.type) {\n @case (HeaderElementType.GLOBAL_ACTIONS) {\n @for (globalAction of headerService.getGlobalActions()(); track globalAction.label || $index) {\n @if (hasPermission(globalAction)) {\n <core-generic-button \n [config]=\"getGlobalActionButtonConfig(globalAction)\"\n (buttonClick)=\"onGlobalButtonClick($event, globalAction)\">\n </core-generic-button>\n }\n }\n }\n \n @case (HeaderElementType.CUSTOM_ACTIONS) {\n @for (customAction of headerService.getCustomActions()(); track customAction.id) {\n @if (isCustomActionVisible(customAction)) {\n <core-generic-button \n [config]=\"getCustomActionButtonConfig(customAction)\"\n (buttonClick)=\"onCustomButtonClick($event, customAction)\">\n </core-generic-button>\n }\n }\n }\n \n @case (HeaderElementType.FILTER) {\n <core-generic-button \n [config]=\"getFilterButtonConfig()\"\n (buttonClick)=\"onFilterButtonClick()\">\n </core-generic-button>\n }\n \n @case (HeaderElementType.CREATE) {\n <core-generic-button \n [config]=\"getCreateButtonConfig()\"\n (buttonClick)=\"onCreateButtonClick()\">\n </core-generic-button>\n }\n }\n \n }\n }\n\n </div>\n\n </div>\n\n <p class=\"c-header__text u-text\" *ngIf=\"getHeaderText()\">\n {{ getHeaderText() }}\n </p>\n\n @if (headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) && headerService.getCustomTemplate()()) {\n <ng-container *ngTemplateOutlet=\"headerService.getCustomTemplate()()\"></ng-container>\n }\n </div>\n}","export enum PermissionsActions {\n WRITE = 'W',\n READ = 'R',\n DELETE = 'D',\n}","export enum SidebarState {\n EXPANDED = 'expanded',\n COLLAPSED = 'collapsed',\n}","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { SidebarState } from '../enums/SidebarState.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MainNavService {\n private readonly SIDEBAR_STATE = 'sidebar_state';\n private isCollapsedSubject = new BehaviorSubject<boolean>(false);\n isCollapsed$: Observable<boolean> = this.isCollapsedSubject.asObservable();\n private renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n const savedState = this.getSidebarState();\n const isCollapsed = savedState === SidebarState.COLLAPSED;\n this.isCollapsedSubject.next(isCollapsed);\n this.updateBodyClass(isCollapsed);\n if (!savedState) {\n this.setSidebarState(SidebarState.EXPANDED);\n }\n }\n\n public setSidebarState(state: string): void {\n sessionStorage.setItem(this.SIDEBAR_STATE, state);\n const isCollapsed = state === SidebarState.COLLAPSED;\n this.isCollapsedSubject.next(isCollapsed);\n this.updateBodyClass(isCollapsed);\n }\n\n public getSidebarState(): string | null {\n return sessionStorage.getItem(this.SIDEBAR_STATE);\n }\n\n public toggleSidebarState(): void {\n const currentState = this.getSidebarState();\n const newState = currentState === SidebarState.COLLAPSED ? SidebarState.EXPANDED : SidebarState.COLLAPSED;\n this.setSidebarState(newState);\n }\n\n public expandSidebar(): void {\n this.setSidebarState(SidebarState.EXPANDED);\n }\n\n public collapseSidebar(): void {\n this.setSidebarState(SidebarState.COLLAPSED);\n }\n\n public clearSidebarState(): void {\n sessionStorage.removeItem(this.SIDEBAR_STATE);\n this.isCollapsedSubject.next(false);\n this.updateBodyClass(false);\n }\n\n private updateBodyClass(isCollapsed: boolean): void {\n if (isCollapsed) {\n this.renderer.removeClass(document.body, 'nav-expanded');\n } else {\n this.renderer.addClass(document.body, 'nav-expanded');\n }\n }\n}","// Este archivo es generado automáticamente por scripts/update-version.js\n// No edites manualmente este archivo\n\nexport const VERSION = {\n full: '2.11.9',\n major: 2,\n minor: 11,\n patch: 9,\n timestamp: '2025-08-21T13:39:21.974Z',\n buildDate: '21/8/2025'\n};\n","import { Component, OnChanges, SimpleChanges, inject, OnInit, OnDestroy, input, output } from '@angular/core';\nimport { Router, RouterModule, NavigationEnd } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavItem } from './interfaces/NavItem.interface';\nimport { LogoImagesConfig } from './interfaces/LogoImagesConfig.interface';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { MainNavService } from './services/main-nav.service';\nimport { AuthService } from '@solcre-org/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { VERSION } from '../../constants/version';\nimport { BottomNavItem } from './interfaces/BottomNavItem.interface';\nimport { NavConfig } from './interfaces/NavConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-main-nav',\n standalone: true,\n imports: [CommonModule, TranslateModule, RouterModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './main-nav.component.html',\n})\nexport class MainNavComponent implements OnChanges, OnInit, OnDestroy {\n private permissionService = inject(PermissionWrapperService);\n private mainNavService: MainNavService = inject(MainNavService);\n private authService: AuthService = inject(AuthService);\n private router: Router = inject(Router);\n\n isCollapsed = false;\n isMobile = false;\n isBottomNavOpen = false;\n expandedSections: { [key: string]: boolean } = {};\n private routerSubscription: Subscription = new Subscription();\n private user = this.authService.getLoggedStartData();\n \n navConfig = input<NavConfig>({});\n appVersion = input<any>({ full: VERSION.full });\n navItems = input<NavItem[]>([])\n bottomNavItems = input<BottomNavItem[]>([]);\n isProduction = input<boolean>(false)\n logoImagesConfig = input<LogoImagesConfig | null>(null)\n collapsedLogo = input<string>('')\n expandedLogo = input<string>('')\n\n onLogout = output<void>();\n\n constructor() {}\n\n getCollapsedLogoSrc(): string {\n return this.logoImagesConfig()?.collapsedSettings.image || this.collapsedLogo() || '';\n }\n\n getExpandedLogoSrc(): string {\n return this.logoImagesConfig()?.expandedSettings.image || this.expandedLogo() || '';\n }\n\n getCollapsedLogoSettings() {\n return this.logoImagesConfig()?.collapsedSettings || {\n width: 56,\n height: 56,\n alt: 'Logo'\n };\n }\n\n getExpandedLogoSettings() {\n return this.logoImagesConfig()?.expandedSettings || {\n width: 103,\n height: 40,\n alt: 'Logo'\n };\n }\n\n ngOnInit() {\n this.checkIfMobile();\n this.setupResizeListener();\n \n this.mainNavService.isCollapsed$.subscribe(isCollapsed => {\n const wasCollapsed = this.isCollapsed;\n this.isCollapsed = isCollapsed;\n this.updateSidebarWidth();\n \n if (!isCollapsed) {\n setTimeout(() => {\n this.navItems().forEach((_, index) => {\n setTimeout(() => {\n document.querySelectorAll('.js-nav-text').forEach(text => text.classList.add('nav-expanded'));\n }, index * 100);\n });\n }, 0);\n \n if (wasCollapsed) {\n setTimeout(() => {\n this.updateExpandedSectionsBasedOnCurrentRoute(this.router.url);\n }, 300);\n }\n } else {\n document.querySelectorAll('.js-nav-text').forEach(text => text.classList.remove('nav-expanded'));\n this.expandedSections = {};\n }\n });\n\n this.routerSubscription.add(\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd)\n ).subscribe((event: NavigationEnd) => {\n this.updateExpandedSectionsBasedOnCurrentRoute(event.url);\n this.updateBottomNavActiveState(event.url);\n })\n );\n\n this.updateExpandedSectionsBasedOnCurrentRoute(this.router.url);\n this.updateBottomNavActiveState(this.router.url);\n }\n\n ngOnDestroy() {\n this.routerSubscription.unsubscribe();\n window.removeEventListener('resize', this.onResize.bind(this));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isCollapsed']) {\n this.updateSidebarWidth();\n }\n }\n\n hasPermission(item: NavItem): boolean {\n if (!item.requiredPermission) {\n return true;\n }\n\n if (item.disabled) {\n return true;\n }\n\n try {\n return this.permissionService.hasPermission(\n item.requiredPermission.resource, \n item.requiredPermission.action\n );\n } catch (error) {\n return !this.isProduction();\n }\n }\n\n onToggleSidebar(): void {\n this.mainNavService.toggleSidebarState();\n }\n\n toggleSection(label: string, level: number): void {\n const key = `${label}-${level}`;\n \n const isCurrentlyExpanded = this.expandedSections[key] || false;\n const newExpandedSections = { ...this.expandedSections };\n \n Object.keys(newExpandedSections).forEach(existingKey => {\n if (existingKey.endsWith(`-${level}`) && existingKey !== key) {\n newExpandedSections[existingKey] = false;\n }\n });\n \n newExpandedSections[key] = !isCurrentlyExpanded;\n this.expandedSections = newExpandedSections;\n }\n\n isSectionExpanded(label: string, level: number): boolean {\n const key = `${label}-${level}`;\n return this.expandedSections[key] || false;\n }\n\n private updateSidebarWidth(): void {\n document.documentElement.classList.remove('nav-expanded');\n if (!this.isCollapsed) {\n document.documentElement.classList.add('nav-expanded');\n }\n }\n\n private updateExpandedSectionsBasedOnCurrentRoute(currentUrl: string): void {\n this.findAndExpandParentMenus(this.navItems(), currentUrl, 0);\n }\n\n private findAndExpandParentMenus(items: NavItem[], currentUrl: string, level: number): boolean {\n for (const item of items) {\n if (item.children && item.children.length > 0) {\n const hasActiveChild = this.hasActiveChildRoute(item.children, currentUrl);\n \n if (hasActiveChild) {\n const key = `${item.label}-${level}`;\n this.expandedSections = {\n ...this.expandedSections,\n [key]: true\n };\n \n this.findAndExpandParentMenus(item.children, currentUrl, level + 1);\n return true;\n }\n }\n }\n return false;\n }\n\n private hasActiveChildRoute(children: NavItem[], currentUrl: string): boolean {\n const companiesMyRoute = '/app/admin/companies/my';\n if (currentUrl === companiesMyRoute) {\n const hasCompaniesChild = children.some(child => child.path === '/app/admin/companies');\n if (hasCompaniesChild) {\n return false;\n }\n }\n \n for (const child of children) {\n if (child.path) {\n const isExactMatch = currentUrl === child.path;\n const isChildRoute = currentUrl.startsWith(child.path + '/') && currentUrl !== companiesMyRoute;\n \n if (isExactMatch || isChildRoute) {\n return true;\n }\n }\n \n if (child.children && child.children.length > 0) {\n if (this.hasActiveChildRoute(child.children, currentUrl)) {\n return true;\n }\n }\n }\n return false;\n }\n\n isParentActive(item: NavItem): boolean {\n if (!item.children || item.children.length === 0) {\n return false;\n }\n return this.hasActiveChildRoute(item.children, this.router.url);\n }\n\n hasVisibleChildren(item: NavItem): boolean {\n if (!item.children || item.children.length === 0) {\n return false;\n }\n\n return item.children.some(child => this.isItemVisible(child));\n }\n\n private isItemVisible(item: NavItem): boolean {\n if (item.hidden) {\n return false;\n }\n\n if (!this.hasPermission(item)) {\n return false;\n }\n\n if (item.children && item.children.length > 0) {\n return this.hasVisibleChildren(item);\n }\n\n return true;\n }\n\n logout() {\n if(this.navConfig().customLogout) {\n this.onLogout.emit();\n return;\n }\n this.authService.logout();\n this.router.navigate(['/app/auth']);\n }\n\n toggleBottomNav(): void {\n if (!this.isMobile) return;\n \n this.isBottomNavOpen = !this.isBottomNavOpen;\n \n if (this.isBottomNavOpen) {\n document.body.classList.add('bottom-nav-open');\n document.documentElement.classList.add('nav-expanded');\n } else {\n document.body.classList.add('bottom-nav-closing');\n \n if (this.isMobile) {\n setTimeout(() => {\n document.body.classList.remove('bottom-nav-open');\n document.body.classList.remove('bottom-nav-closing');\n }, 700);\n } else {\n setTimeout(() => {\n document.documentElement.classList.remove('nav-expanded');\n document.body.classList.remove('bottom-nav-closing');\n }, 700);\n }\n }\n }\n\n onBottomNavItemClick(item: BottomNavItem): void {\n if (item.disabled) return;\n \n if (item.action) {\n item.action();\n } else if (item.routerLink) {\n this.router.navigate([item.routerLink]);\n }\n }\n\n handleBottomNavCenterClick(item: BottomNavItem): void {\n if (item.disabled) return;\n \n if (item.id === 'main-nav.menu-toggle') {\n this.toggleBottomNav();\n } else if (item.action) {\n item.action();\n } else if (item.routerLink) {\n this.router.navigate([item.routerLink]);\n }\n }\n\n getBottomNavClasses(item: BottomNavItem): string[] {\n const iconCompatPipe = new IconCompatPipe();\n const iconClasses = iconCompatPipe.transform(item.icon);\n \n const classes = ['c-bottom-nav__link', ...iconClasses];\n \n if (item.disabled) {\n classes.push('is-disabled');\n }\n \n return classes;\n }\n\n private checkIfMobile(): void {\n this.isMobile = window.innerWidth <= 980;\n }\n\n private setupResizeListener(): void {\n window.addEventListener('resize', this.onResize.bind(this));\n }\n\n private onResize(): void {\n this.checkIfMobile();\n \n if (!this.isMobile && this.isBottomNavOpen) {\n this.isBottomNavOpen = false;\n document.body.classList.remove('bottom-nav-open', 'bottom-nav-closing');\n document.documentElement.classList.remove('nav-expanded');\n }\n }\n\n private updateBottomNavActiveState(currentUrl: string): void {\n this.bottomNavItems().forEach(item => {\n if (item.routerLink) {\n item.isActive = currentUrl === item.routerLink || currentUrl.startsWith(item.routerLink + '/');\n }\n });\n }\n}","\n<!-- ! Refactor: Start -->\n<div class=\"c-nav-overlay\" (click)=\"toggleBottomNav()\"></div>\n<div class=\"o-layout__nav c-main-nav\"> <!-- [ngClass]=\"{'nav-expanded': !isCollapsed}\"> -->\n <div class=\"c-main-nav__viewport\">\n\n <!-- Toggle btn -->\n <button (click)=\"onToggleSidebar()\"\n class=\"c-main-nav__toggle c-mn-toggle\"\n [title]=\"isCollapsed ? ('Expandir navegación' | translate) : ('Colapsar navegación' | translate )\"\n aria-label=\"Expandir navegación\"\n ></button>\n\n <!-- Brand -->\n @if(navConfig().showLogo !== false) {\n <div class=\"c-main-nav__brand c-mn-brand\">\n @if(getCollapsedLogoSrc()) {\n <img class=\"c-mn-brand__iso\" \n [src]=\"getCollapsedLogoSrc()\" \n [width]=\"getCollapsedLogoSettings().width\" \n [height]=\"getCollapsedLogoSettings().height\" \n [alt]=\"getCollapsedLogoSettings().alt\">\n }\n @if(getExpandedLogoSrc()) {\n <img class=\"c-mn-brand__logo\" \n [src]=\"getExpandedLogoSrc()\" \n [width]=\"getExpandedLogoSettings().width\" \n [height]=\"getExpandedLogoSettings().height\" \n [alt]=\"getExpandedLogoSettings().alt\">\n }\n </div>\n }\n\n <!-- Nav -->\n <nav class=\"c-main-nav__nav c-mn-nav\">\n <ul class=\"c-mn-nav__list\">\n\n <ng-template #menuItems let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container *ngIf=\"hasPermission(item) && !item.hidden && (!item.children || hasVisibleChildren(item))\">\n\n <li class=\"c-mn-nav__item c-mn-nav__submenu\"\n [ngClass]=\"{'is-expanded': isSectionExpanded(item.label, level)}\"\n *ngIf=\"item.children && hasVisibleChildren(item); else singleLink\"\n >\n \n <button class=\"c-mn-nav__link\"\n [ngClass]=\"{'is-active': isParentActive(item)}\"\n (click)=\"toggleSection(item.label, level)\"\n [title]=\"isCollapsed ? (item.label | translate) : ''\">\n <span class=\"c-mn-nav__icon\" [ngClass]=\"item.icon | coreIconCompat\"></span>\n <span class=\"c-mn-nav__text\">\n {{ item.label | translate }}\n <span class=\"c-mn-nav__plus\"></span>\n </span>\n </button>\n\n <div class=\"c-mn-nav__subholder\">\n <ul class=\"c-mn-nav__sublist\">\n\n <ng-container *ngFor=\"let child of item.children; let j = index\">\n <ng-container *ngIf=\"hasPermission(child) && !child.hidden && (!child.children || hasVisibleChildren(child))\">\n\n <ng-container *ngIf=\"!child.children; else nestedChild\">\n\n <li class=\"c-mn-nav__subitem\">\n <button class=\"c-mn-nav__sublink\"\n [routerLink]=\"child.disabled ? null : child.path\" \n routerLinkActive=\"is-active\"\n [routerLinkActiveOptions]=\"{ exact: false }\" \n [title]=\"isCollapsed ? (child.label | translate) : ''\"\n [ngClass]=\"{'is-disabled': child.disabled}\"\n [style.pointer-events]=\"child.disabled ? 'none' : 'auto'\"\n [style.opacity]=\"child.disabled ? '0.5' : '1'\"\n >\n {{ child.label | translate }}\n </button>\n </li>\n </ng-container>\n\n <ng-template #nestedChild>\n \n <li class=\"c-mn-nav__subitem\"\n [ngClass]=\"{'submenu-open': isSectionExpanded(child.label, level + 1) && !isCollapsed}\"\n *ngIf=\"child.children && hasVisibleChildren(child)\"\n >\n <button class=\"c-mn-nav__sublink\"\n [ngClass]=\"{'is-active': isParentActive(child)}\"\n (click)=\"toggleSection(child.label, level + 1)\"\n [title]=\"isCollapsed ? (child.label | translate) : ''\"\n >\n {{ child.label | translate }}\n </button>\n\n <div class=\"c-mn-nav__subholder\">\n <ul class=\"c-mn-nav__sublist\">\n\n <ng-container *ngFor=\"let subItem of child.children\">\n <li class=\"c-mn-nav__subitem\"\n *ngIf=\"hasPermission(subItem) && !subItem.hidden\"\n >\n <button class=\"c-mn-nav__sublink\"\n [routerLink]=\"subItem.path\"\n routerLinkActive=\"is-active\"\n >\n {{ subItem.label | translate }}\n </button>\n </li>\n </ng-container>\n\n </ul>\n </div>\n </li>\n </ng-template>\n\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n\n <ng-template #singleLink>\n\n <li class=\"c-mn-nav__item\">\n <button class=\"c-mn-nav__link\"\n [routerLink]=\"item.disabled ? null : item.path\" \n routerLinkActive=\"is-active\"\n [routerLinkActiveOptions]=\"{ exact: false }\" \n [title]=\"isCollapsed ? (item.label | translate) : ''\" \n [ngClass]=\"{'is-disabled': item.disabled}\"\n [disabled]=\"item.disabled\"\n [style.opacity]=\"item.disabled ? '0.5' : '1'\"\n >\n <span class=\"c-mn-nav__icon\" [ngClass]=\"item.icon | coreIconCompat\"></span>\n <span class=\"c-mn-nav__text\">\n {{ item.label | translate }}\n </span>\n </button>\n </li>\n </ng-template>\n\n\n </ng-container>\n </ng-container>\n </ng-template>\n \n <ng-container *ngTemplateOutlet=\"menuItems; context: { items: navItems(), level: 0 }\"></ng-container>\n\n </ul>\n </nav> <!-- .c-mn-nav -->\n\n <!-- TODO User -->\n\n <nav class=\"c-main-nav__bottom c-mn-nav\">\n <ul class=\"c-mn-nav__list\">\n <li class=\"c-mn-nav__item\">\n <button class=\"c-mn-nav__link\"\n (click)=\"logout()\"\n [title]=\"isCollapsed ? ('sidebar.logout' | translate) : ''\"\n >\n <span class=\"c-mn-nav__icon icon-logout\"></span>\n <span class=\"c-mn-nav__text\">\n {{ 'sidebar.logout' | translate }}\n </span>\n </button>\n </li>\n @if(navConfig().showVersion !== false) {\n <li class=\"c-mn-nav__version\">\n v{{ appVersion().full }}\n </li>\n }\n </ul>\n </nav>\n\n </div> <!-- .c-main-nav__viewport -->\n</div> <!-- .c-main-nav -->\n\n<!-- ! Refactor: End -->\n\n<nav class=\"c-bottom-nav\">\n <h2 class=\"u-hidden\"></h2>\n <ul class=\"c-bottom-nav__list\">\n <ng-container *ngFor=\"let item of bottomNavItems().slice(0, 2); let i = index\">\n <li class=\"c-bottom-nav__item\"\n [ngClass]=\"{\n 'is-active': item.isActive,\n 'c-bottom-nav__item--highlighted': item.isHighlighted\n }\">\n <button type=\"button\" \n [ngClass]=\"getBottomNavClasses(item)\"\n [disabled]=\"item.disabled\"\n (click)=\"onBottomNavItemClick(item)\">\n </button>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"bottomNavItems().length > 2\">\n <li class=\"c-bottom-nav__item c-bottom-nav__item--center\"\n [ngClass]=\"{\n 'is-active': bottomNavItems()[2].isActive,\n 'c-bottom-nav__item--highlighted': bottomNavItems()[2].isHighlighted\n }\">\n <button type=\"button\" \n [ngClass]=\"getBottomNavClasses(bottomNavItems()[2])\"\n [disabled]=\"bottomNavItems()[2].disabled\"\n (click)=\"toggleBottomNav()\">\n </button>\n </li>\n </ng-container>\n\n <ng-container *ngFor=\"let item of bottomNavItems().slice(3, 5); let i = index\">\n <li class=\"c-bottom-nav__item\"\n [ngClass]=\"{\n 'is-active': item.isActive,\n 'c-bottom-nav__item--highlighted': item.isHighlighted\n }\">\n <button type=\"button\" \n [ngClass]=\"getBottomNavClasses(item)\"\n [disabled]=\"item.disabled\"\n (click)=\"onBottomNavItemClick(item)\">\n </button>\n </li>\n </ng-container>\n </ul>\n</nav>","import { Injectable, Signal, signal, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { SidebarService } from '../../generic-sidebar/services/sidebar.service';\nimport { SidebarComponentConfig } from '../../../interfaces';\nimport { SidebarHeight, SidebarWidth } from '../../../enums';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutStateService {\n public isHeaderVisible = signal<boolean>(true);\n private isHeaderVisibleSubject = new BehaviorSubject<boolean>(true);\n private sidebarService: SidebarService = inject(SidebarService);\n \n public leftSidebarConfig = signal<SidebarComponentConfig | null>(null);\n public rightSidebarConfig = signal<SidebarComponentConfig | null>(null);\n \n constructor() { }\n\n public toggleHeaderVisibility(): void {\n this.isHeaderVisible.set(!this.isHeaderVisible());\n this.isHeaderVisibleSubject.next(this.isHeaderVisible());\n }\n\n public isHeaderVisible$(): Observable<boolean> {\n this.isHeaderVisibleSubject.next(this.isHeaderVisible());\n return this.isHeaderVisibleSubject.asObservable();\n }\n\n public isHeaderVisibleSignal(): Signal<boolean> {\n return this.isHeaderVisible;\n }\n\n public hideHeader(): void {\n this.isHeaderVisible.set(false);\n this.isHeaderVisibleSubject.next(false);\n }\n\n public showHeader(): void {\n this.isHeaderVisible.set(true);\n this.isHeaderVisibleSubject.next(true);\n }\n\n public setLeftSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.leftSidebarConfig.set(config);\n this.sidebarService.setLeftSidebarConfig(config, width, height);\n }\n\n public setRightSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.rightSidebarConfig.set(config);\n this.sidebarService.setRightSidebarConfig(config, width, height);\n }\n\n public hideLeftSidebar(): void {\n this.leftSidebarConfig.set(null);\n this.sidebarService.hideLeftSidebar();\n }\n\n public hideRightSidebar(): void {\n this.rightSidebarConfig.set(null);\n this.sidebarService.hideRightSidebar();\n }\n\n public getLeftSidebarConfig(): Signal<SidebarComponentConfig | null> {\n return this.leftSidebarConfig;\n }\n\n public getRightSidebarConfig(): Signal<SidebarComponentConfig | null> {\n return this.rightSidebarConfig;\n }\n}\n","import { Component, inject, input, output, ViewChild, TemplateRef, HostListener, signal } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { MainNavComponent } from '../main-nav/main-nav.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { GenericSidebarComponent } from '../generic-sidebar/generic-sidebar.component';\nimport { GenericModalComponent } from '../generic-modal/generic-modal.component';\nimport { ConfirmationDialogService } from '../confirmation-dialog/services/confirmation-dialog.service';\nimport { MainNavService } from '../main-nav/services/main-nav.service';\nimport { LayoutService } from './services/layout.service';\nimport { NavItem } from '../main-nav/interfaces/NavItem.interface';\nimport { SidebarVisibility, SidebarWidth, SidebarHeight } from '../../enums';\nimport { LayoutStateService } from './services/layout-state.service';\nimport { GlobalAction } from '../generic-table/interfaces/GlobalAction.interface';\nimport { SidebarComponentConfig, ModalButtonConfig } from '../../interfaces';\nimport { LogoImagesConfig } from '../main-nav/interfaces/LogoImagesConfig.interface';\nimport { NavConfig } from '../main-nav/interfaces/NavConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { BottomNavItem } from '../main-nav/interfaces/BottomNavItem.interface';\nimport { SidebarMobileModalService } from '../generic-sidebar/services/sidebar-mobile-modal.service';\nimport { SidebarTemplateRegistryService } from '../generic-sidebar/services/sidebar-template-registry.service';\nimport { ModalMode } from '../../enums/global/ModalMode.enum';\nimport { SidebarMobileType } from '../../enums/layout/sidebar-mobile-type.enum';\n\n@Component({\n selector: 'core-layout', \n imports: [\n MainNavComponent, \n HeaderComponent, \n CommonModule, \n ConfirmationDialogComponent,\n GenericSidebarComponent,\n GenericModalComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './layout.html'\n})\nexport class LayoutComponent {\n navItems = input<NavItem[]>([])\n bottomNavItems = input<BottomNavItem[]>([])\n collapsedLogo = input<string>('')\n expandedLogo = input<string>('')\n logoImagesConfig = input<LogoImagesConfig | null>(null);\n navConfig = input<NavConfig>({});\n\n onLogout = output<void>();\n\n public dialogService: ConfirmationDialogService = inject(ConfirmationDialogService);\n private mainNavService: MainNavService = inject(MainNavService);\n public layoutService: LayoutService = inject(LayoutService);\n public layoutStateService: LayoutStateService = inject(LayoutStateService);\n public sidebarMobileModalService: SidebarMobileModalService = inject(SidebarMobileModalService);\n private templateRegistry: SidebarTemplateRegistryService = inject(SidebarTemplateRegistryService);\n\n public SidebarVisibility = SidebarVisibility;\n public ModalMode = ModalMode;\n public SidebarMobileType = SidebarMobileType;\n \n private screenWidth = signal(typeof window !== 'undefined' ? window.innerWidth : 1024);\n \n isSidebarCollapsed = false;\n isHeaderVisible = false;\n \n get leftSidebarConfig() {\n return this.layoutStateService.getLeftSidebarConfig()();\n }\n \n get rightSidebarConfig() {\n return this.layoutStateService.getRightSidebarConfig()();\n }\n\n ngOnInit(): void {\n this.mainNavService.isCollapsed$.subscribe(isCollapsed => {\n this.isSidebarCollapsed = isCollapsed;\n });\n this.layoutStateService.isHeaderVisible$().subscribe(isVisible => {\n this.isHeaderVisible = isVisible;\n });\n \n this.updateScreenWidth();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.updateScreenWidth();\n }\n\n private updateScreenWidth(): void {\n if (typeof window !== 'undefined') {\n this.screenWidth.set(window.innerWidth);\n }\n }\n\n private isMobileView(config?: SidebarComponentConfig): boolean {\n const responsiveConfig = config?.responsiveConfig;\n const maxBreakpoint = responsiveConfig?.maxMobileBreakpoint ?? 768;\n const minBreakpoint = responsiveConfig?.minMobileBreakpoint ?? 0;\n \n return this.screenWidth() <= maxBreakpoint && this.screenWidth() >= minBreakpoint;\n }\n\n shouldRenderLeftSidebar(): boolean {\n const config = this.leftSidebarConfig;\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n if (this.isMobileView(config) && responsiveConfig.mobileType === SidebarMobileType.MODAL) {\n return false;\n }\n \n return true;\n }\n\n shouldRenderRightSidebar(): boolean {\n const config = this.rightSidebarConfig;\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n if (this.isMobileView(config) && responsiveConfig.mobileType === SidebarMobileType.MODAL) {\n return false;\n }\n \n return true;\n }\n\n getEffectiveLeftSidebarVisibility(): SidebarVisibility {\n if (!this.shouldRenderLeftSidebar()) {\n return SidebarVisibility.HIDE;\n }\n return this.layoutService.sidebarLeft().visibility;\n }\n\n getEffectiveLeftSidebarWidth(): SidebarWidth {\n if (!this.shouldRenderLeftSidebar()) {\n return SidebarWidth.DEFAULT;\n }\n return this.layoutService.sidebarLeft().width;\n }\n\n getEffectiveLeftSidebarHeight(): SidebarHeight {\n if (!this.shouldRenderLeftSidebar()) {\n return SidebarHeight.DEFAULT;\n }\n return this.layoutService.sidebarLeft().height;\n }\n\n getEffectiveRightSidebarVisibility(): SidebarVisibility {\n if (!this.shouldRenderRightSidebar()) {\n return SidebarVisibility.HIDE;\n }\n return this.layoutService.sidebarRight().visibility;\n }\n\n getEffectiveRightSidebarWidth(): SidebarWidth {\n if (!this.shouldRenderRightSidebar()) {\n return SidebarWidth.DEFAULT;\n }\n return this.layoutService.sidebarRight().width;\n }\n\n getEffectiveRightSidebarHeight(): SidebarHeight {\n if (!this.shouldRenderRightSidebar()) {\n return SidebarHeight.DEFAULT;\n }\n return this.layoutService.sidebarRight().height;\n }\n\n toggleSidebar(): void {\n this.mainNavService.toggleSidebarState();\n }\n\n onFilterRequested(): void {\n const event = new CustomEvent('filterRequested');\n window.dispatchEvent(event);\n }\n\n onCreateRequested(): void {\n const event = new CustomEvent('createRequested');\n window.dispatchEvent(event);\n }\n\n onGlobalActionTriggered(action: GlobalAction<any>): void {\n const event = new CustomEvent('globalActionTriggered', { detail: action });\n window.dispatchEvent(event);\n }\n\n setLeftSidebarConfig(config: SidebarComponentConfig): void {\n this.layoutStateService.setLeftSidebarConfig(config);\n }\n\n setRightSidebarConfig(config: SidebarComponentConfig): void {\n this.layoutStateService.setRightSidebarConfig(config);\n }\n\n hideLeftSidebar(): void {\n this.layoutStateService.hideLeftSidebar();\n }\n\n hideRightSidebar(): void {\n this.layoutStateService.hideRightSidebar();\n }\n\n getSidebarModalTitle(): string {\n const modalState = this.sidebarMobileModalService.getModalState();\n const config = modalState.config();\n \n if (!config) return '';\n \n if (config.title) {\n return config.title;\n }\n \n if (config.templateKey) {\n return config.title || 'Sidebar';\n }\n \n return 'Menu';\n }\n\n getSidebarModalButtons(): ModalButtonConfig<any>[] {\n return [\n {\n text: 'modal.cancel',\n action: () => this.sidebarMobileModalService.closeModal(),\n },\n ];\n }\n\n get sidebarModalContentTemplate(): TemplateRef<any> | null {\n const modalState = this.sidebarMobileModalService.getModalState();\n const config = modalState.config();\n \n if (!config) return null;\n \n if (config.customTemplate) {\n return config.customTemplate;\n }\n \n if (config.templateKey) {\n return this.templateRegistry.getTemplate(config.templateKey);\n }\n \n return null;\n }\n\n logout() {\n this.onLogout.emit();\n }\n }\n","<div class=\"o-layout\" \n [attr.data-layout]=\"layoutService.dataAttributes()['data-layout']\"\n [attr.data-sidebar-left]=\"getEffectiveLeftSidebarVisibility()\"\n [attr.data-sidebar-left-w]=\"getEffectiveLeftSidebarWidth()\"\n [attr.data-sidebar-left-h]=\"getEffectiveLeftSidebarHeight()\"\n [attr.data-sidebar-right]=\"getEffectiveRightSidebarVisibility()\"\n [attr.data-sidebar-right-w]=\"getEffectiveRightSidebarWidth()\"\n [attr.data-sidebar-right-h]=\"getEffectiveRightSidebarHeight()\"\n >\n\n <!-- Nav -->\n <core-main-nav class=\"o-layout__nav\" \n (toggleSidebar)=\"toggleSidebar()\"\n [navItems]=\"navItems()\"\n [navConfig]=\"navConfig()\"\n [bottomNavItems]=\"bottomNavItems()\"\n [logoImagesConfig]=\"logoImagesConfig()\"\n [collapsedLogo]=\"collapsedLogo()\"\n [expandedLogo]=\"expandedLogo()\"\n (onLogout)=\"logout()\"\n >\n </core-main-nav>\n\n <!-- Main -->\n <div class=\"o-layout__body\">\n \n @if(layoutStateService.isHeaderVisible$() | async) {\n <core-header\n class=\"o-layout__header\"\n (filterRequested)=\"onFilterRequested()\"\n (createRequested)=\"onCreateRequested()\"\n (globalActionTriggered)=\"onGlobalActionTriggered($event)\">\n </core-header>\n }\n\n @if(layoutService.sidebarLeft().visibility === SidebarVisibility.SHOW && leftSidebarConfig && shouldRenderLeftSidebar()) {\n <core-generic-sidebar \n class=\"o-layout__sidebar--left\"\n [config]=\"leftSidebarConfig\">\n </core-generic-sidebar>\n }\n\n <ng-content></ng-content>\n\n @if(layoutService.sidebarRight().visibility === SidebarVisibility.SHOW && rightSidebarConfig && shouldRenderRightSidebar()) {\n <core-generic-sidebar \n class=\"o-layout__sidebar--right\"\n [config]=\"rightSidebarConfig\">\n </core-generic-sidebar>\n }\n\n\n @if(dialogService.isOpen$()) {\n <core-confirmation-dialog\n [isOpen]=\"dialogService.isOpen$()\"\n [config]=\"dialogService.config$()\"\n (confirm)=\"dialogService.confirm($event)\"\n (cancel)=\"dialogService.cancel()\"\n ></core-confirmation-dialog>\n }\n\n @if(sidebarMobileModalService.isOpen()) {\n <core-generic-modal\n [isOpen]=\"sidebarMobileModalService.isOpen()\"\n [mode]=\"ModalMode.CREATE\"\n [title]=\"getSidebarModalTitle()\"\n [customTemplate]=\"sidebarModalContentTemplate\"\n (close)=\"sidebarMobileModalService.closeModal()\"\n [buttonConfig]=\"getSidebarModalButtons()\">\n </core-generic-modal>\n }\n\n </div> <!-- .o-layout__body -->\n</div> <!-- .o-layout -->\n\n<!-- ! Refactor: End -->","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { LayoutAuthConfig } from './layout-auth-config.interface';\n\n@Component({\n selector: 'core-layout-auth',\n imports: [\n CommonModule\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './layout-auth.html',\n})\nexport class LayoutAuth {\n config = input.required<LayoutAuthConfig>();\n}\n","<div class=\"c-login\">\n @if (config().patternUrl) {\n <picture class=\"c-login__bg\">\n <img [src]=\"config().patternUrl!\" alt=\"Background pattern\" width=\"1044\" height=\"889\" />\n </picture>\n }\n\n @if (config().mainLogoUrl) {\n <picture class=\"c-login__logo\">\n <img [src]=\"config().mainLogoUrl!\" alt=\"Main logo\">\n </picture>\n }\n \n <div class=\"c-login__main c-entry-group\">\n <ng-content></ng-content>\n </div>\n</div>","export enum StepStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n COMPLETE = 'complete'\n} ","export enum StepType {\n NUMBER = 'number',\n TEXT = 'text',\n ICON = 'icon'\n} ","export enum StepSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n} ","import { Component, input, output, signal, OnInit, inject, computed, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n// Enums\nimport { StepStatus } from './enums/StepStatus.enum';\nimport { StepType } from './enums/StepType.enum';\nimport { StepSize } from './enums/StepSize.enum';\n\n// Interfaces\nimport { StepsConfig } from './interfaces/StepsConfig.interface';\nimport { StepConfig } from './interfaces/StepConfig.interface';\nimport { StepClickEvent } from './interfaces/StepClickEvent.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-generic-steps',\n standalone: true,\n imports: [CommonModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-steps.component.html'\n})\nexport class GenericStepsComponent implements OnInit, OnChanges {\n \n // Inputs\n config = input.required<StepsConfig>();\n \n // Outputs\n stepClick = output<StepClickEvent>();\n stepChange = output<{ step: StepConfig; index: number }>();\n \n // Signals\n activeStepId = signal<string>('');\n steps = signal<StepConfig[]>([]);\n customColors = signal<{ [key: string]: string }>({});\n \n // Computed\n activeStep = computed(() => {\n const activeId = this.activeStepId();\n return this.steps().find(step => step.id === activeId);\n });\n \n activeStepIndex = computed(() => {\n const activeId = this.activeStepId();\n return this.steps().findIndex(step => step.id === activeId);\n });\n \n // Enums for template\n StepStatus = StepStatus;\n StepType = StepType;\n StepSize = StepSize;\n \n ngOnInit(): void {\n this.initializeSteps();\n this.setupCustomColors();\n }\n \n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config']) {\n this.initializeSteps();\n this.setupCustomColors();\n }\n }\n \n private initializeSteps(): void {\n const config = this.config();\n this.steps.set(config.steps || []);\n \n if (config.activeStepId) {\n this.activeStepId.set(config.activeStepId);\n } else if (this.steps().length > 0) {\n const activeStep = this.steps().find(step => step.status === StepStatus.ACTIVE) || this.steps()[0];\n this.activeStepId.set(activeStep.id);\n }\n }\n \n private setupCustomColors(): void {\n const config = this.config();\n const colors: { [key: string]: string } = {};\n \n if (config.colors) {\n if (config.colors.pending) {\n colors['--step-pending-color'] = config.colors.pending;\n colors['--step-pending-bg'] = this.lightenColor(config.colors.pending, 0.9);\n colors['--step-pending-border'] = this.lightenColor(config.colors.pending, 0.8);\n }\n if (config.colors.active) {\n colors['--step-active-color'] = config.colors.active;\n colors['--step-active-bg'] = this.lightenColor(config.colors.active, 0.9);\n }\n if (config.colors.complete) {\n colors['--step-complete-color'] = config.colors.complete;\n colors['--step-complete-bg'] = this.lightenColor(config.colors.complete, 0.9);\n }\n if (config.colors.connector) {\n colors['--step-connector-color'] = config.colors.connector;\n }\n }\n \n this.customColors.set(colors);\n }\n \n private lightenColor(color: string, amount: number): string {\n return color;\n }\n \n onStepClick(step: StepConfig, index: number, event: MouseEvent): void {\n if (step.disabled || !this.config().clickable) {\n return;\n }\n \n const clickEvent: StepClickEvent = {\n step,\n stepIndex: index,\n event\n };\n \n this.stepClick.emit(clickEvent);\n \n if (this.config().clickable) {\n this.activeStepId.set(step.id);\n this.stepChange.emit({ step, index });\n }\n }\n \n getStepClasses(step: StepConfig): string {\n const classes = ['c-steps__item'];\n \n if (!step.disabled) {\n classes.push('is-active');\n }\n \n if (step.status === StepStatus.COMPLETE) {\n classes.push('is-complete');\n }\n if (step.id === this.activeStepId()) {\n classes.push('is-active-step');\n }\n if (step.status === StepStatus.PENDING) {\n classes.push('is-pending');\n }\n if (step.disabled) {\n classes.push('is-disabled');\n }\n \n const size = this.config().size || StepSize.MEDIUM;\n classes.push(`c-steps__item--${size}`);\n console.log(`Step ${step.id} size class: c-steps__item--${size}`);\n \n if (step.customClass) {\n classes.push(step.customClass);\n }\n \n return classes.join(' ');\n }\n \n getStepContent(step: StepConfig): string {\n if (step.status === StepStatus.COMPLETE && !step.icon) {\n return 'icon-check';\n }\n switch (step.type) {\n case StepType.NUMBER:\n return step.content?.toString() || '';\n case StepType.TEXT:\n return step.content?.toString() || '';\n case StepType.ICON:\n return step.icon || step.content?.toString() || 'icon-check';\n default:\n return step.content?.toString() || '';\n }\n }\n \n isStepClickable(step: StepConfig): boolean {\n return !step.disabled && (step.clickable !== false) && this.config().clickable !== false;\n }\n \n getConnectorClasses(index: number): string {\n const classes = ['c-steps__connector'];\n const currentStep = this.steps()[index];\n const nextStep = this.steps()[index + 1];\n \n if (currentStep?.status === StepStatus.COMPLETE) {\n classes.push('is-complete');\n } else if (currentStep?.status === StepStatus.ACTIVE || currentStep?.id === this.activeStepId()) {\n classes.push('is-active');\n }\n \n return classes.join(' ');\n }\n \n setActiveStep(stepId: string): void {\n const step = this.steps().find(s => s.id === stepId);\n if (step) {\n this.activeStepId.set(stepId);\n this.stepChange.emit({ step, index: this.steps().findIndex(s => s.id === stepId) });\n }\n }\n \n nextStep(): void {\n const currentIndex = this.activeStepIndex();\n if (currentIndex < this.steps().length - 1) {\n const updatedSteps = [...this.steps()];\n updatedSteps[currentIndex] = { ...updatedSteps[currentIndex], status: StepStatus.COMPLETE };\n const nextStep = updatedSteps[currentIndex + 1];\n updatedSteps[currentIndex + 1] = { ...nextStep, status: StepStatus.ACTIVE };\n this.steps.set(updatedSteps);\n this.setActiveStep(nextStep.id);\n }\n }\n \n previousStep(): void {\n const currentIndex = this.activeStepIndex();\n if (currentIndex > 0) {\n const prevStep = this.steps()[currentIndex - 1];\n this.setActiveStep(prevStep.id);\n }\n }\n \n completeStep(stepId: string): void {\n const stepIndex = this.steps().findIndex(s => s.id === stepId);\n if (stepIndex !== -1) {\n const updatedSteps = [...this.steps()];\n updatedSteps[stepIndex] = { ...updatedSteps[stepIndex], status: StepStatus.COMPLETE };\n this.steps.set(updatedSteps);\n }\n }\n \n getStepProgress(): number {\n const completedSteps = this.steps().filter(step => step.status === StepStatus.COMPLETE).length;\n return (completedSteps / this.steps().length) * 100;\n }\n \n getCustomStyles(): string {\n const colors = this.customColors();\n return Object.entries(colors)\n .map(([key, value]) => `${key}: ${value}`)\n .join('; ');\n }\n}","<nav class=\"c-steps-container\" [class]=\"config().customClass\" [style]=\"getCustomStyles()\">\n <ol class=\"c-steps\" [class]=\"'c-steps--' + (config().layout || 'horizontal') + ' c-steps--' + (config().size || StepSize.MEDIUM)\">\n @for (step of steps(); track step.id; let i = $index) {\n <li class=\"c-steps__step\">\n <button \n type=\"button\"\n class=\"c-steps__item\"\n [class]=\"getStepClasses(step)\"\n [disabled]=\"step.disabled\"\n [title]=\"step.tooltip || step.title\"\n (click)=\"onStepClick(step, i, $event)\"\n [attr.data-step-id]=\"step.id\">\n \n <span class=\"c-steps__num\" [class]=\"'c-steps__num--' + step.type\" [style]=\"step.id === activeStepId() ? '--step-border: var(--step-active-border); font-weight: 800' : ''\">\n @if (step.type === StepType.ICON || step.status === StepStatus.COMPLETE) {\n <i [ngClass]=\"getStepContent(step) | coreIconCompat\"></i>\n } @else {\n <strong *ngIf=\"step.id === activeStepId()\">{{ getStepContent(step) }}</strong>\n <span *ngIf=\"step.id !== activeStepId()\">{{ getStepContent(step) }}</span>\n }\n </span>\n \n @if (config().showLabels !== false) {\n <span class=\"c-steps__text\">{{ step.title }}</span>\n }\n </button>\n \n @if (config().showConnectors !== false && i < steps().length - 1) {\n <div class=\"c-steps__connector\" [class]=\"getConnectorClasses(i)\"></div>\n }\n </li>\n }\n </ol>\n</nav>\n\n@if (activeStep()) {\n <div class=\"c-steps__content\" [attr.data-active-step]=\"activeStepId()\">\n <ng-content></ng-content>\n </div>\n}","export enum RatingSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n} ","export enum RatingType {\n STARS = 'stars',\n NUMBERS = 'numbers',\n CUSTOM = 'custom'\n} ","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from '@solcre-org/core'; \n\n@Injectable({\n providedIn: 'root'\n})\nexport class RatingService {\n private apiService = inject(ApiService);\n\n /**\n * Submit a rating to the specified endpoint\n * @param endpoint - The API endpoint to submit the rating to\n * @param ratingData - The rating data to submit\n * @returns Observable with the API response\n */\n submitRating(endpoint: string, ratingData: {\n rating: number;\n label: string;\n }): Observable<any> {\n return this.apiService.createObj(endpoint, ratingData, false);\n }\n\n} ","import { Component, input, output, signal, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { RatingSize } from '../../enums/global/RatingSize.enum';\nimport { RatingType } from '../../enums/global/RatingType.enum';\n\nimport { RatingConfig } from '../../interfaces/global/RatingConfig.interface';\nimport { RatingStar } from '../../interfaces/global/RatingStar.interface';\nimport { RatingSubmitEvent } from '../../interfaces/global/RatingSubmitEvent.interface';\n\nimport { RatingService } from '../../services/rating.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-rating',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-rating.component.html'\n})\nexport class GenericRatingComponent implements OnInit {\n\n private ratingService = inject(RatingService);\n config = input.required<RatingConfig>();\n ratingChange = output<RatingSubmitEvent>();\n selectedRating = signal<number>(0);\n hoveredRating = signal<number>(0);\n stars = signal<RatingStar[]>([]);\n loading = signal<boolean>(false);\n uniqueId = signal<string>('');\n RatingSize = RatingSize;\n RatingType = RatingType;\n\n ngOnInit(): void {\n this.initializeStars();\n this.generateUniqueId();\n this.initializeDefaultRating();\n \n setTimeout(() => {\n this.updateStarVisuals(this.selectedRating());\n }, 0);\n }\n\n private generateUniqueId(): void {\n const timestamp = Date.now();\n const random1 = Math.floor(Math.random() * 10000);\n const random2 = Math.floor(Math.random() * 10000);\n const performanceTime = performance.now();\n const instanceId = Math.random().toString(36).substring(2, 15);\n \n this.uniqueId.set(`rating-${timestamp}-${random1}-${random2}-${performanceTime.toString().replace('.', '')}-${instanceId}`);\n }\n\n private initializeDefaultRating(): void {\n const config = this.config();\n if (config.defaultRating && config.defaultRating > 0 && config.defaultRating <= config.totalStars) {\n this.selectedRating.set(config.defaultRating);\n }\n }\n\n getUniqueName(): string {\n return `star-${this.uniqueId()}`;\n }\n\n getUniqueStarId(starValue: number): string {\n return `star-${this.uniqueId()}-${starValue}`;\n }\n\n private initializeStars(): void {\n const config = this.config();\n const totalStars = config.totalStars || 5;\n const starsArray: RatingStar[] = [];\n\n for (let i = totalStars; i >= 1; i--) {\n starsArray.push({\n value: i,\n label: config.starLabels?.[i] || `${i}`,\n id: `star-${i}` \n });\n }\n\n this.stars.set(starsArray);\n }\n\n onStarClick(rating: number): void {\n const config = this.config();\n if (config.readonly) {\n return;\n }\n\n this.selectedRating.set(rating);\n \n this.updateStarVisuals(rating);\n \n const event: RatingSubmitEvent = {\n rating,\n label: this.stars().find(star => star.value === rating)?.label || '',\n endpoint: config.endpoint\n };\n\n this.ratingChange.emit(event);\n\n if (config.endpoint && config.endpoint.trim() !== '') {\n this.submitRating(event);\n }\n }\n\n onStarHover(rating: number): void {\n const config = this.config();\n if (config.readonly) {\n return;\n }\n \n this.hoveredRating.set(rating);\n this.updateStarVisuals(rating);\n }\n\n onStarLeave(): void {\n const config = this.config();\n if (config.readonly) {\n return;\n }\n \n this.hoveredRating.set(0);\n this.updateStarVisuals(this.selectedRating());\n }\n\n private updateStarVisuals(targetRating: number): void {\n const container = document.querySelector(`[data-rating-id=\"${this.uniqueId()}\"]`);\n if (!container) return;\n\n const stars = container.querySelectorAll('.c-rating__filled-star');\n stars.forEach((star, index) => {\n const starValue = this.stars().length - index; \n const element = star as HTMLElement;\n \n if (starValue <= targetRating) {\n element.style.opacity = '1';\n element.style.display = 'block';\n } else {\n element.style.opacity = '0';\n element.style.display = 'none';\n }\n });\n }\n\n private submitRating(event: RatingSubmitEvent): void {\n this.loading.set(true);\n \n this.ratingService.submitRating(event.endpoint!, {\n rating: event.rating,\n label: event.label\n }).subscribe({\n next: (response: any) => {\n this.loading.set(false);\n },\n error: (error: any) => {\n console.error('Error submitting rating:', error);\n this.loading.set(false);\n }\n });\n }\n\n getCurrentLabel(): string {\n const config = this.config();\n \n const currentRating = config.readonly \n ? this.selectedRating() \n : (this.hoveredRating() || this.selectedRating());\n \n if (currentRating === 0) {\n return config.defaultLabel || '';\n }\n\n const star = this.stars().find(s => s.value === currentRating);\n return star?.label || '';\n }\n} ","@if (config().title) {\n <p class=\"u-text\"><strong>{{ config().title }}</strong></p>\n}\n\n<div class=\"c-rating\" [attr.data-rating-id]=\"uniqueId()\">\n \n <div class=\"c-rating__stars\">\n @for (star of stars(); track star.id) {\n <input \n type=\"radio\" \n [name]=\"getUniqueName()\" \n [id]=\"getUniqueStarId(star.value)\" \n [value]=\"star.value\"\n [disabled]=\"config().readonly || loading()\"\n (click)=\"onStarClick(star.value)\" />\n \n <label \n [for]=\"getUniqueStarId(star.value)\" \n [title]=\"star.label + ' estrellas'\"\n class=\"icon-star\"\n [class.c-rating__readonly]=\"config().readonly\"\n [style.cursor]=\"config().readonly ? 'default' : 'pointer'\"\n (mouseenter)=\"!config().readonly && onStarHover(star.value)\"\n (mouseleave)=\"!config().readonly && onStarLeave()\">\n <span class=\"c-rating__filled-star icon-star-filled\"></span>\n </label>\n }\n </div>\n \n @if (config().showLabels !== false) {\n <span class=\"c-rating__text\">{{ getCurrentLabel() }}</span>\n }\n</div> ","export enum ProgressBarSize {\n NORMAL = '',\n SMALL = 'xs',\n LARGE = 'xl',\n}","import { Component, input } from '@angular/core';\nimport { ProgressBarSize } from './progress-bar-size.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-progress-bar',\n standalone: true,\n imports: [],\n hostDirectives: [CoreHostDirective],\n templateUrl: './progress-bar.component.html'\n})\nexport class ProgressBarComponent{\n progress = input<number>(0);\n size = input<ProgressBarSize>(ProgressBarSize.NORMAL);\n}\n","<div class=\"c-progress-bar c-progress-bar--{{ size() }}\" style=\"--progress: 0.{{ progress() }}\">\n <div class=\"c-progress-bar__bar\"></div>\n</div>","import { Component } from '@angular/core';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-card',\n standalone: true,\n imports: [],\n hostDirectives: [CoreHostDirective],\n template: `\n <div class=\"u-card\">\n <ng-content></ng-content>\n </div>`\n})\nexport class CardComponent{ }\n","import { Component, input, output, signal, effect, HostListener, ElementRef, ViewChild, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({ \n selector: 'core-image-modal',\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './image-modal.component.html',\n styleUrls: ['./image-modal.component.scss']\n})\nexport class ImageModalComponent implements OnDestroy {\n @ViewChild('modalImage', { static: false }) modalImage!: ElementRef<HTMLImageElement>;\n @ViewChild('imageContainer', { static: false }) imageContainer!: ElementRef<HTMLDivElement>;\n\n isVisible = input<boolean>(false);\n imageSrc = input<string>('');\n imageAlt = input<string>('Imagen Ampliada');\n\n modalClosed = output<void>();\n\n zoomLevel = signal<number>(1);\n isDragging = signal<boolean>(false);\n lastMouseX = signal<number>(0);\n lastMouseY = signal<number>(0);\n translateX = signal<number>(0);\n translateY = signal<number>(0);\n\n private minZoom = 1;\n private maxZoom = 3;\n private zoomStep = 0.2;\n\n private targetTranslateX = 0;\n private targetTranslateY = 0;\n private velocityX = 0;\n private velocityY = 0;\n private friction = 0.9;\n private animationId: number | null = null;\n\n constructor() {\n effect(() => {\n if (this.isVisible()) {\n document.body.style.overflow = 'hidden';\n this.resetZoom();\n } else {\n document.body.style.overflow = '';\n this.resetZoom();\n this.stopAnimation();\n }\n });\n }\n\n private startAnimation(): void {\n if (this.animationId) return;\n \n const animate = () => {\n if (!this.isDragging()) {\n const currentX = this.translateX();\n const currentY = this.translateY();\n \n const newX = currentX + this.velocityX;\n const newY = currentY + this.velocityY;\n \n this.translateX.set(newX);\n this.translateY.set(newY);\n \n this.velocityX *= this.friction;\n this.velocityY *= this.friction;\n \n if (Math.abs(this.velocityX) < 0.1 && Math.abs(this.velocityY) < 0.1) {\n this.velocityX = 0;\n this.velocityY = 0;\n this.animationId = null;\n return;\n }\n \n this.animationId = requestAnimationFrame(animate);\n } else {\n this.animationId = null;\n }\n };\n \n this.animationId = requestAnimationFrame(animate);\n }\n\n private stopAnimation(): void {\n if (this.animationId) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n this.velocityX = 0;\n this.velocityY = 0;\n }\n\n resetZoom(): void {\n this.zoomLevel.set(1);\n this.translateX.set(0);\n this.translateY.set(0);\n this.isDragging.set(false);\n this.velocityX = 0;\n this.velocityY = 0;\n this.stopAnimation();\n }\n\n closeModal(): void {\n this.resetZoom();\n this.modalClosed.emit();\n }\n\n onWheel(event: WheelEvent): void {\n if (!this.isVisible()) return;\n \n event.preventDefault();\n event.stopPropagation();\n \n const delta = event.deltaY > 0 ? -this.zoomStep : this.zoomStep;\n const newZoom = Math.min(Math.max(this.zoomLevel() + delta, this.minZoom), this.maxZoom);\n \n if (newZoom !== this.zoomLevel()) {\n this.zoomLevel.set(newZoom);\n \n if (newZoom === 1) {\n this.translateX.set(0);\n this.translateY.set(0);\n this.velocityX = 0;\n this.velocityY = 0;\n }\n }\n }\n\n onMouseDown(event: MouseEvent): void {\n if (!this.isVisible() || this.zoomLevel() <= 1) return;\n \n event.preventDefault();\n this.isDragging.set(true);\n this.lastMouseX.set(event.clientX);\n this.lastMouseY.set(event.clientY);\n \n this.velocityX = 0;\n this.velocityY = 0;\n }\n\n onMouseMove(event: MouseEvent): void {\n if (!this.isDragging() || !this.isVisible()) return;\n \n event.preventDefault();\n \n const deltaX = event.clientX - this.lastMouseX();\n const deltaY = event.clientY - this.lastMouseY();\n \n const newX = this.translateX() + deltaX;\n const newY = this.translateY() + deltaY;\n \n this.translateX.set(newX);\n this.translateY.set(newY);\n \n this.velocityX = deltaX * 0.5;\n this.velocityY = deltaY * 0.5;\n \n this.lastMouseX.set(event.clientX);\n this.lastMouseY.set(event.clientY);\n }\n\n onMouseUp(): void {\n if (this.isDragging()) {\n this.isDragging.set(false);\n if (Math.abs(this.velocityX) > 1 || Math.abs(this.velocityY) > 1) {\n this.startAnimation();\n }\n }\n }\n\n onDoubleClick(): void {\n if (!this.isVisible()) return;\n \n if (this.zoomLevel() > 1) {\n this.resetZoom();\n } else {\n this.zoomLevel.set(2);\n this.translateX.set(0);\n this.translateY.set(0);\n this.velocityX = 0;\n this.velocityY = 0;\n this.stopAnimation();\n }\n }\n\n getHolderTransform(): string {\n return `scale(${this.zoomLevel()}) translate(${this.translateX()}px, ${this.translateY()}px)`;\n }\n\n getCursor(): string {\n if (this.zoomLevel() > 1) {\n return this.isDragging() ? 'grabbing' : 'grab';\n }\n return 'zoom-in';\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isVisible()) {\n this.closeModal();\n }\n }\n\n @HostListener('document:mousemove', ['$event'])\n onDocumentMouseMove(event: MouseEvent): void {\n this.onMouseMove(event);\n }\n\n @HostListener('document:mouseup')\n onDocumentMouseUp(): void {\n this.onMouseUp();\n }\n\n onTouchStart(event: TouchEvent): void {\n if (!this.isVisible() || this.zoomLevel() <= 1) return;\n \n event.preventDefault();\n const touch = event.touches[0];\n this.isDragging.set(true);\n this.lastMouseX.set(touch.clientX);\n this.lastMouseY.set(touch.clientY);\n \n this.velocityX = 0;\n this.velocityY = 0;\n }\n\n onTouchMove(event: TouchEvent): void {\n if (!this.isDragging() || !this.isVisible()) return;\n \n event.preventDefault();\n const touch = event.touches[0];\n \n const deltaX = touch.clientX - this.lastMouseX();\n const deltaY = touch.clientY - this.lastMouseY();\n \n const newX = this.translateX() + deltaX;\n const newY = this.translateY() + deltaY;\n \n this.translateX.set(newX);\n this.translateY.set(newY);\n \n this.velocityX = deltaX * 0.5;\n this.velocityY = deltaY * 0.5;\n \n this.lastMouseX.set(touch.clientX);\n this.lastMouseY.set(touch.clientY);\n }\n\n onTouchEnd(): void {\n if (this.isDragging()) {\n this.isDragging.set(false);\n if (Math.abs(this.velocityX) > 1 || Math.abs(this.velocityY) > 1) {\n this.startAnimation();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.stopAnimation();\n document.body.style.overflow = '';\n }\n}\n","<div class=\"c-img-modal js-img-modal\" [class.is-visible]=\"isVisible()\">\n <span class=\"c-img-modal__close icon-cross-thin js-gallery-modal-close\" (click)=\"closeModal()\"></span>\n <div class=\"c-img-modal__overlay js-img-modal-close\" (click)=\"closeModal()\"></div>\n <div \n class=\"c-img-modal__holder\" \n #imageContainer\n [style.transform]=\"getHolderTransform()\"\n [style.cursor]=\"getCursor()\"\n (mousedown)=\"onMouseDown($event)\"\n (wheel)=\"onWheel($event)\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd()\"\n (dblclick)=\"onDoubleClick()\">\n <img \n #modalImage\n [src]=\"imageSrc()\" \n [alt]=\"imageAlt()\" \n class=\"js-img-modal-img\"\n draggable=\"false\">\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CacheBustingInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.url.includes('/assets/i18n/') && req.url.endsWith('.json')) {\n const version = Date.now();\n const modifiedReq = req.clone({\n url: `${req.url}?v=${version}`,\n setHeaders: {\n 'Cache-Control': 'no-cache',\n 'Pragma': 'no-cache',\n 'If-Modified-Since': '0',\n },\n });\n return next.handle(modifiedReq);\n }\n return next.handle(req);\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class PermissionsInterceptor implements HttpInterceptor {\n private router = inject(Router);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 403 || error.status === 401) {\n if (error.status === 403) {\n this.router.navigate(['/app/home']);\n }\n \n if (error.status === 401) {\n this.router.navigate(['/app/auth']);\n }\n }\n\n return throwError(() => error);\n })\n );\n }\n}\n","import { ModalFieldConfig } from '../global/ModalFieldConfig.interface';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FileType } from '../../enums/global/FileType.enum';\n\nexport interface FileFieldConfig<T extends DataBaseModelInterface> extends ModalFieldConfig<T> {\n accept?: string;\n multiple?: boolean;\n maxFiles?: number;\n minFiles?: number;\n maxSize?: number;\n showPreview?: boolean;\n acceptString: string;\n fileUploadConfig?: {\n fileType?: FileType;\n fileTypeResolver?: (data: T) => FileType;\n companyIdSource?: keyof T;\n staticCompanyId?: string;\n fileIdTarget?: keyof T;\n };\n customActions?: {\n id: string;\n label: string;\n icon: string;\n action: (value: any) => void;\n }[];\n};","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TranslationMergeService {\n\n constructor(private http: HttpClient) {}\n\n loadCombinedTranslations(\n lang: string,\n projectPath: string = './assets/i18n/',\n projectFileName: string = 'main.json',\n corePath: string = './assets/i18n/',\n coreFileName: string = 'common.json',\n useNodeModules: boolean = false\n ): Observable<any> {\n \n const projectUrl = `${projectPath}${lang}/${projectFileName}`;\n \n const projectTranslations$ = this.http.get(projectUrl).pipe(\n catchError(error => {\n console.warn(`No se pudieron cargar las traducciones del proyecto desde: ${projectUrl}`, error);\n return of({});\n })\n );\n\n const coreTranslations$ = useNodeModules \n ? this.loadCoreTranslationsWithFallback(lang, coreFileName)\n : this.http.get(`${corePath}${lang}/${coreFileName}`).pipe(\n catchError(error => {\n console.warn(`No se pudieron cargar las traducciones del core-ui desde: ${corePath}${lang}/${coreFileName}`, error);\n return of({});\n })\n );\n\n return forkJoin({\n project: projectTranslations$,\n core: coreTranslations$\n }).pipe(\n map(({ project, core }) => {\n const merged = this.mergeWithProjectPriority(core, project);\n return merged;\n })\n );\n }\n\n private loadCoreTranslationsWithFallback(lang: string, coreFileName: string): Observable<any> {\n const possiblePaths = [\n `./assets/i18n/${lang}/${coreFileName}`,\n `./node_modules/@solcre-org/core-ui/assets/i18n/${lang}/${coreFileName}`,\n `./i18n/${lang}/${coreFileName}`,\n ];\n\n return this.tryLoadFromPaths(possiblePaths, 0);\n }\n\n private tryLoadFromPaths(paths: string[], index: number): Observable<any> {\n if (index >= paths.length) {\n console.warn('No se pudieron cargar las traducciones del core-ui desde ninguna ruta');\n return of({});\n }\n\n const currentPath = paths[index];\n return this.http.get(currentPath).pipe(\n catchError(error => {\n console.warn(`Fallo al cargar desde: ${currentPath}`, error);\n return this.tryLoadFromPaths(paths, index + 1);\n })\n );\n }\n\n private mergeWithProjectPriority(coreTranslations: any, projectTranslations: any): any {\n const result = { ...coreTranslations };\n\n for (const key in projectTranslations) {\n if (projectTranslations.hasOwnProperty(key)) {\n if (\n projectTranslations[key] && \n typeof projectTranslations[key] === 'object' && \n !Array.isArray(projectTranslations[key]) &&\n result[key] &&\n typeof result[key] === 'object' &&\n !Array.isArray(result[key])\n ) {\n result[key] = this.mergeWithProjectPriority(result[key], projectTranslations[key]);\n } else {\n result[key] = projectTranslations[key];\n }\n }\n }\n\n return result;\n }\n}\n","import { TranslateLoader } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TranslationMergeService } from '../services/translation-merge.service';\nimport { inject } from '@angular/core';\n\nexport class CoreUiTranslateLoader implements TranslateLoader {\n private translationMergeService: TranslationMergeService;\n private http: HttpClient;\n\n constructor(\n private projectPath: string = './assets/i18n/',\n private projectFileName: string = 'main.json',\n private corePath: string = './assets/i18n/',\n private coreFileName: string = 'common.json',\n private useNodeModules: boolean = false\n ) {\n this.translationMergeService = inject(TranslationMergeService);\n this.http = inject(HttpClient);\n }\n\n getTranslation(lang: string): Observable<any> {\n return this.translationMergeService.loadCombinedTranslations(\n lang,\n this.projectPath,\n this.projectFileName,\n this.corePath,\n this.coreFileName,\n this.useNodeModules\n );\n }\n}\nexport function CoreUiHttpLoaderFactory(\n projectPath: string = './assets/i18n/',\n projectFileName: string = 'main.json',\n corePath: string = './assets/i18n/',\n coreFileName: string = 'common.json',\n useNodeModules: boolean = false\n) {\n return new CoreUiTranslateLoader(projectPath, projectFileName, corePath, coreFileName, useNodeModules);\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function equalToValidator(targetKey: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.parent) {\n return null;\n }\n const target = control.parent.get(targetKey);\n if (!target) {\n return null;\n }\n if (target.value !== control.value) {\n return { equalTo: true };\n }\n return null;\n };\n}","import { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { importProvidersFrom } from '@angular/core';\nimport { CoreUiHttpLoaderFactory } from '../loaders/core-ui-translate.loader';\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, './assets/i18n/', '/main.json');\n}\n\nexport function provideTranslateLoader() {\n return importProvidersFrom(\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n })\n );\n}\n\nexport function provideCoreUiTranslateLoader(config?: {\n projectPath?: string;\n projectFileName?: string;\n corePath?: string;\n coreFileName?: string;\n useNodeModules?: boolean;\n}) {\n return importProvidersFrom(\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: () => CoreUiHttpLoaderFactory(\n config?.projectPath || './assets/i18n/',\n config?.projectFileName || 'main.json',\n config?.corePath || './assets/i18n/',\n config?.coreFileName || 'common.json',\n config?.useNodeModules || false\n )\n }\n })\n );\n}","import { InjectionToken } from '@angular/core';\nimport { PermissionResourcesProvider, PermissionActionsProvider } from '../interfaces/global/PermissionEnums.interface';\n\nexport const PERMISSION_RESOURCES_PROVIDER = new InjectionToken<PermissionResourcesProvider>('PERMISSION_RESOURCES_PROVIDER');\nexport const PERMISSION_ACTIONS_PROVIDER = new InjectionToken<PermissionActionsProvider>('PERMISSION_ACTIONS_PROVIDER');\n","import { Provider } from '@angular/core';\nimport { PERMISSION_PROVIDER } from './permission.provider';\nimport { PERMISSION_RESOURCES_PROVIDER, PERMISSION_ACTIONS_PROVIDER } from './permission-enums.provider';\nimport { PermissionProvider } from '../interfaces/global/PermissionProvider.interface';\nimport { PermissionResourcesProvider, PermissionActionsProvider } from '../interfaces/global/PermissionEnums.interface';\n\nexport function providePermissionService(permissionService: any): Provider {\n return {\n provide: PERMISSION_PROVIDER,\n useExisting: permissionService\n };\n}\n\nexport function providePermissionServiceFactory(factory: () => PermissionProvider): Provider {\n return {\n provide: PERMISSION_PROVIDER,\n useFactory: factory\n };\n}\n\nexport function providePermissionResources(resources: PermissionResourcesProvider): Provider {\n return {\n provide: PERMISSION_RESOURCES_PROVIDER,\n useValue: resources\n };\n}\n\nexport function providePermissionActions(actions: PermissionActionsProvider): Provider {\n return {\n provide: PERMISSION_ACTIONS_PROVIDER,\n useValue: actions\n };\n}\n\nexport function providePermissionEnums(config: {\n resources?: PermissionResourcesProvider;\n actions?: PermissionActionsProvider;\n}): Provider[] {\n const providers: Provider[] = [];\n \n if (config.resources) {\n providers.push(providePermissionResources(config.resources));\n }\n \n if (config.actions) {\n providers.push(providePermissionActions(config.actions));\n }\n \n return providers;\n}\n","import { Injectable } from '@angular/core';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiConfigurationProvider {\n private configSubject = new BehaviorSubject<ApiConfig | null>(null);\n\n setConfig(config: ApiConfig): void {\n this.configSubject.next(config);\n }\n\n getConfig(): ApiConfig | null {\n const config = this.configSubject.value;\n return config;\n }\n\n hasConfig(): boolean {\n return this.configSubject.value !== null;\n }\n\n hasCustomHeaders(): boolean {\n const config = this.configSubject.value;\n if (!config) return false;\n \n return !!(\n config.customGetHeader ||\n config.customPostHeader ||\n config.customPutHeader ||\n config.customPatchHeader ||\n config.customDeleteHeader\n );\n }\n\n get config$() {\n return this.configSubject.asObservable();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CoreUiTranslateService {\n private translateService = inject(TranslateService);\n\n initialize(defaultLang: string = 'es', currentLang?: string) {\n this.translateService.setDefaultLang(defaultLang);\n this.translateService.use(currentLang || defaultLang);\n }\n\n changeLanguage(lang: string): Observable<any> {\n return this.translateService.use(lang);\n }\n\n instant(key: string, params?: any): string {\n return this.translateService.instant(key, params);\n }\n\n get(key: string, params?: any): Observable<string> {\n return this.translateService.get(key, params);\n }\n\n getMany(keys: string[], params?: any): Observable<any> {\n return this.translateService.get(keys, params);\n }\n\n getCurrentLang(): string {\n return this.translateService.currentLang;\n }\n\n getDefaultLang(): string {\n return this.translateService.getDefaultLang();\n }\n\n getTranslateService(): TranslateService {\n return this.translateService;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { PERMISSION_RESOURCES_PROVIDER, PERMISSION_ACTIONS_PROVIDER } from '../providers/permission-enums.provider';\nimport { PermissionsResources } from '../components/main-nav/enums/PermissionsResources.enum';\nimport { PermissionsActions } from '../components/main-nav/enums/PermissionsActions.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionEnumsService {\n private externalResources = inject(PERMISSION_RESOURCES_PROVIDER, { optional: true });\n private externalActions = inject(PERMISSION_ACTIONS_PROVIDER, { optional: true });\n\n getResources(): { [key: string]: string } {\n return this.externalResources || PermissionsResources;\n }\n\n getActions(): { [key: string]: string } {\n return this.externalActions || PermissionsActions;\n }\n\n getResourceValue(key: string): string | undefined {\n const resources = this.getResources();\n return resources[key];\n }\n\n getActionValue(key: string): string | undefined {\n const actions = this.getActions();\n return actions[key];\n }\n}\n","/*\n * Public API Surface of core-ui-library\n */\n\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/enums';\nexport * from './lib/interceptors';\nexport * from './lib/interfaces';\nexport * from './lib/loaders';\nexport * from './lib/validators';\nexport * from './lib/providers';\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/utilities';\nexport * from './lib/constants/version';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CoreHostDirective","i2","i3","i4","tap","i1.PaginationService","i2.TableDataService","i3.CoreHostDirective","i5","i2.DropdownService","catchError","map","i1"],"mappings":"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"}
1
+ {"version":3,"file":"solcre-org-core-ui.mjs","sources":["../../../projects/core-ui-library/src/lib/directives/core-host.directive.ts","../../../projects/core-ui-library/src/lib/components/fields/field-errors/field-errors.component.ts","../../../projects/core-ui-library/src/lib/components/active-filters/active-filters.component.ts","../../../projects/core-ui-library/src/lib/components/active-filters/active-filters.component.html","../../../projects/core-ui-library/src/lib/enums/global/ModalMode.enum.ts","../../../projects/core-ui-library/src/lib/components/fields/types/base/base-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/checkbox-field/checkbox-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/checkbox-field/checkbox-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/date-field/date-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/date-field/date-field.component.html","../../../projects/core-ui-library/src/lib/enums/global/TimeInterval.enum.ts","../../../projects/core-ui-library/src/lib/components/fields/types/datetime-field/datetime-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/datetime-field/datetime-field.component.html","../../../projects/core-ui-library/src/lib/pipelines/icon-compat.pipeline.ts","../../../projects/core-ui-library/src/lib/components/fields/types/file-field/file-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/file-field/file-field.component.html","../../../projects/core-ui-library/src/lib/interfaces/field-configs/number-field-config.interface.ts","../../../projects/core-ui-library/src/lib/components/fields/types/number-field/number-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/number-field/number-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/password-field/password-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/password-field/password-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/select-field/select-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/select-field/select-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/server-select-field/services/server-select.service.ts","../../../projects/core-ui-library/src/lib/components/loader/services/loader.service.ts","../../../projects/core-ui-library/src/lib/components/fields/types/server-select-field/server-select-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/server-select-field/server-select-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/switch-field/switch-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/switch-field/switch-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/text-area-field/text-area-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/text-area-field/text-area-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/text-field/text-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/text-field/text-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/time-field/time-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/time-field/time-field.component.html","../../../projects/core-ui-library/src/lib/directives/DynamicField.directive.ts","../../../projects/core-ui-library/src/lib/interfaces/field-configs/multi-entry-field.config.interface.ts","../../../projects/core-ui-library/src/lib/components/fields/types/multi-entry-field/multi-entry-field.component.ts","../../../projects/core-ui-library/src/lib/components/fields/types/multi-entry-field/multi-entry-field.component.html","../../../projects/core-ui-library/src/lib/components/fields/types/smart-field/smart-field.component.ts","../../../projects/core-ui-library/src/lib/components/loader/loader.component.ts","../../../projects/core-ui-library/src/lib/components/loader/loader.component.html","../../../projects/core-ui-library/src/lib/components/data-list-item/data-list-item.component.ts","../../../projects/core-ui-library/src/lib/components/data-list-item/data-list-item.component.html","../../../projects/core-ui-library/src/lib/components/data-list/data-list.component.ts","../../../projects/core-ui-library/src/lib/components/data-list/data-list.component.html","../../../projects/core-ui-library/src/lib/components/generic-button/enums/ButtonContext.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-button/enums/ButtonSize.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-button/enums/ButtonType.enum.ts","../../../projects/core-ui-library/src/lib/providers/permission.provider.ts","../../../projects/core-ui-library/src/lib/services/permission.service.ts","../../../projects/core-ui-library/src/lib/components/main-nav/enums/PermissionsResources.enum.ts","../../../projects/core-ui-library/src/lib/services/permission-wrapper.service.ts","../../../projects/core-ui-library/src/lib/components/generic-button/generic-button.component.ts","../../../projects/core-ui-library/src/lib/components/generic-button/generic-button.component.html","../../../projects/core-ui-library/src/lib/enums/global/FieldType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-tabs/generic-tabs.component.ts","../../../projects/core-ui-library/src/lib/components/generic-tabs/generic-tabs.component.html","../../../projects/core-ui-library/src/lib/components/generic-modal/generic-modal.component.ts","../../../projects/core-ui-library/src/lib/components/generic-modal/generic-modal.component.html","../../../projects/core-ui-library/src/lib/components/generic-pagination/services/pagination.service.ts","../../../projects/core-ui-library/src/lib/enums/global/AlertType.enum.ts","../../../projects/core-ui-library/src/lib/services/alert.service.ts","../../../projects/core-ui-library/src/lib/models/security/permission.model.ts","../../../projects/core-ui-library/src/lib/models/users/role.model.ts","../../../projects/core-ui-library/src/lib/models/users/users.model.ts","../../../projects/core-ui-library/src/lib/models/global/file-template-type.model.ts","../../../projects/core-ui-library/src/lib/utilities/date.utility.ts","../../../projects/core-ui-library/src/lib/utilities/isSameDate.util.ts","../../../projects/core-ui-library/src/lib/models/global/file.model.ts","../../../projects/core-ui-library/src/lib/services/global-api-config.service.ts","../../../projects/core-ui-library/src/lib/services/file-upload.service.ts","../../../projects/core-ui-library/src/lib/services/header-configuration.service.ts","../../../projects/core-ui-library/src/lib/enums/global/ApiMethods.enum.ts","../../../projects/core-ui-library/src/lib/services/model-api.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/services/table-data.service.ts","../../../projects/core-ui-library/src/lib/components/generic-pagination/generic-pagination.component.ts","../../../projects/core-ui-library/src/lib/components/generic-pagination/generic-pagination.component.html","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/enums/DialogActions.enum.ts","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/services/confirmation-dialog.service.ts","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/core-ui-library/src/lib/components/confirmation-dialog/confirmation-dialog.component.html","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/enums/DropdownDirection.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/enums/TableAction.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/services/dropdown.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/dropdown.component.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/dropdown/dropdown.component.html","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/enums/FilterType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/services/filter.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/filter-modal.component.ts","../../../projects/core-ui-library/src/lib/components/generic-table/components/filter-modal/filter-modal.component.html","../../../projects/core-ui-library/src/lib/components/generic-table/services/table-action.service.ts","../../../projects/core-ui-library/src/lib/enums/global/HeaderElementType.enum.ts","../../../projects/core-ui-library/src/lib/services/header.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/services/inline-edit.service.ts","../../../projects/core-ui-library/src/lib/models/global/configuration.model.ts","../../../projects/core-ui-library/src/lib/models/global/file-template.model.ts","../../../projects/core-ui-library/src/lib/models/global/file-type.model.ts","../../../projects/core-ui-library/src/lib/models/users/reset-password.model.ts","../../../projects/core-ui-library/src/lib/services/active-filters-event.service.ts","../../../projects/core-ui-library/src/lib/components/generic-table/generic-table.component.ts","../../../projects/core-ui-library/src/lib/components/generic-table/generic-table.component.html","../../../projects/core-ui-library/src/lib/components/alert/alert.component.ts","../../../projects/core-ui-library/src/lib/components/alert/alert-container.component.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/enums/DocumentAction.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/enums/DocumentDisplayMode.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/generic-documentation.component.ts","../../../projects/core-ui-library/src/lib/components/generic-documentation/generic-documentation.component.html","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-width.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-height.enum.ts","../../../projects/core-ui-library/src/lib/enums/global/FileType.enum.ts","../../../projects/core-ui-library/src/lib/enums/global/NumberRange.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/layout-breakpoint.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/layout-visibility.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/layout.enums.ts","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-position.enum.ts","../../../projects/core-ui-library/src/lib/enums/layout/sidebar-mobile-type.enum.ts","../../../projects/core-ui-library/src/lib/components/layout/services/layout.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/services/sidebar.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/services/sidebar-mobile-modal.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/services/sidebar-template-registry.service.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/generic-sidebar.component.ts","../../../projects/core-ui-library/src/lib/components/generic-sidebar/generic-sidebar.component.html","../../../projects/core-ui-library/src/lib/components/generic-timeline/enums/TimelineStatus.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/enums/TimelineType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/services/timeline.service.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/generic-timeline.component.ts","../../../projects/core-ui-library/src/lib/components/generic-timeline/generic-timeline.component.html","../../../projects/core-ui-library/src/lib/components/header/header.component.ts","../../../projects/core-ui-library/src/lib/components/header/header.component.html","../../../projects/core-ui-library/src/lib/components/main-nav/enums/PermissionsActions.enum.ts","../../../projects/core-ui-library/src/lib/components/main-nav/enums/SidebarState.enum.ts","../../../projects/core-ui-library/src/lib/components/main-nav/services/main-nav.service.ts","../../../projects/core-ui-library/src/lib/constants/version.ts","../../../projects/core-ui-library/src/lib/components/main-nav/main-nav.component.ts","../../../projects/core-ui-library/src/lib/components/main-nav/main-nav.component.html","../../../projects/core-ui-library/src/lib/components/layout/services/layout-state.service.ts","../../../projects/core-ui-library/src/lib/components/layout/layout.ts","../../../projects/core-ui-library/src/lib/components/layout/layout.html","../../../projects/core-ui-library/src/lib/components/layout-auth/layout-auth.ts","../../../projects/core-ui-library/src/lib/components/layout-auth/layout-auth.html","../../../projects/core-ui-library/src/lib/components/generic-steps/enums/StepStatus.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/enums/StepType.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/enums/StepSize.enum.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/generic-steps.component.ts","../../../projects/core-ui-library/src/lib/components/generic-steps/generic-steps.component.html","../../../projects/core-ui-library/src/lib/enums/global/RatingSize.enum.ts","../../../projects/core-ui-library/src/lib/enums/global/RatingType.enum.ts","../../../projects/core-ui-library/src/lib/services/rating.service.ts","../../../projects/core-ui-library/src/lib/components/generic-rating/generic-rating.component.ts","../../../projects/core-ui-library/src/lib/components/generic-rating/generic-rating.component.html","../../../projects/core-ui-library/src/lib/components/progress-bar/progress-bar-size.enum.ts","../../../projects/core-ui-library/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/core-ui-library/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/core-ui-library/src/lib/components/card/card.component.ts","../../../projects/core-ui-library/src/lib/components/image-modal/image-modal.component.ts","../../../projects/core-ui-library/src/lib/components/image-modal/image-modal.component.html","../../../projects/core-ui-library/src/lib/interceptors/cache-busting.interceptor.ts","../../../projects/core-ui-library/src/lib/interceptors/permissions.interceptor.ts","../../../projects/core-ui-library/src/lib/interfaces/field-configs/file-field-config.interface.ts","../../../projects/core-ui-library/src/lib/services/translation-merge.service.ts","../../../projects/core-ui-library/src/lib/loaders/core-ui-translate.loader.ts","../../../projects/core-ui-library/src/lib/validators/password.validator.ts","../../../projects/core-ui-library/src/lib/providers/translate.providers.ts","../../../projects/core-ui-library/src/lib/providers/permission-enums.provider.ts","../../../projects/core-ui-library/src/lib/providers/permission-service.provider.ts","../../../projects/core-ui-library/src/lib/providers/api-configuration.provider.ts","../../../projects/core-ui-library/src/lib/services/core-ui-translate.service.ts","../../../projects/core-ui-library/src/lib/services/permission-enums.service.ts","../../../projects/core-ui-library/src/public-api.ts","../../../projects/core-ui-library/src/solcre-org-core-ui.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: '[coreHost]', standalone: true })\nexport class CoreHostDirective {\n @HostBinding('attr.coreui-element') coreuiElement = '';\n}","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreHostDirective } from '../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-field-errors',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n template: `\n @if (errors().length > 0) {\n @for (error of errors(); track error) {\n <span class=\"c-entry-error\">{{ error | translate }}</span>\n }\n }\n `,\n styleUrls: []\n})\nexport class FieldErrorsComponent {\n errors = input.required<string[]>();\n} ","import { Component, input, output, computed, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ActiveFilterItem, ActiveFiltersConfig } from '../../interfaces/global/ActiveFiltersConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-active-filters',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './active-filters.component.html',\n styleUrl: './active-filters.component.scss'\n})\nexport class ActiveFiltersComponent {\n private translateService = inject(TranslateService);\n\n activeFilters = input<ActiveFilterItem[]>([]);\n config = input<ActiveFiltersConfig>({});\n \n onFilterRemove = output<ActiveFilterItem>();\n onClearAll = output<void>();\n\n visibleFilters = computed(() => {\n const filters = this.activeFilters();\n const maxVisible = this.config().maxVisibleFilters;\n return maxVisible ? filters.slice(0, maxVisible) : filters;\n });\n\n hasFilters = computed(() => this.activeFilters().length > 0);\n\n showClearButton = computed(() => {\n const config = this.config();\n return config.showClearButton !== false && this.hasFilters();\n });\n\n activeFiltersTitle = computed(() => {\n const config = this.config();\n return config.activeFiltersTitle || 'filters.activeFilters';\n });\n\n clearFiltersLabel = computed(() => {\n const config = this.config();\n return config.clearFiltersLabel || 'filters.clearFilters';\n });\n\n containerClass = computed(() => {\n const config = this.config();\n const baseClass = 'c-active-filters';\n return config.customClass ? `${baseClass} ${config.customClass}` : baseClass;\n });\n\n removeFilter(filter: ActiveFilterItem): void {\n if (filter.removable !== false) {\n this.onFilterRemove.emit(filter);\n }\n }\n\n clearAllFilters(): void {\n this.onClearAll.emit();\n }\n\n getDisplayValue(filter: ActiveFilterItem): string {\n if (filter.displayValue) {\n return filter.displayValue;\n }\n\n const formatters = this.config().formatters;\n if (formatters && formatters[filter.key]) {\n return formatters[filter.key](filter.value);\n }\n\n if (filter.value instanceof Date) {\n return filter.value.toLocaleDateString();\n }\n\n if (Array.isArray(filter.value)) {\n return filter.value.join(', ');\n }\n\n return String(filter.value);\n }\n\n isFilterRemovable(filter: ActiveFilterItem): boolean {\n return filter.removable !== false;\n }\n}\n","<div class=\"c-active-filters u-push-b\" *ngIf=\"hasFilters()\">\n <p class=\"c-active-filters__text\">\n <span class=\"icon-filter\"></span>\n {{ activeFiltersTitle() | translate }}:\n </p>\n \n <button \n *ngFor=\"let filter of visibleFilters()\" \n class=\"c-active-filters__button\" \n type=\"button\"\n [title]=\"filter.label | translate\"\n (click)=\"removeFilter(filter)\"\n [disabled]=\"!isFilterRemovable(filter)\">\n {{ filter.label | translate }}: {{ getDisplayValue(filter) }}\n <span *ngIf=\"isFilterRemovable(filter)\" class=\"icon-close c-active-filters__button-icon\"></span>\n </button>\n \n <button \n *ngIf=\"showClearButton()\"\n class=\"c-active-filters__remove\" \n type=\"button\"\n (click)=\"clearAllFilters()\">\n {{ clearFiltersLabel() | translate }}\n </button>\n</div>\n","export enum ModalMode {\n VIEW = 'view',\n EDIT = 'edit',\n CREATE = 'create',\n FILTER = 'filter'\n}","import { Component, input, output, computed, signal, effect, ElementRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DataBaseModelInterface } from '@solcre-org/core';\n\n@Component({\n selector: 'core-base-field',\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule],\n template: '',\n})\nexport abstract class BaseFieldComponent<T extends DataBaseModelInterface> {\n field = input.required<ModalFieldConfig<T>>();\n value = input.required<any>();\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n protected formControl = signal(new FormControl(''));\n private lastEmittedValue: any = undefined;\n private isEnterPressed = false;\n\n isReadonly = computed(() => {\n if (this.mode() === ModalMode.FILTER) return false;\n if (this.mode() === ModalMode.VIEW) return true;\n return this.evaluateReadonly();\n });\n\n protected evaluateReadonly(): boolean {\n const readonly = this.field().readonly;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.formValue());\n } catch {\n return false;\n }\n }\n return readonly || false;\n }\n\n hasError = computed(() => {\n return this.errors().length > 0;\n });\n\n ngOnInit() {\n this.initializeFormControl();\n }\n\n constructor() {\n effect(() => {\n const newValue = this.value();\n const currentValue = this.formControl().value;\n \n if (this.normalizeValue(newValue) !== this.normalizeValue(currentValue)) {\n this.formControl().setValue(newValue, { emitEvent: false });\n this.lastEmittedValue = newValue;\n }\n });\n }\n\n protected initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n const initialValue = this.value() ?? '';\n \n this.formControl.set(new FormControl(initialValue, validators));\n this.lastEmittedValue = initialValue;\n \n this.formControl().valueChanges.subscribe(newValue => {\n if (this.normalizeValue(newValue) !== this.normalizeValue(this.lastEmittedValue)) {\n this.lastEmittedValue = newValue;\n this.onValueChange(newValue);\n }\n });\n }\n\n private normalizeValue(value: any): string {\n if (value === null || value === undefined) return '';\n return String(value).trim();\n }\n\n protected onBlur(event?: FocusEvent): void {\n if (this.isEnterPressed) {\n this.resetEnterFlag();\n return;\n }\n\n if (event && !this.isRealBlur(event)) {\n return;\n }\n\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n\n private isRealBlur(event: FocusEvent): boolean {\n const relatedTarget = event.relatedTarget as HTMLElement;\n const currentTarget = event.currentTarget as HTMLElement;\n \n if (!relatedTarget) {\n setTimeout(() => {\n const activeElement = document.activeElement as HTMLElement;\n if (!this.isWithinFieldArea(activeElement, currentTarget)) {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n }, 10);\n return false;\n }\n \n return !this.isWithinFieldArea(relatedTarget, currentTarget);\n }\n\n private isWithinFieldArea(target: HTMLElement | null, inputElement: HTMLElement): boolean {\n if (!target || !inputElement) return false;\n \n let fieldContainer = inputElement.closest('.c-entry-item');\n if (!fieldContainer) {\n fieldContainer = inputElement.closest('label') || inputElement.parentElement;\n }\n \n if (!fieldContainer) return false;\n \n return fieldContainer.contains(target);\n }\n\n protected onEnter(event: KeyboardEvent): void {\n this.isEnterPressed = true;\n \n this.onEnterEvent.emit(this.field().key as keyof T);\n \n setTimeout(() => {\n const target = event.target as HTMLInputElement;\n if (target) {\n target.blur();\n }\n }, 10);\n }\n\n private resetEnterFlag(): void {\n setTimeout(() => {\n this.isEnterPressed = false;\n }, 100);\n }\n\n protected onValueChange(newValue: any): void {\n this.valueChange.emit(newValue);\n }\n\n onBlurInput(event?: FocusEvent): void {\n const control = this.formControl();\n if (control) {\n control.markAsTouched();\n this.onBlur(event);\n }\n }\n\n onEnterInput(event: KeyboardEvent): void {\n this.onEnter(event);\n }\n} ","import { Component, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { CheckboxModalFieldConfig, CheckboxOption } from '../../../../interfaces/field-configs/checkbox-field-config.interface';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-checkbox-field',\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './checkbox-field.component.html',\n styleUrl: './checkbox-field.component.scss'\n})\nexport class CheckboxFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n isDisabled = computed(() => this.mode() === ModalMode.VIEW || this.evaluateReadonly());\n \n externalLink = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.externalLink;\n });\n\n detail = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.detail;\n });\n\n options = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.options || [];\n });\n\n allowMultiple = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.allowMultiple ?? true;\n });\n\n isRequired = computed(() => {\n const checkboxField = this.field() as CheckboxModalFieldConfig<T>;\n return checkboxField.checkboxConfig?.required ?? false;\n });\n\n hasMultipleOptions = computed(() => this.options().length > 0);\n\n hasSeparatedOptions = computed(() => (this.field() as CheckboxModalFieldConfig<T>).checkboxConfig?.separatedOptions ?? false);\n\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n \n effect(() => {\n if (this.formControl() && this.hasMultipleOptions()) {\n const options = this.options();\n const currentValue = this.formControl().value;\n \n if (this.shouldUpdateFromOptions(currentValue, options)) {\n this.updateValueFromSelected();\n }\n }\n });\n }\n \n private shouldUpdateFromOptions(currentValue: any, options: CheckboxOption[]): boolean {\n if ((currentValue === null || currentValue === undefined)) {\n return options.some(option => (option.selected ?? false) === true);\n }\n \n if (this.allowMultiple() && Array.isArray(currentValue) && currentValue.length === 0) {\n return options.some(option => (option.selected ?? false) === true);\n }\n \n if (this.allowMultiple()) {\n const selectedValues = options.filter(opt => (opt.selected ?? false) === true).map(opt => opt.value);\n const currentArray = Array.isArray(currentValue) ? currentValue : [];\n return selectedValues.length > 0 && \n JSON.stringify(selectedValues.sort()) !== JSON.stringify(currentArray.sort());\n } else {\n const selectedOption = options.find(opt => (opt.selected ?? false) === true);\n return (selectedOption && selectedOption.value !== currentValue) as boolean;\n }\n }\n \n private updateValueFromSelected(): void {\n if (this.allowMultiple()) {\n const selectedValues = this.options()\n .filter(option => (option.selected ?? false) === true)\n .map(option => option.value);\n \n if (selectedValues.length > 0) {\n this.formControl().patchValue(selectedValues as never, { emitEvent: false });\n }\n } else {\n const selectedOption = this.options().find(option => (option.selected ?? false) === true);\n if (selectedOption) {\n this.formControl().setValue(selectedOption.value, { emitEvent: false });\n }\n }\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n \n let initialValue = this.getInitialValue();\n \n this.formControl.set(new FormControl<any>(initialValue, validators));\n \n this.formControl().valueChanges.subscribe(newValue => {\n if(newValue !== this.value()) {\n this.onValueChange(newValue);\n }\n });\n }\n \n private getInitialValue(): any {\n if (this.value() !== undefined && this.value() !== null) {\n if (this.hasMultipleOptions() && this.allowMultiple()) {\n return Array.isArray(this.value()) ? this.value() : [this.value()];\n }\n return this.value();\n }\n \n if (this.field().defaultValue !== undefined && this.field().defaultValue !== null) {\n if (this.hasMultipleOptions() && this.allowMultiple()) {\n return Array.isArray(this.field().defaultValue) ? this.field().defaultValue : [this.field().defaultValue];\n }\n return this.field().defaultValue;\n }\n \n if (this.hasMultipleOptions()) {\n if (this.allowMultiple()) {\n const selectedValues = this.options()\n .filter(option => (option.selected ?? false) === true)\n .map(option => option.value);\n \n if (selectedValues.length > 0) {\n return selectedValues;\n }\n \n if (this.isRequired()) {\n const firstOption = this.options()[0];\n return firstOption ? [firstOption.value] : [];\n }\n return [];\n } else {\n const selectedOption = this.options().find(option => (option.selected ?? false) === true);\n \n if (selectedOption) {\n return selectedOption.value;\n }\n \n if (this.isRequired()) {\n const firstOption = this.options()[0];\n return firstOption ? firstOption.value : null;\n }\n return null;\n }\n }\n \n return false;\n }\n\n handleOptionChange(option: CheckboxOption, event: Event): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n this.onOptionChange(option, isChecked);\n }\n\n onOptionChange(option: CheckboxOption, isChecked: boolean): void {\n const currentValue = this.formControl().value;\n \n if (this.allowMultiple()) {\n let newValue = Array.isArray(currentValue) ? [...currentValue] : [];\n \n if (isChecked) {\n if (!newValue.includes(option.value)) {\n newValue.push(option.value);\n }\n } else {\n if (this.isRequired() && newValue.length <= 1) {\n return;\n }\n newValue = newValue.filter(val => val !== option.value);\n }\n \n this.formControl().patchValue(newValue as never);\n } else {\n if (isChecked) {\n this.formControl().setValue(option.value);\n } else if (currentValue === option.value) {\n if (this.isRequired()) {\n return;\n }\n this.formControl().setValue(null);\n }\n }\n }\n\n isOptionSelected(option: CheckboxOption): boolean {\n const currentValue = this.formControl().value;\n \n if (this.allowMultiple()) {\n return Array.isArray(currentValue) && currentValue.includes(option.value);\n } else {\n return currentValue === option.value;\n }\n }\n\n cannotDeselect(option: CheckboxOption): boolean {\n if (!this.isRequired() || !this.isOptionSelected(option)) {\n return false;\n }\n \n const currentValue = this.formControl().value;\n \n if (this.allowMultiple()) {\n const selectedCount = Array.isArray(currentValue) ? currentValue.length : 0;\n return selectedCount <= 1;\n } else {\n return true;\n }\n }\n\n override onValueChange(newValue: any): void {\n super.onValueChange(newValue);\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n\n onRadioChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input && input.checked) {\n const currentValue = this.formControl().value;\n this.formControl().setValue(currentValue || 'true');\n }\n }\n}","<!-- Clase para layout inline cuando hay múltiples opciones -->\n<div class=\"c-entry-toggle-holder\" [class.hasSeparatedOptions]=\"hasSeparatedOptions()\" [class.multiple-inline]=\"hasMultipleOptions()\">\n\n <span class=\"c-entry-text\"\n *ngIf=\"field().label\">{{ field().label | translate }}</span>\n \n @if (hasMultipleOptions()) {\n @for (option of options(); track option.value) {\n\n <!-- ! Solcre: Este .c-entry-toggle debería ser un componente en sí mismo. -->\n <!-- ! Solcre: El cannot-deselect no está over-engineered. Debería ser un Radio. -->\n <label class=\"c-entry-toggle\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [class.cannot-deselect]=\"cannotDeselect(option)\">\n\n <!-- onBlurInput() maneja validaciones y marca el campo como touched para mostrar errores -->\n @if (cannotDeselect(option)) {\n <!-- Usar radio cuando no se puede deseleccionar -->\n <input\n type=\"radio\"\n [attr.id]=\"field().key.toString() + '_' + option.value\"\n [attr.name]=\"field().key.toString()\"\n [checked]=\"isOptionSelected(option)\"\n (change)=\"handleOptionChange(option, $event)\"\n (blur)=\"onBlurInput()\"\n />\n } @else {\n <!-- Usar checkbox normal cuando se puede deseleccionar -->\n <input\n type=\"checkbox\"\n [attr.id]=\"field().key.toString() + '_' + option.value\"\n [attr.name]=\"allowMultiple() ? field().key.toString() + '[]' : field().key.toString()\"\n [checked]=\"isOptionSelected(option)\"\n (change)=\"handleOptionChange(option, $event)\"\n (blur)=\"onBlurInput()\"\n />\n }\n <span class=\"c-entry-toggle__toggle\"></span>\n\n <span class=\"c-entry-toggle__text\">\n {{ option.label | translate }}\n @if(option.externalLink) {\n <!-- Link externo funcional implementado -->\n <a class=\"icon-external-link-thin\" [href]=\"option.externalLink\" target=\"_blank\"></a>\n }\n </span>\n @if(option.detail) {\n <!-- Texto de detalle funcional implementado -->\n <span class=\"c-form-checkbox__detail\">{{ option.detail }}</span>\n }\n </label>\n\n }\n } @else {\n <!-- ! Solcre: Este .c-entry-toggle debería ser un componente en sí mismo. -->\n <!-- ! Solcre: El cannot-deselect no está over-engineered. Debería ser un Radio. -->\n <label class=\"c-entry-toggle\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [class.cannot-deselect]=\"isRequired() && !!formControl().value\">\n\n <!-- onBlurInput() maneja validaciones y marca el campo como touched para mostrar errores -->\n @if (isRequired() && !!formControl().value) {\n <!-- Usar radio cuando es requerido y tiene valor (cannot-deselect) -->\n <input\n type=\"radio\"\n [attr.id]=\"field().key.toString()\"\n [attr.name]=\"field().key.toString()\"\n [checked]=\"!!formControl().value\"\n (change)=\"onRadioChange($event)\"\n (blur)=\"onBlurInput()\"\n />\n } @else {\n <!-- Usar checkbox normal cuando se puede deseleccionar -->\n <input\n type=\"checkbox\"\n [attr.id]=\"field().key.toString()\"\n [attr.name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n />\n }\n <span class=\"c-entry-toggle__toggle\"></span>\n <span class=\"c-entry-toggle__text\">\n {{ field().label | translate }}\n @if(externalLink()) {\n <!-- Link externo funcional implementado -->\n <a class=\"icon-external-link-thin\" [href]=\"externalLink()\" target=\"_blank\"></a>\n }\n </span>\n @if(detail()) {\n <!-- Texto de detalle funcional implementado -->\n <span class=\"c-form-checkbox__detail\">{{ detail() }}</span>\n }\n </label>\n }\n\n <core-field-errors [errors]=\"errors()\" />\n</div> \n ","import { Component, ElementRef, AfterViewInit, OnDestroy, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-date-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './date-field.component.html',\n})\nexport class DateFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> implements AfterViewInit, OnDestroy {\n constructor(private elementRef: ElementRef) {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n \n let initialValue = this.value() ?? '';\n if (initialValue && typeof initialValue === 'string') {\n const date = new Date(initialValue);\n if (!isNaN(date.getTime())) {\n initialValue = date.toISOString().split('T')[0];\n }\n } else if (initialValue instanceof Date) {\n if (!isNaN(initialValue.getTime())) {\n initialValue = initialValue.toISOString().split('T')[0];\n } else {\n initialValue = '';\n }\n }\n \n this.formControl.set(new FormControl(initialValue, validators));\n\n if (initialValue) {\n setTimeout(() => {\n this.formControl().setValue(initialValue, { emitEvent: false });\n }, 0);\n }\n\n this.formControl().valueChanges.subscribe(newValue => {\n if(newValue !== this.value()) {\n this.onValueChange(newValue);\n }\n });\n }\n\n ngAfterViewInit() {\n this.initializeDateInput();\n }\n\n ngOnDestroy() {\n this.removeDateInputListeners();\n }\n\n private initializeDateInput() {\n const input = this.elementRef.nativeElement.querySelector('input[type=\"date\"]');\n if (input) {\n input.addEventListener('click', this.showDatePicker.bind(this));\n input.addEventListener('focus', this.showDatePicker.bind(this));\n input.addEventListener('input', this.updateHasValue.bind(this));\n this.updateHasValue({ target: input });\n }\n }\n\n private removeDateInputListeners() {\n const input = this.elementRef.nativeElement.querySelector('input[type=\"date\"]');\n if (input) {\n input.removeEventListener('click', this.showDatePicker.bind(this));\n input.removeEventListener('focus', this.showDatePicker.bind(this));\n input.removeEventListener('input', this.updateHasValue.bind(this));\n }\n }\n\n private showDatePicker(event: Event) {\n const input = event.target as HTMLInputElement;\n try {\n if (input.showPicker && typeof input.showPicker === 'function') {\n input.showPicker();\n }\n } catch (error) {}\n }\n\n private updateHasValue(event: { target: HTMLInputElement }) {\n if (event.target.value) {\n event.target.classList.add('has-value');\n } else {\n event.target.classList.remove('has-value');\n }\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n\n onCalendarClick(event: Event): void {\n const button = event.target as HTMLElement;\n const input = button?.closest('.c-entry-input')?.querySelector('input[type=\"date\"]') as HTMLInputElement;\n if (input && input.showPicker && typeof input.showPicker === 'function') {\n try {\n input.showPicker();\n } catch (error) {}\n }\n }\n}\n","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <span class=\"c-entry-input\"\n [class.is-placeholder]=\"!formControl().value\"\n style=\"--chars: 10\"\n [class.is-invalid]=\"hasError()\">\n \n <input type=\"date\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\">\n \n <button class=\"c-entry-input__addon icon-calendar-thin\" \n tabindex=\"-1\"\n type=\"button\"\n (click)=\"onCalendarClick($event)\"></button>\n\n \n </span>\n <core-field-errors [errors]=\"errors()\" />\n</label>\n","export enum TimeInterval {\n MINUTES_15 = '15_MINUTES',\n MINUTES_30 = '30_MINUTES',\n HOURLY = 'HOURLY',\n}","import { Component, computed, input, output, signal, SimpleChanges, OnInit, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { TimeInterval } from '../../../../enums/global/TimeInterval.enum';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-datetime-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './datetime-field.component.html',\n})\nexport class DatetimeFieldComponent<T extends DataBaseModelInterface> implements OnInit {\n field = input.required<ModalFieldConfig<T>>();\n value = input<Date | null>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<Date | null>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n ModalMode = ModalMode;\n TimeInterval = TimeInterval;\n\n selectedDate = signal<Date | null>(null);\n selectedHour = signal<number>(0);\n selectedMinute = signal<number>(0);\n\n hours: number[] = Array.from({ length: 24 }, (_, i) => i);\n\n hoursOptions = computed(() => {\n return this.hours.map(hour => ({\n value: hour,\n label: hour.toString().padStart(2, '0')\n }));\n });\n\n availableMinutes = computed(() => {\n const interval = this.field().timeInterval;\n switch (interval) {\n case TimeInterval.MINUTES_15:\n return [0, 15, 30, 45];\n case TimeInterval.MINUTES_30:\n return [0, 30];\n case TimeInterval.HOURLY:\n return [0];\n default:\n return Array.from({ length: 60 }, (_, i) => i);\n }\n });\n\n minutesOptions = computed(() => {\n return this.availableMinutes().map(minute => ({\n value: minute,\n label: minute.toString().padStart(2, '0')\n }));\n });\n\n formattedDate = computed(() => {\n const date = this.selectedDate();\n if (!date || isNaN(date.getTime())) return '';\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n return `${year}-${month}-${day}`;\n });\n\n isDisabled = computed(() => {\n if (this.mode() === ModalMode.FILTER) return false;\n if (this.mode() === ModalMode.VIEW) return true;\n return this.evaluateReadonly();\n });\n\n hasError = computed(() => {\n return this.errors().length > 0;\n });\n\n private evaluateReadonly(): boolean {\n const readonly = this.field().readonly;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.formValue());\n } catch {\n return false;\n }\n }\n return readonly || false;\n }\n\n constructor() {\n effect(() => {\n const newValue = this.value();\n if (newValue && !isNaN(newValue.getTime())) {\n const newDate = new Date(newValue);\n this.selectedDate.set(newDate);\n this.selectedHour.set(newDate.getHours());\n this.selectedMinute.set(this.roundToNearestInterval(newDate).getMinutes());\n }\n });\n }\n\n ngOnInit(): void {\n this.initializeValues();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) {\n this.initializeValues();\n }\n }\n\n private initializeValues(): void {\n const date = this.value();\n if (date && !isNaN(date.getTime())) {\n const newDate = new Date(date);\n this.selectedDate.set(newDate);\n this.selectedHour.set(newDate.getHours());\n const roundedMinute = this.roundToNearestInterval(newDate).getMinutes();\n this.selectedMinute.set(roundedMinute);\n } else {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n this.selectedDate.set(today);\n this.selectedHour.set(0);\n this.selectedMinute.set(0);\n }\n }\n\n onDateChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const newDate = input.value ? new Date(input.value + 'T00:00:00') : null;\n if (newDate && !isNaN(newDate.getTime())) {\n newDate.setHours(this.selectedHour());\n newDate.setMinutes(this.selectedMinute());\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n this.selectedDate.set(newDate);\n this.emitValue();\n }\n }\n\n onHourChange(value: number): void {\n this.selectedHour.set(value);\n this.emitValue();\n }\n\n onMinuteChange(value: number): void {\n this.selectedMinute.set(value);\n this.emitValue();\n }\n\n private emitValue(): void {\n const date = this.selectedDate();\n if (!date || isNaN(date.getTime())) {\n this.valueChange.emit(null);\n return;\n }\n\n const newDate = new Date(date.getTime());\n newDate.setHours(this.selectedHour());\n newDate.setMinutes(this.selectedMinute());\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n\n this.valueChange.emit(newDate);\n }\n\n private roundToNearestInterval(date: Date): Date {\n const interval = this.field()?.timeInterval;\n if (!interval) return date;\n\n const minutes = date.getMinutes();\n let roundedMinutes: number;\n\n switch (interval) {\n case TimeInterval.MINUTES_15:\n roundedMinutes = Math.round(minutes / 15) * 15;\n break;\n case TimeInterval.MINUTES_30:\n roundedMinutes = Math.round(minutes / 30) * 30;\n break;\n case TimeInterval.HOURLY:\n roundedMinutes = 0;\n break;\n default:\n return date;\n }\n\n const roundedDate = new Date(date);\n roundedDate.setMinutes(roundedMinutes);\n roundedDate.setSeconds(0);\n roundedDate.setMilliseconds(0);\n\n if (roundedMinutes === 60) {\n roundedDate.setHours(roundedDate.getHours() + 1);\n roundedDate.setMinutes(0);\n }\n\n return roundedDate;\n }\n\n onBlur(): void {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n\n onEnter(event: KeyboardEvent): void {\n this.onEnterEvent.emit(this.field().key as keyof T);\n const target = event.target as HTMLElement;\n if (target) {\n target.blur();\n }\n }\n\n onCalendarClick(event: Event): void {\n const button = event.target as HTMLElement;\n const input = button?.closest('.c-entry-input')?.querySelector('input[type=\"date\"]') as HTMLInputElement;\n if (input && input.showPicker && typeof input.showPicker === 'function') {\n try {\n input.showPicker();\n } catch (error) {}\n }\n }\n}","<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <label class=\"c-entry-text\" *ngIf=\"field().label\" [for]=\"field().key.toString()\">{{ field().label | translate }}</label>\n <div class=\"c-entry-datetime\">\n <span class=\"c-entry-input\" [class.is-invalid]=\"hasError()\">\n <input\n type=\"date\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [value]=\"formattedDate()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onDateChange($event)\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"onEnter($any($event))\"\n />\n <button class=\"c-entry-input__addon icon-calendar-thin\" \n tabindex=\"-1\"\n type=\"button\"\n (click)=\"onCalendarClick($event)\"></button>\n </span>\n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [items]=\"hoursOptions()\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [ngModel]=\"selectedHour()\"\n (ngModelChange)=\"onHourChange($event)\"\n [disabled]=\"isDisabled()\"\n [clearable]=\"false\"\n [searchable]=\"false\"\n (blur)=\"onBlur()\"\n placeholder=\"HH\"\n >\n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n <span class=\"c-entry-datetime__separator\">:</span>\n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [items]=\"minutesOptions()\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [ngModel]=\"selectedMinute()\"\n (ngModelChange)=\"onMinuteChange($event)\"\n [disabled]=\"isDisabled()\"\n [clearable]=\"false\"\n [searchable]=\"false\"\n (blur)=\"onBlur()\"\n placeholder=\"MM\"\n >\n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n </div>\n <core-field-errors [errors]=\"errors()\" />\n</div>\n\n\n","// icon-compat.pipe.ts\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'coreIconCompat',\n standalone: true\n})\nexport class IconCompatPipe implements PipeTransform {\n transform(value: string | string[] | null | undefined): string[] {\n if (!value) return [];\n\n const tokens = Array.isArray(value)\n ? value\n : value.split(/\\s+/).filter(Boolean);\n\n const normalized: string[] = [];\n\n for (const t of tokens) {\n if (/^fa-[a-z0-9-]+$/i.test(t)) {\n // Si es fa-xxx → meter 'fa' y el icono\n if (!normalized.includes('fa')) {\n normalized.push('fa');\n }\n normalized.push(t);\n } else if (/^icon-/i.test(t)) {\n // Ya tiene icon-\n normalized.push(t);\n } else {\n // “Pelado” → convertir a icon-\n normalized.push(`icon-${t}`);\n }\n }\n\n return normalized;\n }\n}\n","import { Component, signal, computed, inject, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormControl, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { AuthService, DataBaseModelInterface } from '@solcre-org/core';\nimport { FileFieldConfig } from '../../../../interfaces/field-configs/file-field-config.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../../../pipelines/icon-compat.pipeline';\n\ninterface ServerFile {\n id: string;\n filename: string;\n size?: number;\n type?: string;\n s3_key?: string;\n created_at?: string;\n updated_at?: string;\n}\n\n@Component({\n selector: 'core-file-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './file-field.component.html',\n styleUrl: './file-field.component.scss',\n})\nexport class FileFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n private authService = inject(AuthService);\n selectedFiles = signal<File[]>([]);\n existingFiles = signal<ServerFile[]>([]);\n previewUrls = signal<string[]>([]);\n errorMessage = signal<string>('');\n errorParams = signal<any>(null);\n\n displayErrorMessage = computed(() => {\n const message = this.errorMessage();\n const params = this.errorParams();\n return message && params ? { key: message, params } : message ? { key: message } : null;\n });\n\n fieldConfig = computed(() => this.field() as FileFieldConfig<T>);\n isEditMode = computed(() => this.mode() === ModalMode.EDIT);\n ModalMode = ModalMode;\n \n allFiles = computed(() => {\n const existing = this.existingFiles();\n const selected = this.selectedFiles();\n return [...existing, ...selected];\n });\n\n override ngOnInit() {\n super.ngOnInit();\n this.initializeFiles();\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n const initialValue = this.value() ?? null;\n\n const cfg = this.fieldConfig();\n const extraValidators: ValidatorFn[] = [];\n if (cfg.multiple && (cfg.minFiles || cfg.maxFiles)) {\n extraValidators.push(this.filesCountValidator(cfg.minFiles, cfg.maxFiles));\n }\n\n this.formControl.set(new FormControl(initialValue, [...validators, ...extraValidators]) as any);\n }\n\n private filesCountValidator(min?: number, max?: number): ValidatorFn {\n return (control: AbstractControl) => {\n const val = control.value;\n const filesArr = Array.isArray(val) ? val : (val ? [val] : []);\n const count = filesArr.length;\n const errors: any = {};\n if (typeof min === 'number' && count < min) {\n errors.minFiles = { required: min, actual: count };\n }\n if (typeof max === 'number' && count > max) {\n errors.maxFiles = { required: max, actual: count };\n }\n return Object.keys(errors).length ? errors : null;\n };\n }\n\n private initializeFiles() {\n const currentValue = this.value();\n \n if (currentValue) {\n if (currentValue instanceof File) {\n this.selectedFiles.set([currentValue]);\n this.generatePreviews([currentValue]);\n } else if (Array.isArray(currentValue)) {\n const files = currentValue.filter(v => v instanceof File);\n const serverFiles = currentValue.filter(v => this.isServerFile(v));\n \n this.selectedFiles.set(files);\n this.existingFiles.set(serverFiles);\n this.generatePreviews(files);\n } else if (this.isServerFile(currentValue)) {\n this.existingFiles.set([currentValue]);\n }\n }\n }\n\n isServerFile(value: any): value is ServerFile {\n return value && typeof value === 'object' && 'id' in value && 'filename' in value;\n }\n\n private generatePreviews(files: File[]) {\n const urls: string[] = [];\n files.forEach(file => {\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n if (e.target?.result) {\n urls.push(e.target.result as string);\n this.previewUrls.set([...urls]);\n }\n };\n reader.readAsDataURL(file);\n }\n });\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) return;\n\n const incoming = Array.from(input.files);\n const cfg = this.fieldConfig();\n\n const currentSelected = this.selectedFiles();\n const combined = cfg.multiple ? [...currentSelected, ...incoming] : [incoming[0]];\n\n if (cfg.accept) {\n const acceptedTypes = cfg.accept.split(',').map(type => type.trim());\n const invalidFiles = combined.filter(file => \n !acceptedTypes.some(type => {\n if (type.startsWith('.')) {\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n }\n const pattern = new RegExp('^' + type.replace('/*', '/.*').replace('*', '.*') + '$');\n return pattern.test(file.type);\n })\n );\n if (invalidFiles.length) {\n this.setLocalError('files.errors.invalidType');\n return;\n }\n }\n\n if (cfg.maxSize) {\n const oversized = combined.filter(f => f.size > cfg.maxSize!);\n if (oversized.length) {\n this.setLocalError('files.errors.maxSize');\n return;\n }\n }\n\n const totalCount = (this.existingFiles().length) + combined.length;\n if (typeof cfg.maxFiles === 'number' && totalCount > cfg.maxFiles) {\n this.setLocalError('files.errors.maxFiles', { required: cfg.maxFiles });\n return;\n }\n if (typeof cfg.minFiles === 'number' && totalCount < cfg.minFiles) {\n this.setLocalError('files.errors.minFiles', { required: cfg.minFiles });\n } else {\n this.clearLocalError();\n }\n\n if (this.isEditMode() && !cfg.multiple) {\n this.existingFiles.set([]);\n }\n\n this.selectedFiles.set(cfg.multiple ? combined : [combined[0]]);\n this.generatePreviews(this.selectedFiles());\n \n this.formControl().markAsTouched();\n this.emitCurrentValue();\n }\n\n private setLocalError(translationKey: string, interpolationParams?: any) {\n this.errorMessage.set(translationKey);\n this.errorParams.set(interpolationParams);\n \n const currentErrors = this.formControl().errors || {};\n (this.formControl() as any).setErrors({ ...currentErrors, fileField: translationKey });\n }\n\n private clearLocalError() {\n this.errorMessage.set('');\n this.errorParams.set(null);\n \n const errs = { ...(this.formControl().errors || {}) };\n if ('fileField' in errs) {\n delete (errs as any).fileField;\n }\n const next = Object.keys(errs).length ? errs : null;\n (this.formControl() as any).setErrors(next);\n }\n\n removeFile(index: number) {\n const all = this.allFiles();\n const fileToRemove = all[index];\n \n if (this.isServerFile(fileToRemove)) {\n const existing = [...this.existingFiles()];\n const idx = existing.findIndex(f => f.id === (fileToRemove as ServerFile).id);\n if (idx !== -1) {\n existing.splice(idx, 1);\n this.existingFiles.set(existing);\n }\n } else { \n const selected = [...this.selectedFiles()];\n const idx = selected.indexOf(fileToRemove as File);\n if (idx !== -1) {\n selected.splice(idx, 1);\n this.selectedFiles.set(selected);\n this.generatePreviews(selected);\n }\n }\n \n this.validateCurrentState();\n \n this.formControl().markAsTouched();\n this.emitCurrentValue();\n }\n\n private validateCurrentState() {\n const cfg = this.fieldConfig();\n const totalCount = this.existingFiles().length + this.selectedFiles().length;\n \n if (typeof cfg.minFiles === 'number' && totalCount < cfg.minFiles) {\n this.setLocalError('files.errors.minFiles', { required: cfg.minFiles });\n } else {\n this.clearLocalError();\n }\n }\n\n private emitCurrentValue() {\n const selected = this.selectedFiles();\n const existing = this.existingFiles();\n \n if (this.fieldConfig().multiple) {\n const all = [...existing, ...selected];\n this.onValueChange(all.length > 0 ? all : null);\n (this.formControl() as any).setValue(all.length > 0 ? all : null, { emitEvent: false });\n } else {\n let toEmit: any = null;\n \n if (selected.length > 0) {\n toEmit = selected[0];\n } else if (existing.length > 0) {\n toEmit = existing[0];\n }\n \n this.onValueChange(toEmit);\n (this.formControl() as any).setValue(toEmit, { emitEvent: false });\n }\n }\n\n getFileIcon(file: File): string {\n if (file.type.startsWith('image/')) return 'icon-image';\n if (file.type.includes('pdf')) return 'icon-file';\n if (file.type.includes('word')) return 'icon-word';\n if (file.type.includes('excel') || file.type.includes('spreadsheet')) return 'icon-excel';\n return 'icon-file';\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n getCurrentDate(): string {\n const now = new Date();\n const day = now.getDate().toString().padStart(2, '0');\n const month = (now.getMonth() + 1).toString().padStart(2, '0');\n const year = now.getFullYear();\n const hours = now.getHours().toString().padStart(2, '0');\n const minutes = now.getMinutes().toString().padStart(2, '0');\n return `${day}/${month}/${year} ${hours}:${minutes}`;\n }\n\n getCurrentUser(): string {\n return this.authService.getLoggedStartData()?.username || '';\n }\n\n getPreviewIndex(file: any): number {\n if (this.isServerFile(file)) return -1;\n return this.selectedFiles().indexOf(file as File);\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}\n","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n @if (field().label) {\n <span class=\"c-entry-text\">{{ field().label | translate }}</span>\n }\n <div class=\"c-entry-file\" [class.has-error]=\"hasError()\">\n @if(fieldConfig().multiple || isEditMode() || allFiles().length === 0) {\n <label class=\"c-entry-file__label\">\n <span class=\"icon-upload c-entry-file__icon\"></span>\n <input\n type=\"file\"\n class=\"c-entry-file__input\"\n (change)=\"onFileSelected($event)\"\n [accept]=\"fieldConfig().accept\"\n [multiple]=\"fieldConfig().multiple\"\n (blur)=\"onBlurInput()\"\n [readonly]=\"isReadonly()\"\n >\n {{ fieldConfig().placeholder ?? fieldConfig().label | translate }}\n @if(fieldConfig().acceptString) {\n <br>\n <span class=\"c-entry-file__filename\" id=\"file-name\">{{ fieldConfig().acceptString }}</span>\n }\n </label>\n }\n\n @if (allFiles().length > 0) {\n <div class=\"c-attachments\">\n <p class=\"c-entry-text\">{{ 'files.attachedFiles' | translate }}</p>\n \n <ul class=\"c-attachments__list\">\n @for (file of allFiles(); track $index; let i = $index) {\n <li class=\"c-attachments__item\">\n <div class=\"c-bulleted-text\">\n @if(!isServerFile(file)) {\n <time>{{ getCurrentDate() }}</time>\n <span>{{ getCurrentUser() }}</span>\n }\n </div>\n \n <div class=\"c-attachments__holder\">\n @if(!isServerFile(file) && file.type.startsWith('image/') && fieldConfig().showPreview !== false) {\n <div class=\"c-attachments__content\">\n @if(getPreviewIndex(file) >= 0 && previewUrls()[getPreviewIndex(file)]) {\n <picture class=\"c-attachments__pic c-pic\">\n <img [src]=\"previewUrls()[getPreviewIndex(file)]\" [alt]=\"file.name\" loading=\"lazy\">\n </picture>\n }\n <div class=\"c-attachments__text\">\n <span class=\"c-attachments__name-file\">{{ file.name }}</span>\n <span class=\"c-attachments__file-size\">({{ formatFileSize(file.size) }})</span>\n </div>\n </div>\n } @else {\n <a class=\"c-attachments__content\">\n @if(isServerFile(file)) {\n <span class=\"icon-file\"></span>\n {{ file.filename }}\n } @else {\n <span [class]=\"getFileIcon(file)\"></span>\n <div class=\"c-attachments__text\">\n <span class=\"c-attachments__name-file\">{{ file.name }}</span>\n <span class=\"c-attachments__file-size\">({{ formatFileSize(file.size) }})</span>\n </div>\n }\n </a>\n }\n\n <div class=\"c-attachments__actions u-flex u-flex--wrap\">\n <button \n type=\"button\" \n class=\"c-link context:error\" \n (click)=\"removeFile(i)\"\n [title]=\"'files.remove' | translate\"\n >\n <span class=\"icon-delete\"></span>\n {{ 'files.remove' | translate }}\n </button>\n\n @if(fieldConfig().customActions) {\n @for(action of fieldConfig().customActions; track action.id) {\n <button \n type=\"button\"\n class=\"c-link c-link--underlined\" \n (click)=\"action.action(file)\"\n [title]=\"action.label | translate\"\n >\n {{ action.label | translate }}\n <span [ngClass]=\"action.icon | coreIconCompat\"></span>\n </button>\n }\n }\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n <core-field-errors [errors]=\"errors()\" />\n @if(displayErrorMessage()) {\n <span class=\"c-entry-error\">{{ displayErrorMessage()!.key | translate:displayErrorMessage()!.params }}</span>\n }\n</label>\n","import { ModalFieldConfig } from '../global/ModalFieldConfig.interface';\n\nexport enum NumberFieldConfigType {\n DEFAULT = 'default',\n WITH_ICON = 'with-icon',\n OUTSIDE = 'outside'\n}\n\nexport interface NumberFieldConfig {\n type?: NumberFieldConfigType;\n icon?: string;\n}\n\nexport interface NumberModalFieldConfig<T> extends ModalFieldConfig<T> {\n numberConfig?: NumberFieldConfig;\n} ","import { Component, ElementRef, AfterViewInit, OnDestroy, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { NumberModalFieldConfig, NumberFieldConfigType } from '../../../../interfaces/field-configs/number-field-config.interface';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-number-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './number-field.component.html',\n styleUrl: './number-field.component.scss'\n})\nexport class NumberFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> implements AfterViewInit, OnDestroy {\n readonly NumberFieldConfigType = NumberFieldConfigType;\n private controls: HTMLButtonElement[] = [];\n\n fieldType = computed(() => (this.field() as NumberModalFieldConfig<T>).numberConfig?.type || NumberFieldConfigType.DEFAULT);\n public iconClass = computed(() => {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n return this.fieldType() === NumberFieldConfigType.WITH_ICON ? numberField.numberConfig?.icon : null;\n });\n\n getCharsWidth(): string | null {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n const chars = (numberField.numberConfig as any)?.chars;\n return chars ? chars.toString() : null;\n }\n\n isDisabled(): boolean {\n return this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n }\n\n getMinValue(): number {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n return (numberField.numberConfig as any)?.min ?? 0;\n }\n\n getMaxValue(): number | null {\n const numberField = this.field() as NumberModalFieldConfig<T>;\n return (numberField.numberConfig as any)?.max ?? null;\n }\n\n isDecrementDisabled(): boolean {\n if (this.isDisabled()) return true;\n const currentValue = Number(this.formControl().value) || 0;\n const minValue = this.getMinValue();\n return currentValue <= minValue;\n }\n\n isIncrementDisabled(): boolean {\n if (this.isDisabled()) return true;\n const currentValue = Number(this.formControl().value) || 0;\n const maxValue = this.getMaxValue();\n return maxValue !== null && currentValue >= maxValue;\n }\n\n constructor(private elementRef: ElementRef) {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n ngAfterViewInit() {\n this.initializeControls();\n }\n\n ngOnDestroy() {\n this.removeControlListeners();\n }\n\n private initializeControls() {\n const formGroup = this.elementRef.nativeElement.closest('.c-form__group');\n if (formGroup) {\n this.controls = Array.from(formGroup.querySelectorAll('.js-input-number-control')) as HTMLButtonElement[];\n this.controls.forEach(control => {\n control.addEventListener('click', this.handleControlClick.bind(this));\n });\n this.updateControlsState();\n }\n }\n\n private removeControlListeners() {\n this.controls.forEach(control => {\n control.removeEventListener('click', this.handleControlClick.bind(this));\n });\n }\n\n private handleControlClick(event: Event) {\n const button = event.currentTarget as HTMLButtonElement;\n const control = button.getAttribute('data-control');\n if (control) {\n const change = parseInt(control);\n if (!isNaN(change)) {\n this.onControlClick(change);\n }\n }\n }\n\n onControlClick(change: number): void {\n if (this.isReadonly()) return;\n const currentValue = Number(this.formControl().value) || 0;\n const newValue = Math.max(0, currentValue + change);\n this.formControl().setValue(newValue.toString());\n }\n\n private updateControlsState() {\n const currentValue = Number(this.formControl().value) || 0;\n this.controls.forEach(control => {\n const controlValue = control.getAttribute('data-control');\n if (controlValue) {\n const changeValue = parseInt(controlValue);\n if (!isNaN(changeValue) && changeValue < 0) {\n control.disabled = currentValue <= 0;\n }\n }\n });\n }\n\n override onValueChange(newValue: any): void {\n const parsedValue = Number(newValue);\n if (isNaN(parsedValue)) {\n this.formControl().setValue('0');\n return;\n }\n \n const validValue = Math.max(0, parsedValue);\n super.onValueChange(validValue);\n this.updateControlsState();\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}","<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!--\n ✅! Solcre: Detalles para Ambos tipos de inputs implementados:\n ✅ title y aria-label de los botones - Ahora usan traducciones dinámicas\n ✅ style=\"--chars: XXX\" - Implementado con getCharsWidth()\n ✅ Botón de Sumar chequea el atributo max - Implementado isIncrementDisabled()\n ✅ Botón de Restar chequea el atributo min - Implementado isDecrementDisabled()\n ✅ Estado disabled agregado (disabled y .is-disabled) - Implementado isDisabled()\n ✅ Atributos min/max agregados a los inputs\n (?) El .c-entry-stepper o .c-entry-input debería ser un componente en sí mismo (No me queda claro esto)\n -->\n\n @if (fieldType() === NumberFieldConfigType.OUTSIDE) {\n\n <div class=\"c-entry-stepper\" \n [style.--chars]=\"getCharsWidth()\"\n [class.is-disabled]=\"isDisabled()\">\n\n <button class=\"c-entry-stepper__control icon-counter-down\"\n type=\"button\"\n [disabled]=\"isDecrementDisabled()\"\n (click)=\"onControlClick(-1)\"\n data-control=\"-1\"\n [title]=\"'number-field.decrement' | translate\"\n [attr.aria-label]=\"'number-field.decrement' | translate\"\n tabindex=\"-1\"></button>\n\n <input class=\"c-entry-input\"\n type=\"number\"\n [min]=\"getMinValue()\"\n [max]=\"getMaxValue()\"\n inputmode=\"numeric\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\">\n\n <button class=\"c-entry-stepper__control icon-counter-up\"\n type=\"button\"\n [disabled]=\"isIncrementDisabled()\"\n (click)=\"onControlClick(1)\"\n data-control=\"1\"\n [title]=\"'number-field.increment' | translate\"\n [attr.aria-label]=\"'number-field.increment' | translate\"\n tabindex=\"-1\"></button>\n </div>\n \n } @else {\n\n <label class=\"c-entry-input\"\n [style.--chars]=\"getCharsWidth()\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\">\n <span *ngIf=\"iconClass()\" class=\"{{ iconClass() | coreIconCompat }}\"></span>\n\n <input\n type=\"number\"\n [min]=\"getMinValue()\"\n [max]=\"getMaxValue()\"\n inputmode=\"decimal\"\n [class.is-disabled]=\"isDisabled()\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n />\n\n <span class=\"c-entry-number-controls\">\n <button class=\"icon-arrow-up\"\n type=\"button\"\n [disabled]=\"isIncrementDisabled()\"\n (click)=\"onControlClick(1)\"\n data-control=\"1\"\n [title]=\"'number-field.increment' | translate\"\n [attr.aria-label]=\"'number-field.increment' | translate\"\n tabindex=\"-1\"\n ></button>\n <button class=\"icon-arrow-down\"\n type=\"button\"\n [disabled]=\"isDecrementDisabled()\"\n (click)=\"onControlClick(-1)\"\n data-control=\"-1\"\n [title]=\"'number-field.decrement' | translate\"\n [attr.aria-label]=\"'number-field.decrement' | translate\"\n tabindex=\"-1\"\n ></button>\n </span>\n </label>\n }\n <core-field-errors [errors]=\"errors()\" />\n</div> <!-- .c-entry-item -->\n","import { Component, signal, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-password-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './password-field.component.html',\n styleUrl: './password-field.component.scss'\n})\nexport class PasswordFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n showPassword = signal(false);\n\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n inputType() {\n return this.showPassword() ? 'text' : 'password';\n }\n\n togglePasswordVisibility() {\n this.showPassword.set(!this.showPassword());\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}","<!-- ! Solcre: Esto lo estoy haciendo a ciegas 😅 -->\n \n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <label class=\"c-entry-input\"\n [class.is-invalid]=\"hasError()\"\n [class.is-readonly]=\"hasError()\"\n [class.is-disabled]=\"hasError()\">\n\n @if (field().prefixIcon) {\n <span class=\"c-entry-input__addon {{ field().prefixIcon }}\"></span>\n }\n\n <input \n [type]=\"inputType()\" \n [formControl]=\"formControl()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n (blur)=\"onBlurInput()\">\n\n <button class=\"c-entry-input__addon\"\n (click)=\"togglePasswordVisibility()\"\n [class]=\"showPassword()? 'icon-password-hide-thin' :'icon-password-thin'\"\n ></button>\n\n </label>\n <core-field-errors [errors]=\"errors()\" />\n</div> <!-- .c-entry-item -->\n\n","import { Component, computed, effect, ViewChild, output, input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { NgSelectModule, NgSelectComponent } from '@ng-select/ng-select';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { SelectFieldConfig } from '../../../../interfaces/field-configs/select-field-config.interface';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n \n@Component({\n selector: 'core-select-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './select-field.component.html',\n styleUrl: './select-field.component.scss'\n})\nexport class SelectFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n @ViewChild(NgSelectComponent) ngSelect!: NgSelectComponent;\n \n override field = input.required<SelectFieldConfig<T>>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n \n private isInitialized = signal<boolean>(false);\n \n computedValue = computed(() => {\n const value = this.value();\n if (this.field().multiple && !Array.isArray(value)) {\n return value ? [value] : [];\n }\n return value;\n });\n \n constructor() {\n super();\n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n \n effect(() => {\n const fieldCfg = this.field() as any;\n if ('dynamicOptions' in fieldCfg && typeof fieldCfg.dynamicOptions === 'function') {\n const newOpts = fieldCfg.dynamicOptions(this.rowData() as any);\n if (Array.isArray(newOpts)) {\n fieldCfg.options = newOpts;\n if (newOpts.length === 0 && this.field().multiple && Array.isArray(this.formControl().value)) {\n setTimeout(() => {\n this.formControl().setValue([] as any, { emitEvent: false });\n this.ngSelect?.clearModel();\n }, 0);\n }\n }\n }\n });\n\n effect(() => {\n const fieldCfg = this.field() as any;\n const formValue = this.formValue();\n \n if ('dynamicValue' in fieldCfg && typeof fieldCfg.dynamicValue === 'function' && formValue) {\n const newValue = fieldCfg.dynamicValue(formValue);\n const currentValue = this.formControl().value;\n \n if (newValue !== null && newValue !== undefined && newValue !== currentValue) {\n setTimeout(() => {\n this.formControl().setValue(newValue, { emitEvent: true });\n this.valueChange.emit(newValue);\n }, 0);\n }\n }\n });\n }\n \n override ngOnInit() {\n super.ngOnInit();\n \n const currentInitialValue = this.formControl().value;\n \n if (!this.field().multiple && typeof currentInitialValue === 'string' && currentInitialValue.trim() === '') {\n this.formControl().setValue(null, { emitEvent: false });\n }\n \n const fieldOptions = this.field().options;\n if (fieldOptions && fieldOptions.length > 0 && currentInitialValue !== null && currentInitialValue !== undefined) {\n const matchingOption = fieldOptions.find(opt => \n opt.value === currentInitialValue || \n String(opt.value) === String(currentInitialValue)\n );\n \n if (matchingOption) {\n setTimeout(() => {\n this.formControl().setValue(currentInitialValue, { emitEvent: false });\n this.isInitialized.set(true);\n }, 0);\n }\n }\n\n setTimeout(() => {\n const fieldCfg = this.field() as any;\n const formValue = this.formValue();\n \n if ('dynamicValue' in fieldCfg && typeof fieldCfg.dynamicValue === 'function' && formValue) {\n const newValue = fieldCfg.dynamicValue(formValue);\n const currentValue = this.formControl().value;\n \n if (newValue !== null && newValue !== undefined && newValue !== currentValue) {\n this.formControl().setValue(newValue, { emitEvent: true });\n this.valueChange.emit(newValue);\n }\n }\n }, 10);\n }\n \n compareWith = (item: any, selected: any): boolean => {\n if (!item || selected === null || selected === undefined) {\n return false;\n }\n \n const itemValue = item.value || item;\n \n if (typeof selected === 'number' && typeof itemValue === 'number') {\n const result = itemValue === selected;\n return result;\n }\n \n if (String(itemValue) === String(selected)) {\n return true;\n }\n \n if (typeof selected === 'object' && selected !== null && 'id' in selected) {\n const result = String(itemValue) === String(selected.id);\n return result;\n }\n \n return false;\n };\n \n override onValueChange(newValue: any): void {\n this.isInitialized.set(true);\n \n let finalValue: string | string[];\n if (this.field().multiple) {\n const currentValue = Array.isArray(this.computedValue()) ? this.computedValue() : [];\n if (!Array.isArray(newValue)) {\n if (currentValue.includes(newValue)) {\n finalValue = (currentValue as string[]).filter((val: string) => val !== newValue);\n } else {\n finalValue = [...currentValue, newValue];\n }\n } else {\n finalValue = newValue;\n }\n } else {\n finalValue = newValue;\n }\n \n const fieldConfig = this.field();\n if (fieldConfig.onSelectionChange && this.formValue()) {\n try {\n const selectedItem = this.findSelectedItem(finalValue);\n const currentFormValue = { ...this.formValue() };\n currentFormValue[this.field().key as keyof T] = finalValue;\n \n const newFormValue = fieldConfig.onSelectionChange(selectedItem, currentFormValue);\n \n this.selectionChange.emit({\n selectedItem,\n newFormValue\n });\n } catch (error) {\n console.error('Error in onSelectionChange:', error);\n }\n }\n \n super.onValueChange(finalValue);\n }\n \n private findSelectedItem(value: any): any {\n if (!value) return null;\n \n const options = this.field().options || [];\n const bindValue = this.field().bindValue || 'value';\n \n if (this.field().multiple && Array.isArray(value)) {\n return options.filter(option => {\n const optionValue = bindValue === 'value' ? option.value : (option as any)[bindValue];\n return value.includes(optionValue);\n });\n } else {\n return options.find(option => {\n const optionValue = bindValue === 'value' ? option.value : (option as any)[bindValue];\n return optionValue === value;\n }) || null;\n }\n }\n \n isOptionSelected(optionValue: string): boolean {\n const currentValue = this.computedValue();\n if (this.field().multiple && Array.isArray(currentValue)) {\n return currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n \n override onBlurInput(): void {\n this.onBlur();\n }\n}","<!-- Todo: Ng select + c-entry-select -->\n \n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n \n <div class=\"c-entry-input c-entry-input--ng-select c-entry-input--ng-select-alt\"\n [class.is-placeholder]=\"formControl().value === null || formControl().value === undefined || formControl().value === ''\"\n [class.is-invalid]=\"hasError()\">\n <ng-select\n [items]=\"field().options ?? []\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [multiple]=\"field().multiple\"\n [formControl]=\"formControl()\"\n [compareWith]=\"compareWith\"\n [class.has-error]=\"hasError()\"\n [readonly]=\"field().readonly\"\n [clearable]=\"true\"\n [searchable]=\"false\"\n (blur)=\"onBlurInput()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n >\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n {{ item.label | translate }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n <!-- Estilos que aparecen en la etiqueta del item seleccionado -->\n {{ item.label | translate }}\n </ng-template>\n <ng-template ng-notfound-tmp>\n <span class=\"ng-select-notfound\">{{ 'modal.field.serverSelect.noResults' | translate }}</span>\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </div>\n <core-field-errors [errors]=\"errors()\" />\n</div>","import { inject, Injectable } from '@angular/core';\nimport { Observable, map } from 'rxjs';\nimport { ApiResponseModel, ApiService, DataBaseModelInterface } from '@solcre-org/core';\n\nexport interface SearchResponse<T = any> {\n data?: T[];\n [key: string]: T[] | undefined;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServerSelectService {\n private apiService = inject(ApiService);\n\n search<T extends DataBaseModelInterface>(endpoint: string, term: string, searchParam: string = 'search', responseKey?: string, additionalParams?: { [key: string]: any }): Observable<T[]> {\n const processedEndpoint = this.processEndpoint(endpoint);\n \n const queryParams = new URLSearchParams();\n queryParams.set(searchParam, term);\n \n if (additionalParams) {\n Object.entries(additionalParams).forEach(([key, value]) => {\n if (value !== null && value !== undefined && value !== '') {\n queryParams.set(key, String(value));\n }\n });\n }\n \n const url = `${processedEndpoint}${processedEndpoint.includes('?') ? '&' : '?'}${queryParams.toString()}`;\n \n return this.apiService.fetchData(url).pipe(\n map((response: ApiResponseModel) => {\n if (!response?.data) return [];\n \n if (Array.isArray(response.data)) {\n return response.data as T[];\n }\n \n if (responseKey && typeof response.data === 'object' && responseKey in response.data) {\n const items = response.data[responseKey];\n return Array.isArray(items) ? items as T[] : [];\n }\n \n if (response.data.data && Array.isArray(response.data.data)) {\n return response.data.data as T[];\n }\n \n return [];\n })\n );\n }\n\n getInitialItems<T extends DataBaseModelInterface>(endpoint: string, responseKey?: string): Observable<T[]> {\n const processedEndpoint = this.processEndpoint(endpoint);\n return this.apiService.fetchData(processedEndpoint).pipe(\n map((response: ApiResponseModel) => {\n if (!response?.data) return [];\n \n if (Array.isArray(response.data)) {\n return response.data as T[];\n }\n \n if (responseKey && typeof response.data === 'object' && responseKey in response.data) {\n const items = response.data[responseKey];\n return Array.isArray(items) ? items as T[] : [];\n }\n \n if (response.data.data && Array.isArray(response.data.data)) {\n return response.data.data as T[];\n }\n \n return [];\n })\n );\n }\n\n private processEndpoint(template: string): string {\n if (!template.includes(':id')) {\n return template;\n }\n\n let companyId: string | null = null;\n try {\n const startData = JSON.parse(sessionStorage.getItem('startData') || '{}');\n companyId = startData.company_id || null;\n } catch (_) {}\n\n return template.replace(':id', companyId || '');\n }\n} ","import { Injectable, signal, computed } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoaderService {\n private loadingRequests = signal<Map<string, number>>(new Map());\n private activeLoaders = new BehaviorSubject<number>(0);\n public isLoading$ = this.activeLoaders.asObservable();\n\n isLoading = computed(() => this.loadingRequests().size > 0);\n\n showLoader(requestId: string = 'global'): void {\n \n this.loadingRequests.update(requests => {\n const currentCount = requests.get(requestId) || 0;\n requests.set(requestId, currentCount + 1);\n return new Map(requests);\n });\n \n this.activeLoaders.next(this.activeLoaders.value + 1);\n }\n\n hideLoader(requestId: string = 'global'): void {\n let shouldDecrement = false;\n \n this.loadingRequests.update(requests => {\n const currentCount = requests.get(requestId) || 0;\n if (currentCount > 0) {\n shouldDecrement = true;\n if (currentCount === 1) {\n requests.delete(requestId);\n } else {\n requests.set(requestId, currentCount - 1);\n }\n }\n return new Map(requests);\n });\n\n if (shouldDecrement && this.activeLoaders.value > 0) {\n this.activeLoaders.next(this.activeLoaders.value - 1);\n }\n }\n\n clear(): void {\n this.loadingRequests.set(new Map());\n this.activeLoaders.next(0);\n }\n\n getState(): { activeLoaders: number; requests: Record<string, number> } {\n return {\n activeLoaders: this.activeLoaders.value,\n requests: Object.fromEntries(this.loadingRequests())\n };\n }\n}","import { Component, computed, OnInit, OnDestroy, inject, input, ViewChild, signal, AfterViewInit, effect, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { NgSelectModule, NgSelectComponent } from '@ng-select/ng-select';\nimport { Subject, debounceTime, distinctUntilChanged, switchMap, takeUntil, tap, of, map, finalize, throttleTime, catchError } from 'rxjs';\nimport { SelectServerSideConfig } from '../../../../interfaces/field-configs/select-server-side.config.interface';\nimport { ServerSelectService } from './services/server-select.service';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { LoaderService } from '../../../loader/services/loader.service';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n \ninterface SelectItem extends DataBaseModelInterface {\n [key: string]: any;\n}\n \n@Component({\n selector: 'core-server-select-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './server-select-field.component.html',\n styleUrls: ['./server-select-field.component.scss']\n})\nexport class ServerSelectFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('ngSelect') ngSelect!: NgSelectComponent;\n \n override field = input.required<SelectServerSideConfig<T>>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n \n private serverSelectService = inject(ServerSelectService);\n private loaderService = inject(LoaderService);\n private destroy$ = new Subject<void>();\n private initialized = false;\n private isEvaluatingDynamicOptions = false;\n private lastRowDataHash: string | null = null;\n \n constructor() {\n super();\n \n effect(() => {\n const rowData = this.rowData();\n const field = this.field();\n \n if (rowData && field?.dynamicOptions && this.initialized && !this.isEvaluatingDynamicOptions) {\n const currentHash = JSON.stringify(rowData);\n if (currentHash !== this.lastRowDataHash) {\n this.lastRowDataHash = currentHash;\n this.throttledEvaluateDynamicOptions();\n }\n }\n });\n }\n \n private itemsSignal = signal<SelectItem[]>([]);\n items = computed(() => this.itemsSignal());\n \n private isLoadingSignal = signal<boolean>(false);\n isLoading = computed(() => this.isLoadingSignal());\n \n private hasSearchedSignal = signal<boolean>(false);\n hasSearched = computed(() => this.hasSearchedSignal());\n \n private lastSearchResultsSignal = signal<SelectItem[]>([]);\n lastSearchResults = computed(() => this.lastSearchResultsSignal());\n \n searchInput$ = new Subject<string>();\n private dynamicOptionsThrottle$ = new Subject<void>();\n \n computedValue = computed(() => {\n const value = this.value();\n if (!value) return null;\n return this.field().multiple && !Array.isArray(value) ? (value ? [value] : []) : value;\n });\n \n isSearchable = computed(() => {\n return this.mode() !== 'view' && !this.evaluateReadonly();\n });\n \n compareWith = (item: SelectItem | null, selected: any): boolean => {\n if (!item || !selected) return false;\n \n const bindValue = this.field().bindValue ?? 'id';\n const itemValue = item[bindValue];\n const selectedValue = typeof selected === 'object' ? selected[bindValue] : selected;\n \n return itemValue === selectedValue;\n };\n \n getDisplayLabel = (item: SelectItem): string => {\n if (!item) return '';\n \n const fieldConfig = this.field();\n \n if (fieldConfig.labelFormatter) {\n const result = fieldConfig.labelFormatter(item);\n return result ? result.toString().trim() : '';\n }\n \n if (fieldConfig.labelTemplate) {\n let label = fieldConfig.labelTemplate;\n Object.keys(item).forEach(key => {\n const placeholder = `{${key}}`;\n if (label.includes(placeholder)) {\n const value = item[key] || '';\n label = label.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value.toString().trim());\n }\n });\n return label.trim();\n }\n \n if (fieldConfig.labelKeys && fieldConfig.labelKeys.length > 0) {\n const separator = fieldConfig.labelSeparator ?? ' ';\n const result = fieldConfig.labelKeys\n .map(key => item[key] || '')\n .filter(value => value.toString().trim().length > 0)\n .join(separator);\n return result.trim();\n }\n \n const bindLabel = fieldConfig.bindLabel ?? 'name';\n const result = item[bindLabel] || item.toString();\n return result ? result.toString().trim() : '';\n };\n \n private throttledEvaluateDynamicOptions = (): void => {\n this.dynamicOptionsThrottle$.next();\n };\n \n override ngOnInit() {\n super.ngOnInit();\n const currentInitialValue = this.formControl().value;\n if (!this.field().multiple && typeof currentInitialValue === 'string' && currentInitialValue.trim() === '') {\n this.formControl().setValue(null, { emitEvent: false });\n }\n \n if (this.mode() === 'view' || this.evaluateReadonly()) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n \n this.dynamicOptionsThrottle$.pipe(\n throttleTime(300),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.evaluateDynamicOptions();\n });\n \n this.initializeWithOptions();\n this.initializeWithPreloadedOptions();\n this.initializeWithExistingValues();\n \n this.formControl().valueChanges.pipe(\n debounceTime(100),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(value => {\n if (!this.initialized && value) {\n this.initialized = true;\n this.updateItemsWithValue(value);\n }\n });\n \n this.searchInput$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => {\n this.isLoadingSignal.set(true);\n this.hasSearchedSignal.set(true);\n }),\n switchMap(term => {\n const endpointConfig = this.field().endpoint;\n const endpoint = typeof endpointConfig === 'function' ? endpointConfig(this.getCurrentRowData() as T) : endpointConfig;\n const minSearchLength = this.field().minSearchLength ?? 2;\n \n if (!endpoint || !term) {\n this.isLoadingSignal.set(false);\n return of([]);\n }\n \n if (term.length < minSearchLength) {\n this.isLoadingSignal.set(false);\n return of(this.getSelectedItemsOnly());\n }\n \n const searchParam = this.field().searchParam ?? 'search';\n \n let additionalParams: { [key: string]: any } | undefined;\n const fieldConfig = this.field();\n const currentFormValue = this.formValue();\n if (fieldConfig.additionalParams && currentFormValue) {\n try {\n additionalParams = fieldConfig.additionalParams(currentFormValue);\n } catch (error) {\n console.warn('Error evaluating additionalParams:', error);\n additionalParams = undefined;\n }\n }\n \n return this.serverSelectService.search<SelectItem>(endpoint, term, searchParam, this.field().responseKey, additionalParams).pipe(\n map(items => {\n return this.mergeWithSelectedItems(items || []);\n }),\n catchError(error => {\n console.error('Server select search error:', error);\n return of(this.getSelectedItemsOnly());\n }),\n finalize(() => this.isLoadingSignal.set(false))\n );\n }),\n takeUntil(this.destroy$)\n ).subscribe({\n next: (items) => {\n const mergedItems = this.mergeWithSelectedItems(items || []);\n this.updateItemsIfDifferent(mergedItems);\n \n if (items && items.length > 0) {\n this.lastSearchResultsSignal.set(items);\n }\n },\n error: (error) => {\n console.error('Server select search error:', error);\n this.isLoadingSignal.set(false);\n this.hasSearchedSignal.set(false);\n }\n });\n }\n \n private initializeWithOptions(): void {\n const options = this.field().options;\n if (options && options.length > 0) {\n const items = options.map(option => ({\n [this.field().bindValue ?? 'id']: option.value,\n [this.field().bindLabel ?? 'name']: option.label,\n ...option\n }));\n this.setValidOptions(items);\n this.initialized = true;\n }\n }\n \n private getCurrentRowData(): T | null {\n const rowData = this.rowData();\n return rowData;\n }\n \n private initializeWithPreloadedOptions(): void {\n const preloadedOptions = this.field().preloadedOptions;\n if (preloadedOptions && preloadedOptions.length > 0 && this.hasValue()) {\n this.setValidOptions(preloadedOptions);\n this.initialized = true;\n }\n }\n \n private initializeWithExistingValues(): void {\n const initialValue = this.formControl().value;\n if (initialValue && this.hasValue()) {\n this.initialized = true;\n this.updateItemsWithValue(initialValue);\n }\n }\n \n private hasValue(): boolean {\n const value = this.formControl().value;\n if (!value) return false;\n \n if (Array.isArray(value)) {\n return value.length > 0;\n }\n \n if (typeof value === 'string') {\n return value.trim().length > 0;\n }\n \n return true;\n }\n \n private updateItemsWithValue(value: any): void {\n if (!value) return;\n \n const isMultiple = this.field().multiple;\n \n if (isMultiple) {\n if (Array.isArray(value)) {\n if (value.length > 0 && typeof value[0] === 'object') {\n this.setValidOptions(value);\n }\n } else if (typeof value === 'object') {\n this.setValidOptions([value]);\n }\n } else {\n if (typeof value === 'object') {\n this.setValidOptions([value]);\n }\n }\n }\n \n private setValidOptions(options: any[]): void {\n const validOptions = options.filter(option => {\n if (!option) return false;\n \n if (typeof option === 'object') {\n const bindLabel = this.field().bindLabel ?? 'name';\n const labelValue = option[bindLabel];\n return labelValue && labelValue.toString().trim().length > 0;\n }\n \n return option.toString().trim().length > 0;\n });\n \n if (validOptions.length > 0) {\n this.updateItemsIfDifferent(validOptions);\n }\n }\n \n private updateItemsIfDifferent(newItems: SelectItem[]): void {\n const currentItems = this.items();\n const bindValue = this.field().bindValue ?? 'id';\n \n if (currentItems.length !== newItems.length) {\n this.itemsSignal.set(newItems);\n return;\n }\n \n const isDifferent = newItems.some(newItem => {\n return !currentItems.some(currentItem =>\n currentItem[bindValue] === newItem[bindValue]\n );\n });\n \n if (isDifferent) {\n this.itemsSignal.set(newItems);\n }\n }\n \n private mergeWithSelectedItems(newItems: SelectItem[]): SelectItem[] {\n const bindValue = this.field().bindValue ?? 'id';\n const result: SelectItem[] = [];\n const currentValue = this.formControl().value;\n \n result.push(...newItems);\n \n if (currentValue) {\n const selectedValues = Array.isArray(currentValue) ? currentValue : [currentValue];\n \n selectedValues.forEach(selectedValue => {\n const selectedId = typeof selectedValue === 'object' ? selectedValue[bindValue] : selectedValue;\n \n const exists = result.some(item => item[bindValue] === selectedId);\n \n if (!exists && selectedValue && typeof selectedValue === 'object') {\n result.push(selectedValue);\n }\n });\n }\n \n const uniqueItems: SelectItem[] = [];\n const seenIds = new Set();\n \n result.forEach(item => {\n const itemId = item[bindValue];\n if (!seenIds.has(itemId)) {\n seenIds.add(itemId);\n uniqueItems.push(item);\n }\n });\n \n return uniqueItems;\n }\n \n private getSelectedItemsOnly(): SelectItem[] {\n const currentValue = this.formControl().value;\n const bindValue = this.field().bindValue ?? 'id';\n \n if (!currentValue) {\n return [];\n }\n \n const selectedValues = Array.isArray(currentValue) ? currentValue : [currentValue];\n const result: SelectItem[] = [];\n \n selectedValues.forEach(selectedValue => {\n if (selectedValue && typeof selectedValue === 'object') {\n result.push(selectedValue);\n } else if (selectedValue) {\n const existingItem = this.items().find(item => item[bindValue] === selectedValue);\n if (existingItem) {\n result.push(existingItem);\n }\n }\n });\n \n return result;\n }\n \n ngAfterViewInit(): void {\n setTimeout(() => {\n if (!this.initialized) {\n this.initializeWithExistingValues();\n }\n if (this.initialized && this.field().dynamicOptions) {\n this.throttledEvaluateDynamicOptions();\n }\n }, 100);\n }\n \n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n \n override onValueChange(newValue: any): void {\n if (newValue) {\n const itemToAdd = Array.isArray(newValue) ? newValue : [newValue];\n const currentItems = this.items();\n const updatedItems = [...currentItems];\n let hasChanges = false;\n \n itemToAdd.forEach(item => {\n const exists = updatedItems.some(existing =>\n this.compareWith(existing, item)\n );\n if (!exists) {\n updatedItems.push(item);\n hasChanges = true;\n }\n });\n \n if (hasChanges) {\n this.itemsSignal.set(updatedItems);\n }\n \n if (this.ngSelect) {\n this.ngSelect.searchTerm = '';\n }\n }\n \n const fieldConfig = this.field();\n if (fieldConfig.onSelectionChange && this.formValue()) {\n try {\n const selectedItem = this.findSelectedItem(newValue);\n const currentFormValue = { ...this.formValue() };\n currentFormValue[this.field().key as keyof T] = newValue;\n \n const newFormValue = fieldConfig.onSelectionChange(selectedItem, currentFormValue);\n \n this.selectionChange.emit({\n selectedItem,\n newFormValue\n });\n } catch (error) {\n console.error('Error in ServerSelect onSelectionChange:', error);\n }\n }\n \n super.onValueChange(newValue);\n }\n \n private findSelectedItem(value: any): any {\n if (!value) return null;\n \n const currentItems = this.items();\n const bindValue = this.field().bindValue || 'id';\n \n if (this.field().multiple && Array.isArray(value)) {\n return currentItems.filter(item => {\n const itemValue = bindValue === 'id' ? item['id'] : (item as any)[bindValue];\n return value.includes(itemValue);\n });\n } else {\n return currentItems.find(item => {\n const itemValue = bindValue === 'id' ? item['id'] : (item as any)[bindValue];\n return itemValue === value;\n }) || null;\n }\n }\n \n isOptionSelected(optionValue: string): boolean {\n const currentValue = this.computedValue();\n if (this.field().multiple && Array.isArray(currentValue)) {\n return currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n \n override onBlurInput(): void {\n if (!this.hasSearched()) {\n this.itemsSignal.set([]);\n }\n this.onBlur();\n }\n \n onClear() {\n this.itemsSignal.set([]);\n this.hasSearchedSignal.set(false);\n this.isLoadingSignal.set(false);\n \n if (this.ngSelect) {\n this.ngSelect.searchTerm = '';\n }\n super.onValueChange(null);\n }\n \n onSearch(event: { term: string; items: any[] }) {\n const minSearchLength = this.field().minSearchLength ?? 2;\n \n if (!event.term) {\n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.itemsSignal.set(mergedItems);\n this.hasSearchedSignal.set(true);\n } else {\n const selectedItems = this.getSelectedItemsOnly();\n this.itemsSignal.set(selectedItems);\n this.hasSearchedSignal.set(false);\n }\n return;\n }\n \n if (event.term.length < minSearchLength) {\n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.itemsSignal.set(mergedItems);\n this.hasSearchedSignal.set(true);\n } else {\n const selectedItems = this.getSelectedItemsOnly();\n this.itemsSignal.set(selectedItems);\n this.hasSearchedSignal.set(false);\n }\n this.isLoadingSignal.set(false);\n return;\n }\n \n this.searchInput$.next(event.term);\n }\n \n onFocus(): void {\n if (this.initialized && this.field().dynamicOptions && !this.isEvaluatingDynamicOptions) {\n this.throttledEvaluateDynamicOptions();\n }\n \n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.updateItemsIfDifferent(mergedItems);\n this.hasSearchedSignal.set(true);\n return;\n }\n \n if (this.items().length > 0) {\n return;\n }\n \n if (this.items().length === 0) {\n const options = this.field().options;\n if (options && options.length > 0) {\n this.initializeWithOptions();\n return;\n }\n \n if (this.hasValue()) {\n this.initializeWithOptions();\n \n if (this.items().length === 0) {\n this.initializeWithPreloadedOptions();\n }\n \n if (this.items().length === 0) {\n this.initializeWithExistingValues();\n }\n }\n \n if (this.items().length === 0 && !this.hasSearched()) {\n this.hasSearchedSignal.set(false);\n }\n }\n }\n \n onOpen(): void {\n const hasSearchResults = this.lastSearchResults().length > 0;\n const hasCurrentItems = this.items().length > 0;\n const hasValue = this.hasValue();\n \n if (this.lastSearchResults().length > 0) {\n const mergedItems = this.mergeWithSelectedItems(this.lastSearchResults());\n this.updateItemsIfDifferent(mergedItems);\n this.hasSearchedSignal.set(true);\n return;\n }\n \n if (this.items().length === 0 && this.hasValue()) {\n this.initializeWithExistingValues();\n return;\n }\n \n if (!hasSearchResults && !hasCurrentItems && !hasValue) {\n this.hasSearchedSignal.set(false);\n }\n }\n \n onBeforeOpen(): boolean {\n return true;\n }\n \n onFieldClick(): void {\n if (this.ngSelect) {\n this.ngSelect.focus();\n }\n }\n \n onClose(): void {\n if (this.ngSelect) {\n this.ngSelect.searchTerm = '';\n }\n }\n \n private evaluateDynamicOptions(): void {\n const dynamicOptions = this.field().dynamicOptions;\n \n if (dynamicOptions && !this.isEvaluatingDynamicOptions) {\n this.isEvaluatingDynamicOptions = true;\n const currentData = this.getCurrentRowData();\n \n if (currentData) {\n try {\n const optionItems = dynamicOptions(currentData);\n if (optionItems && Array.isArray(optionItems) && optionItems.length > 0) {\n const items = optionItems.map(option => ({\n [this.field().bindValue ?? 'id']: option.value,\n [this.field().bindLabel ?? 'name']: option.label,\n ...option.data\n }));\n \n const currentItems = this.items();\n const bindValue = this.field().bindValue ?? 'id';\n \n const filteredCurrentItems = currentItems.filter(currentItem => {\n return !items.some(newItem =>\n currentItem[bindValue] === newItem[bindValue]\n );\n });\n \n const combinedItems = [...filteredCurrentItems, ...items];\n this.updateItemsIfDifferent(combinedItems);\n }\n } catch (error) {\n console.error('Error evaluating dynamic options:', error);\n } finally {\n this.isEvaluatingDynamicOptions = false;\n }\n } else {\n this.isEvaluatingDynamicOptions = false;\n }\n }\n }\n}\n ","<!-- ! Solcre: Deberia ser el mismo componente que el select-field.component -->\n<!-- Todo: Ng select + c-entry-select -->\n \n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n \n <!-- ! Solcre: El .c-entry-select deberia ser un componente en sí mismo -->\n <!-- ! Solcre: Sacar el .is-placeholder en el onChange -->\n \n <span class=\"c-entry-input c-entry-input--ng-select\">\n <!-- <div class=\"c-entry-select\"> -->\n \n <ng-select #ngSelect\n [items]=\"items()\"\n [bindValue]=\"field().bindValue ?? 'id'\"\n [multiple]=\"field().multiple\"\n [formControl]=\"formControl()\"\n [compareWith]=\"compareWith\"\n [class.has-error]=\"hasError()\"\n [readonly]=\"field().readonly\"\n [clearable]=\"!!value()\"\n [searchable]=\"isSearchable()\"\n [loading]=\"isLoading()\"\n [typeahead]=\"searchInput$\"\n (blur)=\"onBlurInput()\"\n (click)=\"onFieldClick()\"\n (beforeOpen)=\"onBeforeOpen()\"\n (open)=\"onOpen()\"\n (close)=\"onClose()\"\n [placeholder]=\"(field().placeholder ?? 'commons.select.placeholder') | translate\"\n [virtualScroll]=\"true\"\n (clear)=\"onClear()\"\n (search)=\"onSearch($event)\"\n [clearable]=\"true\"\n >\n <!-- Estilos para cuando se clickea el select para buscar (si es conveniente dejarlo vacío) -->\n <ng-template ng-typetosearch-tmp></ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <!-- Estilos de opciones del select-->\n {{ getDisplayLabel(item) }}\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n <!-- Estilos que aparecen en la etiqueta del item seleccionado -->\n {{ getDisplayLabel(item) }}\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <span class=\"ng-select-loading\">{{ 'commons.loading' | translate }}</span>\n </ng-template>\n <ng-template ng-notfound-tmp>\n <ng-container *ngIf=\"isLoading(); else noData\">\n <span class=\"ng-select-loading\">{{ 'commons.loading' | translate }}</span>\n </ng-container>\n <ng-template #noData>\n <ng-container *ngIf=\"hasSearched(); else startTyping\">\n <span class=\"ng-select-notfound\">{{ 'modal.field.serverSelect.noResults' | translate }}</span>\n </ng-container>\n <ng-template #startTyping>\n <span class=\"ng-select-start-typing\">{{ 'modal.field.serverSelect.typeToSearch' | translate }}</span>\n </ng-template>\n </ng-template>\n </ng-template>\n </ng-select>\n \n <!-- <span class=\"c-entry-select__arrow icon-arrow-down\"></span> -->\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span> <!-- .c-entry-select || .c-entry-input -->\n <core-field-errors [errors]=\"errors()\" />\n</div> <!-- .c-entry-item -->","import { Component, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { SwitchModalFieldConfig } from '../../../../interfaces/field-configs/switch-field-config.interface';\nimport { FormControl } from '@angular/forms';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-switch-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './switch-field.component.html',\n styleUrl: './switch-field.component.scss'\n})\nexport class SwitchFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n isDisabled = computed(() => this.mode() === 'view' || this.evaluateReadonly());\n \n constructor() {\n super();\n \n effect(() => {\n if (this.formControl()) {\n const currentValue = this.getCurrentValue();\n const formValue = Boolean(this.formControl().value);\n \n if (currentValue !== formValue) {\n this.formControl().setValue(currentValue as any, { emitEvent: false });\n }\n \n const shouldBeDisabled = this.isDisabled();\n if (shouldBeDisabled && this.formControl().enabled) {\n this.formControl().disable({ emitEvent: false });\n } else if (!shouldBeDisabled && this.formControl().disabled) {\n this.formControl().enable({ emitEvent: false });\n }\n }\n });\n }\n \n labelOff = computed(() => {\n const switchField = this.field() as SwitchModalFieldConfig<T>;\n return switchField.switchConfig?.labelOff || 'No';\n });\n\n labelOn = computed(() => {\n const switchField = this.field() as SwitchModalFieldConfig<T>;\n return switchField.switchConfig?.labelOn || 'Sí';\n });\n\n private getCurrentValue(): boolean {\n if (this.value() !== undefined && this.value() !== null) {\n return Boolean(this.value());\n } else if (this.field().defaultValue !== undefined && this.field().defaultValue !== null) {\n return Boolean(this.field().defaultValue);\n } else {\n return false;\n }\n }\n\n protected override initializeFormControl() {\n const modeConfig = this.field().modes?.[this.mode()];\n const validators = modeConfig?.validators ?? this.field().validators ?? [];\n \n const initialValue = this.getCurrentValue();\n const shouldBeDisabled = this.isDisabled();\n \n this.formControl.set(new FormControl<any>(\n { value: initialValue, disabled: shouldBeDisabled }, \n validators\n ));\n \n this.formControl().valueChanges.subscribe(newValue => {\n if(newValue !== this.value()) {\n this.onValueChange(newValue);\n }\n });\n }\n\n override onValueChange(newValue: any): void {\n super.onValueChange(newValue);\n }\n override onBlurInput(): void {\n this.onBlur();\n }\n} ","<!-- <div class=\"c-entry-toggle-holder\" [class.is-invalid]=\"hasError()\"> -->\n<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\"\n *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!-- \n (?)Solcre: El .c-entry-toggle debería ser un componente por si solo\n -->\n <label class=\"c-entry-toggle\"\n [class.is-invalid]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\">\n \n <!-- \n ✅ onBlurInput(): Maneja el evento blur para:\n - Validar el campo al perder el foco\n - Actualizar el estado del formulario \n - Disparar eventos de cambio si es necesario\n -->\n <input\n type=\"checkbox\"\n [id]=\"field().key.toString()\"\n [name]=\"field().key.toString()\"\n [formControl]=\"formControl()\"\n [attr.aria-label]=\"(field().label || field().key.toString()) | translate\"\n (blur)=\"onBlurInput()\"\n />\n <span class=\"c-entry-toggle__text\">{{ labelOff() | translate }}</span>\n <span class=\"c-entry-toggle__switch\"></span>\n <span class=\"c-entry-toggle__text\">{{ labelOn() | translate }}</span>\n </label>\n <core-field-errors [errors]=\"errors()\" />\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { effect } from '@angular/core';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-text-area-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './text-area-field.component.html',\n})\nexport class TextAreaFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n isDisabled(): boolean {\n return this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n }\n\n override onBlurInput(): void {\n this.onBlur();\n }\n}","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!-- ! Solcre: Falta un estado disabled -->\n <textarea class=\"c-entry-input\"\n rows=\"4\"\n [class.is-invalid]=\"hasError()\"\n [formControl]=\"formControl()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n (blur)=\"onBlurInput()\">\n </textarea>\n <core-field-errors [errors]=\"errors()\" />\n</label>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseFieldComponent } from '../base/base-field.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { effect } from '@angular/core';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-text-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, FieldErrorsComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './text-field.component.html',\n})\nexport class TextFieldComponent<T extends DataBaseModelInterface> extends BaseFieldComponent<T> {\n constructor() {\n super();\n \n effect(() => {\n const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n const control = this.formControl();\n \n if (shouldDisable && control.enabled) {\n control.disable();\n } else if (!shouldDisable && control.disabled) {\n control.enable();\n }\n });\n }\n\n isDisabled(): boolean {\n return this.mode() === ModalMode.VIEW || this.evaluateReadonly();\n }\n\n getInputType(): string {\n const fieldConfig = this.field() as any;\n return fieldConfig.inputType || fieldConfig.type || 'text';\n }\n\n getCharsWidth(): string | null {\n const fieldConfig = this.field() as any;\n const chars = fieldConfig.chars || fieldConfig.maxLength;\n return chars ? chars.toString() : null;\n }\n\n override onBlurInput(event?: FocusEvent): void {\n this.onBlur(event);\n }\n\n handleEnterKey(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n this.onEnterInput(keyboardEvent);\n }\n}","<label class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\">\n <span class=\"c-entry-text\" *ngIf=\"field().label\">{{ field().label | translate }}</span>\n\n <!-- \n ! Solcre: Detalles del input implementados:\n ✅ Estado disabled agregado - Implementado isDisabled()\n ✅ Type dinámico implementado - Acepta text, email, url, tel, etc.\n ✅ style=\"--chars: XXX\" implementado - Ancho adaptable según caracteres\n ✅ PrefixIcon agregado - Soporte para iconos de prefijo\n -->\n\n <span class=\"c-entry-input\"\n [style.--chars]=\"getCharsWidth()\"\n [class.is-readonly]=\"isReadonly() || field().blocked\"\n [class.is-disabled]=\"isDisabled()\">\n @if (field().prefixIcon) {\n <span class=\"c-entry-input__addon\" [class]=\"field().prefixIcon | coreIconCompat\"></span>\n }\n <input \n [type]=\"getInputType()\"\n [class.has-error]=\"hasError()\"\n [class.is-disabled]=\"isDisabled()\"\n [formControl]=\"formControl()\"\n [placeholder]=\"(field().placeholder ?? '') | translate\"\n (blur)=\"onBlurInput($event)\"\n (keydown.enter)=\"handleEnterKey($event)\"\n />\n <span *ngIf=\"field().blocked\" class=\"c-entry-input__addon icon-locked-thin\"></span>\n </span>\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n</label>\n","import { Component, computed, input, output, signal, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { TimeInterval } from '../../../../enums/global/TimeInterval.enum';\nimport { TimeFieldConfig, TimeOption } from '../../../../interfaces/field-configs/time-field.config.interface';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\nexport interface TimeFieldValue {\n startTime: string | null;\n endTime?: string | null;\n}\n\n@Component({\n selector: 'core-time-field',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, ReactiveFormsModule, NgSelectModule, FieldErrorsComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './time-field.component.html',\n})\nexport class TimeFieldComponent<T extends DataBaseModelInterface> {\n field = input.required<ModalFieldConfig<T> & { config?: TimeFieldConfig }>();\n value = input<TimeFieldValue | string | null>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<TimeFieldValue | string | null>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n ModalMode = ModalMode;\n\n selectedStartTime = signal<string | null>(null);\n selectedEndTime = signal<string | null>(null);\n\n config = computed(() => this.field().config || {} as TimeFieldConfig);\n\n availableOptions = computed(() => {\n const baseOptions = this.config().options || [];\n const interval = this.config().timeInterval;\n \n if (interval && baseOptions.length === 0) {\n return this.generateTimeOptions(interval);\n }\n \n return baseOptions;\n });\n\n startTimeOptions = computed(() => {\n return this.availableOptions().map(option => ({\n ...option,\n disabled: option.used || false\n }));\n });\n\n endTimeOptions = computed(() => {\n const startTime = this.selectedStartTime();\n const options = this.availableOptions();\n \n return options.map(option => ({\n ...option,\n disabled: option.used || (startTime ? option.value === startTime : false)\n }));\n });\n\n includeEndTime = computed(() => this.config().includeEndTime || false);\n\n startTimeLabel = computed(() => this.config().startTimeLabel || 'time-field.start-time');\n\n endTimeLabel = computed(() => this.config().endTimeLabel || 'time-field.end-time');\n\n isDisabled = computed(() => {\n if (this.mode() === ModalMode.FILTER) return false;\n if (this.mode() === ModalMode.VIEW) return true;\n return this.evaluateReadonly();\n });\n\n hasError = computed(() => {\n return this.errors().length > 0;\n });\n\n hasRequiredValidators = computed(() => {\n const validators = this.field().validators || [];\n return validators.some(validator => validator === Validators.required);\n });\n\n private evaluateReadonly(): boolean {\n const readonly = this.field().readonly;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.formValue());\n } catch {\n return false;\n }\n }\n return readonly || false;\n }\n\n constructor() {\n effect(() => {\n const newValue = this.value();\n this.initializeFromValue(newValue);\n });\n }\n\n private initializeFromValue(value: TimeFieldValue | string | null): void {\n if (!value) {\n this.selectedStartTime.set(null);\n this.selectedEndTime.set(null);\n return;\n }\n\n if (typeof value === 'string') {\n this.selectedStartTime.set(value);\n this.selectedEndTime.set(null);\n } else if (typeof value === 'object' && value !== null) {\n this.selectedStartTime.set(value.startTime);\n this.selectedEndTime.set(value.endTime || null);\n }\n }\n\n private generateTimeOptions(interval: TimeInterval): TimeOption[] {\n const options: TimeOption[] = [];\n let minutes = 0;\n const totalMinutes = 24 * 60;\n\n let stepMinutes: number;\n switch (interval) {\n case TimeInterval.MINUTES_15:\n stepMinutes = 15;\n break;\n case TimeInterval.MINUTES_30:\n stepMinutes = 30;\n break;\n case TimeInterval.HOURLY:\n stepMinutes = 60;\n break;\n default:\n stepMinutes = 60;\n }\n\n while (minutes < totalMinutes) {\n const hours = Math.floor(minutes / 60);\n const mins = minutes % 60;\n const timeValue = `${hours.toString().padStart(2, '0')}:${mins.toString().padStart(2, '0')}`;\n \n options.push({\n value: timeValue,\n label: timeValue,\n used: false\n });\n\n minutes += stepMinutes;\n }\n\n return options;\n }\n\n onStartTimeChange(value: string | null): void {\n this.selectedStartTime.set(value);\n \n const currentEndTime = this.selectedEndTime();\n if (value && currentEndTime && currentEndTime === value) {\n this.selectedEndTime.set(null);\n }\n \n this.emitValue();\n }\n\n onEndTimeChange(value: string | null): void {\n this.selectedEndTime.set(value);\n this.emitValue();\n }\n\n private emitValue(): void {\n const startTime = this.selectedStartTime();\n const endTime = this.selectedEndTime();\n\n if (this.includeEndTime()) {\n const timeFieldValue: TimeFieldValue = {\n startTime,\n endTime\n };\n this.valueChange.emit(timeFieldValue);\n } else {\n this.valueChange.emit(startTime);\n }\n }\n\n onStartTimeBlur(): void {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n\n onEndTimeBlur(): void {\n this.onBlurEvent.emit(this.field().key as keyof T);\n }\n}\n","<div class=\"c-entry-item\" [class.c-entry-item--inline]=\"field().inline\" [class.time-field-range]=\"includeEndTime()\">\n <!-- Start Time Field -->\n <div class=\"time-field-container\">\n <label class=\"c-entry-text\" [for]=\"field().key.toString() + '-start'\">\n {{ startTimeLabel() | translate }}\n @if (hasRequiredValidators()) {\n <span class=\"c-required\">*</span>\n }\n </label>\n \n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [id]=\"field().key.toString() + '-start'\"\n [items]=\"startTimeOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [clearable]=\"!hasRequiredValidators()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"selectedStartTime()\"\n (ngModelChange)=\"onStartTimeChange($event)\"\n (blur)=\"onStartTimeBlur()\"\n [placeholder]=\"'time-field.select-time' | translate\"\n [searchable]=\"false\">\n \n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n @if (item.used) {\n <span class=\"used-indicator\"> ({{ 'time-field.used' | translate }})</span>\n }\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n </div>\n\n <!-- End Time Field (only if includeEndTime is true) -->\n @if (includeEndTime()) {\n <div class=\"time-field-container time-field-end\">\n <label class=\"c-entry-text\" [for]=\"field().key.toString() + '-end'\">\n {{ endTimeLabel() | translate }}\n @if (hasRequiredValidators()) {\n <span class=\"c-required\">*</span>\n }\n </label>\n \n <span class=\"c-entry-input c-entry-input--ng-select\" [class.is-invalid]=\"hasError()\">\n <ng-select\n [id]=\"field().key.toString() + '-end'\"\n [items]=\"endTimeOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [clearable]=\"true\"\n [disabled]=\"isDisabled() || !selectedStartTime()\"\n [ngModel]=\"selectedEndTime()\"\n (ngModelChange)=\"onEndTimeChange($event)\"\n (blur)=\"onEndTimeBlur()\"\n [placeholder]=\"'time-field.select-end-time' | translate\"\n [searchable]=\"false\">\n \n <ng-template ng-option-tmp let-item=\"item\">\n {{ item.label }}\n @if (item.used) {\n <span class=\"used-indicator\"> ({{ 'time-field.used' | translate }})</span>\n }\n @if (selectedStartTime() && item.value === selectedStartTime()!) {\n <span class=\"unavailable-indicator\"> ({{ 'time-field.unavailable' | translate }})</span>\n }\n </ng-template>\n <ng-template ng-label-tmp let-item=\"item\">\n {{ item.label }}\n </ng-template>\n </ng-select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </span>\n </div>\n }\n\n <!-- Error Messages -->\n @if (hasError()) {\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n }\n</div>\n","import {\n Directive,\n ViewContainerRef,\n ComponentRef,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n output\n} from '@angular/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalMode } from '../enums/global/ModalMode.enum';\nimport { ModalFieldConfig } from '../interfaces/global/ModalFieldConfig.interface';\nimport { CheckboxModalFieldConfig } from '../interfaces/field-configs/checkbox-field-config.interface';\nimport { NumberModalFieldConfig } from '../interfaces/field-configs/number-field-config.interface';\nimport { SwitchModalFieldConfig } from '../interfaces/field-configs/switch-field-config.interface';\nimport { SelectServerSideConfig } from '../interfaces/field-configs/select-server-side.config.interface';\nimport { FilterConfig } from '../components/generic-table/components/filter-modal/interfaces/FilterConfig.interface';\nimport { SelectFieldConfig } from '../interfaces/field-configs/select-field-config.interface';\nimport { TimeFieldConfig } from '../interfaces/field-configs/time-field.config.interface';\nimport { \n CheckboxFieldComponent, \n DateFieldComponent, \n DatetimeFieldComponent, \n FileFieldComponent, \n NumberFieldComponent, \n PasswordFieldComponent, \n SelectFieldComponent, \n ServerSelectFieldComponent, \n SwitchFieldComponent, \n TextAreaFieldComponent, \n TextFieldComponent,\n TimeFieldComponent,\n SmartFieldComponent\n} from '../components';\n\n@Directive({\n selector: '[coreDynamicField]',\n standalone: true\n})\nexport class DynamicFieldDirective<T extends DataBaseModelInterface> implements OnChanges {\n private viewContainerRef = inject(ViewContainerRef);\n\n field = input.required<ModalFieldConfig<T> | CheckboxModalFieldConfig<T> | NumberModalFieldConfig<T> | SwitchModalFieldConfig<T> | SelectServerSideConfig<T> | SelectFieldConfig<T> | FilterConfig<T> | (ModalFieldConfig<T> & { config?: TimeFieldConfig })>();\n value = input.required<any>();\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<any>();\n onEnterEvent = output<any>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n\n private componentRef: ComponentRef<any> | null = null;\n\n private fieldComponents: Record<string, any> = {\n text: TextFieldComponent,\n textarea: TextAreaFieldComponent,\n number: NumberFieldComponent,\n checkbox: CheckboxFieldComponent,\n switch: SwitchFieldComponent,\n select: SelectFieldComponent,\n 'server-select': ServerSelectFieldComponent,\n date: DateFieldComponent,\n datetime: DatetimeFieldComponent,\n time: TimeFieldComponent,\n password: PasswordFieldComponent,\n file: FileFieldComponent,\n };\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['field']?.firstChange || this.shouldReloadComponent(changes)) {\n this.loadComponent();\n } else {\n this.updateComponentInputs();\n }\n }\n\n private shouldReloadComponent(changes: SimpleChanges): boolean {\n return changes['field'] && changes['field'].previousValue?.type !== changes['field'].currentValue?.type;\n }\n\n private updateComponentInputs(): void {\n if (this.componentRef) {\n this.componentRef.setInput('field', this.field());\n this.componentRef.setInput('value', this.value());\n this.componentRef.setInput('mode', this.mode());\n this.componentRef.setInput('errors', this.errors());\n this.componentRef.setInput('rowData', this.rowData());\n this.componentRef.setInput('formValue', this.formValue());\n this.componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n private loadComponent(): void {\n this.viewContainerRef.clear();\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n\n const fieldConfig = this.field();\n \n const hasMultiEntryConfig = fieldConfig && 'multiEntryConfig' in fieldConfig && \n (fieldConfig as any).multiEntryConfig?.allowMultipleEntries;\n \n let componentType: any;\n \n if (hasMultiEntryConfig) {\n componentType = SmartFieldComponent;\n } else {\n componentType = this.fieldComponents[fieldConfig.type];\n }\n \n if (!componentType) {\n return;\n }\n\n this.componentRef = this.viewContainerRef.createComponent(componentType);\n \n this.componentRef.setInput('field', this.field());\n this.componentRef.setInput('value', this.value());\n this.componentRef.setInput('mode', this.mode());\n this.componentRef.setInput('errors', this.errors());\n this.componentRef.setInput('rowData', this.rowData());\n this.componentRef.setInput('formValue', this.formValue());\n\n this.componentRef.instance.valueChange.subscribe((newValue: any) => {\n this.valueChange.emit(newValue);\n });\n\n this.componentRef.instance.onBlurEvent.subscribe((key: any) => {\n this.onBlurEvent.emit(key);\n });\n\n if (this.componentRef.instance.onEnterEvent) {\n this.componentRef.instance.onEnterEvent.subscribe((key: any) => {\n this.onEnterEvent.emit(key);\n });\n }\n\n if (this.componentRef.instance.selectionChange) {\n this.componentRef.instance.selectionChange.subscribe((event: { selectedItem: any; newFormValue: any }) => {\n this.selectionChange.emit(event);\n });\n }\n\n this.componentRef.changeDetectorRef.detectChanges();\n }\n}","export interface MultiEntryFieldConfig {\n allowMultipleEntries?: boolean;\n maxEntries?: number;\n minEntries?: number;\n outputFormat?: MultiEntryOutputFormat;\n customSeparator?: string;\n labels?: {\n add?: string;\n remove?: string;\n };\n format?: (entries: any[], formData: any) => any;\n}\n\nexport enum MultiEntryOutputFormat {\n ARRAY = 'array',\n COMMA_SEPARATED = 'comma_separated',\n CUSTOM_SEPARATOR = 'custom_separator',\n INDIVIDUAL = 'individual',\n CUSTOM_FORMAT = 'custom_format'\n}\n\nexport interface MultiEntryFieldValue {\n entries: any[];\n outputFormat: MultiEntryOutputFormat;\n separator?: string;\n}\n","import { Component, computed, effect, input, output, signal, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DynamicFieldDirective } from '../../../../directives/DynamicField.directive';\nimport { FieldErrorsComponent } from '../../field-errors/field-errors.component';\nimport { \n MultiEntryFieldConfig, \n MultiEntryOutputFormat, \n MultiEntryFieldValue \n} from '../../../../interfaces/field-configs/multi-entry-field.config.interface';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\nexport interface ExtendedModalFieldConfig<T> extends ModalFieldConfig<T> {\n multiEntryConfig?: MultiEntryFieldConfig;\n}\n\n@Component({\n selector: 'core-multi-entry-field',\n standalone: true,\n imports: [\n CommonModule, \n FormsModule, \n ReactiveFormsModule, \n TranslateModule, \n DynamicFieldDirective,\n FieldErrorsComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './multi-entry-field.component.html',\n styleUrls: ['./multi-entry-field.component.scss']\n})\nexport class MultiEntryFieldComponent<T extends DataBaseModelInterface> implements OnInit {\n field = input.required<ExtendedModalFieldConfig<T>>();\n value = input<any>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n\n ModalMode = ModalMode;\n\n entries = signal<any[]>([]);\n fieldValues = signal<any[]>([]);\n\n config = computed(() => this.field().multiEntryConfig || {} as MultiEntryFieldConfig);\n allowMultiple = computed(() => this.config().allowMultipleEntries || false);\n maxEntries = computed(() => this.config().maxEntries || 10);\n minEntries = computed(() => this.config().minEntries || 1);\n outputFormat = computed(() => this.config().outputFormat || MultiEntryOutputFormat.ARRAY);\n \n addLabel = computed(() => this.config().labels?.add || 'multi-entry.add-field');\n removeLabel = computed(() => this.config().labels?.remove || 'multi-entry.remove-field');\n\n canAddMore = computed(() => this.entries().length < this.maxEntries());\n canRemove = computed(() => this.entries().length > this.minEntries());\n isDisabled = computed(() => this.mode() === ModalMode.VIEW);\n\n constructor() {\n effect(() => {\n const inputValue = this.value();\n this.initializeEntries(inputValue);\n });\n\n effect(() => {\n const values = this.fieldValues();\n if (values.length > 0) {\n this.emitFormattedValue(values);\n }\n });\n }\n\n ngOnInit() {\n this.initializeEntries(this.value());\n }\n\n private initializeEntries(inputValue: any) {\n if (!inputValue) {\n const initialEntries = Array(this.minEntries()).fill(null).map((_, index) => ({\n id: this.generateEntryId(),\n value: null\n }));\n this.entries.set(initialEntries);\n this.fieldValues.set(Array(this.minEntries()).fill(null));\n return;\n }\n\n let parsedValues: any[] = [];\n \n if (Array.isArray(inputValue)) {\n parsedValues = inputValue;\n } else if (typeof inputValue === 'string') {\n const separator = this.config().customSeparator || ',';\n parsedValues = inputValue.split(separator).map(v => v.trim()).filter(v => v !== '');\n } else {\n parsedValues = [inputValue];\n }\n\n const newEntries = parsedValues.map((value, index) => ({\n id: this.generateEntryId(),\n value: value\n }));\n\n while (newEntries.length < this.minEntries()) {\n newEntries.push({\n id: this.generateEntryId(),\n value: null\n });\n }\n\n this.entries.set(newEntries);\n this.fieldValues.set(newEntries.map(entry => entry.value));\n }\n\n private generateEntryId(): string {\n return `entry_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n addEntry() {\n if (!this.canAddMore() || this.isDisabled()) return;\n\n const currentEntries = this.entries();\n const newEntry = {\n id: this.generateEntryId(),\n value: null\n };\n\n this.entries.set([...currentEntries, newEntry]);\n this.fieldValues.set([...this.fieldValues(), null]);\n }\n\n removeEntry(index: number) {\n if (!this.canRemove() || this.isDisabled()) return;\n\n const currentEntries = this.entries();\n const currentValues = this.fieldValues();\n\n if (index >= 0 && index < currentEntries.length) {\n const newEntries = currentEntries.filter((_, i) => i !== index);\n const newValues = currentValues.filter((_, i) => i !== index);\n\n this.entries.set(newEntries);\n this.fieldValues.set(newValues);\n }\n }\n\n onFieldValueChange(value: any, index: number) {\n const currentValues = [...this.fieldValues()];\n currentValues[index] = value;\n this.fieldValues.set(currentValues);\n\n const currentEntries = [...this.entries()];\n currentEntries[index].value = value;\n this.entries.set(currentEntries);\n }\n\n onFieldBlur(fieldKey: keyof T) {\n this.onBlurEvent.emit(fieldKey);\n }\n\n onFieldEnter(fieldKey: keyof T) {\n this.onEnterEvent.emit(fieldKey);\n }\n\n private emitFormattedValue(values: any[]) {\n const nonEmptyValues = values.filter(v => \n v !== null && \n v !== undefined && \n v !== '' && \n !(Array.isArray(v) && v.length === 0)\n );\n\n let formattedValue: any;\n const config = this.config();\n\n switch (this.outputFormat()) {\n case MultiEntryOutputFormat.ARRAY:\n formattedValue = nonEmptyValues;\n break;\n\n case MultiEntryOutputFormat.COMMA_SEPARATED:\n formattedValue = nonEmptyValues.join(', ');\n break;\n\n case MultiEntryOutputFormat.CUSTOM_SEPARATOR:\n const separator = config.customSeparator || ',';\n formattedValue = nonEmptyValues.join(separator);\n break;\n\n case MultiEntryOutputFormat.INDIVIDUAL:\n formattedValue = nonEmptyValues.length > 0 ? nonEmptyValues[0] : null;\n break;\n\n case MultiEntryOutputFormat.CUSTOM_FORMAT:\n if (config.format && typeof config.format === 'function') {\n try {\n formattedValue = config.format(nonEmptyValues, this.formValue());\n } catch (error) {\n console.error('Error en la función de formato personalizada:', error);\n formattedValue = nonEmptyValues;\n }\n } else {\n console.warn('Formato CUSTOM_FORMAT seleccionado pero no se proporcionó función format');\n formattedValue = nonEmptyValues;\n }\n break;\n\n default:\n formattedValue = nonEmptyValues;\n }\n\n this.valueChange.emit(formattedValue);\n }\n\n createFieldConfigForEntry(index: number): ModalFieldConfig<T> {\n const baseField = this.field();\n \n const { multiEntryConfig, ...fieldConfig } = baseField as ExtendedModalFieldConfig<T>;\n \n return {\n ...fieldConfig,\n key: `${String(fieldConfig.key)}_${index}` as keyof T,\n label: index === 0 ? fieldConfig.label : '',\n } as ModalFieldConfig<T>;\n }\n\n shouldShowActions(index: number): boolean {\n if (!this.allowMultiple()) return false;\n if (this.isDisabled()) return false;\n \n const isLastEntry = index === this.entries().length - 1;\n const hasMultipleEntries = this.entries().length > 1;\n \n return isLastEntry || hasMultipleEntries;\n }\n\n shouldShowAddButton(index: number): boolean {\n return this.shouldShowActions(index) && \n index === this.entries().length - 1 && \n this.canAddMore();\n }\n\n shouldShowRemoveButton(index: number): boolean {\n return this.shouldShowActions(index) && this.canRemove();\n }\n}\n","<div class=\"c-entry-group\">\n @for (entry of entries(); track entry.id; let index = $index) {\n <div class=\"c-entry-item\">\n <!-- Campo dinámico para cada entrada -->\n <div\n coreDynamicField\n [field]=\"createFieldConfigForEntry(index)\"\n [value]=\"entry.value\"\n [mode]=\"mode()\"\n [errors]=\"errors()\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"onFieldValueChange($event, index)\"\n (onBlurEvent)=\"onFieldBlur($event)\"\n (onEnterEvent)=\"onFieldEnter($event)\">\n </div>\n\n <!-- Botones de acción (agregar/eliminar) -->\n @if (shouldShowActions(index)) {\n <div class=\"c-entry-actions\">\n @if (shouldShowAddButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--add\"\n (click)=\"addEntry()\"\n [disabled]=\"isDisabled()\"\n [title]=\"addLabel() | translate\"\n [attr.aria-label]=\"addLabel() | translate\">\n <span class=\"icon-counter-up\"></span>\n {{ addLabel() | translate }}\n </button>\n }\n \n @if (shouldShowRemoveButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--remove\"\n (click)=\"removeEntry(index)\"\n [disabled]=\"isDisabled()\"\n [title]=\"removeLabel() | translate\"\n [attr.aria-label]=\"removeLabel() | translate\">\n <span class=\"icon-counter-down\"></span>\n {{ removeLabel() | translate }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Errores del campo principal -->\n @if (errors().length > 0) {\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n }\n</div>\n","import { Component, computed, input, output, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalFieldConfig } from '../../../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { DynamicFieldDirective } from '../../../../directives/DynamicField.directive';\nimport { MultiEntryFieldComponent, ExtendedModalFieldConfig } from '../multi-entry-field/multi-entry-field.component';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-smart-field',\n standalone: true,\n imports: [\n CommonModule, \n FormsModule, \n ReactiveFormsModule, \n TranslateModule, \n DynamicFieldDirective,\n MultiEntryFieldComponent\n ],\n hostDirectives: [CoreHostDirective],\n template: `\n @if (shouldUseMultiEntry()) {\n <core-multi-entry-field\n [field]=\"field()\"\n [value]=\"value()\"\n [mode]=\"mode()\"\n [errors]=\"errors()\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"valueChange.emit($event)\"\n (onBlurEvent)=\"onBlurEvent.emit($event)\"\n (onEnterEvent)=\"onEnterEvent.emit($event)\">\n </core-multi-entry-field>\n } @else {\n <div\n coreDynamicField\n [field]=\"field()\"\n [value]=\"value()\"\n [mode]=\"mode()\"\n [errors]=\"errors()\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"valueChange.emit($event)\"\n (onBlurEvent)=\"onBlurEvent.emit($event)\"\n (onEnterEvent)=\"onEnterEvent.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\">\n </div>\n }\n `\n})\nexport class SmartFieldComponent<T extends DataBaseModelInterface> implements OnInit {\n field = input.required<ModalFieldConfig<T> | ExtendedModalFieldConfig<T>>();\n value = input<any>(null);\n mode = input.required<ModalMode>();\n errors = input<string[]>([]);\n rowData = input<T | null>(null);\n formValue = input<any>(null);\n valueChange = output<any>();\n onBlurEvent = output<keyof T>();\n onEnterEvent = output<keyof T>();\n selectionChange = output<{ selectedItem: any; newFormValue: any }>();\n\n shouldUseMultiEntry = computed(() => {\n const fieldConfig = this.field() as ExtendedModalFieldConfig<T>;\n return fieldConfig.multiEntryConfig?.allowMultipleEntries || false;\n });\n\n ngOnInit() {}\n}\n","import { Component, input, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderService } from './services/loader.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-loader',\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './loader.component.html',\n styleUrl: './loader.component.scss'\n})\nexport class LoaderComponent {\n private loaderService = inject(LoaderService);\n imageUrl = input<string | null>('favicon.ico');\n requestId = input<string>('global');\n\n isLoading = this.loaderService.isLoading;\n}","@if (isLoading()) {\n <div class=\"loader-container\" [ngClass]=\"{'with-image': imageUrl()}\">\n <div class=\"loader-overlay\"></div>\n\n <div class=\"loader-content\">\n @if (imageUrl()) {\n <img [src]=\"imageUrl()\" alt=\"Loading\" class=\"loader-image\" />\n } @else {\n <div class=\"spinner\">\n <div class=\"pulse\"></div>\n <div class=\"pulse pulse-delay\"></div>\n </div>\n }\n </div>\n </div>\n}","import { Component, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-data-list-item',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './data-list-item.component.html',\n styleUrl: './data-list-item.component.scss'\n})\nexport class DataListItemComponent {\n key = input.required<string>();\n label = input.required<string>();\n value = input<any>(null);\n formattedValue = input<string>('');\n \n customTemplate = input<TemplateRef<any> | null>(null);\n templateContext = input<any>({});\n \n itemCssClasses = input<string>('c-data-list__item c-data-list-item');\n keyCssClasses = input<string>('c-data-list-item__key');\n valueCssClasses = input<string>('c-data-list-item__value');\n customCssClasses = input<{\n item?: string;\n key?: string;\n value?: string;\n }>({});\n \n getItemClasses(): string {\n const defaultClasses = this.itemCssClasses();\n const customClasses = this.customCssClasses().item || '';\n return `${defaultClasses} ${customClasses}`.trim();\n }\n\n getKeyClasses(): string {\n const defaultClasses = this.keyCssClasses();\n const customClasses = this.customCssClasses().key || '';\n return `${defaultClasses} ${customClasses}`.trim();\n }\n\n getValueClasses(): string {\n const defaultClasses = this.valueCssClasses();\n const customClasses = this.customCssClasses().value || '';\n return `${defaultClasses} ${customClasses}`.trim();\n }\n\n hasCustomTemplate(): boolean {\n return this.customTemplate() instanceof TemplateRef;\n }\n}\n","<div [class]=\"getItemClasses()\">\n <p [class]=\"getKeyClasses()\">{{ label() | translate }}</p>\n \n @if (hasCustomTemplate()) {\n <div [class]=\"getValueClasses()\">\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()!\"\n [ngTemplateOutletContext]=\"templateContext()\"\n ></ng-container>\n </div>\n } @else {\n <p [class]=\"getValueClasses()\">\n {{ formattedValue() }}\n </p>\n }\n</div>\n","import { Component, input, computed, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalFieldConfig } from '../../interfaces/global/ModalFieldConfig.interface';\nimport { DataListItem } from '../../interfaces/global/DataListItem.interface';\nimport { FieldType } from '../../enums/global/FieldType.enum';\nimport { DataListItemComponent } from '../data-list-item/data-list-item.component';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-data-list',\n standalone: true,\n imports: [CommonModule, TranslateModule, DataListItemComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './data-list.component.html',\n styleUrl: './data-list.component.scss'\n})\nexport class DataListComponent<T = any> {\n items = input<DataListItem[]>([]);\n fields = input<ModalFieldConfig<T>[]>([]);\n data = input<T | null>(null);\n \n customTemplate = input<TemplateRef<any> | null>(null);\n \n showEmptyMessage = input<boolean>(true);\n emptyMessage = input<string>('modal.noData');\n cssClasses = input<string>('c-data-list');\n\n normalizedItems = computed(() => {\n const itemsList = this.items();\n const fieldsList = this.fields();\n \n if (itemsList.length > 0) {\n return itemsList;\n }\n \n if (fieldsList.length > 0) {\n return this.convertFieldsToItems(fieldsList);\n }\n \n return [];\n });\n\n visibleItems = computed(() => {\n const data = this.data();\n return this.normalizedItems().filter((item: DataListItem) => {\n if (item.visible === undefined) return true;\n if (typeof item.visible === 'function') {\n return item.visible(data);\n }\n return item.visible;\n });\n });\n\n hasData = computed(() => {\n const data = this.data();\n const items = this.normalizedItems();\n \n if (this.items().length > 0) {\n return true;\n }\n \n return data !== null && data !== undefined && items.length > 0;\n });\n\n hasVisibleItems = computed(() => {\n return this.visibleItems().length > 0;\n });\n\n shouldShowContent = computed(() => {\n return this.hasData() && this.hasVisibleItems();\n });\n\n shouldShowEmptyMessage = computed(() => {\n return this.showEmptyMessage() && !this.shouldShowContent();\n });\n\n private convertFieldsToItems(fields: ModalFieldConfig<T>[]): DataListItem[] {\n const data = this.data();\n \n return fields.map(field => ({\n key: field.key as string,\n label: field.label,\n value: data ? data[field.key] : undefined,\n visible: field.visible,\n format: field.format,\n customTemplate: field.customViewTemplate\n }));\n }\n\n getItemValue(item: DataListItem): any {\n const data = this.data();\n \n if (item.value !== undefined) {\n return item.value;\n }\n \n if (data && item.key) {\n return (data as any)[item.key];\n }\n \n return null;\n }\n\n getFormattedValue(item: DataListItem): string {\n if (item.formattedValue !== undefined) {\n return item.formattedValue;\n }\n \n const value = this.getItemValue(item);\n const data = this.data();\n \n if (item.format) {\n return item.format(value, data);\n }\n\n return this.getDefaultFormattedValue(value);\n }\n\n private getDefaultFormattedValue(value: any): string {\n if (value === null || value === undefined) {\n return '-';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) return '-';\n return value.map(item => this.formatSingleValue(item)).join(', ');\n }\n\n return this.formatSingleValue(value);\n }\n\n private formatSingleValue(value: any): string {\n if (value === null || value === undefined) return '-';\n \n if (typeof value === 'boolean') {\n return value ? 'Sí' : 'No';\n }\n\n if (typeof value === 'object') {\n if (value.label) return value.label;\n if (value.name) return value.name;\n if (value.title) return value.title;\n if (value.filename) return value.filename;\n return JSON.stringify(value);\n }\n\n if (typeof value === 'number') {\n return value.toString();\n }\n\n return String(value);\n }\n\n getItemTemplateContext(item: DataListItem): any {\n const data = this.data();\n const value = this.getItemValue(item);\n \n return {\n $implicit: value,\n item: item,\n data: data\n };\n }\n\n getItemTemplateRef(item: DataListItem): TemplateRef<any> | null {\n return item.customTemplate instanceof TemplateRef ? item.customTemplate : null;\n }\n}","<div [class]=\"cssClasses()\">\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: data(),\n items: visibleItems(),\n getFormattedValue: getFormattedValue.bind(this)\n }\"\n ></ng-container>\n } @else if (shouldShowContent()) {\n @for (item of visibleItems(); track item.key) {\n <core-data-list-item\n [key]=\"item.key\"\n [label]=\"item.label\"\n [value]=\"getItemValue(item)\"\n [formattedValue]=\"getFormattedValue(item)\"\n [customTemplate]=\"getItemTemplateRef(item)\"\n [templateContext]=\"getItemTemplateContext(item)\"\n [customCssClasses]=\"item.cssClasses || {}\">\n </core-data-list-item>\n }\n } @else if (shouldShowEmptyMessage()) {\n <div class=\"c-data-list__empty\">\n <p>{{ emptyMessage() | translate }}</p>\n </div>\n }\n</div>\n","export enum ButtonContext {\n DEFAULT = 'default',\n ERROR = 'error',\n SUCCESS = 'success'\n} ","export enum ButtonSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n} ","export enum ButtonType {\n PRIMARY = 'c-btn',\n STROKE = 'c-btn--stroke', \n SECONDARY = 'c-btn--secondary',\n ICON = 'c-icon-btn',\n ICON_FILL = 'c-icon-btn--fill',\n LINK = 'c-link',\n LINK_UNDERLINED = 'c-link--underlined',\n LINK_SECONDARY = 'c-link--secondary',\n LINK_SECONDARY_UNDERLINED = 'c-link--secondary c-link--underlined'\n} ","import { InjectionToken } from '@angular/core';\nimport { PermissionProvider } from '../interfaces/global/PermissionProvider.interface';\n\nexport const PERMISSION_PROVIDER = new InjectionToken<PermissionProvider>('PERMISSION_PROVIDER');\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { UsersModel } from '../models/users/users.model';\nimport { PermissionModel } from '../models/security/permission.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n private userSubject = new BehaviorSubject<UsersModel | null>(null);\n user$ = this.userSubject.asObservable();\n\n setUser(user: UsersModel | null) {\n this.userSubject.next(user);\n }\n\n getUser(): UsersModel | null {\n return this.userSubject.value;\n }\n\n hasPermission(resource: string, action: string): boolean {\n const user = this.userSubject.value;\n if (!user || !user.roles) {\n return false;\n }\n\n if (user.roles.some(role => !role.permissions)) {\n return true;\n }\n\n const hasPermission = user.roles.some(role =>\n role.permissions?.some(\n perm => {\n const matches = perm.resource === resource && perm.action === action && perm.is_active;\n if (matches) {\n }\n return matches;\n }\n )\n );\n\n return hasPermission;\n }\n\n hasAnyPermission(resources: string[], action: string): boolean {\n return resources.some(resource => this.hasPermission(resource, action));\n }\n\n getPermissions(): PermissionModel[] {\n const user = this.userSubject.value;\n if (!user || !user.roles) return [];\n \n return user.roles.flatMap(role => role.permissions?.filter(perm => perm?.is_active) || []).filter((perm): perm is PermissionModel => perm !== undefined);\n }\n}","export enum PermissionsResources {\n USERS = 'users',\n ROLES = 'roles',\n RESERVATIONS = 'reservations',\n PERMISSIONS = 'permissions',\n COMPANIES = 'companies',\n SERVICES = 'services',\n ROOMS = 'rooms',\n AUDIT_LOGS = 'audit_logs',\n EMPLOYEES = 'employees',\n COMPANIES_AZF_PROCEDURES = 'companies_azf_procedures',\n COMPANIES_CONFIGURATION = 'companies_configuration',\n COMPANIES_CONTACTS = 'companies_contacts',\n COMPANIES_INVENTORY = 'companies_inventory',\n COMPANIES_LEGALS = 'companies_legals',\n COMPANIES_CONTRACTUAL_INFORMATION = 'companies_contractual_info',\n COMPANIES_TELEWORK = 'companies_remote_work',\n MY_COMPANY = 'my_company',\n MY_COMPANY_AZF_PROCEDURE = 'my_company_azf_procedures',\n MY_COMPANY_CONTACTS = 'my_company_contacts',\n MY_COMPANY_CONFIGURATION = 'my_company_configuration',\n MY_COMPANY_INVENTORY = 'my_company_inventory',\n MY_COMPANY_LEGALS = 'my_company_legals',\n MY_COMPANY_CONTRACTUAL_INFORMATION = 'my_company_contractual_info',\n MY_COMPANY_TELEWORK = 'my_company_remote_work',\n FILE_TEMPLATES = 'file_templates',\n CONFIGURATION = 'configuration',\n}","import { Injectable, inject, Optional } from '@angular/core';\nimport { PERMISSION_PROVIDER } from '../providers/permission.provider';\nimport { PermissionProvider } from '../interfaces/global/PermissionProvider.interface';\nimport { ExtendedPermissionProvider } from '../interfaces/global/ExtendedPermissionProvider.interface';\nimport { PermissionService } from './permission.service';\nimport { PermissionsResources } from '../components/main-nav/enums/PermissionsResources.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionWrapperService implements PermissionProvider {\n private externalProvider = inject(PERMISSION_PROVIDER, { optional: true }) as (PermissionProvider & ExtendedPermissionProvider) | null;\n private fallbackService = inject(PermissionService);\n\n private get activeProvider() {\n return this.externalProvider || this.fallbackService;\n }\n\n constructor() {\n this.copyProviderMethods(this.fallbackService);\n \n if (this.externalProvider) {\n this.copyProviderMethods(this.externalProvider);\n this.extendPermissionsResources();\n }\n }\n\n private extendPermissionsResources(): void {\n if (!this.externalProvider) return;\n\n const additionalResources = this.getAdditionalResources();\n \n if (additionalResources && typeof additionalResources === 'object') {\n Object.keys(additionalResources).forEach(key => {\n const value = additionalResources[key];\n if (typeof value === 'string' && !(key in PermissionsResources)) {\n (PermissionsResources as any)[key] = value;\n }\n });\n }\n }\n\n private getAdditionalResources(): Record<string, string> | null {\n if (!this.externalProvider) return null;\n\n const provider = this.externalProvider as ExtendedPermissionProvider;\n\n const directResources = provider.additionalResources || \n provider.customResources || \n provider.extendedResources || \n provider.resources || \n provider.RESOURCES;\n\n if (directResources && typeof directResources === 'object') {\n return directResources;\n }\n\n if (typeof provider.getAdditionalResources === 'function') {\n try {\n const result = provider.getAdditionalResources();\n if (result && typeof result === 'object') {\n return result;\n }\n } catch (error) {\n console.warn('Error calling getAdditionalResources:', error);\n }\n }\n\n if (typeof provider.getCustomResources === 'function') {\n try {\n const result = provider.getCustomResources();\n if (result && typeof result === 'object') {\n return result;\n }\n } catch (error) {\n console.warn('Error calling getCustomResources:', error);\n }\n }\n\n if (typeof provider.getResources === 'function') {\n try {\n const result = provider.getResources();\n if (result && typeof result === 'object') {\n return result;\n }\n } catch (error) {\n console.warn('Error calling getResources:', error);\n }\n }\n\n return null;\n }\n\n private copyProviderMethods(provider: any) {\n const proto = Object.getPrototypeOf(provider);\n const propertyNames = Object.getOwnPropertyNames(proto);\n \n propertyNames.forEach(prop => {\n if (prop !== 'constructor') {\n const shouldOverride = this.externalProvider && provider === this.externalProvider;\n \n if (!(prop in this) || shouldOverride) {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(proto, prop);\n if (descriptor) {\n if (typeof descriptor.value === 'function') {\n (this as any)[prop] = (...args: any[]) => {\n return descriptor.value.apply(provider, args);\n };\n } else if (descriptor.get || descriptor.set) {\n Object.defineProperty(this, prop, {\n get: descriptor.get ? () => descriptor.get!.call(provider) : undefined,\n set: descriptor.set ? (value) => descriptor.set!.call(provider, value) : undefined,\n enumerable: descriptor.enumerable,\n configurable: true\n });\n }\n }\n } catch (error) {\n console.warn(`Could not copy property ${prop}:`, error);\n }\n }\n }\n });\n\n Object.getOwnPropertyNames(provider).forEach(prop => {\n const shouldOverride = this.externalProvider && provider === this.externalProvider;\n \n if (!(prop in this) || shouldOverride) {\n try {\n const value = provider[prop];\n if (typeof value === 'function') {\n (this as any)[prop] = value.bind(provider);\n } else {\n Object.defineProperty(this, prop, {\n get: () => provider[prop],\n set: (newValue) => provider[prop] = newValue,\n enumerable: true,\n configurable: true\n });\n }\n } catch (error) {\n console.warn(`Could not copy instance property ${prop}:`, error);\n }\n }\n });\n }\n\n hasPermission(resource: string, action: string): boolean {\n return this.activeProvider.hasPermission(resource, action);\n }\n\n setUser(user: any): void {\n this.activeProvider.setUser(user);\n }\n\n getUser(): any {\n return this.activeProvider.getUser();\n }\n\n callMethod(methodName: string, ...args: any[]): any {\n const provider = this.activeProvider;\n if (provider && typeof (provider as any)[methodName] === 'function') {\n return (provider as any)[methodName](...args);\n }\n throw new Error(`Method ${methodName} not found in permission provider`);\n }\n\n hasMethod(methodName: string): boolean {\n const provider = this.activeProvider;\n return provider && typeof (provider as any)[methodName] === 'function';\n }\n\n getAllResources(): typeof PermissionsResources {\n return PermissionsResources;\n }\n\n hasResource(resourceKey: string): boolean {\n return resourceKey in PermissionsResources;\n }\n\n getResourceValue(resourceKey: string): string | undefined {\n return (PermissionsResources as any)[resourceKey];\n }\n\n extendResources(additionalResources: Record<string, string>): void {\n Object.keys(additionalResources).forEach(key => {\n const value = additionalResources[key];\n if (typeof value === 'string' && !(key in PermissionsResources)) {\n (PermissionsResources as any)[key] = value;\n }\n });\n }\n}\n","import { Component, input, output, computed, inject, HostBinding } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonConfig } from './interfaces/ButtonConfig.interface';\nimport { ButtonActionEvent } from './interfaces/ButtonActionEvent.interface';\nimport { ButtonType } from './enums/ButtonType.enum';\nimport { ButtonContext } from './enums/ButtonContext.enum';\nimport { ButtonSize } from './enums/ButtonSize.enum';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-generic-button',\n standalone: true,\n imports: [CommonModule, RouterModule, TranslateModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-button.component.html',\n})\nexport class GenericButtonComponent {\n public ButtonType = ButtonType;\n public ButtonContext = ButtonContext;\n public ButtonSize = ButtonSize;\n \n private permissionService = inject(PermissionWrapperService);\n\n config = input.required<ButtonConfig>();\n data = input<any>(null);\n\n buttonClick = output<ButtonActionEvent>();\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.config().globalCustomClass || '';\n }\n\n isDisabled = computed(() => {\n if (this.config().disabled) return true;\n if (this.config().loading) return true;\n if (this.config().requiredPermission) {\n return !this.permissionService.hasPermission(\n this.config().requiredPermission!.resource,\n this.config().requiredPermission!.action\n );\n }\n return false;\n });\n\n buttonClasses = computed(() => {\n const config = this.config();\n const classes: string[] = [];\n \n classes.push(config.type);\n \n if (config.context && config.context !== ButtonContext.DEFAULT) {\n classes.push(`context:${config.context}`);\n }\n \n if (config.size && config.size !== ButtonSize.MEDIUM) {\n classes.push(`size:${config.size}`);\n }\n \n if (this.isDisabled()) {\n classes.push('is-disabled');\n }\n \n if (config.loading) {\n classes.push('is-loading');\n }\n \n if (config.customClass) {\n classes.push(config.customClass);\n }\n \n return classes.join(' ');\n });\n\n isLink = computed(() => {\n const type = this.config().type;\n return type === ButtonType.LINK || \n type === ButtonType.LINK_UNDERLINED || \n type === ButtonType.LINK_SECONDARY;\n });\n\n isIconOnly = computed(() => {\n const type = this.config().type;\n const hasOnlyIcon = (type === ButtonType.ICON || type === ButtonType.ICON_FILL);\n return hasOnlyIcon && !this.hasText();\n });\n\n shouldShowText = computed(() => {\n return this.hasText();\n });\n\n hasIcon = computed(() => {\n return !!this.config().icon;\n });\n\n hasText = computed(() => {\n return !!this.config().text;\n });\n\n iconPositionLeft = computed(() => {\n return !this.config().iconPosition || this.config().iconPosition === 'left';\n });\n\n iconPositionRight = computed(() => {\n return this.config().iconPosition === 'right';\n });\n\n onClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const actionEvent: ButtonActionEvent = {\n originalEvent: event,\n buttonConfig: this.config(),\n data: this.data()\n };\n\n this.buttonClick.emit(actionEvent);\n }\n\n getAriaLabel(): string {\n return this.config().ariaLabel ?? this.config().text ?? '';\n }\n\n getTitle(): string {\n return this.config().tooltip ?? (this.isIconOnly() ? this.config().text ?? '' : '');\n }\n} ","<ng-container *ngIf=\"config().routerLink && !isDisabled(); else normalButton\">\n <button \n [class]=\"buttonClasses()\"\n [routerLink]=\"config().routerLink\"\n [queryParams]=\"config().queryParams\"\n [fragment]=\"config().fragment\"\n [attr.aria-label]=\"getAriaLabel() | translate\"\n [attr.title]=\"getTitle() | translate\"\n [attr.id]=\"config().id\"\n [disabled]=\"isDisabled()\"\n (click)=\"onClick($event)\"\n [class.c-tooltip-container]=\"config().tooltipConfig?.hasTooltip\"\n type=\"button\">\n \n <span \n *ngIf=\"hasIcon() && iconPositionLeft()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <ng-container *ngIf=\"shouldShowText()\">\n {{ (config().text ?? '') | translate }}\n </ng-container>\n \n <span \n *ngIf=\"hasIcon() && iconPositionRight()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <span *ngIf=\"config().loading\" class=\"spinner\"></span>\n\n <span *ngIf=\"config().tooltipConfig?.hasTooltip && !isDisabled()\" class=\"c-tooltip c-tooltip--{{config().tooltipConfig?.position}}\">\n {{ config().tooltipConfig?.text ?? '' | translate }}\n </span>\n </button>\n</ng-container>\n\n<ng-template #normalButton>\n <ng-container *ngIf=\"config().href && !isDisabled(); else regularButton\">\n <a \n [class]=\"buttonClasses()\"\n [href]=\"config().href\"\n [target]=\"config().target || '_self'\"\n [attr.aria-label]=\"getAriaLabel() | translate\"\n [attr.title]=\"getTitle() | translate\"\n [attr.id]=\"config().id\"\n (click)=\"onClick($event)\"\n type=\"button\"\n [class.c-tooltip-container]=\"config().tooltipConfig?.hasTooltip\">\n \n <span \n *ngIf=\"hasIcon() && iconPositionLeft()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <ng-container *ngIf=\"shouldShowText()\">\n {{ (config().text ?? '') | translate }}\n </ng-container>\n \n <span \n *ngIf=\"hasIcon() && iconPositionRight()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <span *ngIf=\"config().loading\" class=\"spinner\"></span>\n\n <span *ngIf=\"config().tooltipConfig?.hasTooltip && !isDisabled()\" class=\"c-tooltip c-tooltip--{{config().tooltipConfig?.position}}\">\n {{ config().tooltipConfig?.text ?? '' | translate }}\n </span>\n </a>\n </ng-container>\n</ng-template>\n\n<ng-template #regularButton>\n <button \n [class]=\"buttonClasses()\"\n [attr.aria-label]=\"getAriaLabel() | translate\"\n [attr.title]=\"getTitle() | translate\"\n [attr.id]=\"config().id\"\n [disabled]=\"isDisabled()\"\n (click)=\"onClick($event)\"\n type=\"button\"\n [class.c-tooltip-container]=\"config().tooltipConfig?.hasTooltip\">\n \n <span \n *ngIf=\"hasIcon() && iconPositionLeft()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <ng-container *ngIf=\"shouldShowText()\">\n {{ (config().text ?? '') | translate }}\n </ng-container>\n \n <span \n *ngIf=\"hasIcon() && iconPositionRight()\" \n [ngClass]=\"config().icon | coreIconCompat\">\n </span>\n \n <span *ngIf=\"config().loading\" class=\"spinner\"></span>\n\n <span *ngIf=\"config().tooltipConfig?.hasTooltip && !isDisabled()\" class=\"c-tooltip c-tooltip--{{config().tooltipConfig?.position}}\">\n {{ config().tooltipConfig?.text ?? '' | translate }}\n </span>\n </button>\n</ng-template> ","export enum FieldType {\n TEXT = 'text',\n TEXTAREA = 'textarea',\n NUMBER = 'number',\n CHECKBOX = 'checkbox',\n SELECT = 'select',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n PASSWORD = 'password',\n SWITCH = 'switch',\n SERVER_SELECT = 'server-select',\n FILE = 'file'\n}\n\nexport enum NumberFieldType {\n DEFAULT = 'default',\n DECIMAL = 'decimal',\n INTEGER = 'integer'\n}","import { \n Component, \n input, \n output, \n TemplateRef, \n ContentChild,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GenericTabConfig } from './interfaces/tab-config.interface';\nimport { GenericTabClickEvent } from './interfaces/tab-click.interface';\nimport { GenericTab } from './interfaces/tab.interface';\n\n@Component({\n selector: 'nav[core-generic-tabs]',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './generic-tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'config().containerClass'\n }\n})\nexport class GenericTabsComponent {\n\n config = input<GenericTabConfig>({\n tabs: [],\n containerClass: 'c-tabs',\n listClass: 'c-tabs__list',\n itemClass: 'c-tabs__item',\n linkClass: 'c-tabs__link',\n activeClass: 'is-active',\n disabledClass: 'disabled'\n });\n\n activeTabId = input<string | null>(null);\n hasTabErrors = input<(tabId: string) => boolean>(() => false);\n\n tabClick = output<GenericTabClickEvent>();\n tabChange = output<GenericTab>();\n\n @ContentChild('customTabTemplate') customTabTemplate?: TemplateRef<any>;\n\n onTabClick(tab: GenericTab, index: number, event: Event): void {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n const clickEvent: GenericTabClickEvent = {\n tab,\n index,\n originalEvent: event\n };\n\n this.tabClick.emit(clickEvent);\n this.tabChange.emit(tab);\n }\n\n isTabActive(tab: GenericTab): boolean {\n return this.activeTabId() ? tab.id === this.activeTabId() : !!tab.active;\n }\n\n getTabClasses(tab: GenericTab): string {\n const classes = [this.config().linkClass || 'c-tabs__link'];\n \n if (this.isTabActive(tab) && this.config().activeClass) {\n classes.push(this.config().activeClass!);\n }\n \n if (tab.disabled && this.config().disabledClass) {\n classes.push(this.config().disabledClass!);\n }\n \n if (tab.customClass) {\n classes.push(tab.customClass);\n }\n \n return classes.join(' ');\n }\n\n getTabLabel(tab: GenericTab): string {\n return tab.translationKey ? '' : (tab.label || '');\n }\n\n hasCustomTemplate(): boolean {\n return !!(this.customTabTemplate && this.config().allowCustomTemplate);\n }\n} ","<ul [class]=\"config().listClass\">\n @for (tab of config().tabs; track tab.id; let i = $index) {\n <li [class]=\"config().itemClass\">\n @if (hasCustomTemplate()) {\n <ng-container \n [ngTemplateOutlet]=\"customTabTemplate || null\" \n [ngTemplateOutletContext]=\"{\n $implicit: tab,\n index: i,\n isActive: isTabActive(tab),\n onClick: onTabClick.bind(this, tab, i)\n }\">\n </ng-container>\n } @else {\n <!-- DEV: Aplicar componente button generico -->\n <button\n type=\"button\"\n [class]=\"getTabClasses(tab)\"\n [disabled]=\"tab.disabled\"\n (click)=\"onTabClick(tab, i, $event)\"\n >\n @if (tab.translationKey) {\n {{ tab.translationKey | translate }}\n } @else {\n {{ getTabLabel(tab) }}\n }\n @if (hasTabErrors()(tab.id)) {\n <span class=\"icon-alert-circle\"></span>\n }\n </button>\n }\n </li>\n }\n</ul> ","import { Component, input, output, signal, effect, TemplateRef, inject, ElementRef, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, FormGroup, FormBuilder } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { DynamicFieldDirective } from '../../directives/DynamicField.directive';\nimport { ModalFieldConfig } from '../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalTabConfig } from '../../interfaces/global/ModalTabConfig.interface';\nimport { ModalMode } from '../../enums/global/ModalMode.enum';\nimport { ModalButtonConfig } from '../../interfaces/global/ModalButtonConfig.interface';\nimport { FieldType } from '../../enums/global/FieldType.enum';\nimport { ModalValidationResult } from '../../interfaces/global/ModalValidationResult.interface';\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\nimport { GenericTabsComponent } from '../generic-tabs/generic-tabs.component';\nimport { GenericTab } from '../generic-tabs/interfaces/tab.interface';\nimport { GenericTabConfig } from '../generic-tabs/interfaces/tab-config.interface';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { DataListComponent } from '../data-list/data-list.component';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-modal',\n standalone: true,\n imports: [\n CommonModule, \n FormsModule, \n ReactiveFormsModule, \n TranslateModule, \n DynamicFieldDirective,\n GenericTabsComponent,\n GenericButtonComponent,\n DataListComponent,\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-modal.component.html',\n})\nexport class GenericModalComponent<T extends DataBaseModelInterface> {\n private elementRef = inject(ElementRef);\n private formBuilder = inject(FormBuilder);\n private domSanitizer = inject(DomSanitizer);\n \n public ModalMode = ModalMode;\n public FieldType = FieldType;\n\n isClosing = signal(false);\n isOpen = input.required<boolean>();\n mode = input.required<ModalMode>();\n data = input<T | null>(null);\n fields = input<ModalFieldConfig<T>[]>([]);\n tabs = input<ModalTabConfig<T>[]>([]);\n title = input.required<string>();\n isMultiple = input<boolean>();\n customTemplate = input<TemplateRef<any> | null>(null);\n customViewTemplate = input<TemplateRef<any> | null>(null);\n buttonConfig = input<ModalButtonConfig<T>[]>([]);\n modelFactory = input<((data: Partial<T>) => T) | null>(null);\n errors = input<string[]>([]);\n validators = input<((data: T) => string[])[]>([]);\n\n save = output<T>();\n close = output<void>();\n modalData = output<T>();\n\n editedData = signal<T | null>(null);\n internalErrors = signal<string[]>([]);\n fieldErrors = signal<{ [key: string]: string[] }>({});\n isInitialized = signal<boolean>(false);\n form = signal<FormGroup>(this.formBuilder.group({}));\n activeTabId = signal<string>('');\n \n hasTabs = computed(() => this.tabs().length > 0);\n \n allFields = computed(() => {\n if (this.hasTabs()) {\n return this.tabs().flatMap(tab => tab.fields);\n }\n return this.fields();\n });\n \n activeTabFields = computed(() => {\n if (!this.hasTabs()) return this.fields();\n \n const activeTab = this.tabs().find(tab => tab.tabId === this.activeTabId());\n return activeTab ? activeTab.fields : [];\n });\n\n visibleFieldsForView = computed(() => {\n const fieldsToProcess = this.hasTabs() ? this.activeTabFields() : this.fields();\n \n return fieldsToProcess\n .map(field => this.getFieldConfig(field))\n .filter(field => field.visible === true);\n });\n\n dataListItems = computed(() => {\n const fieldsToProcess = this.hasTabs() ? this.activeTabFields() : this.fields();\n const data = this.editedData();\n \n if (!data) return [];\n \n return fieldsToProcess\n .map(field => this.getFieldConfig(field))\n .filter(field => field.visible === true)\n .map(field => ({\n key: field.key as string,\n label: field.label,\n value: data[field.key],\n formattedValue: this.getFormattedValue(field, data[field.key]),\n visible: true\n }));\n });\n \n visibleTabs = computed(() => {\n return this.tabs().filter(tab => tab.visible !== false);\n });\n\n hasErrors = computed(() => {\n return Object.values(this.fieldErrors()).some(errors => errors.length > 0) || \n this.internalErrors().length > 0;\n });\n\n genericTabsConfig = computed<GenericTabConfig>(() => ({\n tabs: this.visibleTabs().map(tab => ({\n id: tab.tabId,\n translationKey: tab.tabLabel\n })),\n containerClass: 'c-tabs',\n listClass: 'c-tabs__list',\n itemClass: 'c-tabs__item',\n linkClass: 'c-tabs__link',\n activeClass: 'is-active',\n disabledClass: 'disabled'\n }));\n\n closeButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.ICON,\n icon: 'icon-cross',\n ariaLabel: 'modal.close',\n customClass: 'c-modal__close'\n }));\n\n defaultCancelButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.SECONDARY,\n text: this.mode() === ModalMode.VIEW ? 'modal.close' : 'modal.cancel'\n }));\n\n defaultSaveButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: 'modal.save',\n disabled: this.hasErrors()\n }));\n\n hasTabErrorsFunction = (tabId: string): boolean => {\n return this.hasTabErrors(tabId);\n };\n\n getCustomButtonConfig(button: ModalButtonConfig<T>): ButtonConfig {\n return {\n type: this.getButtonTypeFromClass(button.class || ''),\n text: button.text,\n disabled: button.disabled,\n customClass: button.class || ''\n };\n }\n\n private getButtonTypeFromClass(className: string): ButtonType {\n if (className.includes('c-btn--secondary')) {\n return ButtonType.SECONDARY;\n }\n if (className.includes('c-btn--stroke')) {\n return ButtonType.STROKE;\n }\n if (className.includes('c-icon-btn')) {\n return ButtonType.ICON;\n }\n if (className.includes('c-link')) {\n return ButtonType.LINK;\n }\n return ButtonType.PRIMARY;\n }\n\n onCustomButtonClick(button: ModalButtonConfig<T>): void {\n button.action(this.data());\n }\n\n constructor() {\n effect(() => {\n const isModalOpen = this.isOpen();\n const data = this.data();\n\n if (!isModalOpen) {\n this.editedData.set(null);\n this.internalErrors.set([]);\n this.fieldErrors.set({});\n this.isInitialized.set(false);\n return;\n }\n\n if (!this.isInitialized()) {\n this.initializeData();\n this.initializeActiveTab();\n this.isInitialized.set(true);\n }\n });\n }\n\n private initializeData(): void {\n const data = this.data();\n const mode = this.mode();\n\n let newInstance: T;\n if (data) {\n newInstance = Object.create(Object.getPrototypeOf(data)) as T;\n Object.assign(newInstance, data);\n } else if (mode === ModalMode.CREATE) {\n const factory = this.modelFactory();\n if (factory) {\n newInstance = factory({});\n } else {\n newInstance = {\n getId: () => 0,\n } as T;\n }\n } else {\n this.editedData.set(null);\n return;\n }\n\n const formGroup: { [key: string]: any } = {};\n this.allFields().forEach(field => {\n const fieldKey = field.key as keyof T;\n const payloadKey = (field.keyToPayload ?? field.key) as keyof T;\n \n const modeConfig = field.modes?.[this.mode()];\n const defaultValue = modeConfig?.defaultValue ?? field.defaultValue;\n \n if (this.mode() === ModalMode.CREATE) {\n if (defaultValue !== undefined && newInstance[fieldKey] === undefined) {\n if (typeof defaultValue === 'function') {\n const computedValue = defaultValue(newInstance);\n newInstance[payloadKey] = computedValue;\n } else {\n newInstance[payloadKey] = defaultValue as any;\n }\n }\n } else if (this.mode() === ModalMode.EDIT) {\n if (typeof defaultValue === 'function') {\n const computedValue = defaultValue(newInstance);\n newInstance[payloadKey] = computedValue;\n }\n }\n\n const validators = modeConfig?.validators ?? field.validators ?? [];\n formGroup[fieldKey as string] = [newInstance[fieldKey], validators];\n });\n\n this.form.set(this.formBuilder.group(formGroup));\n \n setTimeout(() => {\n Object.values(this.form().controls).forEach(control => {\n control.markAsUntouched();\n });\n \n this.fieldErrors.set({});\n this.internalErrors.set([]);\n }, 0);\n \n this.editedData.set(newInstance);\n \n setTimeout(() => {\n this.modalData.emit(newInstance);\n }, 1);\n }\n \n private initializeActiveTab(): void {\n if (this.hasTabs()) {\n const firstVisibleTab = this.visibleTabs()[0];\n if (firstVisibleTab) {\n this.activeTabId.set(firstVisibleTab.tabId);\n }\n }\n }\n\n private validateField(fieldKey: keyof T, value: any): ModalValidationResult {\n const field = this.allFields().find(f => f.key === fieldKey);\n const control = this.form().get(fieldKey as string);\n const result: ModalValidationResult = {\n fieldErrors: [],\n internalErrors: []\n };\n\n if (!field || !control) return result;\n\n if (control.touched) {\n const modeConfig = field.modes?.[this.mode()];\n const errorMessages = modeConfig?.errorMessages ?? field.errorMessages ?? {};\n if (control.errors) {\n result.fieldErrors = Object.keys(control.errors).map(errorKey => \n errorMessages[errorKey] || errorKey\n );\n }\n }\n\n if (field.linkedFieldKey && field.duration && value instanceof Date) {\n const linkedControl = this.form().get(field.linkedFieldKey as string);\n if (linkedControl) {\n const durationMs = field.duration * 3600 * 1000;\n const linkedValue = new Date(value.getTime() + durationMs);\n linkedControl.setValue(linkedValue, { emitEvent: false });\n }\n }\n\n if (control.touched) {\n const dataToValidate = this.editedData();\n if (dataToValidate) {\n result.internalErrors = this.validators()\n .flatMap(validator => validator(dataToValidate));\n }\n }\n\n return result;\n }\n\n onFieldValueChange(fieldKey: keyof T, newValue: any): void {\n this.updateField(fieldKey, newValue);\n\n const control = this.form().get(fieldKey as string);\n if (control) {\n control.markAsTouched();\n \n const validationResult = this.validateField(fieldKey, newValue);\n\n this.fieldErrors.update(current => ({\n ...current,\n [fieldKey as string]: validationResult.fieldErrors\n }));\n this.internalErrors.set(validationResult.internalErrors);\n \n this.modalData.emit(this.editedData()!);\n }\n }\n\n onSelectionChange(event: { selectedItem: any; newFormValue: any }): void {\n if (event.newFormValue && this.editedData()) {\n this.editedData.set(event.newFormValue as T);\n \n Object.keys(event.newFormValue).forEach(key => {\n const control = this.form().get(key);\n if (control) {\n control.setValue(event.newFormValue[key], { emitEvent: false });\n }\n });\n \n setTimeout(() => {\n this.modalData.emit(event.newFormValue as T);\n }, 1);\n }\n }\n\n updateField(fieldKey: keyof T, value: any): void {\n if (!this.editedData()) return;\n\n const field = this.allFields().find(f => f.key === fieldKey);\n if (!field) return;\n\n const payloadKey = (field.keyToPayload ?? field.key) as keyof T;\n \n if (field.type === FieldType.FILE) {\n this.editedData.update(data => {\n if (data) {\n data[payloadKey] = value as any;\n }\n return data;\n });\n } else {\n this.editedData.update(data => {\n if (data) {\n data[payloadKey] = value as any;\n }\n return data;\n });\n }\n\n const control = this.form().get(fieldKey as string);\n if (control) {\n control.setValue(value, { emitEvent: false });\n }\n }\n\n validateAllFields(): void {\n const allErrors: { [key: string]: string[] } = {};\n let allInternalErrors: string[] = [];\n\n this.allFields().forEach(field => {\n const modeConfig = field.modes?.[this.mode()];\n if (modeConfig?.visible === false) return;\n\n const control = this.form().get(field.key as string);\n if (control) {\n if (control.touched) {\n const value = control.value;\n const validationResult = this.validateField(field.key, value);\n \n if (validationResult.fieldErrors.length > 0) {\n allErrors[field.key as string] = validationResult.fieldErrors;\n }\n \n allInternalErrors = [...allInternalErrors, ...validationResult.internalErrors];\n }\n }\n });\n\n this.fieldErrors.set(allErrors);\n this.internalErrors.set([...new Set(allInternalErrors)]);\n }\n \n\n getFieldErrors(fieldKey: keyof T): string[] {\n return this.fieldErrors()[fieldKey as string] || [];\n }\n\n getFormattedValue(field: ModalFieldConfig<T>, value: any): string {\n const modeConfig = field.modes?.[this.mode()];\n if (modeConfig?.format) {\n return modeConfig.format(value, this.editedData()!);\n }\n\n if (field.format) {\n return field.format(value, this.editedData()!);\n }\n\n if (value === null || value === undefined) {\n return '-';\n }\n\n if (field.type === FieldType.DATE || field.type === FieldType.DATETIME) {\n const date = new Date(value);\n return field.type === FieldType.DATETIME \n ? date.toLocaleString() \n : date.toLocaleDateString();\n }\n\n if (field.type === FieldType.SELECT && field.options) {\n const option = field.options.find(opt => opt.value === value);\n return option ? option.label : value?.toString() || '-';\n }\n\n if (field.type === FieldType.CHECKBOX || field.type === FieldType.SWITCH) {\n return value ? 'Sí' : 'No';\n }\n\n if (Array.isArray(value)) {\n if (field.options) {\n return value\n .map(v => field.options?.find(opt => opt.value === v)?.label || v)\n .join(', ');\n }\n return value.join(', ');\n }\n\n return value?.toString() || '-';\n }\n\n hasCustomViewTemplate(field: ModalFieldConfig<T>): boolean {\n const modeConfig = field.modes?.[this.mode()];\n return !!(modeConfig?.customViewTemplate || field.customViewTemplate);\n }\n\n isTemplateRef(template: any): template is TemplateRef<any> {\n return template && typeof template === 'object' && 'createEmbeddedView' in template;\n }\n\n getCustomTemplate(field: ModalFieldConfig<T>): TemplateRef<any> | null {\n const modeConfig = field.modes?.[this.mode()];\n const template = modeConfig?.customViewTemplate || field.customViewTemplate;\n \n if (this.isTemplateRef(template)) {\n return template;\n }\n \n return null;\n }\n\n getSafeHtml(field: ModalFieldConfig<T>, value: any): SafeHtml {\n const modeConfig = field.modes?.[this.mode()];\n const template = modeConfig?.customViewTemplate || field.customViewTemplate;\n \n if (template && typeof template === 'function') {\n const htmlContent = template(value, this.editedData()!);\n return this.domSanitizer.bypassSecurityTrustHtml(htmlContent);\n }\n \n return '';\n }\n\n onSave(): void {\n Object.values(this.form().controls).forEach(control => {\n control.markAsTouched();\n });\n this.validateAllFields();\n\n if (this.hasErrors()) {\n return;\n }\n\n const data = this.editedData();\n if (data) {\n const filteredData = this.filterPayloadData(data);\n this.save.emit(filteredData);\n }\n }\n\n private filterPayloadData(data: T): T {\n let clonedData: T;\n \n const factory = this.modelFactory();\n if (factory) {\n clonedData = factory(data as Partial<T>);\n } else {\n clonedData = Object.create(Object.getPrototypeOf(data)) as T;\n Object.assign(clonedData, data);\n \n if (typeof (clonedData as any).getId !== 'function' && typeof (data as any).getId === 'function') {\n (clonedData as any).getId = (data as any).getId.bind(clonedData);\n }\n }\n\n if (typeof (clonedData as any).toPayload === 'function') {\n const payloadKeys = (clonedData as any).toPayload();\n const filteredData = Object.create(Object.getPrototypeOf(clonedData)) as T;\n \n Object.keys(payloadKeys).forEach(key => {\n if (key in clonedData) {\n (filteredData as any)[key] = (clonedData as any)[key];\n }\n });\n \n if (typeof (clonedData as any).getId === 'function') {\n (filteredData as any).getId = (clonedData as any).getId.bind(filteredData);\n }\n \n this.convertEmptyStringsToNull(filteredData);\n return filteredData;\n }\n\n this.allFields().forEach(field => {\n const fieldConfig = this.getFieldConfig(field);\n const shouldInclude = fieldConfig.includeInPayload !== false;\n \n if (!shouldInclude) {\n const targetKey = (fieldConfig.keyToPayload ?? field.key) as keyof T;\n delete clonedData[targetKey];\n } else if (field.keyToPayload && field.keyToPayload !== field.key) {\n delete clonedData[field.key];\n }\n });\n\n this.convertEmptyStringsToNull(clonedData);\n\n return clonedData;\n }\n\n private convertEmptyStringsToNull(data: T): void {\n Object.keys(data).forEach(key => {\n const value = (data as any)[key];\n \n if (typeof value === 'string' && value.trim() === '') {\n (data as any)[key] = null;\n } else if (Array.isArray(value)) {\n (data as any)[key] = value.map(item => \n typeof item === 'string' && item.trim() === '' ? null : item\n );\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n this.convertEmptyStringsToNull(value);\n }\n });\n }\n\n onClose(): void {\n this.isClosing.set(true);\n \n const overlay = this.elementRef.nativeElement.querySelector('.c-modal__overlay');\n const onAnimationEnd = (e: AnimationEvent) => {\n if (e.target === overlay && this.isClosing()) {\n this.isClosing.set(false);\n this.close.emit();\n overlay.removeEventListener('animationend', onAnimationEnd);\n }\n };\n\n overlay.addEventListener('animationend', onAnimationEnd);\n }\n\n getFieldConfig(field: ModalFieldConfig<T>): ModalFieldConfig<T> {\n const modeConfig = field.modes?.[this.mode()];\n if (!modeConfig) return { \n ...field, \n visible: this.evaluateVisibility(field.visible),\n readonly: this.evaluateReadonly(field.readonly)\n };\n return {\n ...field,\n defaultValue: modeConfig.defaultValue ?? field.defaultValue,\n readonly: this.evaluateReadonly(modeConfig.readonly ?? field.readonly),\n options: modeConfig.options ?? field.options,\n validators: modeConfig.validators ?? field.validators,\n errorMessages: modeConfig.errorMessages ?? field.errorMessages,\n multiple: modeConfig.multiple ?? field.multiple,\n visible: this.evaluateVisibility(modeConfig.visible ?? field.visible),\n includeInPayload: modeConfig.includeInPayload ?? field.includeInPayload\n };\n }\n\n private evaluateVisibility(visible: boolean | (() => boolean) | ((formValue: any) => boolean) | undefined): boolean {\n if (visible === undefined) return true;\n if (typeof visible === 'function') {\n try {\n return visible(this.editedData());\n } catch {\n try {\n return (visible as () => boolean)();\n } catch {\n return true;\n }\n }\n }\n return visible;\n }\n\n private evaluateReadonly(readonly: boolean | ((formValue: any) => boolean) | undefined): boolean {\n if (readonly === undefined) return false;\n if (typeof readonly === 'function') {\n try {\n return readonly(this.editedData());\n } catch {\n return false;\n }\n }\n return readonly;\n }\n\n onBlurEvent(fieldKey: keyof T): void {\n const control = this.form().get(fieldKey as string);\n if (control) {\n const validationResult = this.validateField(fieldKey, control.value);\n\n this.fieldErrors.update(current => ({\n ...current,\n [fieldKey as string]: validationResult.fieldErrors\n }));\n\n if (validationResult.internalErrors.length > 0) {\n this.internalErrors.set(validationResult.internalErrors);\n }\n }\n }\n \n onTabChange(tabId: string): void {\n this.activeTabId.set(tabId);\n }\n\n onGenericTabChange(tab: GenericTab): void {\n this.activeTabId.set(tab.id);\n }\n \n hasTabErrors(tabId: string): boolean {\n const tab = this.tabs().find(t => t.tabId === tabId);\n if (!tab) return false;\n \n return tab.fields.some(field => {\n const fieldErrors = this.getFieldErrors(field.key);\n return fieldErrors.length > 0;\n });\n }\n}","<div class=\"c-modal\" [class.is-visible]=\"isOpen()\" [class.is-closing]=\"isClosing()\">\n <div class=\"c-modal__overlay\" (click)=\"onClose()\"></div>\n <div class=\"c-modal__holder\">\n <div class=\"c-modal__header\">\n <p class=\"c-modal__title\">\n {{ title() | translate }}\n </p>\n <core-generic-button\n [config]=\"closeButtonConfig()\"\n (buttonClick)=\"onClose()\">\n </core-generic-button>\n </div>\n <div class=\"c-modal__body\">\n @if (editedData()) {\n @if (hasTabs()) {\n <nav core-generic-tabs\n [config]=\"genericTabsConfig()\"\n [activeTabId]=\"activeTabId()\"\n [hasTabErrors]=\"hasTabErrorsFunction\"\n (tabChange)=\"onGenericTabChange($event)\">\n </nav>\n }\n\n @if (mode() === ModalMode.VIEW) {\n <core-data-list\n [items]=\"dataListItems()\"\n [customTemplate]=\"customViewTemplate()\"\n [emptyMessage]=\"'modal.noData'\"\n ></core-data-list>\n } @else {\n <div class=\"c-entry-group\">\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: editedData(),\n mode: mode(),\n updateField: onFieldValueChange.bind(this),\n save: onSave.bind(this),\n close: onClose.bind(this),\n activeTabId: activeTabId(),\n onTabChange: onTabChange.bind(this),\n getFieldErrors: getFieldErrors.bind(this),\n validateAllFields: validateAllFields.bind(this),\n hasErrors: hasErrors()\n }\"\n ></ng-container>\n } @else {\n @for (field of (hasTabs() ? activeTabFields() : fields()); track field.key) {\n @if (getFieldConfig(field).visible) {\n <div\n coreDynamicField\n [field]=\"getFieldConfig(field)\"\n [value]=\"editedData()![field.key]\"\n [mode]=\"mode()\"\n [errors]=\"getFieldErrors(field.key)\"\n [rowData]=\"editedData()\"\n [formValue]=\"editedData()\"\n (valueChange)=\"onFieldValueChange(field.key, $event)\"\n (onBlurEvent)=\"validateAllFields()\"\n (selectionChange)=\"onSelectionChange($event)\"\n ></div>\n }\n }\n }\n </div> <!-- .c-entry-group -->\n }\n } @else {\n <p>{{ 'modal.noData' | translate }}</p>\n }\n </div>\n <div class=\"c-modal__bottom\">\n @if (buttonConfig().length > 0) {\n @for (button of buttonConfig(); track $index) {\n <core-generic-button\n [config]=\"getCustomButtonConfig(button)\"\n [data]=\"data()\"\n (buttonClick)=\"onCustomButtonClick(button)\">\n </core-generic-button>\n }\n } @else {\n <core-generic-button\n [config]=\"defaultCancelButtonConfig()\"\n (buttonClick)=\"onClose()\">\n </core-generic-button>\n @if (mode() !== ModalMode.VIEW) {\n <core-generic-button\n [config]=\"defaultSaveButtonConfig()\"\n (buttonClick)=\"onSave()\">\n </core-generic-button>\n }\n }\n </div>\n </div>\n</div>","import { Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface PaginationEvent {\n page: number;\n size: number;\n tableId: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginationService {\n private paginationState = new Map<string, {\n currentPage: ReturnType<typeof signal<number>>;\n pageSize: ReturnType<typeof signal<number>>;\n totalItems: ReturnType<typeof signal<number>>;\n totalPages: ReturnType<typeof signal<number>>;\n pageSizeOptions: number[];\n }>();\n\n private paginationChange = new Subject<PaginationEvent>();\n paginationChange$ = this.paginationChange.asObservable();\n\n initialize(tableId: string, totalItems: number, pageSizeOptions: number[] = [25, 30, 50, 100]): void {\n if (!this.paginationState.has(tableId)) {\n this.paginationState.set(tableId, {\n currentPage: signal(1),\n pageSize: signal(pageSizeOptions[0]),\n totalItems: signal(totalItems),\n totalPages: signal(Math.ceil(totalItems / pageSizeOptions[0])),\n pageSizeOptions\n });\n }\n }\n\n getCurrentPage(tableId: string) {\n return this.getState(tableId).currentPage;\n }\n\n getPageSize(tableId: string) {\n return this.getState(tableId).pageSize;\n }\n\n getTotalItems(tableId: string) {\n return this.getState(tableId).totalItems;\n }\n\n getTotalPages(tableId: string) {\n return this.getState(tableId).totalPages;\n }\n\n getPageSizeOptions(tableId: string): number[] {\n return this.getState(tableId).pageSizeOptions;\n }\n\n setCurrentPage(tableId: string, page: number): void {\n const state = this.getState(tableId);\n \n if (page >= 1 && page <= state.totalPages() && page !== state.currentPage()) {\n state.currentPage.set(page);\n this.emitPaginationChange(tableId);\n }\n }\n\n setPageSize(tableId: string, size: number): void {\n const state = this.getState(tableId);\n \n if (size !== state.pageSize()) {\n state.pageSize.set(size);\n state.totalPages.set(Math.ceil(state.totalItems() / size));\n state.currentPage.set(1);\n this.emitPaginationChange(tableId);\n }\n }\n\n setTotalItems(tableId: string, total: number): void {\n const state = this.getState(tableId);\n state.totalItems.set(total);\n state.totalPages.set(Math.ceil(total / state.pageSize()));\n }\n\n setTotalPages(tableId: string, pages: number): void {\n const state = this.getState(tableId);\n state.totalPages.set(pages);\n }\n\n private getState(tableId: string) {\n const state = this.paginationState.get(tableId);\n if (!state) {\n throw new Error(`Pagination state not initialized for table ${tableId}`);\n }\n return state;\n }\n\n private emitPaginationChange(tableId: string): void {\n const state = this.getState(tableId);\n const event = {\n page: state.currentPage(),\n size: state.pageSize(),\n tableId\n };\n \n this.paginationChange.next(event);\n }\n\n destroy(tableId: string): void {\n this.paginationState.delete(tableId);\n }\n}","export enum AlertType {\n DEFAULT = 'default',\n ERROR = 'error',\n SUCCESS = 'success',\n HIGHLIGHTED = 'highlight',\n WAITING = 'waiting'\n}","import { Injectable, signal, TemplateRef } from '@angular/core';\nimport { AlertType } from '../enums/global/AlertType.enum';\nimport { Alert } from '../interfaces/global/Alert.interface';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlertService {\n private alerts = signal<Alert[]>([]);\n alerts$ = this.alerts.asReadonly();\n\n show(alert: Alert) {\n const defaultConfig = {\n autoClose: true,\n duration: 5000,\n icon: this.getDefaultIcon(alert.type),\n inBottom: false\n };\n\n const newAlert = { ...defaultConfig, ...alert };\n this.alerts.update(alerts => [...alerts, newAlert]);\n\n if (newAlert.autoClose) {\n setTimeout(() => {\n this.remove(newAlert);\n }, newAlert.duration);\n }\n }\n\n remove(alertToRemove: Alert) {\n this.alerts.update(alerts => alerts.filter(alert => alert !== alertToRemove));\n }\n\n private getDefaultIcon(type: AlertType): string {\n switch (type) {\n case AlertType.SUCCESS:\n return 'icon-check';\n case AlertType.ERROR:\n return 'icon-alert';\n case AlertType.HIGHLIGHTED:\n return 'icon-alert';\n case AlertType.WAITING:\n return 'icon-clock';\n case AlertType.DEFAULT:\n return 'icon-check';\n default:\n return 'icon-alert';\n }\n }\n} ","import { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class PermissionModel implements DataBaseModelInterface {\n constructor(\n public id?: string,\n public name?: string,\n public description?: string,\n public resource?: string,\n public action?: string,\n public is_active?: boolean,\n ) {}\n\n public fromJSON(json: any): PermissionModel {\n if (json) {\n this.id = json.id;\n this.name = json.name;\n this.description = json.description;\n this.resource = json.resource;\n this.action = json.action;\n this.is_active = json.is_active;\n }\n return this;\n }\n\n public fromJSONList(json: any): PermissionModel[] {\n if (json) {\n return json.map((element: any) => new PermissionModel().fromJSON(element));\n }\n return [];\n }\n\n public toJSON() {\n return {\n \"id\": this.id,\n \"name\": this.name,\n \"description\": this.description,\n \"resource\": this.resource,\n \"action\": this.action,\n \"is_active\": this.is_active,\n };\n }\n\n public getId() {\n return this.id ?? \"\";\n }\n\n public getReference() {\n return this.name ?? \"\"; \n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { UsersModel } from \"./users.model\";\nimport { PermissionModel } from \"../security/permission.model\";\n\nexport class RoleModel implements DataBaseModelInterface {\n constructor(\n public id?: string,\n public name?: string,\n public description?: string,\n public is_active?: boolean,\n public permissions?: PermissionModel[],\n public users?: UsersModel[],\n ) {}\n\n public fromJSON(json: any): RoleModel {\n if (json) {\n this.id = json.id;\n this.name = json.name;\n this.description = json.description;\n this.is_active = json.is_active;\n this.permissions = new PermissionModel().fromJSONList(json.permissions) || [];\n this.users = new UsersModel().fromJSONList(json.users) || [];\n }\n return this;\n }\n\n public fromJSONList(json: any): RoleModel[] { \n if (json) {\n return json.map((element: any) => new RoleModel().fromJSON(element));\n }\n return [];\n }\n\n public toJSON() {\n return {\n \"id\": this.id,\n \"name\": this.name,\n \"description\": this.description,\n \"is_active\": this.is_active,\n \"permissions\": this.permissions,\n \"users\": this.users,\n };\n }\n\n public getId() {\n return this.id ?? \"\";\n }\n\n public getReference() {\n return this.name ?? \"\"; \n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { RoleModel } from \"./role.model\";\nimport { CompanyInfo } from \"../../interfaces/user/company-info.interface\";\n\n\n\nexport class UsersModel implements DataBaseModelInterface {\n constructor(\n public id?: string,\n public username?: string,\n public email?: string,\n public first_name?: string,\n public last_name?: string,\n public password?: string,\n public company_id?: string | null,\n public roles?: RoleModel[],\n public role_ids?: string[],\n public is_admin?: boolean,\n public company?: CompanyInfo | null\n ) {}\n\n public fromJSON(json: any): UsersModel {\n if (json) {\n this.id = json.id;\n this.username = json.username;\n this.email = json.email;\n this.first_name = json.first_name;\n this.last_name = json.last_name;\n this.password = json.password;\n this.company_id = json.company_id ?? null;\n this.roles = new RoleModel().fromJSONList(json.roles) || [];\n this.role_ids = [];\n this.is_admin = json.is_admin;\n this.company = json.company;\n }\n return this;\n }\n\n public fromJSONList(json: any): UsersModel[] {\n if (json) {\n return json.map((element: any) => new UsersModel().fromJSON(element));\n }\n return [];\n }\n\n public toJSON() {\n return {\n \"id\": this.id,\n \"username\": this.username,\n \"email\": this.email,\n \"first_name\": this.first_name,\n \"last_name\": this.last_name,\n \"password\": this.password,\n \"company_id\": this.company_id,\n \"roles\": this.roles,\n \"role_ids\": this.role_ids,\n \"is_admin\": this.is_admin,\n \"company\": this.company\n };\n }\n\n public getId() {\n return this.id ?? \"\";\n }\n\n public getReference() {\n return this.username ?? \"\"; \n }\n}","\nimport { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class FileTemplateType implements DataBaseModelInterface {\n public id: string;\n public code: string;\n constructor(data: Partial<FileTemplateType> = {}) {\n this.id = data.id || '';\n this.code = data.code || '';\n }\n\n public fromJSON(json: any): FileTemplateType {\n if (json) {\n this.id = json.id || '';\n this.code = json.code || '';\n }\n\n return this;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n code: this.code,\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.code;\n }\n}","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport class DateUtility {\n static fromUTCtoUruguay(date: string | Date, outputFormat: string = 'DD/MM/YYYY HH:mm'): string {\n try {\n if (!date) {\n return '';\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n dayJsObj = dayjs.utc(date);\n } else {\n dayJsObj = dayjs.utc(date);\n }\n\n return dayJsObj.tz('America/Montevideo').format(outputFormat);\n } catch (e) {\n console.error('Error al convertir fecha de UTC a Uruguay:', e);\n return '';\n }\n }\n\n static fromUTCtoUruguayWithInputFormat(\n date: string | Date, \n inputFormat?: string,\n outputFormat: string = 'DD/MM/YYYY HH:mm'\n ): string {\n try {\n if (!date) {\n return '';\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n if (inputFormat) {\n dayJsObj = dayjs(date, inputFormat).utc();\n if (!dayJsObj.isValid()) {\n console.error('Error al parsear fecha con formato personalizado:', date, inputFormat);\n return '';\n }\n } else {\n dayJsObj = dayjs.utc(date);\n }\n } else {\n dayJsObj = dayjs.utc(date);\n }\n\n if (!dayJsObj.isValid()) {\n console.error('Fecha inválida:', date);\n return '';\n }\n\n return dayJsObj.tz('America/Montevideo').format(outputFormat);\n } catch (e) {\n console.error('Error al convertir fecha de UTC a Uruguay con formato de entrada:', e);\n return '';\n }\n }\n\n\n static fromUTCtoUruguayDate(date: string | Date): Date | null {\n try {\n if (!date) {\n return null;\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n dayJsObj = dayjs.utc(date);\n } else {\n dayJsObj = dayjs.utc(date);\n }\n\n return dayJsObj.tz('America/Montevideo').toDate();\n } catch (e) {\n console.error('Error al convertir fecha de UTC a Uruguay:', e);\n return null;\n }\n }\n\n static getCurrentUruguayTime(outputFormat: string = 'DD/MM/YYYY HH:mm'): string {\n try {\n return dayjs().tz('America/Montevideo').format(outputFormat);\n } catch (e) {\n console.error('Error al obtener fecha actual de Uruguay:', e);\n return '';\n }\n }\n\n static fromUruguayToUTC(date: string | Date, outputFormat: string = 'DD/MM/YYYY HH:mm'): string {\n try {\n if (!date) {\n return '';\n }\n\n let dayJsObj;\n if (typeof date === 'string') {\n dayJsObj = dayjs.tz(date, 'America/Montevideo');\n } else {\n dayJsObj = dayjs.tz(date, 'America/Montevideo');\n }\n\n return dayJsObj.utc().format(outputFormat);\n } catch (e) {\n console.error('Error al convertir fecha de Uruguay a UTC:', e);\n return '';\n }\n }\n\n static isSameDayInUruguay(date1: string | Date, date2: string | Date): boolean {\n try {\n if (!date1 || !date2) {\n return false;\n }\n\n const uruguayDate1 = this.fromUTCtoUruguayDate(date1);\n const uruguayDate2 = this.fromUTCtoUruguayDate(date2);\n\n if (!uruguayDate1 || !uruguayDate2) {\n return false;\n }\n\n return dayjs.tz(uruguayDate1, 'America/Montevideo').isSame(\n dayjs.tz(uruguayDate2, 'America/Montevideo'), \n 'day'\n );\n } catch (e) {\n console.error('Error al comparar fechas en Uruguay:', e);\n return false;\n }\n }\n} ","export const isSameDate = (date1: Date, date2: Date): boolean => {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { UsersModel } from \"../users/users.model\";\nimport { FileTemplateType } from \"./file-template-type.model\";\nimport { DateUtility } from \"../../utilities\";\n\nexport class FileModel implements DataBaseModelInterface {\n public id: string;\n public filename: string;\n public s3_key: string;\n public size: number;\n public type: string;\n public file_type: FileTemplateType;\n public uploaded_by_id: string;\n public created_at: string;\n public updated_at: string;\n public uploaded_by: UsersModel;\n\n constructor(data: Partial<FileModel> = {}) {\n this.id = data.id || '';\n this.filename = data.filename || '';\n this.s3_key = data.s3_key || '';\n this.size = data.size || 0;\n this.type = data.type || '';\n this.file_type = data.file_type || new FileTemplateType();\n this.uploaded_by_id = data.uploaded_by_id || '';\n this.created_at = data.created_at || '';\n this.updated_at = data.updated_at || '';\n this.uploaded_by = data.uploaded_by || new UsersModel();\n }\n\n public fromJSON(json: any): FileModel {\n if (json) {\n this.id = json.id || '';\n this.filename = json.filename || '';\n this.s3_key = json.s3_key || '';\n this.size = json.size || 0;\n this.type = json.type || '';\n this.file_type = json.file_type || new FileTemplateType();\n this.uploaded_by_id = json.uploaded_by_id || '';\n this.created_at = json.created_at ? DateUtility.fromUTCtoUruguay(json.created_at, 'YYYY-MM-DD HH:mm:ss') : '';\n this.updated_at = json.updated_at ? DateUtility.fromUTCtoUruguay(json.updated_at, 'YYYY-MM-DD HH:mm:ss') : '';\n this.uploaded_by = json.uploaded_by || new UsersModel();\n }\n return this;\n }\n\n public static fromJSONList(json: any[]): FileModel[] {\n return json.map((element: any) => new FileModel().fromJSON(element));\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n filename: this.filename,\n s3_key: this.s3_key,\n size: this.size,\n type: this.type,\n file_type: this.file_type,\n uploaded_by_id: this.uploaded_by_id,\n created_at: this.created_at,\n updated_at: this.updated_at,\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.filename;\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiService } from '@solcre-org/core';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GlobalApiConfigService {\n private apiService = inject(ApiService);\n private currentConfig: ApiConfig | null = null;\n\n public configure(config: ApiConfig): void {\n this.currentConfig = config;\n this.apiService.setConfig({\n apiUrl: config.apiUrl\n });\n }\n\n public getConfig(): ApiConfig | null {\n return this.currentConfig;\n }\n\n public getApiUrl(): string | null {\n return this.currentConfig ? this.currentConfig.apiUrl : null;\n }\n\n public isConfigured(): boolean {\n return this.currentConfig !== null;\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { Observable, switchMap, map, catchError, throwError } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ApiService, ApiResponseModel } from '@solcre-org/core';\nimport { FileModel } from '../models/global/file.model';\nimport { PresignedUrlRequest } from '../interfaces/global/PresignedUrlRequest.interface';\nimport { PresignedUrlResponse } from '../interfaces/global/PresignedUrlResponse.interface';\nimport { ConfirmUploadRequest } from '../interfaces/global/ConfirmUploadRequest.interface';\nimport { PresignedDownloadUrlResponse } from '../interfaces/global/PresignedDownloadUrlResponse.interface';\nimport { FileType } from '../enums/global/FileType.enum';\nimport { LoaderService } from '../components/loader/services/loader.service';\nimport { AlertService } from './alert.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AlertType } from '../enums/global/AlertType.enum';\nimport { GlobalApiConfigService } from './global-api-config.service';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n private apiService = inject(ApiService);\n private httpClient = inject(HttpClient);\n private loaderService = inject(LoaderService);\n private alertService = inject(AlertService);\n private translateService = inject(TranslateService);\n private globalApiConfigService = inject(GlobalApiConfigService);\n\n private getPresignedUrl(request: PresignedUrlRequest): Observable<PresignedUrlResponse> {\n const FILES_PRESIGNED_URL: string = this.globalApiConfigService.getConfig()?.filesPresignedUrl || '';\n return this.apiService.createObj(FILES_PRESIGNED_URL, request).pipe(\n map((res: ApiResponseModel) => res.data as PresignedUrlResponse),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.presigned_url_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n \n private uploadToS3(file: File, presignedUrl: PresignedUrlResponse): Observable<void> {\n const headers = new HttpHeaders({});\n return this.httpClient.put(presignedUrl.url, file, { \n headers,\n responseType: 'text'\n }).pipe(\n map(() => void 0),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.s3_upload_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n private confirmUpload(request: ConfirmUploadRequest): Observable<FileModel> {\n const FILES_CONFIRM_UPLOAD: string = this.globalApiConfigService.getConfig()?.filesConfirmUploadUrl || '';\n return this.apiService.createObj(FILES_CONFIRM_UPLOAD, request).pipe(\n map((res: ApiResponseModel) => new FileModel().fromJSON(res.data)),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.confirm_upload_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n public uploadFile(\n file: File, \n companyId: string, \n fileType: FileType\n ): Observable<FileModel> {\n this.loaderService.showLoader();\n\n const presignedRequest: PresignedUrlRequest = {\n company_id: companyId,\n file_type_code: fileType,\n filename: file.name,\n content_type: file.type\n };\n\n return this.getPresignedUrl(presignedRequest).pipe(\n switchMap((presignedUrl: PresignedUrlResponse) => {\n return this.uploadToS3(file, presignedUrl).pipe(\n switchMap(() => {\n const confirmRequest: ConfirmUploadRequest = {\n s3_key: presignedUrl.s3_key,\n filename: file.name,\n content_type: file.type,\n size: file.size,\n file_type_code: fileType,\n company_id: companyId\n };\n return this.confirmUpload(confirmRequest);\n })\n );\n }),\n map((fileModel: FileModel) => {\n return fileModel;\n }),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.general_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n }),\n map((result) => {\n this.loaderService.hideLoader();\n return result;\n }),\n catchError((error) => {\n this.loaderService.hideLoader();\n return throwError(() => error);\n })\n );\n }\n\n public uploadMultipleFiles(\n files: File[], \n companyId: string, \n fileType: FileType\n ): Observable<FileModel[]> {\n const uploadObservables = files.map(file => \n this.uploadFile(file, companyId, fileType)\n );\n\n return new Observable(observer => {\n Promise.all(uploadObservables.map(obs => obs.toPromise()))\n .then(results => {\n observer.next(results as FileModel[]);\n observer.complete();\n })\n .catch(error => {\n observer.error(error);\n });\n });\n }\n\n public getPresignedDownloadUrl(fileId: string): Observable<string> {\n const FILES_PRESIGNED_DOWNLOAD_URL: string = this.globalApiConfigService.getConfig()?.filesDownloadUrl || '';\n const endpoint = FILES_PRESIGNED_DOWNLOAD_URL.replace(':id', fileId);\n \n return this.apiService.fetchData(endpoint).pipe(\n map((res: ApiResponseModel) => {\n const response = res.data as PresignedDownloadUrlResponse;\n return response.url;\n }),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.presigned_download_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n })\n );\n }\n\n public getPresignedFile(fileId: string, download: boolean = false, filename?: string): Observable<void> {\n this.loaderService.showLoader();\n\n return this.getPresignedDownloadUrl(fileId).pipe(\n switchMap((downloadUrl: string) => {\n if (download) {\n this.downloadWithIframe(downloadUrl);\n\n return new Observable<void>(observer => {\n observer.next();\n observer.complete();\n });\n } else {\n window.open(downloadUrl, '_blank');\n return new Observable<void>(observer => {\n observer.next();\n observer.complete();\n });\n }\n }),\n catchError((error) => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: this.translateService.instant('file_upload.errors.file_access_error'),\n duration: 5000,\n inBottom: true,\n });\n return throwError(() => error);\n }),\n map((result) => {\n this.loaderService.hideLoader();\n return result;\n }),\n catchError((error) => {\n this.loaderService.hideLoader();\n return throwError(() => error);\n })\n );\n }\n\n private downloadWithIframe(url: string): void {\n const iframe = document.createElement('iframe');\n iframe.id = 'download-iframe-' + Date.now();\n iframe.src = url;\n iframe.style.display = 'none';\n iframe.style.visibility = 'hidden';\n iframe.style.position = 'absolute';\n iframe.style.left = '-9999px';\n \n document.body.appendChild(iframe);\n \n setTimeout(() => {\n const existingIframe = document.getElementById(iframe.id);\n if (existingIframe) {\n document.body.removeChild(existingIframe);\n }\n }, 5000);\n }\n\n public configureApiUrl(apiUrl: string): void {\n this.globalApiConfigService.configure({ apiUrl });\n }\n\n public configureApi(config: ApiConfig): void {\n this.globalApiConfigService.configure(config);\n }\n} ","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { CustomHeader } from '../interfaces/global/CustomHeader.interface';\nimport { HeaderConfiguration, HeaderConfigurationStrategy } from '../interfaces/global/HeaderConfiguration.interface';\nimport { ApiMethods } from '../enums/global/ApiMethods.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderConfigurationService {\n private configurationSubject = new BehaviorSubject<HeaderConfiguration>({});\n private strategySubject = new BehaviorSubject<HeaderConfigurationStrategy>({\n strategy: 'merge',\n priority: ['context', 'endpoint', 'global']\n });\n\n public configuration$ = this.configurationSubject.asObservable();\n public strategy$ = this.strategySubject.asObservable();\n\n setGlobalHeaders(headers: {\n get?: CustomHeader[];\n post?: CustomHeader[];\n put?: CustomHeader[];\n patch?: CustomHeader[];\n delete?: CustomHeader[];\n }): void {\n const currentConfig = this.configurationSubject.value;\n const newConfig = {\n ...currentConfig,\n global: { ...currentConfig.global, ...headers }\n };\n \n this.configurationSubject.next(newConfig);\n }\n\n setContextHeaders(contextKey: string, headers: {\n get?: CustomHeader[];\n post?: CustomHeader[];\n put?: CustomHeader[];\n patch?: CustomHeader[];\n delete?: CustomHeader[];\n }): void {\n const currentConfig = this.configurationSubject.value;\n const newConfig = {\n ...currentConfig,\n contexts: {\n ...currentConfig.contexts,\n [contextKey]: { ...currentConfig.contexts?.[contextKey], ...headers }\n }\n };\n \n this.configurationSubject.next(newConfig);\n }\n\n setEndpointHeaders(endpoint: string, headers: {\n get?: CustomHeader[];\n post?: CustomHeader[];\n put?: CustomHeader[];\n patch?: CustomHeader[];\n delete?: CustomHeader[];\n }): void {\n const currentConfig = this.configurationSubject.value;\n const newConfig = {\n ...currentConfig,\n endpoints: {\n ...currentConfig.endpoints,\n [endpoint]: { ...currentConfig.endpoints?.[endpoint], ...headers }\n }\n };\n \n this.configurationSubject.next(newConfig);\n }\n\n setStrategy(strategy: HeaderConfigurationStrategy): void {\n this.strategySubject.next(strategy);\n }\n\n getProcessedHeaders(\n method: ApiMethods,\n options?: {\n contextKey?: string;\n endpoint?: string;\n }\n ): Record<string, string> {\n const config = this.configurationSubject.value;\n const strategy = this.strategySubject.value;\n\n const headerSources: CustomHeader[][] = [];\n \n strategy.priority?.forEach(priorityType => {\n switch (priorityType) {\n case 'global':\n if (config.global?.[method]) {\n headerSources.push(config.global[method]!);\n }\n break;\n case 'context':\n if (options?.contextKey && config.contexts?.[options.contextKey]?.[method]) {\n headerSources.push(config.contexts[options.contextKey][method]!);\n }\n break;\n case 'endpoint':\n if (options?.endpoint && config.endpoints?.[options.endpoint]?.[method]) {\n headerSources.push(config.endpoints[options.endpoint][method]!);\n }\n break;\n }\n });\n\n let processedHeaders: Record<string, string> = {};\n \n switch (strategy.strategy) {\n case 'override':\n const lastSource = headerSources.reverse().find(source => source.length > 0);\n if (lastSource) {\n processedHeaders = this.mergeHeaders([lastSource]);\n }\n break;\n \n case 'append':\n processedHeaders = this.mergeHeaders(headerSources);\n break;\n \n case 'merge':\n default:\n processedHeaders = this.mergeHeaders(headerSources);\n break;\n }\n\n return processedHeaders;\n }\n\n private mergeHeaders(headerSources: CustomHeader[][]): Record<string, string> {\n const merged: Record<string, string> = {};\n \n headerSources.forEach(headerArray => {\n headerArray.forEach(headerObj => {\n Object.entries(headerObj).forEach(([key, value]) => {\n if (value !== undefined) {\n merged[key] = value;\n }\n });\n });\n });\n \n return merged;\n }\n\n clearAllHeaders(): void {\n this.configurationSubject.next({});\n }\n\n clearContextHeaders(contextKey: string): void {\n const currentConfig = this.configurationSubject.value;\n if (currentConfig.contexts) {\n delete currentConfig.contexts[contextKey];\n this.configurationSubject.next({ ...currentConfig });\n }\n }\n\n getCurrentConfiguration(): HeaderConfiguration {\n return this.configurationSubject.value;\n }\n\n onConfigurationChange(): Observable<HeaderConfiguration> {\n return this.configuration$;\n }\n}\n","export enum ApiMethods {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete'\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiResponseModel, ApiService } from '@solcre-org/core';\nimport { Observable, BehaviorSubject, tap, map, finalize, Subscription, throwError, catchError, forkJoin, of } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { zip } from 'rxjs';\nimport { LoaderService } from '../components/loader/services/loader.service';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { MoreDataConfig } from '../components/generic-table/interfaces/MoreDataConfig.interface';\nimport { AlertService } from './alert.service';\nimport { FileUploadService } from './file-upload.service';\nimport { FileModel } from '../models/global/file.model';\nimport { FileType } from '../enums/global/FileType.enum';\nimport { AlertType } from '../enums/global/AlertType.enum';\nimport { FilterParams } from '../interfaces/global/FilterParams.interface';\nimport { PaginatedResponse } from '../interfaces/global/PaginatedResponse.interface';\nimport { ApiResponse } from '../interfaces/global/ApiResponse.interface';\nimport { GlobalApiConfigService } from './global-api-config.service';\nimport { HeaderConfigurationService } from './header-configuration.service';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\nimport { ApiMethods } from '../enums/global/ApiMethods.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModelApiService<T extends DataBaseModelInterface> {\n private apiService = inject(ApiService);\n private loaderService = inject(LoaderService);\n private router = inject(Router);\n private alertService = inject(AlertService);\n private fileUploadService = inject(FileUploadService);\n private globalApiConfigService = inject(GlobalApiConfigService);\n private headerConfigService = inject(HeaderConfigurationService);\n\n private routerSubscription: Subscription;\n private dataSubject = new BehaviorSubject<PaginatedResponse<T>>({ items: [], total: 0, page: 1, pages: 1, size: 25 });\n private moreDataSubjects = new Map<string, BehaviorSubject<any[]>>();\n private customErrorHandler?: (error: any, defaultMessage: string, operation: string) => string;\n\n private currentContext?: string;\n private currentEndpoint?: string;\n\n data$ = this.dataSubject.asObservable();\n customArrayDataKey = new BehaviorSubject<string>('');\n customArrayDataKey$ = this.customArrayDataKey.asObservable();\n\n constructor() {\n this.routerSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.resetData();\n }\n });\n }\n\n resetData(): void {\n this.dataSubject.next({ items: [], total: 0, page: 1, pages: 1, size: 25 });\n this.moreDataSubjects.forEach(subject => subject.next([]));\n }\n\n setContext(contextKey: string): void {\n this.currentContext = contextKey;\n }\n\n setEndpoint(endpoint: string): void {\n this.currentEndpoint = endpoint;\n }\n\n private getProcessedHeaders(method: ApiMethods): Record<string, string> | undefined {\n const headers = this.headerConfigService.getProcessedHeaders(method, {\n contextKey: this.currentContext,\n endpoint: this.currentEndpoint\n });\n\n return Object.keys(headers).length > 0 ? headers : undefined;\n }\n\n setErrorHandler(handler?: (error: any, defaultMessage: string, operation: string) => string): void {\n this.customErrorHandler = handler;\n }\n\n private extractErrorMessage(error: any, defaultMessage: string, operation: string = 'operation'): string {\n if (this.customErrorHandler) {\n return this.customErrorHandler(error, defaultMessage, operation);\n }\n\n return defaultMessage;\n }\n\n loadData(endpoint: string, modelFactory: (json: any) => T, filterParams?: FilterParams, customArrayKey?: string): void {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const queryParams = filterParams ? this.buildQueryString(filterParams) : '';\n const url = queryParams ? `${endpoint}?${queryParams}` : endpoint;\n const customHeaders = this.getProcessedHeaders(ApiMethods.GET);\n\n const fetchCall = customHeaders\n ? this.apiService.fetchData(url, undefined, customHeaders)\n : this.apiService.fetchData(url);\n \n fetchCall.pipe(\n map((res: ApiResponseModel) => {\n if (!res || !res.data) {\n return { items: [], total: 0, page: 1, pages: 1, size: 25 } as PaginatedResponse<T>;\n }\n\n const arrayKey = customArrayKey || this.customArrayDataKey.value;\n\n if (arrayKey !== '') {\n if (typeof res.data === 'object' && res.data[arrayKey]) {\n if (Array.isArray(res.data[arrayKey])) {\n const customItems = res.data[arrayKey].map((item: any) => modelFactory(item));\n return {\n items: customItems,\n total: res.data.totalItems || res.data.total_items || customItems.length,\n page: res.data.page || 1,\n pages: res.data.pages || res.data.page_count || 1,\n size: res.data.size || customItems.length\n } as PaginatedResponse<T>;\n }\n }\n return { \n items: [],\n total: 0,\n page: 1,\n pages: 1,\n size: 0 \n } as PaginatedResponse<T>;\n }\n\n if (typeof res.data === 'object' && 'data' in res.data) {\n const items = Array.isArray(res.data.data) ? res.data.data.map((item: any) => modelFactory(item)) : [];\n return {\n items,\n total: res.data.total_items || items.length,\n page: res.data.page || 1,\n pages: res.data.page_count || 1,\n size: res.data.size || 25\n } as PaginatedResponse<T>;\n }\n\n const items = Array.isArray(res.data) ? res.data.map((item: any) => modelFactory(item)) : [];\n return {\n items,\n total: items.length,\n page: 1,\n pages: 1,\n size: items.length\n } as PaginatedResponse<T>;\n }),\n tap(data => {\n this.dataSubject.next(data);\n })\n ).subscribe({\n error: (error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_FETCH', 'fetch');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n this.dataSubject.next(this.dataSubject.value);\n this.loaderService.hideLoader();\n },\n complete: () => {\n this.loaderService.hideLoader();\n }\n });\n }\n\n private buildQueryString(params: FilterParams): string {\n return Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null && value !== '')\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n return value\n .map(v => `${encodeURIComponent(key)}[]=${encodeURIComponent(v)}`)\n .join('&');\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&');\n }\n\n loadMoreData(configs: MoreDataConfig<any>[]): void {\n if (configs.length === 0) return;\n \n const observables = configs.map(config => {\n if (!this.moreDataSubjects.has(config.key)) {\n this.moreDataSubjects.set(config.key, new BehaviorSubject<any[]>([]));\n }\n \n return this.apiService.fetchData(config.endpoint).pipe(\n map((res: ApiResponseModel) => {\n if (!res || !res.data) {\n return { key: config.key, data: [] };\n }\n\n let dataArray: any[] = [];\n \n if (typeof res.data === 'object' && 'data' in res.data && Array.isArray(res.data.data)) {\n dataArray = res.data.data;\n } else if (Array.isArray(res.data)) {\n dataArray = res.data;\n }\n \n const mappedData = dataArray.map(item => {\n const modelInstance = new config.model();\n \n if (modelInstance.fromJSON && typeof modelInstance.fromJSON === 'function') {\n modelInstance.fromJSON(item);\n }\n \n return modelInstance;\n });\n \n return { key: config.key, data: mappedData };\n }),\n catchError(error => {\n this.alertService.show({\n type: AlertType.ERROR,\n message: 'commons.notifications.ERROR_FETCH',\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return of({ key: config.key, data: [] });\n })\n );\n });\n\n forkJoin(observables).subscribe({\n next: (results) => {\n results.forEach(result => {\n const subject = this.moreDataSubjects.get(result.key);\n if (subject) {\n subject.next(result.data);\n }\n });\n },\n error: () => {\n configs.forEach(config => {\n const subject = this.moreDataSubjects.get(config.key);\n if (subject) {\n subject.next([]);\n }\n });\n }\n });\n }\n\n getMoreData(key: string): any[] {\n return this.moreDataSubjects.has(key) ? [...this.moreDataSubjects.get(key)!.value] : [];\n }\n\n getMoreDataObservable(key: string): Observable<any[]> {\n const subject = this.moreDataSubjects.get(key);\n if (!subject) {\n this.moreDataSubjects.set(key, new BehaviorSubject<any[]>([]));\n }\n return this.moreDataSubjects.get(key)!.asObservable();\n }\n\n private callApiWithHeaders<TApiResult>(\n method: (...args: any[]) => Observable<TApiResult>,\n args: any[],\n headers?: Record<string, string>\n ): Observable<TApiResult> {\n return headers ? method(...args, headers) : method(...args);\n }\n\n createItem(endpoint: string, item: T, modelFactory: (json: any) => T): Observable<T> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n\n const customHeaders = this.getProcessedHeaders(ApiMethods.POST);\n\n const createCall = customHeaders\n ? this.apiService.createObj(endpoint, item, false, customHeaders)\n : this.apiService.createObj(endpoint, item, false);\n \n return createCall.pipe(\n map((res: ApiResponseModel) => modelFactory(res.data)),\n tap(createdItem => {\n const currentData = this.dataSubject.value;\n this.dataSubject.next({ ...currentData, items: [...currentData.items, createdItem] });\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_CREATE',\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_CREATE', 'create');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n updateItem(endpoint: string, id: number | string, item: T, modelFactory: (json: any) => T): Observable<T> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const updateWithPatch = this.globalApiConfigService.getConfig()?.updateWithPatch;\n const customHeaders = this.getProcessedHeaders(updateWithPatch ? ApiMethods.PATCH : ApiMethods.PUT);\n \n const updateCall = updateWithPatch\n ? (customHeaders \n ? this.apiService.partialUpdateObj(endpoint, id, item, false, customHeaders)\n : this.apiService.partialUpdateObj(endpoint, id, item, false))\n : (customHeaders \n ? this.apiService.updateObj(endpoint, id, item, false, customHeaders)\n : this.apiService.updateObj(endpoint, id, item, false));\n \n return updateCall.pipe(\n map((res: ApiResponseModel) => modelFactory(res.data)),\n tap(updatedItem => {\n const currentData = this.dataSubject.value;\n const updatedData = {\n ...currentData,\n items: currentData.items.map(d => d.getId() === updatedItem.getId() ? updatedItem : d)\n };\n this.dataSubject.next(updatedData);\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_UPDATE',\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_UPDATE', 'update');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n getItemById(endpoint: string, id: number | string, modelFactory: (json: any) => T): Observable<T> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const customHeaders = this.getProcessedHeaders(ApiMethods.GET);\n const url = `${endpoint}/${id}`;\n \n const fetchCall = customHeaders\n ? this.apiService.fetchData(url, undefined, customHeaders)\n : this.apiService.fetchData(url);\n \n return fetchCall.pipe(\n map((res: ApiResponseModel) => {\n if (!res || !res.data) {\n throw new Error('No data found');\n }\n return modelFactory(res.data);\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_FETCH', 'getById');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n deleteItem(endpoint: string, id: number | string): Observable<boolean> {\n this.loaderService.showLoader();\n this.setEndpoint(endpoint);\n \n const customHeaders = this.getProcessedHeaders(ApiMethods.DELETE);\n \n const deleteCall = customHeaders \n ? this.apiService.deleteObj(endpoint, id, customHeaders)\n : this.apiService.deleteObj(endpoint, id);\n \n return deleteCall.pipe(\n tap(() => {\n const currentData = this.dataSubject.value;\n const updatedData = {\n ...currentData,\n items: currentData.items.filter(d => d.getId() !== id)\n };\n this.dataSubject.next(updatedData);\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_DELETE',\n autoClose: true,\n inBottom: true,\n duration: 5000,\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_DELETE', 'delete');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n deleteItems(endpoint: string, ids: (number | string)[]): Observable<boolean[]> {\n this.loaderService.showLoader();\n const deleteObservables = ids.map(id => this.deleteItem(endpoint, id));\n return zip(...deleteObservables).pipe(\n tap(() => {\n this.alertService.show({\n type: AlertType.DEFAULT,\n message: 'commons.notifications.SUCCESS_DELETE',\n autoClose: true,\n inBottom: false,\n duration: 5000\n });\n }),\n catchError((error) => {\n const errorMessage = this.extractErrorMessage(error, 'commons.notifications.ERROR_DELETE', 'deleteMultiple');\n this.alertService.show({\n type: AlertType.ERROR,\n message: errorMessage,\n autoClose: true,\n inBottom: true,\n duration: 5000\n });\n return throwError(() => error);\n }),\n finalize(() => this.loaderService.hideLoader())\n );\n }\n\n getData(): T[] {\n return this.dataSubject.value.items;\n }\n\n refreshData(endpoint: string, modelFactory: (json: any) => T): void {\n this.loadData(endpoint, modelFactory);\n }\n\n uploadFile(file: File, companyId: string, fileType: FileType): Observable<FileModel> {\n return this.fileUploadService.uploadFile(file, companyId, fileType);\n }\n\n uploadMultipleFiles(files: File[], companyId: string, fileType: FileType): Observable<FileModel[]> {\n return this.fileUploadService.uploadMultipleFiles(files, companyId, fileType);\n }\n\n getPresignedDownloadUrl(fileId: string): Observable<string> {\n return this.fileUploadService.getPresignedDownloadUrl(fileId);\n }\n\n getPresignedFile(fileId: string, download: boolean = true, filename?: string): Observable<void> {\n return this.fileUploadService.getPresignedFile(fileId, download, filename);\n }\n\n ngOnDestroy(): void {\n if (this.routerSubscription) {\n this.routerSubscription.unsubscribe();\n }\n this.moreDataSubjects.forEach(subject => subject.complete());\n this.moreDataSubjects.clear();\n }\n\n public configureApiUrl(apiUrl: string): void {\n this.globalApiConfigService.configure({ apiUrl });\n }\n\n public configureApi(config: ApiConfig): void {\n this.globalApiConfigService.configure(config);\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { PaginationService } from '../../generic-pagination/services/pagination.service';\nimport { LoaderService } from '../../loader/services/loader.service';\nimport { tap } from 'rxjs/operators';\nimport { FilterParams } from '../../../interfaces/global/FilterParams.interface';\nimport { ModelApiService } from '../../../services/model-api.service';\nimport { PaginatedResponse } from '../../../interfaces/global/PaginatedResponse.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableDataService<T extends DataBaseModelInterface & { [key: string]: any }> {\n private modelApiService = inject(ModelApiService<T>);\n private loaderService = inject(LoaderService);\n private displayedDataSubject = new BehaviorSubject<T[]>([]);\n private currentEndpoint: string | null = null;\n private currentModelFactory: ((json: any) => T) | null = null;\n private currentFilterParams: FilterParams | undefined = undefined;\n private currentPaginationParams: { page: number; size: number } | undefined = undefined;\n private currentCustomParams: Record<string, any> | undefined = undefined;\n private isPaginationEnabled: boolean = true;\n private currentCustomArrayKey: string | undefined = undefined;\n private isLoading: boolean = false;\n \n data$ = this.modelApiService.data$;\n displayedData$ = this.displayedDataSubject.asObservable();\n\n setData(newData: T[]): void {\n this.displayedDataSubject.next([...newData]);\n }\n\n getData(): T[] {\n const data = this.modelApiService.getData() as PaginatedResponse<T> | T[];\n return Array.isArray(data) ? data : data.items || [];\n }\n\n getDisplayedData(): T[] {\n return [...this.displayedDataSubject.value];\n }\n \n setEndpoint(\n endpoint: string, \n modelFactory: (json: any) => T, \n loaderId?: string, \n enablePagination: boolean = true, \n customArrayKey?: string,\n customParams?: Record<string, any>\n ): void {\n this.currentEndpoint = endpoint;\n this.currentModelFactory = modelFactory;\n this.isPaginationEnabled = enablePagination;\n this.currentCustomArrayKey = customArrayKey;\n this.currentCustomParams = customParams;\n\n if (enablePagination) {\n this.currentPaginationParams = { page: 1, size: 25 };\n } else {\n this.currentPaginationParams = undefined;\n }\n \n this.loadData(undefined, this.currentPaginationParams, loaderId);\n }\n\n private loadData(filterParams?: FilterParams, paginationParams?: { page: number; size: number }, loaderId?: string): void {\n if (!this.currentEndpoint || !this.currentModelFactory) {\n return;\n }\n\n if (this.isLoading) {\n return;\n }\n\n this.isLoading = true;\n\n if (loaderId) {\n this.loaderService.showLoader(loaderId);\n }\n\n if (filterParams !== undefined) {\n this.currentFilterParams = filterParams;\n }\n\n if (paginationParams !== undefined) {\n this.currentPaginationParams = paginationParams;\n }\n\n let params: FilterParams = {\n ...this.currentCustomParams,\n ...this.currentFilterParams\n };\n \n if (this.isPaginationEnabled && this.currentPaginationParams) {\n params = {\n ...params,\n page: this.currentPaginationParams.page,\n size: this.currentPaginationParams.size\n };\n }\n\n this.modelApiService.loadData(\n this.currentEndpoint,\n this.currentModelFactory,\n params,\n this.currentCustomArrayKey\n );\n\n setTimeout(() => {\n this.isLoading = false;\n }, 100);\n }\n\n updateCustomParams(customParams: Record<string, any> | undefined, loaderId?: string): void {\n if (JSON.stringify(this.currentCustomParams) !== JSON.stringify(customParams)) {\n this.currentCustomParams = customParams;\n this.loadData(this.currentFilterParams, this.currentPaginationParams, loaderId);\n }\n }\n\n refreshWithFilters(filterParams?: FilterParams, loaderId?: string): void {\n if (this.isPaginationEnabled) {\n this.currentPaginationParams = { \n page: 1, \n size: this.currentPaginationParams?.size || 25 \n };\n }\n const paginationParams = this.isPaginationEnabled ? this.currentPaginationParams : undefined;\n this.loadData(filterParams, paginationParams, loaderId);\n }\n\n updateDisplayedData(\n filteredData: T[],\n enablePagination: boolean,\n paginationService: PaginationService,\n tableId: string,\n itemsLoaded: number\n ): void {\n if (!this.currentEndpoint) {\n let displayed: T[];\n if (enablePagination) {\n const startIndex = (paginationService.getCurrentPage(tableId)() - 1) * paginationService.getPageSize(tableId)();\n const endIndex = startIndex + paginationService.getPageSize(tableId)();\n displayed = filteredData.slice(startIndex, endIndex);\n } else {\n displayed = filteredData.slice(0, itemsLoaded);\n }\n this.displayedDataSubject.next([...displayed]);\n } else {\n this.displayedDataSubject.next([...filteredData]);\n }\n }\n\n updatePagination(page: number, size: number, loaderId?: string): void {\n if (this.currentEndpoint) {\n if (page !== this.currentPaginationParams?.page || size !== this.currentPaginationParams?.size) {\n this.loadData(this.currentFilterParams, { page, size }, loaderId);\n }\n }\n }\n\n createItem(endpoint: string, item: T, modelFactory: (json: any) => T): Observable<T> {\n if (!endpoint || !modelFactory) {\n throw new Error('Endpoint and modelFactory are required');\n }\n return this.modelApiService.createItem(endpoint, item, modelFactory);\n }\n\n updateItem(endpoint: string, updatedItem: T, modelFactory: (json: any) => T): Observable<T> {\n if (!endpoint || !modelFactory) {\n throw new Error('Endpoint and modelFactory are required');\n }\n return this.modelApiService.updateItem(endpoint, updatedItem.getId(), updatedItem, modelFactory);\n }\n\n deleteItem(endpoint: string, item: T): Observable<boolean> {\n return this.modelApiService.deleteItem(endpoint, item.getId()).pipe(\n tap(() => {\n const paginationParams = this.isPaginationEnabled ? this.currentPaginationParams : undefined;\n this.loadData(this.currentFilterParams, paginationParams);\n })\n );\n }\n\n updateFilters(filterValues: Map<string, any>, loaderId?: string): void {\n if (!this.currentEndpoint || !this.currentModelFactory) {\n console.log('No endpoint or model factory defined for updateFilters');\n return;\n \n }\n \n const filterParams: FilterParams = {};\n filterValues.forEach((value, key) => {\n if (value !== undefined && value !== null && value !== '') {\n filterParams[key] = value;\n }\n });\n\n const normalizedCurrentFilters: FilterParams = {};\n if (this.currentFilterParams) {\n Object.keys(this.currentFilterParams).forEach(key => {\n const value = this.currentFilterParams![key];\n if (value !== undefined && value !== null && value !== '') {\n normalizedCurrentFilters[key] = value;\n }\n });\n }\n\n const currentFiltersStr = JSON.stringify(normalizedCurrentFilters);\n const newFiltersStr = JSON.stringify(filterParams);\n \n if (currentFiltersStr !== newFiltersStr) {\n this.loadData(filterParams, { page: 1, size: this.currentPaginationParams?.size || 25 }, loaderId);\n }\n }\n\n isEndpointConfigured(): boolean {\n return this.currentEndpoint !== null && this.currentModelFactory !== null;\n }\n\n updateGlobalFilter(value: string, loaderId?: string): void {\n if (!this.currentEndpoint || !this.currentModelFactory) {\n \n return;\n }\n \n const currentSearch = this.currentFilterParams?.['search'] || '';\n const normalizedValue = value.trim();\n \n if (currentSearch !== normalizedValue) {\n const filterParams: FilterParams = { ...this.currentFilterParams };\n \n if (normalizedValue === '') {\n delete filterParams['search'];\n } else {\n filterParams['search'] = normalizedValue;\n }\n \n this.loadData(filterParams, { page: 1, size: this.currentPaginationParams?.size || 25 }, loaderId);\n }\n }\n\n updateRowData(\n rowId: string | number, \n updatedFields: { [key: string]: any },\n updateFunction?: (row: T) => T\n ): void {\n const currentDisplayedData = this.getDisplayedData();\n const updatedDisplayedData = currentDisplayedData.map(row => {\n if (row.getId() === rowId) {\n if (updateFunction) {\n return updateFunction(row);\n }\n return this.applyFieldUpdates(row, updatedFields);\n }\n return row;\n });\n \n this.displayedDataSubject.next(updatedDisplayedData);\n }\n\n private applyFieldUpdates(row: T, updatedFields: { [key: string]: any }): T {\n const updatedRow = { ...row };\n \n Object.keys(updatedFields).forEach(fieldKey => {\n const fieldValue = updatedFields[fieldKey];\n \n if (fieldKey.includes('.')) {\n this.setNestedProperty(updatedRow, fieldKey, fieldValue);\n } else {\n (updatedRow as any)[fieldKey] = fieldValue;\n }\n });\n \n return updatedRow;\n }\n\n private setNestedProperty(obj: any, path: string, value: any): void {\n const keys = path.split('.');\n let current = obj;\n \n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (!current[key] || typeof current[key] !== 'object') {\n current[key] = {};\n }\n current = current[key];\n }\n \n current[keys[keys.length - 1]] = value;\n }\n}","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PaginationService } from './services/pagination.service';\nimport { TableDataService } from '../generic-table/services/table-data.service';\nimport { Subscription } from 'rxjs';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-pagination',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-pagination.component.html'\n})\nexport class GenericPaginationComponent implements OnInit, OnDestroy {\n @Input() tableId!: string;\n @Input() isServerSide: boolean = false;\n\n private subscription: Subscription | null = null;\n\n constructor(\n public paginationService: PaginationService,\n private tableDataService: TableDataService<any>\n ) {}\n\n ngOnInit(): void {\n if (this.isServerSide) {\n this.subscription = this.paginationService.paginationChange$.subscribe(event => {\n if (event.tableId === this.tableId) {\n this.tableDataService.updatePagination(event.page, event.size);\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n getCurrentPage(): number {\n return this.paginationService.getCurrentPage(this.tableId)();\n }\n\n getPageSize(): number {\n return this.paginationService.getPageSize(this.tableId)();\n }\n\n getTotalItems(): number {\n return this.paginationService.getTotalItems(this.tableId)();\n }\n\n getTotalPages(): number {\n return this.paginationService.getTotalPages(this.tableId)();\n }\n\n getPageSizeOptions(): number[] {\n return this.paginationService.getPageSizeOptions(this.tableId);\n }\n\n onPageChange(page: number): void {\n this.paginationService.setCurrentPage(this.tableId, page);\n }\n\n handlePageSizeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n if (select) {\n const newSize = parseInt(select.value, 25);\n if (!isNaN(newSize)) {\n this.paginationService.setPageSize(this.tableId, newSize);\n }\n }\n }\n\n getDisplayedRange(): { start: number; end: number } {\n const currentPage = this.getCurrentPage();\n const pageSize = this.getPageSize();\n const totalItems = this.getTotalItems();\n \n const start = (currentPage - 1) * pageSize + 1;\n const end = Math.min(currentPage * pageSize, totalItems);\n \n return { start, end };\n }\n\n getVisiblePages(): (number | string)[] {\n const currentPage = this.getCurrentPage();\n const totalPages = this.getTotalPages();\n const pages: (number | string)[] = [];\n \n if (totalPages <= 7) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (currentPage <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(totalPages);\n } else if (currentPage >= totalPages - 3) {\n pages.push(1);\n pages.push('...');\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push('...');\n for (let i = currentPage - 1; i <= currentPage + 1; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(totalPages);\n }\n }\n \n return pages;\n }\n}","@if (getTotalItems() > 0) {\n <div class=\"c-pagination\">\n <p class=\"c-pagination__summary\">\n {{ 'pagination.viewing' | translate }} \n <span>{{ getDisplayedRange().start }}-{{ getDisplayedRange().end }}</span> \n {{ 'pagination.of' | translate }} \n <span>{{ getTotalItems() }}</span>\n </p>\n\n <nav class=\"c-pager\">\n <ul class=\"c-pager__list\">\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === 1\" \n (click)=\"onPageChange(getCurrentPage() - 1)\">\n <span class=\"icon-arrow-left\"></span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of getVisiblePages()\">\n <li class=\"c-pager__item\">\n @if (page === '...') {\n <span class=\"c-pager__link\">...</span>\n } @else {\n <a class=\"c-pager__link\" \n [class.is-active]=\"getCurrentPage() === page\"\n (click)=\"onPageChange(+page)\">\n {{ page }}\n </a>\n }\n </li>\n </ng-container>\n\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === getTotalPages()\"\n (click)=\"onPageChange(getCurrentPage() + 1)\">\n <span class=\"icon-arrow-right\"></span>\n </a>\n </li>\n </ul>\n </nav>\n </div>\n}","export enum DialogActions {\n CONFIRM = 'dialog.confirm',\n CANCEL = 'dialog.cancel',\n}","import { Injectable, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ConfirmationDialogConfig } from '../interfaces/ConfirmDialogConfig.interface';\nimport { DialogActions } from '../enums/DialogActions.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmationDialogService {\n private isOpen = signal<boolean>(false);\n isOpen$ = this.isOpen.asReadonly();\n\n private config = signal<ConfirmationDialogConfig>({ title: '' });\n config$ = this.config.asReadonly();\n\n private responseSubject = new Subject<string | boolean | undefined>();\n private response$ = this.responseSubject.asObservable();\n\n openDelete(title: string, message?: string, validationValue?: string): Observable<string | boolean | undefined> {\n return this.open({\n title,\n message,\n type: 'delete',\n icon: 'icon-delete',\n confirmButtonText: 'dialog.delete',\n cancelButtonText: 'dialog.cancel',\n confirmButtonClass: 'c-btn context:error',\n inputConfig: validationValue ? {\n label: 'dialog.confirmName',\n placeholder: 'dialog.enterName',\n validationValue\n } : undefined,\n showCloseButton: true\n });\n }\n\n openConfirm(config: ConfirmationDialogConfig): Observable<string | boolean | undefined> {\n return this.open({\n ...config,\n type: 'default',\n size: config.size || 'default',\n showCloseButton: config.showCloseButton ?? true\n });\n }\n\n private open(config: ConfirmationDialogConfig): Observable<string | boolean | undefined> {\n this.config.set({\n ...config,\n confirmButtonText: config.confirmButtonText ?? DialogActions.CONFIRM,\n cancelButtonText: config.cancelButtonText ?? DialogActions.CANCEL,\n messageParams: config.messageParams ?? {},\n showCloseButton: config.showCloseButton ?? true\n });\n this.isOpen.set(true);\n return this.response$;\n }\n\n confirm(value?: string | boolean): void {\n this.responseSubject.next(value);\n this.close();\n }\n\n cancel(): void {\n this.responseSubject.next(undefined);\n this.close();\n }\n\n private close(): void {\n this.isOpen.set(false);\n this.config.set({ title: '' });\n const newSubject = new Subject<string | boolean | undefined>();\n const oldSubject = this.responseSubject;\n this.responseSubject = newSubject;\n this.response$ = this.responseSubject.asObservable();\n oldSubject.complete();\n }\n\n\n openWithOptionalInput(\n title: string, \n message?: string, \n inputLabel?: string, \n inputPlaceholder?: string\n ): Observable<string | boolean | undefined> {\n return this.open({\n title,\n message,\n type: 'default',\n confirmButtonText: 'dialog.confirm',\n cancelButtonText: 'dialog.cancel',\n inputConfig: inputLabel ? {\n label: inputLabel,\n placeholder: inputPlaceholder || '',\n } : undefined,\n showCloseButton: true\n });\n }\n\n updateConfig(config: Partial<ConfirmationDialogConfig>): void {\n this.config.update(currentConfig => ({\n ...currentConfig,\n ...config\n }));\n }\n}","import { Component, input, output, signal, ElementRef, ViewChild, ContentChild, TemplateRef, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ConfirmationDialogConfig } from './interfaces/ConfirmDialogConfig.interface';\nimport { DialogActions } from './enums/DialogActions.enum';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-confirmation-dialog',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormsModule, GenericButtonComponent, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './confirmation-dialog.component.html'\n})\nexport class ConfirmationDialogComponent {\n @ViewChild('popup') popupElement?: ElementRef;\n @ViewChild('overlay') overlayElement?: ElementRef;\n @ContentChild('customContent') customContentTemplate?: TemplateRef<any>;\n\n isOpen = input.required<boolean>();\n config = input.required<ConfirmationDialogConfig>();\n\n confirm = output<string | boolean | undefined>();\n cancel = output<void>();\n\n inputValue = signal<string>('');\n isClosing = signal<boolean>(false);\n\n closeButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.ICON,\n icon: 'icon-cross',\n ariaLabel: 'common.close',\n globalCustomClass: 'c-popup__close'\n }));\n\n cancelButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.SECONDARY,\n text: this.cancelButtonText\n }));\n\n confirmButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: this.confirmButtonText,\n context: this.config().type === 'delete' ? ButtonContext.ERROR : ButtonContext.DEFAULT,\n disabled: this.isConfirmDisabled(),\n customClass: this.config().confirmButtonClass || ''\n }));\n\n get confirmButtonText(): string {\n return this.config().confirmButtonText ?? DialogActions.CONFIRM;\n }\n\n get cancelButtonText(): string {\n return this.config().cancelButtonText ?? DialogActions.CANCEL;\n }\n\n get hasCustomContent(): boolean {\n return !!this.customContentTemplate;\n }\n\n onConfirm(): void {\n const inputConfig = this.config().inputConfig;\n \n const valueToEmit = inputConfig?.validationValue ? this.inputValue() : true;\n \n this.closeWithAnimation(() => {\n this.confirm.emit(valueToEmit);\n });\n }\n\n onCancel(): void {\n this.closeWithAnimation(() => {\n this.cancel.emit();\n });\n }\n\n onInputChange(value: string): void {\n this.inputValue.set(value);\n }\n\n isConfirmDisabled(): boolean {\n if (this.config().disableConfirm) {\n return true;\n }\n\n const inputConfig = this.config().inputConfig;\n if (!inputConfig) return false;\n \n if (!inputConfig.validationValue) {\n return false;\n }\n \n if (inputConfig.validationValue && this.inputValue() !== inputConfig.validationValue) {\n return true;\n }\n\n return false;\n }\n\n private closeWithAnimation(callback: () => void): void {\n if (!this.popupElement) return;\n\n const popup = this.popupElement.nativeElement;\n const overlay = this.overlayElement?.nativeElement;\n\n popup.classList.add('is-closing');\n\n if (overlay) {\n overlay.addEventListener(\n 'animationend',\n () => {\n if (popup.classList.contains('is-closing')) {\n popup.classList.remove('is-visible', 'is-closing');\n callback();\n }\n },\n { once: true }\n );\n } else {\n setTimeout(() => {\n popup.classList.remove('is-visible', 'is-closing');\n callback();\n }, 300);\n }\n }\n}","<div class=\"c-popup\" \n [class.c-popup--xl]=\"config().size === 'xl'\" \n [class.is-visible]=\"isOpen()\" \n [ngClass]=\"config().customClass\"\n #popup \n *ngIf=\"isOpen()\">\n <div class=\"c-popup__overlay\" (click)=\"onCancel()\" #overlay></div>\n <div class=\"c-popup__holder\">\n @if(config().showCloseButton) {\n <core-generic-button\n [config]=\"closeButtonConfig()\"\n (buttonClick)=\"onCancel()\">\n </core-generic-button>\n }\n @if (config().icon) {\n <span class=\"c-popup__icon\" [ngClass]=\"config().icon | coreIconCompat\"></span>\n }\n\n <p class=\"c-popup__title u-heading u-fz--600\">\n {{ config().title | translate: config().messageParams }}\n </p>\n\n @if (config().customTemplate) {\n <ng-container *ngTemplateOutlet=\"config().customTemplate!; context: config().customTemplateContext\"></ng-container>\n } @else {\n \n @if (config().message) {\n <p class=\"c-popup__text u-text\">\n {{ config().message ?? '' | translate: config().messageParams }}\n </p>\n }\n\n @if (config().inputConfig) {\n <label class=\"c-popup__form c-entry-item\">\n <span class=\"c-entry-text\">\n {{ config().inputConfig?.label ?? '' | translate }}\n @if (!config().inputConfig?.validationValue) {\n <!-- Todo: Dónde está el .u-text--muted ? -->\n <span class=\"u-text--muted\"> ({{ 'common.optional' | translate }})</span>\n }\n </span>\n <input \n class=\"c-entry-input\"\n type=\"text\"\n [placeholder]=\"config().inputConfig?.placeholder ?? '' | translate\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"onInputChange($event)\"\n [required]=\"!!config().inputConfig?.validationValue\"\n >\n </label>\n }\n\n }\n\n <div class=\"u-flex u-push-t--xl\">\n @if (config().showCancelButton !== false) {\n <core-generic-button\n [config]=\"cancelButtonConfig()\"\n (buttonClick)=\"onCancel()\">\n </core-generic-button>\n }\n @if (config().showConfirmButton !== false) {\n <core-generic-button\n [config]=\"confirmButtonConfig()\"\n (buttonClick)=\"onConfirm()\">\n </core-generic-button>\n }\n </div>\n </div>\n</div>","export enum DropdownDirection {\n UP = 'up',\n DOWN = 'down'\n}","export enum TableAction {\n VIEW = 'view',\n EDIT = 'edit',\n DELETE = 'delete',\n SELECT = 'select',\n CREATE = 'create'\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DropdownService {\n private openDropdownId = new BehaviorSubject<number | null>(null);\n dropdownState$ = this.openDropdownId.asObservable();\n\n isDropdownOpen(id: number): boolean {\n return this.openDropdownId.value === id;\n }\n\n openDropdown(id: number): void {\n if (this.openDropdownId.value === id) {\n this.closeDropdown();\n } else {\n this.openDropdownId.next(id);\n }\n }\n\n closeDropdown(): void {\n this.openDropdownId.next(null);\n }\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n input,\n output,\n TemplateRef,\n ViewContainerRef,\n inject,\n OnDestroy,\n computed\n} from '@angular/core';\nimport { CustomAction } from '../../interfaces/CustomAction.interface';\nimport { TableAction } from './enums/TableAction.enum';\nimport { DropdownService } from './services/dropdown.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { TableActionConfig } from '../../interfaces/TableActionConfig.interface';\nimport { PermissionWrapperService } from '../../../../services/permission-wrapper.service';\nimport { Overlay, OverlayRef, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { GenericButtonComponent } from '../../../generic-button/generic-button.component';\nimport { ButtonConfig } from '../../../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../../../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../../../generic-button/enums/ButtonContext.enum';\nimport { ButtonActionEvent } from '../../../generic-button/interfaces/ButtonActionEvent.interface';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-dropdown',\n standalone: true,\n imports: [TranslateModule, CommonModule, OverlayModule, GenericButtonComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss'\n})\nexport class DropdownComponent<T> implements OnDestroy {\n private permissionService = inject(PermissionWrapperService);\n private viewContainerRef = inject(ViewContainerRef);\n private overlayRef: OverlayRef | null = null;\n private subscription: Subscription | null = null;\n \n rowId = input<number>(0);\n triggerElementId = input<string>('');\n extraDefaultActions = input<any[]>([]);\n extraCustomActions = input<CustomAction<T>[]>([]);\n row = input<T | null>(null);\n\n actionTriggered = output<{ action: TableAction; row: T }>();\n customActionTriggered = output<{ action: CustomAction<T>; row: T }>();\n\n TableAction = TableAction;\n\n defaultActionsConfigs = computed(() => \n this.extraDefaultActions().map(actionConfig => ({\n actionConfig,\n buttonConfig: this.getDefaultActionButtonConfig(actionConfig)\n }))\n );\n\n customActionsConfigs = computed(() => \n this.extraCustomActions().map(customAction => ({\n customAction,\n buttonConfig: this.getCustomActionButtonConfigForRow(customAction)\n }))\n );\n\n @ViewChild('dropdownMenu') dropdownMenu!: TemplateRef<any>;\n\n constructor(private overlay: Overlay, public dropdownService: DropdownService) {\n this.subscription = this.dropdownService.dropdownState$.subscribe((openId: number | null) => {\n if (openId === this.rowId()) {\n this.showDropdown();\n } else {\n this.closeDropdown();\n }\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.closeDropdown();\n }\n\n private showDropdown() {\n if (this.overlayRef) {\n return;\n }\n\n const triggerElement = document.getElementById(this.triggerElementId());\n if (!triggerElement) {\n return;\n }\n\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.overlay.position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8\n }\n ])\n .withFlexibleDimensions(true)\n .withPush(false)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: ['c-submenu-options', 'dropdown-panel']\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const portal = new TemplatePortal(this.dropdownMenu, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n setTimeout(() => {\n const element = this.overlayRef?.overlayElement;\n if (element) {\n const nav = element.querySelector('.c-submenu-options__nav');\n if (nav) {\n nav.classList.add('is-visible');\n }\n }\n });\n\n this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());\n }\n\n closeDropdown() {\n if (this.overlayRef) {\n const element = this.overlayRef.overlayElement;\n if (element) {\n const nav = element.querySelector('.c-submenu-options__nav');\n if (nav) {\n nav.classList.remove('is-visible');\n }\n }\n \n setTimeout(() => {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.dropdownService.closeDropdown();\n }\n }, 200);\n }\n }\n\n triggerAction(action: TableAction): void {\n const currentRow = this.row();\n if (currentRow) {\n this.actionTriggered.emit({ action, row: currentRow });\n }\n this.closeDropdown();\n }\n\n triggerCustomAction(action: CustomAction<T>): void {\n const currentRow = this.row();\n if (currentRow) {\n this.customActionTriggered.emit({ action, row: currentRow });\n }\n this.closeDropdown();\n }\n\n hasPermission(action: TableActionConfig | CustomAction<T>): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n getActionLabel(action: TableAction): string {\n switch (action) {\n case TableAction.VIEW:\n return 'table.view';\n case TableAction.EDIT:\n return 'table.edit';\n case TableAction.DELETE:\n return 'table.delete';\n case TableAction.CREATE:\n return 'table.create';\n default:\n return '';\n }\n }\n\n getDefaultActionButtonConfig(actionConfig: TableActionConfig): ButtonConfig {\n return {\n type: ButtonType.LINK,\n text: this.getActionLabel(actionConfig.action),\n icon: actionConfig.icon || (actionConfig.action === TableAction.DELETE ? 'icon-delete' : 'icon-more'),\n context: actionConfig.action === TableAction.DELETE ? ButtonContext.ERROR : undefined\n };\n }\n\n getCustomActionButtonConfig(customAction: CustomAction<T>): ButtonConfig {\n return {\n type: ButtonType.LINK,\n text: customAction.label,\n icon: customAction.icon,\n customClass: 'c-link--secondary'\n };\n }\n\n getCustomActionButtonConfigForRow(customAction: CustomAction<T>): ButtonConfig {\n const baseConfig = this.getCustomActionButtonConfig(customAction);\n \n const currentRow = this.row();\n const isDisabled = currentRow && customAction.shouldDisable ? customAction.shouldDisable(currentRow) : false;\n \n return {\n ...baseConfig,\n disabled: isDisabled\n };\n }\n\n onButtonClick(event: ButtonActionEvent, action: any): void {\n if (typeof action === 'object' && 'action' in action) {\n this.triggerAction(action.action);\n } else {\n this.triggerCustomAction(action);\n }\n }\n}\n","<ng-template #dropdownMenu>\n <nav class=\"c-submenu-options__nav\">\n <ul class=\"c-submenu-options__list\">\n @for (actionConfigItem of defaultActionsConfigs(); track actionConfigItem.actionConfig.action){\n @if (hasPermission(actionConfigItem.actionConfig)) {\n <li class=\"c-submenu-options__item\">\n <core-generic-button\n [config]=\"actionConfigItem.buttonConfig\"\n (buttonClick)=\"onButtonClick($event, actionConfigItem.actionConfig)\">\n </core-generic-button>\n </li>\n }\n }\n @for (customActionItem of customActionsConfigs(); track customActionItem.customAction.label || $index) {\n @if (hasPermission(customActionItem.customAction)) {\n <li class=\"c-submenu-options__item\">\n <core-generic-button\n [config]=\"customActionItem.buttonConfig\"\n (buttonClick)=\"onButtonClick($event, customActionItem.customAction)\">\n </core-generic-button>\n </li>\n }\n }\n </ul>\n </nav></ng-template\n>\n","export enum FilterType {\n TEXT = 'text',\n SELECT = 'select',\n NUMBER = 'number',\n CHECKBOX = 'checkbox',\n SWITCH = 'switch',\n SERVER_SELECT = 'server-select',\n DATE = 'date',\n DATETIME = 'datetime',\n PASSWORD = 'password',\n TEXTAREA = 'textarea'\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FilterConfig } from '../interfaces/FilterConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilterService<T extends DataBaseModelInterface & { [key: string]: any }> {\n private filteredDataSubject = new BehaviorSubject<T[]>([]);\n private globalFilterValueSubject = new BehaviorSubject<string>('');\n private customFilterValuesSubject = new BehaviorSubject<Map<string, any>>(new Map());\n private sortColumnSubject = new BehaviorSubject<string | null>(null);\n private sortDirectionSubject = new BehaviorSubject<'asc' | 'desc' | null>(null);\n\n private filterChangeSubject = new Subject<void>();\n filterChange$ = this.filterChangeSubject.asObservable();\n\n filteredData$ = this.filteredDataSubject.asObservable();\n globalFilterValue$ = this.globalFilterValueSubject.asObservable();\n customFilterValues$ = this.customFilterValuesSubject.asObservable();\n sortColumn$ = this.sortColumnSubject.asObservable();\n sortDirection$ = this.sortDirectionSubject.asObservable();\n\n getFilteredData(): T[] {\n return [...this.filteredDataSubject.value];\n }\n\n getSortColumn(): string | null {\n return this.sortColumnSubject.value;\n }\n\n getSortDirection(): 'asc' | 'desc' | null {\n return this.sortDirectionSubject.value;\n }\n\n applyAllFilters(data: T[], customFilters: FilterConfig<T>[], showFilter: boolean): void {\n let filtered = [...data];\n\n const filterValues = this.customFilterValuesSubject.value;\n customFilters.forEach((filter: FilterConfig<T>) => {\n const key = filter.key.toString();\n const value = filterValues.get(key);\n if (value != null) {\n filtered = filtered.filter(row => filter.filterFn(row, value));\n }\n });\n\n if (showFilter && this.globalFilterValueSubject.value) {\n filtered = filtered.filter(row =>\n Object.values(row).some(val =>\n val?.toString().toLowerCase().includes(this.globalFilterValueSubject.value)\n )\n );\n }\n\n this.filteredDataSubject.next(filtered);\n this.filterChangeSubject.next();\n }\n\n applyGlobalFilter(value: string): void {\n this.globalFilterValueSubject.next(value.trim().toLowerCase());\n this.filterChangeSubject.next();\n }\n\n applyCustomFilters(filterValues: Map<string, any>): void {\n this.customFilterValuesSubject.next(new Map(filterValues));\n this.filterChangeSubject.next();\n }\n\n setCustomFilters(filterValues: Map<string, any>): void {\n this.customFilterValuesSubject.next(new Map(filterValues));\n this.filterChangeSubject.next();\n }\n\n setCustomFiltersSilent(filterValues: Map<string, any>): void {\n this.customFilterValuesSubject.next(new Map(filterValues));\n }\n\n setGlobalFilter(value: string): void {\n this.globalFilterValueSubject.next(value.trim().toLowerCase());\n this.filterChangeSubject.next();\n }\n\n setGlobalFilterSilent(value: string): void {\n this.globalFilterValueSubject.next(value.trim().toLowerCase());\n }\n\n sortData(columnKey: string): void {\n if (this.sortColumnSubject.value === columnKey) {\n this.sortDirectionSubject.next(this.sortDirectionSubject.value === 'asc' ? 'desc' : 'asc');\n } else {\n this.sortColumnSubject.next(columnKey);\n this.sortDirectionSubject.next('asc');\n }\n this.applySort();\n }\n\n applySort(): void {\n const sortColumn = this.sortColumnSubject.value;\n const sortDirection = this.sortDirectionSubject.value;\n if (!sortColumn || !sortDirection) return;\n\n const sorted = [...this.filteredDataSubject.value].sort((a, b) => {\n const valueA = a[sortColumn as keyof T];\n const valueB = b[sortColumn as keyof T];\n const comparison = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n return sortDirection === 'asc' ? comparison : -comparison;\n });\n this.filteredDataSubject.next(sorted);\n }\n\n getCustomFilters(): Map<string, any> {\n return this.customFilterValuesSubject.value;\n }\n}","import { Component, ElementRef, inject, computed, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule, ReactiveFormsModule, FormGroup, FormBuilder } from '@angular/forms';\nimport { FilterConfig } from './interfaces/FilterConfig.interface';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FieldType } from '../../../../enums/global/FieldType.enum';\nimport { DynamicFieldDirective } from '../../../../directives/DynamicField.directive';\nimport { ModalMode } from '../../../../enums/global/ModalMode.enum';\nimport { GenericButtonComponent } from '../../../generic-button/generic-button.component';\nimport { ButtonConfig } from '../../../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../../../generic-button/enums/ButtonType.enum';\nimport { input, output, signal } from '@angular/core';\nimport { CoreHostDirective } from '../../../../directives/core-host.directive';\n\n@Component({\n selector: 'core-filter-modal',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormsModule, ReactiveFormsModule, DynamicFieldDirective, GenericButtonComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './filter-modal.component.html',\n styleUrls: ['./filter-modal.component.scss']\n})\nexport class FilterModalComponent<T extends DataBaseModelInterface> implements OnChanges {\n private formBuilder = inject(FormBuilder);\n private elementRef = inject(ElementRef);\n \n isClosing = signal(false);\n isOpen = input(false);\n filters = input<FilterConfig<T>[]>([]);\n currentFilterValues = input<Map<string, any>>(new Map());\n \n close = output<void>();\n filterChange = output<Map<string, any>>();\n clearFilters = output<void>();\n globalFilterChange = output<string>();\n\n readonly FieldType = FieldType;\n readonly ModalMode = ModalMode;\n \n filterValues = signal<Map<string, any>>(new Map());\n globalFilterValue = signal('');\n form = signal<FormGroup>(this.formBuilder.group({}));\n clearTrigger = signal<number>(0);\n\n hasActiveFilters = computed(() => {\n const hasCustomFilters = this.filterValues().size > 0;\n const hasGlobalFilter = this.globalFilterValue().trim().length > 0;\n return hasCustomFilters || hasGlobalFilter;\n });\n\n closeButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.ICON,\n icon: 'icon-cross',\n ariaLabel: 'common.close',\n customClass: 'c-modal__close'\n }));\n\n clearButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.LINK,\n text: 'table.clearFilters',\n disabled: !this.hasActiveFilters()\n }));\n\n applyButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: 'table.apply'\n }));\n\n constructor() {\n this.initializeForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['filters'] && !changes['filters'].firstChange) {\n this.initializeForm();\n this.resetValues();\n }\n \n if (changes['currentFilterValues']) {\n this.filterValues.set(new Map(changes['currentFilterValues'].currentValue || new Map()));\n this.updateFormWithFilterValues();\n }\n \n if (changes['isOpen'] && changes['isOpen'].currentValue === true) {\n this.updateFormWithFilterValues();\n }\n }\n\n private initializeForm(): void {\n const formGroup: Record<string, any> = {};\n this.filters().forEach(filter => {\n formGroup[filter.key.toString()] = [''];\n });\n this.form.set(this.formBuilder.group(formGroup));\n }\n\n private resetValues(): void {\n this.filterValues.set(new Map());\n this.globalFilterValue.set('');\n this.clearTrigger.update(value => value + 1);\n \n const form = this.form();\n this.filters().forEach(filter => {\n const control = form.get(filter.key.toString());\n if (control) {\n control.setValue('', { emitEvent: false });\n control.markAsPristine();\n control.markAsUntouched();\n }\n });\n \n if (this.currentFilterValues().size === 0) {\n this.updateFormWithFilterValues();\n }\n }\n\n private updateFormWithFilterValues(): void {\n const form = this.form();\n \n this.filters().forEach(filter => {\n const control = form.get(filter.key.toString());\n if (control) {\n control.setValue('', { emitEvent: false });\n }\n });\n \n this.filterValues().forEach((value, key) => {\n const control = form.get(key);\n if (control) {\n control.setValue(value, { emitEvent: false });\n }\n });\n }\n\n getFieldConfig(filter: FilterConfig<T>): FilterConfig<T> {\n return {\n ...filter,\n modes: {\n [ModalMode.FILTER]: {\n visible: true,\n validators: filter.validators\n }\n }\n };\n }\n\n getFieldValue(filterKey: string): any {\n const trigger = this.clearTrigger();\n return this.filterValues().get(filterKey) ?? '';\n }\n\n updateFilter(key: string, value: any): void {\n const newValues = new Map(this.filterValues());\n \n if (value === '' || value === null || value === undefined) {\n newValues.delete(key);\n } else {\n newValues.set(key, value);\n }\n \n this.filterValues.set(newValues);\n \n const control = this.form().get(key);\n if (control) {\n control.setValue(value, { emitEvent: false });\n }\n }\n\n updateGlobalFilterValue(value: string): void {\n this.globalFilterValue.set(value);\n }\n\n onApply(): void {\n const transformedValues = new Map<string, any>();\n \n this.filterValues().forEach((value, key) => {\n const filter = this.filters().find(f => f.key.toString() === key);\n \n if (filter?.transformValue) {\n transformedValues.set(key, filter.transformValue(value));\n } else {\n transformedValues.set(key, value);\n }\n });\n \n this.filterChange.emit(transformedValues);\n this.onClose();\n }\n\n onClear(): void {\n this.filterValues.set(new Map());\n this.globalFilterValue.set('');\n this.clearTrigger.update(value => value + 1);\n \n const form = this.form();\n this.filters().forEach(filter => {\n const control = form.get(filter.key.toString());\n if (control) {\n control.setValue('', { emitEvent: false });\n control.markAsPristine();\n control.markAsUntouched();\n }\n });\n \n this.globalFilterChange.emit('');\n this.clearFilters.emit();\n this.filterChange.emit(new Map());\n \n setTimeout(() => {\n this.onClose();\n }, 100);\n }\n\n onClose(): void {\n this.isClosing.set(true);\n \n const overlay = this.elementRef.nativeElement.querySelector('.c-modal__overlay');\n if (!overlay) {\n this.isClosing.set(false);\n this.close.emit();\n return;\n }\n \n const onAnimationEnd = (e: AnimationEvent) => {\n if (e.target === overlay && this.isClosing()) {\n this.isClosing.set(false);\n this.close.emit();\n overlay.removeEventListener('animationend', onAnimationEnd);\n }\n };\n\n overlay.addEventListener('animationend', onAnimationEnd);\n }\n}","<div class=\"c-modal\" [class.is-visible]=\"isOpen()\" [class.is-closing]=\"isClosing()\">\n <div class=\"c-modal__overlay\" (click)=\"onClose()\"></div>\n <div class=\"c-modal__holder\">\n <div class=\"c-modal__header\">\n <p class=\"c-modal__title\">\n {{ \"table.filterBy\" | translate }}\n </p>\n <core-generic-button\n [config]=\"closeButtonConfig()\"\n (buttonClick)=\"onClose()\">\n </core-generic-button>\n </div>\n <div class=\"c-modal__body\">\n <form class=\"c-entry-group\">\n @for (filter of filters(); track filter.key.toString() + '-' + clearTrigger()) {\n <div coreDynamicField [field]=\"getFieldConfig(filter)\" [value]=\"getFieldValue(filter.key.toString())\"\n [mode]=\"ModalMode.FILTER\" (valueChange)=\"updateFilter(filter.key.toString(), $event)\">\n </div>\n }\n </form>\n </div>\n <div class=\"c-modal__bottom\">\n <core-generic-button\n [config]=\"clearButtonConfig()\"\n (buttonClick)=\"onClear()\">\n </core-generic-button>\n <core-generic-button\n [config]=\"applyButtonConfig()\"\n (buttonClick)=\"onApply()\">\n </core-generic-button>\n </div>\n </div>\n</div>","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalMode } from '../../../enums/global/ModalMode.enum';\nimport { ModalFieldConfig } from '../../../interfaces/global/ModalFieldConfig.interface';\nimport { TableAction } from '../components/dropdown/enums/TableAction.enum';\nimport { FieldType } from '../../../enums/global/FieldType.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableActionService<T extends DataBaseModelInterface & { [key: string]: any }> {\n private selectedRowsSubject = new BehaviorSubject<T[]>([]);\n private isModalOpenSubject = new BehaviorSubject<boolean>(false);\n private modalModeSubject = new BehaviorSubject<ModalMode>(ModalMode.VIEW);\n private modalDataSubject = new BehaviorSubject<T | null>(null);\n private modalFieldsToShowSubject = new BehaviorSubject<ModalFieldConfig<T>[]>([]);\n private modalTitleSubject = new BehaviorSubject<string>('');\n\n selectedRows$ = this.selectedRowsSubject.asObservable();\n isModalOpen$ = this.isModalOpenSubject.asObservable();\n modalMode$ = this.modalModeSubject.asObservable();\n modalData$ = this.modalDataSubject.asObservable();\n modalFieldsToShow$ = this.modalFieldsToShowSubject.asObservable();\n modalTitle$ = this.modalTitleSubject.asObservable();\n\n getSelectedRows(): T[] {\n return [...this.selectedRowsSubject.value];\n }\n\n getModalMode(): ModalMode {\n return this.modalModeSubject.value;\n }\n\n toggleRow(row: T): void {\n const currentRows = this.selectedRowsSubject.value;\n const index = currentRows.indexOf(row);\n if (index > -1) {\n this.selectedRowsSubject.next(currentRows.filter(r => r !== row));\n } else {\n this.selectedRowsSubject.next([...currentRows, row]);\n }\n }\n\n masterToggle(displayedData: T[]): void {\n const currentRows = this.selectedRowsSubject.value;\n const allSelected = displayedData.every(row => currentRows.includes(row));\n if (allSelected) {\n this.selectedRowsSubject.next(currentRows.filter(row => !displayedData.includes(row)));\n } else {\n const newRows = [...currentRows];\n displayedData.forEach(row => {\n if (!newRows.includes(row)) newRows.push(row);\n });\n this.selectedRowsSubject.next(newRows);\n }\n }\n\n clearInvalidSelections(data: T[]): void {\n this.selectedRowsSubject.next(this.selectedRowsSubject.value.filter(row => data.includes(row)));\n }\n\n getIsModalOpen(): boolean {\n return this.isModalOpenSubject.value;\n }\n\n getModalData(): T | null {\n return this.modalDataSubject.value;\n }\n\n getModalFieldsToShow(): ModalFieldConfig<T>[] {\n return [...this.modalFieldsToShowSubject.value];\n }\n\n getModalTitle(): string {\n return this.modalTitleSubject.value;\n }\n\n openModal(mode: ModalMode, row: T, fields: ModalFieldConfig<T>[], customTitle?: string): void {\n this.modalModeSubject.next(mode);\n this.modalFieldsToShowSubject.next([...fields]);\n \n let modalData: T;\n if (mode === ModalMode.CREATE) {\n modalData = this.initializeDefaultData(fields, row);\n this.modalTitleSubject.next(customTitle || 'modal.createTitle');\n } else {\n modalData = this.initializeDefaultData(fields, row, true);\n this.modalTitleSubject.next(\n customTitle ||\n (mode === ModalMode.VIEW ? 'modal.viewTitle' : 'modal.editTitle')\n );\n }\n \n this.modalDataSubject.next(modalData);\n this.isModalOpenSubject.next(true);\n }\n \n private initializeDefaultData(fields: ModalFieldConfig<T>[], template: T, isEditMode: boolean = false): T {\n const newData = Object.create(Object.getPrototypeOf(template)) as T;\n const defaultValues: Partial<T> = {};\n \n if (isEditMode) {\n Object.assign(defaultValues, template);\n }\n \n fields.forEach(field => {\n const key = field.key as keyof T;\n if (isEditMode && defaultValues[key] !== undefined && defaultValues[key] !== null) {\n if (field.type === FieldType.SELECT) {\n const value = defaultValues[key];\n if (field.multiple) {\n const values = Array.isArray(value) ? value : [value];\n defaultValues[key] = (values as any[])\n .map(item => {\n if (item && typeof item === 'object') {\n return item.getId ? item.getId() : item.id ?? null;\n }\n return item;\n })\n .filter(id => id !== null && id !== undefined) as any;\n } else {\n const singleValue = Array.isArray(value) ? value[0] : value;\n defaultValues[key] = (singleValue\n ? (typeof singleValue === 'object'\n ? (singleValue.getId ? singleValue.getId() : singleValue.id ?? '')\n : singleValue)\n : '') as any;\n }\n }\n return;\n }\n \n switch (field.type) {\n case FieldType.CHECKBOX:\n defaultValues[key] = (field.defaultValue ?? false) as any;\n break;\n case FieldType.NUMBER:\n defaultValues[key] = (field.defaultValue ?? 0) as any;\n break;\n case FieldType.SELECT:\n defaultValues[key] = field.multiple\n ? (field.defaultValue ?? []) as any\n : (field.defaultValue ?? (field.options?.[0]?.value ?? '')) as any;\n break;\n case FieldType.TEXTAREA:\n case FieldType.TEXT:\n default:\n defaultValues[key] = (field.defaultValue ?? '') as any;\n break;\n }\n });\n \n Object.assign(newData, defaultValues);\n return newData;\n }\n\n closeModal(): void {\n this.isModalOpenSubject.next(false);\n this.modalDataSubject.next(null);\n this.modalFieldsToShowSubject.next([]);\n this.modalTitleSubject.next('');\n }\n\n triggerAction(action: TableAction, row?: T, fields: ModalFieldConfig<T>[] = []): { action: TableAction; row?: T } | null {\n if (row && (action === TableAction.VIEW || action === TableAction.EDIT)) {\n this.openModal(\n action === TableAction.VIEW ? ModalMode.VIEW : ModalMode.EDIT,\n row,\n fields\n );\n return null;\n } else if (action === TableAction.CREATE) {\n this.openModal(ModalMode.CREATE, row || ({} as T), fields);\n return null;\n } else if (row) {\n return { action, row };\n }\n return null;\n }\n}","export enum HeaderElementType {\n GLOBAL_ACTIONS = 'globalActions',\n CUSTOM_ACTIONS = 'customActions', \n FILTER = 'filter',\n CREATE = 'create',\n CUSTOM_TEMPLATE = 'customTemplate'\n} ","import { inject, Injectable, signal, TemplateRef } from '@angular/core';\nimport { GlobalAction } from '../components/generic-table/interfaces/GlobalAction.interface';\nimport { FilterConfig } from '../components/generic-table/components/filter-modal/interfaces/FilterConfig.interface';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HeaderActionConfig, HeaderConfig } from '../interfaces/global/HeaderActionConfig.interface';\nimport { HeaderOrderConfig, HeaderElementConfig } from '../interfaces/global/HeaderOrderConfig.interface';\nimport { HeaderElementType } from '../enums/global/HeaderElementType.enum';\nimport { ButtonConfig } from '../components/generic-button/interfaces/ButtonConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderService {\n private translateService = inject(TranslateService);\n private title = signal<string>('');\n private text = signal<string>('');\n private globalActions = signal<GlobalAction<any>[]>([]);\n private showFilter = signal<boolean>(false);\n private customFilters = signal<FilterConfig<any>[]>([]);\n private showCreateButton = signal<boolean>(false);\n private hasCreatePermission = signal<boolean>(false);\n \n private isVisible = signal<boolean>(true);\n private customActions = signal<HeaderActionConfig[]>([]);\n private showDefaultFilter = signal<boolean>(true);\n private showDefaultCreate = signal<boolean>(true);\n private headerOrder = signal<HeaderOrderConfig | undefined>(undefined);\n private customTemplate = signal<TemplateRef<any> | null>(null);\n private filterButtonConfig = signal<Partial<ButtonConfig> | undefined>(undefined);\n private createButtonConfig = signal<Partial<ButtonConfig> | undefined>(undefined);\n\n setHeaderData(data: {\n title?: string;\n text?: string;\n globalActions?: GlobalAction<any>[];\n showFilter?: boolean;\n customFilters?: FilterConfig<any>[];\n showCreateButton?: boolean;\n hasCreatePermission?: boolean;\n }) {\n if (data.title !== undefined) this.title.set(data.title);\n if (data.text !== undefined) this.text.set(data.text);\n if (data.globalActions !== undefined) this.globalActions.set(data.globalActions);\n if (data.showFilter !== undefined) this.showFilter.set(data.showFilter);\n if (data.customFilters !== undefined) this.customFilters.set(data.customFilters);\n if (data.showCreateButton !== undefined) this.showCreateButton.set(data.showCreateButton);\n if (data.hasCreatePermission !== undefined) this.hasCreatePermission.set(data.hasCreatePermission);\n }\n\n getTitle() {\n return this.title;\n }\n\n getText() {\n return this.text;\n }\n\n getGlobalActions() {\n return this.globalActions;\n }\n\n getShowFilter() {\n return this.showFilter;\n }\n\n getCustomFilters() {\n return this.customFilters;\n }\n\n getShowCreateButton() {\n return this.showCreateButton;\n }\n\n getHasCreatePermission() {\n return this.hasCreatePermission;\n }\n\n getCustomTemplate() {\n return this.customTemplate;\n }\n\n setCustomTemplate(template: TemplateRef<any> | null) {\n this.customTemplate.set(template);\n }\n\n clearHeaderData() {\n this.title.set('');\n this.text.set('');\n this.globalActions.set([]);\n this.showFilter.set(false);\n this.customFilters.set([]);\n this.showCreateButton.set(false);\n this.hasCreatePermission.set(false);\n this.headerOrder.set(undefined);\n this.customTemplate.set(null);\n this.filterButtonConfig.set(undefined);\n this.createButtonConfig.set(undefined);\n }\n\n setTitle(title: string) {\n this.title.set(title);\n }\n\n setText(text: string) {\n this.text.set(text);\n }\n\n setHeaderConfig(config: HeaderConfig) {\n if (config.title !== undefined) this.title.set(config.title);\n if (config.text !== undefined) this.text.set(config.text);\n if (config.visible !== undefined) this.isVisible.set(config.visible);\n if (config.showDefaultFilter !== undefined) this.showDefaultFilter.set(config.showDefaultFilter);\n if (config.showDefaultCreate !== undefined) this.showDefaultCreate.set(config.showDefaultCreate);\n if (config.customActions !== undefined) this.customActions.set(config.customActions);\n if (config.globalActions !== undefined) this.globalActions.set(config.globalActions);\n if (config.customFilters !== undefined) this.customFilters.set(config.customFilters);\n if (config.hasCreatePermission !== undefined) this.hasCreatePermission.set(config.hasCreatePermission);\n if (config.headerOrder !== undefined) this.headerOrder.set(config.headerOrder);\n if (config.customTemplate !== undefined) this.customTemplate.set(config.customTemplate);\n if (config.filterButtonConfig !== undefined) this.filterButtonConfig.set(config.filterButtonConfig);\n if (config.createButtonConfig !== undefined) this.createButtonConfig.set(config.createButtonConfig);\n }\n\n getIsVisible() {\n return this.isVisible;\n }\n\n getCustomActions() {\n return this.customActions;\n }\n\n getShowDefaultFilter() {\n return this.showDefaultFilter;\n }\n\n getShowDefaultCreate() {\n return this.showDefaultCreate;\n }\n\n showHeader() {\n this.isVisible.set(true);\n }\n\n hideHeader() {\n this.isVisible.set(false);\n }\n\n addCustomAction(action: HeaderActionConfig) {\n this.customActions.update(actions => [...actions, action]);\n }\n\n removeCustomAction(actionId: string) {\n this.customActions.update(actions => actions.filter(action => action.id !== actionId));\n }\n\n updateCustomAction(actionId: string, updates: Partial<HeaderActionConfig>) {\n this.customActions.update(actions => \n actions.map(action => \n action.id === actionId ? { ...action, ...updates } : action\n )\n );\n }\n\n clearCustomActions() {\n this.customActions.set([]);\n }\n\n getHeaderOrder() {\n return this.headerOrder;\n }\n\n setHeaderOrder(order: HeaderOrderConfig) {\n this.headerOrder.set(order);\n }\n\n getFilterButtonConfig() {\n return this.filterButtonConfig;\n }\n\n getCreateButtonConfig() {\n return this.createButtonConfig;\n }\n\n getOrderedElements(): HeaderElementConfig[] {\n const order = this.headerOrder();\n \n if (!order || !order.useCustomOrder || !order.elements) {\n return [\n { type: HeaderElementType.GLOBAL_ACTIONS, visible: true, position: 1 },\n { type: HeaderElementType.CUSTOM_ACTIONS, visible: true, position: 2 },\n { type: HeaderElementType.FILTER, visible: true, position: 3 },\n { type: HeaderElementType.CREATE, visible: true, position: 4 },\n { type: HeaderElementType.CUSTOM_TEMPLATE, visible: true, position: 5 }\n ];\n }\n\n return order.elements\n .filter(element => element.visible !== false)\n .sort((a, b) => (a.position || 0) - (b.position || 0));\n }\n\n isElementVisible(elementType: HeaderElementType): boolean {\n const order = this.headerOrder();\n \n if (!order || !order.useCustomOrder || !order.elements) {\n switch (elementType) {\n case HeaderElementType.GLOBAL_ACTIONS:\n return this.globalActions().length > 0;\n case HeaderElementType.CUSTOM_ACTIONS:\n return this.customActions().length > 0;\n case HeaderElementType.FILTER:\n return this.showDefaultFilter() && (this.showFilter() || this.customFilters().length > 0);\n case HeaderElementType.CREATE:\n return this.showDefaultCreate() && this.showCreateButton() && this.hasCreatePermission();\n case HeaderElementType.CUSTOM_TEMPLATE:\n return this.customTemplate() !== null;\n default:\n return false;\n }\n }\n\n const element = order.elements.find(el => el.type === elementType);\n \n if (!element || element.visible === false) {\n return false;\n }\n\n switch (elementType) {\n case HeaderElementType.GLOBAL_ACTIONS:\n return this.globalActions().length > 0;\n case HeaderElementType.CUSTOM_ACTIONS:\n return this.customActions().length > 0;\n case HeaderElementType.FILTER:\n return this.showDefaultFilter() && (this.showFilter() || this.customFilters().length > 0);\n case HeaderElementType.CREATE:\n return this.showDefaultCreate() && this.showCreateButton() && this.hasCreatePermission();\n case HeaderElementType.CUSTOM_TEMPLATE:\n return this.customTemplate() !== null;\n default:\n return false;\n }\n }\n} ","import { Injectable, signal, computed, OutputEmitterRef } from '@angular/core';\nimport { Subject, Subscription, switchMap, of, debounceTime } from 'rxjs';\nimport { ModalFieldConfig } from '../../../interfaces/global/ModalFieldConfig.interface';\nimport { ColumnConfig } from '../interfaces/ColumnConfig.interface';\nimport { InlineEditConfig } from '../interfaces/InlineEditConfig.interface';\nimport { DataBaseModelInterface } from '@solcre-org/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InlineEditService<T extends DataBaseModelInterface & { [key: string]: any }> {\n isInlineEditMode = signal<boolean>(false);\n editingRows = signal<Set<number>>(new Set());\n editingCells = signal<Map<string, { value: any; hasChanges: boolean; originalValue: any }>>(new Map());\n editingErrors = signal<Map<string, string[]>>(new Map());\n private processingCells = signal<Set<string>>(new Set());\n \n private pendingSaveCells = signal<Set<string>>(new Set());\n \n private immediateSaveSubject = new Subject<{ rowId: number; column: string; value: any; source: 'blur' | 'enter' }>();\n \n private subscriptions: Subscription[] = [];\n private inlineEditConfig: InlineEditConfig<T> | undefined;\n \n private onInlineEditSaveCallback?: (event: { row: T; column: string; value: any; allChanges: Map<string, any> }) => void;\n private onInlineEditModeChangedCallback?: (mode: boolean) => void;\n private onInlineEditValidationErrorCallback?: (event: { rowId: number; column: string; errors: string[] }) => void;\n private getDisplayedDataCallback?: () => T[];\n\n constructor() {}\n\n initialize(config: {\n inlineEditConfig?: InlineEditConfig<T>;\n onInlineEditSave: (event: { row: T; column: string; value: any; allChanges: Map<string, any> }) => void;\n onInlineEditModeChanged: (mode: boolean) => void;\n onInlineEditValidationError: (event: { rowId: number; column: string; errors: string[] }) => void;\n getDisplayedData: () => T[];\n }) {\n this.inlineEditConfig = config.inlineEditConfig;\n this.onInlineEditSaveCallback = config.onInlineEditSave;\n this.onInlineEditModeChangedCallback = config.onInlineEditModeChanged;\n this.onInlineEditValidationErrorCallback = config.onInlineEditValidationError;\n this.getDisplayedDataCallback = config.getDisplayedData;\n \n this.setupSubscriptions();\n }\n\n private setupSubscriptions() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions = [];\n\n this.subscriptions.push(\n this.immediateSaveSubject.pipe(\n debounceTime(50),\n switchMap(({ rowId, column, value, source }) => {\n this.performInlineEdit(rowId, column, value, source);\n return of(true);\n })\n ).subscribe()\n );\n }\n\n updateConfig(config?: InlineEditConfig<T>) {\n this.inlineEditConfig = config;\n this.setupSubscriptions();\n }\n\n toggleInlineEditMode(): void {\n const newMode = !this.isInlineEditMode();\n this.isInlineEditMode.set(newMode);\n \n if (!newMode) {\n this.editingCells.set(new Map());\n this.editingErrors.set(new Map());\n this.pendingSaveCells.set(new Set());\n this.editingRows.set(new Set());\n }\n \n this.onInlineEditModeChangedCallback?.(newMode);\n }\n\n toggleRowEditMode(rowId: number): void {\n const currentEditingRows = new Set(this.editingRows());\n \n if (currentEditingRows.has(rowId)) {\n currentEditingRows.delete(rowId);\n \n const currentCells = new Map(this.editingCells());\n const currentErrors = new Map(this.editingErrors());\n const currentPendingSaves = new Set(this.pendingSaveCells());\n \n Array.from(currentCells.keys()).forEach(cellKey => {\n if (cellKey.startsWith(`${rowId}_`)) {\n currentCells.delete(cellKey);\n currentErrors.delete(cellKey);\n currentPendingSaves.delete(cellKey);\n }\n });\n \n this.editingCells.set(currentCells);\n this.editingErrors.set(currentErrors);\n this.pendingSaveCells.set(currentPendingSaves);\n } else {\n currentEditingRows.add(rowId);\n }\n \n this.editingRows.set(currentEditingRows);\n this.onInlineEditModeChangedCallback?.(currentEditingRows.size > 0);\n }\n\n isRowInEditMode(rowId: number): boolean {\n return this.editingRows().has(rowId);\n }\n\n isCellProcessing(row: T, column: ColumnConfig<T>): boolean {\n const cellKey = this.getCellKey(row, column);\n return this.processingCells().has(cellKey);\n }\n\n setCellProcessing(row: T, column: ColumnConfig<T>, isProcessing: boolean): void {\n const cellKey = this.getCellKey(row, column);\n const processing = new Set(this.processingCells());\n \n if (isProcessing) {\n processing.add(cellKey);\n } else {\n processing.delete(cellKey);\n }\n \n this.processingCells.set(processing);\n }\n\n isColumnEditable(column: ColumnConfig<T>, row?: T): boolean {\n if (!this.inlineEditConfig) return false;\n \n if (row && !this.isRowInEditMode(row.getId() as number)) return false;\n \n const hasEditableColumn = this.inlineEditConfig.editableColumns.some(col => col.key === column.key);\n if (!hasEditableColumn) return false;\n \n if (this.inlineEditConfig.shouldShowForRow && row) {\n return this.inlineEditConfig.shouldShowForRow(row);\n }\n \n return true;\n }\n\n getCellKey(row: T, column: ColumnConfig<T>): string {\n return `${row.getId()}_${column.key as string}`;\n }\n\n getEditingValue(row: T, column: ColumnConfig<T>): any {\n const cellKey = this.getCellKey(row, column);\n const editingValue = this.editingCells().get(cellKey);\n \n if (editingValue) {\n return editingValue.value;\n }\n \n const originalValue = this.inlineEditConfig?.getInitialValue \n ? this.inlineEditConfig.getInitialValue(row, column.key as string)\n : row[column.key as keyof T];\n \n return originalValue;\n }\n\n ensureCellInitialized(row: T, column: ColumnConfig<T>): void {\n const cellKey = this.getCellKey(row, column);\n const currentCells = this.editingCells();\n \n if (!currentCells.has(cellKey)) {\n const originalValue = this.inlineEditConfig?.getInitialValue \n ? this.inlineEditConfig.getInitialValue(row, column.key as string)\n : row[column.key as keyof T];\n \n const updatedCells = new Map(currentCells);\n updatedCells.set(cellKey, {\n value: originalValue,\n hasChanges: false,\n originalValue: originalValue\n });\n this.editingCells.set(updatedCells);\n }\n }\n\n onCellValueChange(row: T, column: ColumnConfig<T>, value: any): void {\n this.ensureCellInitialized(row, column);\n \n const cellKey = this.getCellKey(row, column);\n const currentCells = new Map(this.editingCells());\n \n const cellData = currentCells.get(cellKey)!;\n \n const hasRealChange = this.normalizeValue(cellData.originalValue) !== this.normalizeValue(value);\n \n if (hasRealChange || cellData.value !== value) {\n currentCells.set(cellKey, {\n ...cellData,\n value: value,\n hasChanges: hasRealChange\n });\n \n this.editingCells.set(currentCells);\n \n if (hasRealChange) {\n this.validateCellValue(row, column, value);\n }\n }\n }\n\n private normalizeValue(value: any): string {\n if (value === null || value === undefined) return '';\n return String(value).trim();\n }\n\n private validateCellValue(row: T, column: ColumnConfig<T>, value: any): void {\n if (!this.inlineEditConfig) return;\n \n const editableColumn = this.inlineEditConfig.editableColumns.find(col => col.key === column.key);\n if (!editableColumn?.validators) return;\n \n const errors: string[] = [];\n const cellKey = this.getCellKey(row, column);\n \n editableColumn.validators.forEach(validator => {\n const result = validator({ value } as any);\n if (result && typeof result === 'object') {\n Object.keys(result).forEach(errorKey => {\n if (editableColumn.errorMessages?.[errorKey]) {\n errors.push(editableColumn.errorMessages[errorKey]);\n } else {\n errors.push(`Validation error: ${errorKey}`);\n }\n });\n }\n });\n \n const currentErrors = new Map(this.editingErrors());\n if (errors.length > 0) {\n currentErrors.set(cellKey, errors);\n this.onInlineEditValidationErrorCallback?.({\n rowId: row.getId() as number,\n column: column.key as string,\n errors\n });\n } else {\n currentErrors.delete(cellKey);\n }\n \n this.editingErrors.set(currentErrors);\n }\n\n getCellErrors(row: T, column: ColumnConfig<T>): string[] {\n const cellKey = this.getCellKey(row, column);\n return this.editingErrors().get(cellKey) || [];\n }\n\n private performInlineEdit(rowId: number, column: string, value: any, source: 'blur' | 'enter'): void {\n const displayedData = this.getDisplayedDataCallback?.();\n if (!displayedData) return;\n \n const row = displayedData.find(r => r.getId() === rowId);\n if (!row) return;\n \n const targetCellKey = this.getCellKey(row, { key: column } as ColumnConfig<T>);\n \n if (this.processingCells().has(targetCellKey) || this.pendingSaveCells().has(targetCellKey)) {\n return;\n }\n \n const currentCells = this.editingCells();\n const targetCellData = currentCells.get(targetCellKey);\n \n if (!targetCellData || !targetCellData.hasChanges) {\n return;\n }\n \n const pendingSaves = new Set(this.pendingSaveCells());\n pendingSaves.add(targetCellKey);\n this.pendingSaveCells.set(pendingSaves);\n \n const allChanges = new Map<string, any>();\n currentCells.forEach((cellData, cellKey) => {\n if (cellKey.startsWith(`${rowId}_`) && cellData.hasChanges) {\n const columnKey = cellKey.split('_')[1];\n allChanges.set(columnKey, cellData.value);\n }\n });\n \n if (allChanges.size > 0) {\n this.onInlineEditSaveCallback?.({\n row,\n column,\n value,\n allChanges\n });\n \n const updatedCells = new Map(currentCells);\n allChanges.forEach((savedValue, columnKey) => {\n const cellKey = `${rowId}_${columnKey}`;\n const cellData = updatedCells.get(cellKey);\n if (cellData) {\n updatedCells.set(cellKey, { \n ...cellData, \n hasChanges: false,\n originalValue: savedValue\n });\n }\n });\n this.editingCells.set(updatedCells);\n }\n \n const updatedPendingSaves = new Set(this.pendingSaveCells());\n updatedPendingSaves.delete(targetCellKey);\n this.pendingSaveCells.set(updatedPendingSaves);\n }\n\n getInlineEditableConfig(column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n if (!this.inlineEditConfig) return undefined;\n \n return this.inlineEditConfig.editableColumns.find(col => col.key === column.key);\n }\n\n getInlineEditableConfigWithState(row: T, column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n const config = this.getInlineEditableConfig(column);\n if (!config) return undefined;\n\n const configWithState = { ...config };\n const isProcessing = this.isCellProcessing(row, column);\n \n if (isProcessing) {\n configWithState.readonly = true;\n configWithState.blocked = true;\n }\n\n return configWithState;\n }\n\n onCellBlur(row: T, column: ColumnConfig<T>): void {\n this.performSave(row, column, 'blur');\n }\n\n onCellEnter(row: T, column: ColumnConfig<T>): void {\n this.performSave(row, column, 'enter');\n }\n\n private performSave(row: T, column: ColumnConfig<T>, source: 'blur' | 'enter'): void {\n this.ensureCellInitialized(row, column);\n \n const cellKey = this.getCellKey(row, column);\n \n if (this.pendingSaveCells().has(cellKey)) {\n return;\n }\n \n const currentValue = this.getEditingValue(row, column);\n this.validateCellValue(row, column, currentValue);\n \n const cellData = this.editingCells().get(cellKey);\n \n if (cellData && cellData.hasChanges) {\n this.immediateSaveSubject.next({\n rowId: row.getId() as number,\n column: column.key as string,\n value: currentValue,\n source: source\n });\n }\n }\n\n destroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.immediateSaveSubject.complete();\n this.processingCells.set(new Set());\n this.editingCells.set(new Map());\n this.editingErrors.set(new Map());\n this.pendingSaveCells.set(new Set());\n this.editingRows.set(new Set());\n this.isInlineEditMode.set(false);\n }\n}\n","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { AddressModel } from \"../../interfaces/global/Adress.interface\";\nexport class ConfigurationModel implements DataBaseModelInterface {\n public id: string;\n public email_notification: string;\n public correspondence_address: AddressModel | null;\n public delivery_address: AddressModel | null;\n\n constructor(data: Partial<ConfigurationModel> = {}) {\n this.id = data.id || '';\n this.email_notification = data.email_notification || '';\n this.correspondence_address = data.correspondence_address || null;\n this.delivery_address = data.delivery_address || null;\n }\n\n public fromJSON(json: any): ConfigurationModel {\n if (json) {\n this.id = json.id || '';\n this.email_notification = json.email_notification || '';\n this.correspondence_address = json.correspondence_address || null;\n this.delivery_address = json.delivery_address || null;\n }\n return this;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n email_notification: this.email_notification,\n correspondence_address: this.correspondence_address,\n delivery_address: this.delivery_address\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.id;\n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\nimport { UsersModel } from \"../users/users.model\";\nimport { DateUtility } from \"../../utilities/date.utility\";\nimport { FileModel } from \"./file.model\";\nexport class FileTemplateModel implements DataBaseModelInterface {\n public id: string;\n public name: string;\n public details: string;\n public file_type: string | null;\n public type_code: string | null;\n public file_id: string;\n public file: FileModel;\n public uploaded_by: UsersModel;\n public created_at: string;\n public updated_at: string;\n\n constructor(data: Partial<FileTemplateModel> = {}) {\n this.id = data.id || '';\n this.name = data.name || '';\n this.details = data.details || '';\n this.file_type = data.file_type || null;\n this.type_code = data.type_code || null;\n this.file_id = data.file_id || '';\n this.file = data.file || new FileModel();\n this.uploaded_by = data.uploaded_by || new UsersModel();\n this.created_at = data.created_at || '';\n this.updated_at = data.updated_at || '';\n }\n\n public fromJSON(json: any): FileTemplateModel {\n if (json) {\n this.id = json.id || '';\n this.name = json.name || '';\n this.details = json.details || '';\n \n if (json.file_type) {\n if (typeof json.file_type === 'object' && json.file_type.code) {\n this.file_type = json.file_type.code;\n } else {\n this.file_type = json.file_type;\n }\n } else {\n this.file_type = null;\n }\n this.type_code = json.type_code || null;\n this.file_id = json.file_id || '';\n this.file = json.file || new FileModel();\n this.uploaded_by = json.uploaded_by || new UsersModel();\n this.created_at = json.created_at ? DateUtility.fromUTCtoUruguay(json.created_at, 'YYYY-MM-DD HH:mm:ss') : '';\n this.updated_at = json.updated_at ? DateUtility.fromUTCtoUruguay(json.updated_at, 'YYYY-MM-DD HH:mm:ss') : '';\n }\n return this;\n }\n\n public toJSON(): any {\n const payload: any = {\n id: this.id,\n name: this.name,\n details: this.details,\n file_type: this.file_type,\n type_code: this.type_code,\n file_id: this.file_id,\n created_at: this.created_at,\n updated_at: this.updated_at,\n };\n\n if (this.file && !(this.file instanceof File) && this.file.id) {\n payload.file = this.file.toJSON ? this.file.toJSON() : this.file;\n }\n\n return payload;\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.name;\n }\n}","import { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class FileTypeModel implements DataBaseModelInterface {\n public id: string;\n public code: string;\n\n constructor(data: Partial<FileTypeModel> = {}) {\n this.id = data.id || '';\n this.code = data.code || '';\n }\n\n public fromJSON(json: any): FileTypeModel {\n if (json) {\n this.id = json.id || '';\n this.code = json.code || '';\n }\n return this;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n code: this.code,\n };\n }\n\n public getId(): string {\n return this.id;\n }\n\n public getReference(): string {\n return this.code;\n }\n}\n","import { DataBaseModelInterface } from \"@solcre-org/core\";\n\nexport class ResetPasswordModel implements DataBaseModelInterface {\n constructor(\n public userId?: string,\n public newPassword?: string,\n public confirmPassword?: string,\n ) {}\n\n public fromJSON(json: any): ResetPasswordModel {\n if(json) {\n this.userId = json.userId;\n this.newPassword = json.newPassword;\n this.confirmPassword = json.confirmPassword;\n }\n return this;\n }\n\n public toJSON() {\n return {\n \"userId\": this.userId,\n \"newPassword\": this.newPassword,\n \"confirmPassword\": this.confirmPassword,\n }\n }\n\n public getReference() {\n return this.userId ?? \"\";\n }\n\n public getId() {\n return this.userId ?? \"\";\n }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ActiveFilterItem } from '../interfaces/global/ActiveFiltersConfig.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActiveFiltersEventService {\n private filterRemovedSubject = new Subject<ActiveFilterItem>();\n private filtersClearedSubject = new Subject<void>();\n\n filterRemoved$ = this.filterRemovedSubject.asObservable();\n filtersCleared$ = this.filtersClearedSubject.asObservable();\n\n emitFilterRemoved(filter: ActiveFilterItem): void {\n this.filterRemovedSubject.next(filter);\n }\n\n emitFiltersCleared(): void {\n this.filtersClearedSubject.next();\n }\n}\n","import { Component, input, output, signal, computed, ViewChild, ElementRef, HostListener, inject, OnInit, OnDestroy, AfterViewInit, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GenericModalComponent } from '../generic-modal/generic-modal.component';\nimport { GenericPaginationComponent } from '../generic-pagination/generic-pagination.component';\nimport { FilterService } from './components/filter-modal/services/filter.service';\nimport { ModelApiService } from '../../services/model-api.service';\nimport { Subscription, switchMap, forkJoin, of, catchError, timeout, debounceTime, Subject } from 'rxjs';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { ModalMode } from '../../enums/global/ModalMode.enum';\nimport { ModalFieldConfig } from '../../interfaces/global/ModalFieldConfig.interface';\nimport { ModalTabConfig } from '../../interfaces/global/ModalTabConfig.interface';\nimport { CustomAction } from './interfaces/CustomAction.interface';\nimport { GlobalAction } from './interfaces/GlobalAction.interface';\nimport { PaginationService } from '../generic-pagination/services/pagination.service';\nimport { TableDataService } from './services/table-data.service';\nimport { TableActionService } from './services/table-action.service';\nimport { TableAction } from './components/dropdown/enums/TableAction.enum';\nimport { ColumnConfig } from './interfaces/ColumnConfig.interface';\nimport { TableActionConfig } from './interfaces/TableActionConfig.interface';\nimport { ConfirmationDialogService } from '../confirmation-dialog/services/confirmation-dialog.service';\nimport { FilterConfig } from './components/filter-modal/interfaces/FilterConfig.interface';\nimport { LoaderService } from '../loader/services/loader.service';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { DropdownService } from './components/dropdown/services/dropdown.service';\nimport { HeaderService } from '../../services/header.service';\nimport { FilterModalComponent } from './components/filter-modal/filter-modal.component';\nimport { ExpansionConfig } from './interfaces/ExpansionConfig.interface';\nimport { FileUploadConfig } from '../../interfaces/global/FileUploadConfig.interface';\nimport { FieldType } from '../../enums/global/FieldType.enum';\nimport { FileType } from '../../enums/global/FileType.enum';\nimport { FileFieldConfig } from '../../interfaces/field-configs/file-field-config.interface';\nimport { RowStyleConfig } from './interfaces/RowStyleConfig.interface';\nimport { ColumnDisabledConfig } from './interfaces/ColumnDisabledConfig.interface';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { ButtonActionEvent } from '../generic-button/interfaces/ButtonActionEvent.interface';\nimport { HeaderOrderConfig } from '../../interfaces/global/HeaderOrderConfig.interface';\nimport { DynamicFieldDirective } from '../../directives/DynamicField.directive';\nimport { InlineEditConfig } from './interfaces/InlineEditConfig.interface';\nimport { InlineEditService } from './services/inline-edit.service';\nimport { MoreDataConfig } from './interfaces/MoreDataConfig.interface';\nimport { FileModel } from '../../models';\nimport { ActiveFilterItem, ActiveFiltersConfig } from '../../interfaces/global/ActiveFiltersConfig.interface';\nimport { ActiveFiltersComponent } from '../active-filters/active-filters.component';\nimport { ActiveFiltersEventService } from '../../services/active-filters-event.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-table',\n standalone: true,\n imports: [\n CommonModule, \n TranslateModule, \n GenericModalComponent, \n GenericPaginationComponent, \n DropdownComponent,\n FilterModalComponent,\n GenericButtonComponent,\n DynamicFieldDirective,\n ActiveFiltersComponent,\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-table.component.html',\n styleUrl: './generic-table.component.scss',\n providers: [TableDataService, FilterService, PaginationService, ModelApiService, InlineEditService],\n})\nexport class GenericTableComponent<T extends DataBaseModelInterface & { [key: string]: any }> implements OnInit, OnDestroy, AfterViewInit {\n public paginationService = inject(PaginationService);\n public tableDataService = inject(TableDataService<T>);\n public filterService = inject(FilterService<T>);\n public tableActionService = inject(TableActionService<T>);\n public modelApiService = inject(ModelApiService<T>);\n public loaderService = inject(LoaderService);\n private confirmationDialogService = inject(ConfirmationDialogService);\n private permissionService = inject(PermissionWrapperService);\n private dropdownService = inject(DropdownService);\n private headerService = inject(HeaderService);\n public inlineEditService = inject(InlineEditService<T>);\n private activeFiltersEventService = inject(ActiveFiltersEventService);\n\n public TableAction = TableAction;\n public ModalMode = ModalMode;\n public ButtonType = ButtonType;\n public FieldType = FieldType;\n\n public tableId: string = `table-${Math.random().toString(36).substring(2, 9)}`;\n\n columns = input.required<ColumnConfig<T>[]>();\n modalFields = input<ModalFieldConfig<T>[]>([]);\n modalTabs = input<ModalTabConfig<T>[]>([]);\n actions = input.required<TableActionConfig[]>();\n customActions = input<CustomAction<T>[]>([]);\n globalActions = input<GlobalAction<T>[]>([]);\n pageSizeOptions = input<number[] | undefined>(undefined);\n showFilter = input(true);\n showSelection = input(false);\n showActions = input(true);\n showCreateButton = input(true);\n filterButtonConfig = input<Partial<ButtonConfig> | undefined>(undefined);\n createButtonConfig = input<Partial<ButtonConfig> | undefined>(undefined);\n dataInput = input<T[]>([]);\n customFilters = input<FilterConfig<T>[]>([]);\n enablePagination = input(true);\n modelFactory = input<((data: any) => T) | undefined>(undefined);\n endpoint = input<string | undefined>(undefined);\n customParams = input<Record<string, any> | undefined>(undefined);\n customArrayKey = input<string | undefined>(undefined);\n listTitle = input<string | undefined>(undefined);\n moreData = input<MoreDataConfig<any>[]>([]);\n inModal = input(false);\n expansionConfig = input<ExpansionConfig<T> | undefined>(undefined);\n fileUploadConfig = input<FileUploadConfig | undefined>(undefined);\n rowStyleConfigs = input<RowStyleConfig<T>[]>([]);\n columnDisabledConfigs = input<ColumnDisabledConfig<T>[]>([]);\n headerOrder = input<HeaderOrderConfig | undefined>(undefined);\n showActiveFilters = input<boolean>(false);\n activeFiltersConfig = input<ActiveFiltersConfig>({});\n\n customEdit = input<(item: T) => void>();\n customDelete = input<(item: T) => void>();\n customView = input<(item: T) => void>();\n customSave = input<(item: T, mode: ModalMode) => void>();\n useCustomSave = input<boolean>(false);\n onApiError = input<(error: any, defaultMessage: string, operation: string) => string>();\n\n actionTriggered = output<{ action: TableAction; row?: T }>();\n selectionChanged = output<T[]>();\n dataCreated = output<T>();\n dataUpdated = output<T>();\n dataDeleted = output<T[]>();\n onMoreDataLoaded = output<Map<string, any[]>>();\n globalActionTriggered = output<{ action: GlobalAction<T>; selectedRows: T[] }>();\n modalData = output<T>();\n beforeSave = output<{ data: T; mode: ModalMode }>();\n onFilterChange = output<Map<string, any>>();\n onClearFilters = output<void>();\n activeFilterRemoved = output<ActiveFilterItem>();\n activeFiltersCleared = output<void>();\n \n hasTabs = computed(() => this.modalTabs().length > 0);\n allModalFields = computed(() => {\n if (this.hasTabs()) {\n return this.modalTabs().flatMap(tab => tab.fields);\n }\n return this.modalFields();\n });\n\n displayedColumns = computed(() => {\n const cols = this.columns().map(col => col.key as string);\n if (this.showSelection()) cols.unshift('select');\n if (this.expansionConfig()?.enabled) cols.unshift('expand');\n if (this.showActions() && (this.actions().length > 0 || this.customActions().length > 0)) cols.push('actions');\n return cols;\n });\n\n infiniteScrollPageSize = signal(25);\n itemsLoaded = signal(25);\n\n displayedData = signal<T[]>([]);\n originalUnsortedData = signal<T[]>([]);\n selectedRows = signal<T[]>([]);\n expandedRows = signal<Set<number>>(new Set());\n\n regularCustomActions = computed(() => {\n const actions = this.customActions().filter(action => !action.isExtra);\n return actions;\n });\n extraCustomActions = computed(() => {\n const actions = this.customActions().filter(action => action.isExtra);\n return actions;\n });\n\n getVisibleCustomActions(row: T, isExtra: boolean = false): CustomAction<T>[] {\n const actions = this.customActions()\n .filter(action => action.isExtra === isExtra)\n .filter(action => {\n if (!action.shouldShow) return true;\n const shouldShow = action.shouldShow(row);\n return shouldShow;\n });\n \n return actions;\n }\n\n hasExtraCustomActions = computed(() => this.extraCustomActions().length > 0);\n\n regularDefaultActions = computed(() => this.actions().filter(action => !action.isExtra));\n extraDefaultActions = computed(() => this.actions().filter(action => action.isExtra));\n hasExtraDefaultActions = computed(() => this.extraDefaultActions().length > 0);\n\n hasExtraActions = computed(() => {\n const hasExtraDefaultActionsWithPermissions = this.extraDefaultActions().some(action => this.hasPermission(action));\n const hasExtraCustomActionsWithPermissions = this.extraCustomActions().some(action => this.hasPermission(action));\n return hasExtraDefaultActionsWithPermissions || hasExtraCustomActionsWithPermissions;\n });\n\n currentFilterValues = signal<Map<string, any>>(new Map());\n\n currentActiveFilters = computed(() => this.generateActiveFilters());\n\n hasExtraActionsForRow(row: T): boolean {\n const hasExtraDefaultActionsWithPermissions = this.extraDefaultActions().some(action => this.hasPermission(action));\n const hasExtraCustomActionsWithPermissions = this.getVisibleCustomActions(row, true).some(action => this.hasPermission(action));\n return hasExtraDefaultActionsWithPermissions || hasExtraCustomActionsWithPermissions;\n }\n\n currentSortColumn = signal<string | null>(null);\n currentSortDirection = signal<'asc' | 'desc' | null>(null);\n\n @ViewChild('sentinel', { static: false }) sentinel!: ElementRef;\n @ViewChild('dropdownTrigger') dropdownTrigger?: ElementRef;\n @ViewChild('dropdown') dropdown?: DropdownComponent<T>;\n private observer!: IntersectionObserver;\n private subscriptions: Subscription[] = [];\n private isInitialized = false;\n\n isFilterModalOpen = signal(false);\n\n activeSubmenuId = signal<number | null>(null);\n\n private readonly MAIN_DATA_LOADER_ID = 'main-data';\n private readonly MORE_DATA_LOADER_PREFIX = 'more-data-';\n private readonly FILTER_LOADER_ID = 'filter-data';\n private readonly LOADER_TIMEOUT = 10000;\n\n private loadingStates = {\n mainData: false,\n filterData: false,\n moreData: new Set<string>()\n };\n\n private loaderTimeouts = new Map<string, any>();\n\n inlineEditConfig = input<InlineEditConfig<T> | undefined>(undefined);\n\n inlineEditSave = output<{ row: T; column: string; value: any; allChanges: Map<string, any> }>();\n inlineEditModeChanged = output<boolean>();\n inlineEditValidationError = output<{ rowId: number; column: string; errors: string[] }>();\n\n constructor() {\n window.addEventListener('filterRequested', () => {\n this.showFiltersPopup();\n });\n\n window.addEventListener('createRequested', () => {\n this.triggerAction(TableAction.CREATE);\n });\n\n window.addEventListener('globalActionTriggered', ((event: CustomEvent) => {\n this.triggerGlobalAction(event.detail);\n }) as EventListener);\n\n effect(() => {\n this.updateHeaderService();\n });\n\n effect(() => {\n const config = this.inlineEditConfig();\n if (this.inlineEditService && config !== undefined) {\n this.inlineEditService.updateConfig(config);\n }\n });\n\n effect(() => {\n const inputData = this.dataInput();\n if (!this.endpoint() || this.endpoint() === '') {\n setTimeout(() => {\n if (this.isInitialized && inputData) {\n this.processDataInput(inputData);\n }\n }, 0);\n }\n });\n\n effect(() => {\n const params = this.customParams();\n if (this.isInitialized && this.endpoint()) {\n this.tableDataService.updateCustomParams(params, this.MAIN_DATA_LOADER_ID);\n }\n });\n }\n\n private processDataInput(inputData: T[]): void {\n if ((!this.endpoint() || this.endpoint() === '') && Array.isArray(inputData)) {\n if (this.currentSortColumn() === null && this.currentSortDirection() === null) {\n this.originalUnsortedData.set([...inputData]);\n }\n \n this.displayedData.set([...inputData]);\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n this.checkAndHideLoader();\n }\n }\n\n ngOnInit() {\n if (this.isInitialized) {\n return;\n }\n\n this.currentFilterValues.set(new Map(this.filterService.getCustomFilters()));\n\n this.loaderService.showLoader(this.MAIN_DATA_LOADER_ID);\n this.startLoaderTimeout(this.MAIN_DATA_LOADER_ID);\n this.loadingStates.mainData = true;\n\n if (this.enablePagination()) {\n this.paginationService.initialize(\n this.tableId,\n this.endpoint() ? 0 : this.filterService.getFilteredData().length,\n this.pageSizeOptions()\n );\n\n this.subscriptions.push(\n this.paginationService.paginationChange$.subscribe(event => {\n if (event.tableId === this.tableId && this.endpoint()) {\n this.tableDataService.updatePagination(event.page, event.size, this.MAIN_DATA_LOADER_ID);\n } else if (!this.endpoint()) {\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n }\n })\n );\n }\n\n this.itemsLoaded.set(\n this.enablePagination() \n ? this.paginationService.getPageSize(this.tableId)() \n : this.infiniteScrollPageSize()\n );\n\n this.subscriptions.push(\n this.tableDataService.data$.subscribe({\n next: (data) => {\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n \n if (!data) {\n this.displayedData.set([]);\n this.checkAndHideLoader();\n return;\n }\n\n if (this.endpoint()) {\n const serverData = data as { total?: number; items?: T[]; page?: number; pages?: number; size?: number };\n \n if (this.enablePagination()) {\n if (serverData.total !== undefined) {\n this.paginationService.setTotalItems(this.tableId, serverData.total);\n }\n // Comentado: No ajustar automáticamente el pageSize basado en la respuesta del servidor\n // para evitar requests duplicadas cuando el servidor devuelve el número real de items\n // if (serverData.size !== undefined && serverData.size !== this.paginationService.getPageSize(this.tableId)()) {\n // this.paginationService.setPageSize(this.tableId, serverData.size);\n // }\n if (serverData.page !== undefined) {\n this.paginationService.setCurrentPage(this.tableId, serverData.page);\n }\n if (serverData.pages !== undefined) {\n this.paginationService.setTotalPages(this.tableId, serverData.pages);\n }\n }\n const items = serverData.items || [];\n this.updateDisplayedDataFromServer(items);\n } else {\n const items = Array.isArray(data.items) ? data.items : [];\n this.filterService.applyAllFilters(items, this.customFilters(), this.showFilter());\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n }\n\n this.checkAndHideLoader();\n },\n error: (error) => {\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n this.checkAndHideLoader();\n }\n })\n );\n\n this.subscriptions.push(\n this.filterService.filterChange$.subscribe(() => {\n this.currentFilterValues.set(new Map(this.filterService.getCustomFilters()));\n if (!this.endpoint()) {\n this.loaderService.showLoader(this.FILTER_LOADER_ID);\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.loadingStates.filterData = true;\n \n setTimeout(() => {\n this.filterService.applyAllFilters(this.tableDataService.getData(), this.customFilters(), this.showFilter());\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n this.loadingStates.filterData = false;\n this.checkAndHideLoader();\n }, 0);\n }\n })\n );\n\n if (this.moreData().length > 0) {\n const moreDataKeys = new Set(this.moreData().map(config => config.key));\n moreDataKeys.forEach(key => this.loadingStates.moreData.add(key));\n\n this.moreData().forEach(config => {\n const loaderId = this.MORE_DATA_LOADER_PREFIX + config.key;\n this.loaderService.showLoader(loaderId);\n this.startLoaderTimeout(loaderId);\n });\n\n this.moreData().forEach(config => {\n this.subscriptions.push(\n this.modelApiService.getMoreDataObservable(config.key).subscribe({\n next: (data) => {\n const moreDataMap = new Map<string, any[]>();\n moreDataMap.set(config.key, data || []);\n this.onMoreDataLoaded.emit(moreDataMap);\n \n this.loadingStates.moreData.delete(config.key);\n const loaderId = this.MORE_DATA_LOADER_PREFIX + config.key;\n this.loaderService.hideLoader(loaderId);\n this.clearLoaderTimeout(loaderId);\n this.checkAndHideLoader();\n },\n error: (error) => {\n const moreDataMap = new Map<string, any[]>();\n moreDataMap.set(config.key, []);\n this.onMoreDataLoaded.emit(moreDataMap);\n \n this.loadingStates.moreData.delete(config.key);\n const loaderId = this.MORE_DATA_LOADER_PREFIX + config.key;\n this.loaderService.hideLoader(loaderId);\n this.clearLoaderTimeout(loaderId);\n this.checkAndHideLoader();\n }\n })\n );\n });\n\n if (this.endpoint() && this.modelFactory()) {\n this.tableDataService.setEndpoint(\n this.endpoint()!, \n this.modelFactory()!, \n this.MAIN_DATA_LOADER_ID, \n this.enablePagination(), \n this.customArrayKey(),\n this.customParams()\n );\n this.modelApiService.setErrorHandler(this.onApiError());\n this.modelApiService.loadMoreData(this.moreData());\n }\n } else if (this.endpoint() && this.modelFactory()) {\n this.tableDataService.setEndpoint(\n this.endpoint()!, \n this.modelFactory()!, \n this.MAIN_DATA_LOADER_ID, \n this.enablePagination(), \n this.customArrayKey(),\n this.customParams()\n );\n this.modelApiService.setErrorHandler(this.onApiError());\n }\n\n this.isInitialized = true;\n\n this.inlineEditService.initialize({\n inlineEditConfig: this.inlineEditConfig(),\n onInlineEditSave: (event) => this.inlineEditSave.emit(event),\n onInlineEditModeChanged: (mode) => this.inlineEditModeChanged.emit(mode),\n onInlineEditValidationError: (event) => this.inlineEditValidationError.emit(event),\n getDisplayedData: () => this.displayedData()\n });\n\n if (this.dataInput()) {\n this.processDataInput(this.dataInput());\n }\n }\n\n private updateDisplayedDataFromServer(data: T[]): void {\n if (!Array.isArray(data)) {\n data = [];\n }\n\n if (this.currentSortColumn() === null && this.currentSortDirection() === null) {\n this.originalUnsortedData.set([...data]);\n }\n\n if (this.endpoint() && this.endpoint() !== '') {\n this.displayedData.set([...data]);\n } else {\n this.tableDataService.updateDisplayedData(\n data,\n this.enablePagination(),\n this.paginationService,\n this.tableId,\n this.itemsLoaded()\n );\n const displayed = this.tableDataService.getDisplayedData();\n this.displayedData.set([...displayed]);\n }\n }\n\n applyGlobalFilter(event: Event | string): void {\n const value = typeof event === 'string' ? event : (event.target as HTMLInputElement).value;\n this.filterService.setGlobalFilter(value);\n if (this.endpoint()) {\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateGlobalFilter(value, this.FILTER_LOADER_ID);\n }\n }\n\n applyCustomFilters(filterValues: Map<string, any>): void {\n this.filterService.setCustomFilters(filterValues);\n if (this.endpoint()) {\n const transformedFilters = this.transformFiltersForPayload(filterValues);\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateFilters(transformedFilters, this.FILTER_LOADER_ID);\n }\n }\n\n sortData(column: ColumnConfig<T>): void {\n if (column.sortable === false) return;\n \n const columnKey = column.key as string;\n \n if (this.currentSortColumn() === columnKey) {\n if (this.currentSortDirection() === 'asc') {\n this.currentSortDirection.set('desc');\n } else if (this.currentSortDirection() === 'desc') {\n this.currentSortColumn.set(null);\n this.currentSortDirection.set(null);\n this.resetToOriginalOrder();\n return;\n }\n } else {\n this.currentSortColumn.set(columnKey);\n this.currentSortDirection.set('asc');\n }\n \n if (this.endpoint()) {\n const currentData = this.displayedData();\n this.sortCurrentData(currentData, columnKey);\n } else {\n this.filterService.sortData(columnKey);\n }\n }\n\n getSortTitle(column: ColumnConfig<T>): string {\n if (column.sortable === false) return '';\n \n const columnKey = column.key as string;\n if (this.currentSortColumn() === columnKey) {\n if (this.currentSortDirection() === 'asc') {\n return 'table.sort.desc';\n } else if (this.currentSortDirection() === 'desc') {\n return 'table.sort.reset';\n }\n }\n return 'table.sort.asc';\n }\n\n private resetToOriginalOrder(): void {\n const originalData = this.originalUnsortedData();\n if (originalData.length > 0) {\n this.displayedData.set([...originalData]);\n } else if (!this.endpoint()) {\n const inputData = this.dataInput();\n this.displayedData.set([...inputData]);\n }\n else if (this.endpoint() && originalData.length === 0) {\n this.tableDataService.refreshWithFilters();\n }\n }\n \n private sortCurrentData(data: T[], columnKey: string): void {\n const sortDirection = this.currentSortDirection();\n if (!sortDirection) return;\n \n const sorted = [...data].sort((a, b) => {\n const valueA = a[columnKey as keyof T];\n const valueB = b[columnKey as keyof T];\n \n if (valueA == null && valueB == null) return 0;\n if (valueA == null) return sortDirection === 'asc' ? -1 : 1;\n if (valueB == null) return sortDirection === 'asc' ? 1 : -1;\n \n const comparison = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n return sortDirection === 'asc' ? comparison : -comparison;\n });\n \n this.displayedData.set(sorted);\n }\n\n isAllSelected(): boolean {\n return this.displayedData().every(row => this.selectedRows().includes(row));\n }\n\n masterToggle(): void {\n this.tableActionService.masterToggle(this.displayedData());\n }\n\n toggleRow(row: T): void {\n this.tableActionService.toggleRow(row);\n }\n\n isRowSelected(row: T): boolean {\n return this.selectedRows().includes(row);\n }\n\n getFormattedValue(row: T, column: ColumnConfig<T>): string {\n const value = row[column.key as keyof T];\n return column.format ? column.format(value, row) : (value?.toString() || '');\n }\n\n hasAction(action: TableAction): boolean {\n return this.actions().some(config => config.action === action);\n }\n\n triggerAction(action: TableAction, row?: T): void {\n if (this.endpoint() && this.modelFactory()) {\n const result = this.tableActionService.triggerAction(action, row, this.allModalFields()); \n if (result) {\n if (action === TableAction.DELETE && row) {\n this.confirmationDialogService\n .openDelete('dialog.confirmDeletionTitle', 'dialog.confirmDeletionSingle')\n .subscribe(confirmed => {\n if (confirmed) {\n this.tableDataService.deleteItem(this.endpoint()!, row).subscribe({\n next: (success) => {\n if (success) {\n this.dataDeleted.emit([row]);\n }\n },\n error: (error) => {\n console.error('Error deleting item:', error);\n }\n });\n }\n });\n } else {\n this.actionTriggered.emit(result);\n }\n }\n } else {\n switch (action) {\n case TableAction.EDIT:\n if (this.customEdit() && row) {\n this.customEdit()!(row);\n this.actionTriggered.emit({ action, row });\n }\n break;\n case TableAction.DELETE:\n if (this.customDelete() && row) {\n this.customDelete()!(row);\n this.actionTriggered.emit({ action, row });\n }\n break;\n case TableAction.VIEW:\n if (this.customView() && row) {\n this.customView()!(row);\n this.actionTriggered.emit({ action, row });\n }\n break;\n case TableAction.CREATE:\n if (this.customEdit()) {\n this.customEdit()!(null as any);\n this.actionTriggered.emit({ action });\n }\n break;\n }\n }\n }\n\n triggerCustomAction(action: CustomAction<T>, row: T): void {\n action.callback(row);\n }\n\n triggerGlobalAction(action: GlobalAction<T>): void {\n action.callback(this.selectedRows());\n this.globalActionTriggered.emit({ action, selectedRows: this.selectedRows() });\n }\n\n isGlobalActionDisabled(action: GlobalAction<T>): boolean {\n if (!action.requiresSelection) return false;\n const selectionCount = this.selectedRows().length;\n const minSelection = action.minSelection ?? 1;\n const maxSelection = action.maxSelection ?? Infinity;\n return selectionCount < minSelection || selectionCount > maxSelection;\n }\n\n onModalSave(updatedData: T): void {\n const modalMode = this.tableActionService.getModalMode();\n \n this.beforeSave.emit({ data: updatedData, mode: modalMode });\n \n if (this.useCustomSave() && this.customSave()) {\n this.customSave()!(updatedData, modalMode);\n return;\n }\n \n if (!this.endpoint() || !this.modelFactory()) return;\n \n const fileFields = this.allModalFields().filter(field => \n field.type === FieldType.FILE && this.hasFileUploadConfig(field)\n );\n \n if (fileFields.length > 0) {\n this.handleFileUploadsAndSave(updatedData, fileFields);\n } else {\n this.performSaveOperation(updatedData);\n }\n }\n\n private hasFileUploadConfig(field: ModalFieldConfig<T>): boolean {\n const globalConfig = this.fileUploadConfig();\n const fileField = field as FileFieldConfig<T>;\n const hasFieldConfig = !!fileField.fileUploadConfig;\n \n if (globalConfig) return true;\n \n return hasFieldConfig;\n }\n\n private isServerFile(value: any): value is FileModel {\n return value && (\n value instanceof FileModel || \n (typeof value === 'object' && 'id' in value && 'filename' in value && !(value instanceof File))\n );\n }\n\n private getCompanyId(data: T, field: ModalFieldConfig<T>): string | undefined {\n const fileField = field as FileFieldConfig<T>;\n if (fileField.fileUploadConfig) {\n if (fileField.fileUploadConfig.staticCompanyId) {\n return fileField.fileUploadConfig.staticCompanyId;\n }\n if (fileField.fileUploadConfig.companyIdSource) {\n return (data as any)[fileField.fileUploadConfig.companyIdSource];\n }\n }\n \n const globalConfig = this.fileUploadConfig();\n if (globalConfig) {\n if (globalConfig.staticCompanyId) {\n return globalConfig.staticCompanyId;\n }\n if (globalConfig.companyIdSource) {\n return (data as any)[globalConfig.companyIdSource];\n }\n }\n \n return undefined;\n }\n\n private getFileType(field: ModalFieldConfig<T>, data: T): FileType {\n const fileField = field as FileFieldConfig<T>;\n \n if (fileField.fileUploadConfig?.fileTypeResolver) {\n return fileField.fileUploadConfig.fileTypeResolver(data);\n }\n \n if (fileField.fileUploadConfig?.fileType) {\n return fileField.fileUploadConfig.fileType;\n }\n \n const globalConfig = this.fileUploadConfig();\n \n if (globalConfig?.fileTypeResolver) {\n return globalConfig.fileTypeResolver(data);\n }\n \n if (globalConfig?.fileType) {\n return globalConfig.fileType;\n }\n \n throw new Error('No se pudo determinar el FileType para la subida de archivos');\n }\n\n private handleFileUploadsAndSave(updatedData: T, fileFields: ModalFieldConfig<T>[]): void {\n \n type UploadResult = {\n field: ModalFieldConfig<T>;\n isServerFile: boolean;\n fileModel: FileModel | null;\n error?: boolean;\n } | null;\n \n const uploadObservables = fileFields.map(field => {\n const fileValue = (updatedData as any)[field.key];\n \n if (this.isServerFile(fileValue)) {\n return of({ field, isServerFile: true, fileModel: fileValue } as UploadResult);\n }\n \n if (!fileValue || !(fileValue instanceof File)) {\n return of(null as UploadResult);\n }\n \n const companyId = this.getCompanyId(updatedData, field);\n const fileType = this.getFileType(field, updatedData);\n \n if (!companyId) {\n return of(null);\n }\n \n return this.modelApiService.uploadFile(fileValue, companyId, fileType).pipe(\n switchMap(fileModel => {\n return of({ field, isServerFile: false, fileModel } as UploadResult);\n }),\n catchError((error: any) => {\n return of({ field, isServerFile: false, fileModel: null, error: true } as UploadResult);\n })\n );\n });\n\n forkJoin(uploadObservables).pipe(\n timeout(30000),\n catchError((error: any) => {\n throw error;\n })\n ).subscribe({\n next: (results) => {\n results.forEach(result => {\n if (result && result.fileModel && !(result as any).error) {\n const field = result.field;\n const fileField = field as FileFieldConfig<T>;\n const fileIdTarget = fileField.fileUploadConfig?.fileIdTarget || 'file_id';\n \n if (result.isServerFile) {\n (updatedData as any)[fileIdTarget] = result.fileModel.id;\n } else {\n (updatedData as any)[fileIdTarget] = result.fileModel.id;\n }\n \n }\n });\n \n this.performSaveOperation(updatedData);\n },\n error: (error) => {\n }\n });\n }\n\n private createSafePayload(updatedData: T): any {\n if (typeof (updatedData as any).toPayload === 'function') {\n const payloadKeys = (updatedData as any).toPayload();\n const filteredPayload: any = {};\n \n Object.keys(payloadKeys).forEach(key => {\n if (key in updatedData) {\n const value = (updatedData as any)[key];\n if (!(value instanceof File)) {\n filteredPayload[key] = value;\n }\n }\n });\n \n return filteredPayload;\n }\n\n let payload = updatedData.toJSON ? updatedData.toJSON() : { ...updatedData };\n \n Object.keys(payload).forEach(key => {\n if (payload[key] instanceof File) {\n delete payload[key];\n }\n });\n \n return payload;\n }\n\n private performSaveOperation(updatedData: T): void {\n const modalMode = this.tableActionService.getModalMode();\n \n if (modalMode === ModalMode.CREATE) {\n const payload = this.createSafePayload(updatedData);\n this.modelApiService.createItem(this.endpoint()!, payload as unknown as T, this.modelFactory()!).subscribe({\n next: (createdItem) => {\n this.dataCreated.emit(updatedData);\n this.sortDataByReference();\n this.tableActionService.closeModal();\n },\n error: (error) => {\n console.error('Error creating item:', error);\n }\n });\n } else {\n const payload = this.createSafePayload(updatedData);\n \n this.modelApiService.updateItem(this.endpoint()!, updatedData.getId(), payload as unknown as T, this.modelFactory()!).subscribe({\n next: (updatedItem) => {\n this.dataUpdated.emit(updatedData);\n this.sortDataByReference();\n this.tableActionService.closeModal();\n },\n error: (error) => {\n console.error('Error updating item:', error);\n }\n });\n }\n }\n\n public closeModal(): void {\n this.tableActionService.closeModal();\n }\n\n public emitDataEvent(data: T, mode: ModalMode): void {\n if (mode === ModalMode.CREATE) {\n this.dataCreated.emit(data);\n } else {\n this.dataUpdated.emit(data);\n }\n }\n\n getRowId(row: T): number {\n return row.getId() as number;\n }\n\n hasPermission(action: TableActionConfig | CustomAction<T> | GlobalAction<T> | TableActionConfig): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n showFiltersPopup(): void {\n this.isFilterModalOpen.set(true);\n }\n\n closeFiltersPopup(): void {\n this.isFilterModalOpen.set(false);\n }\n\n handleFilterChange(filterValues: Map<string, any>): void {\n this.onFilterChange.emit(filterValues);\n this.filterService.setCustomFilters(filterValues);\n if (this.endpoint()) {\n const transformedFilters = this.transformFiltersForPayload(filterValues);\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateFilters(transformedFilters, this.FILTER_LOADER_ID);\n }\n }\n\n private transformFiltersForPayload(filterValues: Map<string, any>): Map<string, any> {\n const transformedFilters = new Map<string, any>();\n \n filterValues.forEach((value, key) => {\n const filterConfig = this.customFilters().find(filter => filter.key.toString() === key);\n const payloadKey = filterConfig?.keyToPayload || key;\n transformedFilters.set(payloadKey, value);\n });\n \n return transformedFilters;\n }\n\n handleClearFilters(): void {\n this.filterService.setCustomFilters(new Map());\n if (this.endpoint()) {\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.updateFilters(new Map(), this.FILTER_LOADER_ID);\n this.onClearFilters.emit();\n }\n }\n\n toggleSubmenu(rowId: number, event: Event): void {\n event.stopPropagation();\n this.dropdownService.openDropdown(rowId);\n }\n\n @HostListener('document:click')\n closeSubmenu(): void {\n this.dropdownService.closeDropdown();\n }\n\n getActionLabel(action: TableAction): string {\n switch (action) {\n case TableAction.VIEW:\n return 'table.view';\n case TableAction.EDIT:\n return 'table.edit';\n case TableAction.DELETE:\n return 'table.delete';\n case TableAction.CREATE:\n return 'table.create';\n default:\n return '';\n }\n }\n\n toggleRowExpansion(row: T): void {\n const rowId = row.getId() as number;\n const expanded = new Set(this.expandedRows());\n \n if (expanded.has(rowId)) {\n expanded.delete(rowId);\n } else {\n expanded.add(rowId);\n }\n \n this.expandedRows.set(expanded);\n }\n\n isRowExpanded(row: T): boolean {\n return this.expandedRows().has(row.getId() as number);\n }\n\n getExpansionIcon(row: T): string {\n const config = this.expansionConfig();\n if (!config) return 'icon-chevron-down';\n \n return this.isRowExpanded(row) \n ? (config.collapseIcon || 'icon-arrow-up')\n : (config.expandIcon || 'icon-info');\n }\n\n getRowClasses(row: T): string {\n const rowConfigs = this.rowStyleConfigs();\n if (!rowConfigs || rowConfigs.length === 0) {\n return '';\n }\n\n const applicableConfigs = rowConfigs\n .filter(config => config.condition(row))\n .sort((a, b) => (b.priority || 0) - (a.priority || 0));\n\n return applicableConfigs.map(config => config.className).join(' ');\n }\n\n isRowDisabled(row: T): boolean {\n const disabledConfigs = this.columnDisabledConfigs();\n if (!disabledConfigs || disabledConfigs.length === 0) {\n return false;\n }\n\n return disabledConfigs.some(config => config.condition(row));\n }\n\n isColumnDisabledForRow(row: T, column: ColumnConfig<T>): boolean {\n const disabledConfigs = this.columnDisabledConfigs();\n if (!disabledConfigs || disabledConfigs.length === 0) {\n return false;\n }\n\n const applicableConfigs = disabledConfigs\n .filter(config => config.condition(row))\n .sort((a, b) => (b.priority || 0) - (a.priority || 0));\n\n if (applicableConfigs.length === 0) {\n return false;\n }\n\n for (const config of applicableConfigs) {\n if (!config.columns || config.columns.length === 0) {\n return true;\n }\n \n if (config.columns.includes(column.key)) {\n return true;\n }\n }\n\n return false;\n }\n\n getCellDisabledClasses(row: T, column: ColumnConfig<T>): string {\n const disabledConfigs = this.columnDisabledConfigs();\n if (!disabledConfigs || disabledConfigs.length === 0) {\n return '';\n }\n\n const applicableConfigs = disabledConfigs\n .filter(config => config.condition(row))\n .sort((a, b) => (b.priority || 0) - (a.priority || 0));\n\n const classes: string[] = [];\n\n for (const config of applicableConfigs) {\n if (!config.columns || config.columns.length === 0) {\n classes.push(config.disabledClass || 'is-disabled');\n }\n else if (config.columns.includes(column.key)) {\n classes.push(config.disabledClass || 'is-disabled');\n }\n }\n\n return classes.join(' ');\n }\n\n private generateActiveFilters(): ActiveFilterItem[] {\n const activeFilters: ActiveFilterItem[] = [];\n const currentFilters = this.currentFilterValues();\n \n if (!currentFilters || currentFilters.size === 0) {\n return activeFilters;\n }\n\n currentFilters.forEach((value, key) => {\n if (value !== undefined && value !== null && value !== '') {\n const filterConfig = this.customFilters().find(filter => \n filter.key.toString() === key\n );\n \n if (filterConfig) {\n const activeFilter: ActiveFilterItem = {\n key,\n label: filterConfig.label || key,\n value,\n displayValue: this.formatFilterValue(key, value, filterConfig),\n removable: true\n };\n \n activeFilters.push(activeFilter);\n }\n }\n });\n\n return activeFilters;\n }\n\n private formatFilterValue(key: string, value: any, filterConfig?: FilterConfig<T>): string {\n const formatters = this.activeFiltersConfig().formatters;\n \n if (formatters && formatters[key]) {\n return formatters[key](value);\n }\n\n if (filterConfig && filterConfig.options) {\n if (Array.isArray(value)) {\n const labels = value.map(v => {\n const option = filterConfig.options!.find(opt => opt.value === v);\n return option ? option.label : v;\n });\n return labels.join(', ');\n } else {\n const option = filterConfig.options.find(opt => opt.value === value);\n return option ? option.label : String(value);\n }\n }\n\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n\n if (Array.isArray(value)) {\n return value.join(', ');\n }\n\n return String(value);\n }\n\n onActiveFilterRemove(filter: ActiveFilterItem): void {\n this.handleFilterRemoved(filter);\n }\n\n onActiveFiltersClear(): void {\n this.handleFiltersCleared();\n }\n\n private handleFilterRemoved(filter: ActiveFilterItem): void {\n const currentFilters = new Map(this.filterService.getCustomFilters());\n currentFilters.delete(filter.key);\n this.currentFilterValues.set(currentFilters);\n \n if (this.endpoint()) {\n const transformedFilters = this.transformFiltersForPayload(currentFilters);\n const filterParams: { [key: string]: any } = {};\n transformedFilters.forEach((value, key) => {\n filterParams[key] = value;\n });\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.refreshWithFilters(filterParams, this.FILTER_LOADER_ID);\n this.filterService.setCustomFiltersSilent(currentFilters);\n } else {\n this.filterService.setCustomFilters(currentFilters);\n }\n \n this.activeFilterRemoved.emit(filter);\n }\n\n private handleFiltersCleared(): void {\n this.currentFilterValues.set(new Map());\n \n if (this.endpoint()) {\n this.startLoaderTimeout(this.FILTER_LOADER_ID);\n this.tableDataService.refreshWithFilters({}, this.FILTER_LOADER_ID);\n this.filterService.setCustomFiltersSilent(new Map());\n this.filterService.setGlobalFilterSilent('');\n } else {\n this.filterService.setCustomFilters(new Map());\n this.filterService.setGlobalFilter('');\n }\n \n this.activeFiltersCleared.emit();\n }\n\n private updateHeaderService() {\n if (this.inModal()) return;\n \n this.headerService.setHeaderData({\n title: this.listTitle(),\n globalActions: this.globalActions(),\n showFilter: this.showFilter(),\n customFilters: this.customFilters(),\n showCreateButton: this.showCreateButton(),\n hasCreatePermission: this.hasAction(TableAction.CREATE),\n });\n\n this.headerService.setHeaderConfig({\n title: this.listTitle(),\n globalActions: this.globalActions(),\n showDefaultFilter: this.showFilter(),\n showDefaultCreate: this.showCreateButton(),\n customFilters: this.customFilters(),\n headerOrder: this.headerOrder(),\n filterButtonConfig: this.filterButtonConfig(),\n createButtonConfig: this.createButtonConfig(),\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n \n this.inlineEditService.destroy();\n \n this.loaderTimeouts.forEach((timeoutId) => {\n clearTimeout(timeoutId);\n });\n this.loaderTimeouts.clear();\n \n this.loadingStates.moreData.clear();\n this.loadingStates.mainData = false;\n this.loadingStates.filterData = false;\n \n this.loaderService.hideLoader(this.MAIN_DATA_LOADER_ID);\n this.loaderService.hideLoader(this.FILTER_LOADER_ID);\n this.loadingStates.moreData.forEach(key => {\n this.loaderService.hideLoader(this.MORE_DATA_LOADER_PREFIX + key);\n });\n \n window.removeEventListener('filterRequested', () => {\n this.showFiltersPopup();\n });\n\n window.removeEventListener('createRequested', () => {\n this.triggerAction(TableAction.CREATE);\n });\n\n window.removeEventListener('globalActionTriggered', ((event: CustomEvent) => {\n this.triggerGlobalAction(event.detail);\n }) as EventListener);\n\n if (!this.inModal()) {\n this.headerService.clearHeaderData();\n }\n }\n\n ngAfterViewInit() {\n if (!this.enablePagination() && this.sentinel) {\n this.setupInfiniteScroll();\n }\n }\n\n setupInfiniteScroll(): void {\n if (this.observer) this.observer.disconnect();\n this.observer = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && this.itemsLoaded() < this.filterService.getFilteredData().length) {\n this.loadMoreItems();\n }\n }, { threshold: 0.1 });\n this.observer.observe(this.sentinel.nativeElement);\n }\n\n loadMoreItems(): void {\n const newItemsLoaded = Math.min(this.itemsLoaded() + this.infiniteScrollPageSize(), this.filterService.getFilteredData().length);\n this.itemsLoaded.set(newItemsLoaded);\n this.updateDisplayedDataFromServer(this.filterService.getFilteredData());\n }\n\n onModalData(data: T): void {\n this.modalData.emit(data);\n }\n\n getExpandButtonConfig(row: T): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: this.getExpansionIcon(row),\n ariaLabel: this.isRowExpanded(row) ? 'table.collapse' : 'table.expand',\n customClass: this.expansionConfig()?.buttonClass || 'c-icon-btn'\n };\n }\n\n getActionButtonConfig(action: TableAction, actionConfig: TableActionConfig): ButtonConfig {\n const configs: Record<string, Partial<ButtonConfig>> = {\n [TableAction.VIEW]: {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-search',\n ariaLabel: 'table.view',\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || 'table.view',\n position: actionConfig.tooltipPosition || 'bottom'\n },\n // text: 'table.view'\n },\n [TableAction.EDIT]: {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-edit',\n ariaLabel: 'table.edit',\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || 'table.edit',\n position: actionConfig.tooltipPosition || 'bottom'\n },\n // text: 'table.edit'\n },\n [TableAction.DELETE]: {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-delete',\n ariaLabel: 'table.delete',\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || 'table.delete',\n position: actionConfig.tooltipPosition || 'bottom'\n },\n context: ButtonContext.ERROR,\n // text: 'table.delete'\n }\n };\n\n const config = configs[action] || {\n type: ButtonType.ICON,\n icon: actionConfig.icon || 'icon-more',\n ariaLabel: action,\n tooltipConfig: {\n hasTooltip: true,\n text: actionConfig.tooltip || action,\n position: actionConfig.tooltipPosition || 'bottom'\n },\n text: action\n };\n\n return {\n ...config,\n customClass: actionConfig.class || 'c-icon-btn'\n } as ButtonConfig;\n }\n\n getCustomActionButtonConfig(customAction: CustomAction<T>): ButtonConfig {\n const hasLabel = !!customAction.label;\n const isIconButton = customAction.class === 'c-icon-btn';\n const isLinkStyle = customAction.class?.includes('c-link') || customAction.class?.includes('c-btn');\n \n const defaultConfig: ButtonConfig = {\n type: ButtonType.ICON,\n icon: customAction.icon,\n ariaLabel: customAction.title,\n text: customAction.label,\n tooltipConfig: {\n hasTooltip: true,\n text: customAction.tooltip || customAction.title,\n position: customAction.tooltipPosition || 'bottom'\n },\n customClass: customAction.class || 'c-icon-btn',\n showTextOnIcon: hasLabel && (isLinkStyle || !isIconButton)\n };\n\n if (customAction.buttonConfig) {\n return {\n ...defaultConfig,\n ...customAction.buttonConfig\n };\n }\n\n return defaultConfig;\n }\n\n getCustomActionButtonConfigForRow(customAction: CustomAction<T>, row: T): ButtonConfig {\n const baseConfig = this.getCustomActionButtonConfig(customAction);\n \n const isDisabled = customAction.shouldDisable ? customAction.shouldDisable(row) : false;\n \n return {\n ...baseConfig,\n disabled: isDisabled\n };\n }\n\n getMoreActionsButtonConfig(rowId: number): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-more',\n ariaLabel: 'table.moreActions',\n customClass: 'c-icon-btn',\n id: `dropdown-trigger-${rowId}`\n };\n }\n\n onButtonClick(event: ButtonActionEvent, action: any, row?: T): void {\n if (typeof action === 'string') {\n this.triggerAction(action as TableAction, row);\n } else {\n this.triggerCustomAction(action as CustomAction<T>, row!);\n }\n }\n\n onExpandButtonClick(event: ButtonActionEvent, row: T): void {\n this.toggleRowExpansion(row);\n }\n\n onMoreActionsClick(event: ButtonActionEvent, rowId: number): void {\n this.toggleSubmenu(rowId, event.originalEvent);\n }\n\n private sortDataByReference(): void {\n const currentData = this.displayedData();\n if (!currentData || currentData.length === 0) {\n return;\n }\n\n const firstItem = currentData[0];\n if (!firstItem || typeof firstItem.getReference !== 'function') {\n return;\n }\n\n try {\n const sortedData = [...currentData].sort((a, b) => {\n const refA = a.getReference();\n const refB = b.getReference();\n \n if (refA == null && refB == null) return 0;\n if (refA == null) return 1;\n if (refB == null) return -1;\n \n const stringA = String(refA).toLowerCase();\n const stringB = String(refB).toLowerCase();\n \n return stringA.localeCompare(stringB);\n });\n\n this.displayedData.set(sortedData);\n } catch (error) {\n console.warn('Error al ordenar por getReference():', error);\n }\n }\n\n private startLoaderTimeout(loaderId: string): void {\n if (this.loaderTimeouts.has(loaderId)) {\n clearTimeout(this.loaderTimeouts.get(loaderId));\n }\n\n const timeoutId = setTimeout(() => {\n this.loaderService.hideLoader(loaderId);\n \n if (loaderId === this.MAIN_DATA_LOADER_ID) {\n this.loadingStates.mainData = false;\n } else if (loaderId === this.FILTER_LOADER_ID) {\n this.loadingStates.filterData = false;\n } else if (loaderId.startsWith(this.MORE_DATA_LOADER_PREFIX)) {\n const key = loaderId.replace(this.MORE_DATA_LOADER_PREFIX, '');\n this.loadingStates.moreData.delete(key);\n }\n \n this.loaderTimeouts.delete(loaderId);\n this.checkAndHideLoader();\n }, this.LOADER_TIMEOUT);\n\n this.loaderTimeouts.set(loaderId, timeoutId);\n }\n\n private clearLoaderTimeout(loaderId: string): void {\n if (this.loaderTimeouts.has(loaderId)) {\n clearTimeout(this.loaderTimeouts.get(loaderId));\n this.loaderTimeouts.delete(loaderId);\n }\n }\n\n private checkAndHideLoader(): void {\n const isMainDataLoading = this.loadingStates.mainData;\n const isFilterDataLoading = this.loadingStates.filterData;\n const moreDataPending = this.loadingStates.moreData.size;\n \n if (!isMainDataLoading) {\n this.loaderService.hideLoader(this.MAIN_DATA_LOADER_ID);\n this.clearLoaderTimeout(this.MAIN_DATA_LOADER_ID);\n }\n\n if (!isFilterDataLoading) {\n this.loaderService.hideLoader(this.FILTER_LOADER_ID);\n this.clearLoaderTimeout(this.FILTER_LOADER_ID);\n }\n\n if (!isMainDataLoading && !isFilterDataLoading && moreDataPending === 0) {\n this.loaderTimeouts.forEach((timeoutId, loaderId) => {\n clearTimeout(timeoutId);\n this.loaderService.hideLoader(loaderId);\n });\n this.loaderTimeouts.clear();\n }\n }\n\n toggleInlineEditMode(): void {\n this.inlineEditService.toggleInlineEditMode();\n }\n\n toggleRowEditMode(rowId: number): void {\n this.inlineEditService.toggleRowEditMode(rowId);\n }\n\n isRowInEditMode(rowId: number): boolean {\n return this.inlineEditService.isRowInEditMode(rowId);\n }\n\n isCellProcessing(row: T, column: ColumnConfig<T>): boolean {\n return this.inlineEditService.isCellProcessing(row, column);\n }\n\n setCellProcessing(row: T, column: ColumnConfig<T>, isProcessing: boolean): void {\n this.inlineEditService.setCellProcessing(row, column, isProcessing);\n }\n\n isColumnEditable(column: ColumnConfig<T>, row?: T): boolean {\n return this.inlineEditService.isColumnEditable(column, row);\n }\n\n getCellKey(row: T, column: ColumnConfig<T>): string {\n return this.inlineEditService.getCellKey(row, column);\n }\n\n getEditingValue(row: T, column: ColumnConfig<T>): any {\n return this.inlineEditService.getEditingValue(row, column);\n }\n\n onCellValueChange(row: T, column: ColumnConfig<T>, value: any): void {\n this.inlineEditService.onCellValueChange(row, column, value);\n }\n\n getCellErrors(row: T, column: ColumnConfig<T>): string[] {\n return this.inlineEditService.getCellErrors(row, column);\n }\n\n getInlineEditableConfig(column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n return this.inlineEditService.getInlineEditableConfig(column);\n }\n\n getInlineEditableConfigWithState(row: T, column: ColumnConfig<T>): ModalFieldConfig<T> | undefined {\n return this.inlineEditService.getInlineEditableConfigWithState(row, column);\n }\n\n onCellBlur(row: T, column: ColumnConfig<T>): void {\n this.inlineEditService.onCellBlur(row, column);\n }\n\n onCellEnter(row: T, column: ColumnConfig<T>): void {\n this.inlineEditService.onCellEnter(row, column);\n }\n\n updateRowData(\n rowId: string | number, \n updatedFields: { [key: string]: any },\n updateFunction?: (row: T) => T\n ): void {\n this.tableDataService.updateRowData(rowId, updatedFields, updateFunction);\n }\n}","@if (showActiveFilters()) {\n <core-active-filters\n [activeFilters]=\"currentActiveFilters()\"\n [config]=\"activeFiltersConfig()\"\n (onFilterRemove)=\"onActiveFilterRemove($event)\"\n (onClearAll)=\"onActiveFiltersClear()\">\n </core-active-filters>\n}\n\n<div class=\"c-table\" [class.in-modal]=\"inModal()\" [class.inline-edit-mode]=\"inlineEditService.isInlineEditMode()\">\n <table>\n <thead>\n <tr>\n @if (showSelection()) {\n <!-- Todo: Tabla con row selection -->\n <th class=\"select-column\">\n <input type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"masterToggle()\" />\n </th>\n }\n @for (column of columns(); track $index) {\n <th [ngClass]=\"column.align ? 'u-align-' + column.align : ''\">\n @if (column.sortable !== false) {\n <!-- ✅ Solcre: Agregado [title] dinámico y capacidad de volver al estado sin selección -->\n <button class=\"c-table-order\" tabindex=\"-1\"\n [class.is-asc]=\"currentSortColumn() === column.key && currentSortDirection() === 'asc'\"\n [class.is-desc]=\"currentSortColumn() === column.key && currentSortDirection() === 'desc'\"\n [title]=\"getSortTitle(column) | translate\" (click)=\"sortData(column)\">\n {{ column.label | translate }}\n <span class=\"c-table-order__controls\">\n <span class=\"c-table-order__arrow--desc icon-arrow-up\"></span>\n <span class=\"c-table-order__arrow--asc icon-arrow-down\"></span>\n </span>\n </button>\n <!-- <button \n class=\"c-table__order\" \n [class.is-asc]=\"currentSortColumn() === column.key && currentSortDirection() === 'asc'\" \n [class.is-desc]=\"currentSortColumn() === column.key && currentSortDirection() === 'desc'\"\n (click)=\"sortData(column)\">\n {{ column.label | translate }}\n <span class=\"icon-order-arrow\"></span>\n </button> -->\n } @else {\n {{ column.label | translate }}\n }\n </th>\n }\n @if (showActions() && (actions().length > 0 || customActions().length > 0)) {\n <th class=\"u-align-right\">{{ 'table.actions' | translate }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of displayedData(); track row.getId()) {\n <tr [ngClass]=\"getRowClasses(row)\" \n [class.is-editing-inline]=\"isRowInEditMode(row.getId())\"\n [class.is-disabled]=\"isRowDisabled(row)\">\n @if (showSelection()) {\n <!-- Todo: Tabla con row selection -->\n <td class=\"select-column\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"toggleRow(row)\" />\n </td>\n }\n @for (column of columns(); track $index) {\n <td [attr.data-label]=\"column.label | translate\" \n [ngClass]=\"[\n column.align ? 'u-align-' + column.align : '',\n getCellDisabledClasses(row, column)\n ]\" \n [class.is-editing]=\"isColumnEditable(column, row)\"\n [class.is-column-disabled]=\"isColumnDisabledForRow(row, column)\">\n @if (column.template) {\n <!-- Todo: Ver qué es esto -->\n <ng-container *ngTemplateOutlet=\"column.template; context: { $implicit: row, column: column }\"></ng-container>\n } @else if (isColumnEditable(column, row)) {\n <!-- !Solcre: Modo de edición en línea usando DynamicField -->\n <div class=\"c-table__inline-edit\">\n <strong class=\"c-table__mobile-heading\">{{ column.label | translate }}:</strong>\n <div\n coreDynamicField\n [field]=\"getInlineEditableConfigWithState(row, column)!\"\n [value]=\"getEditingValue(row, column)\"\n [mode]=\"ModalMode.EDIT\"\n [errors]=\"getCellErrors(row, column)\"\n [rowData]=\"row\"\n (valueChange)=\"onCellValueChange(row, column, $event)\"\n (onBlurEvent)=\"onCellBlur(row, column)\"\n (onEnterEvent)=\"onCellEnter(row, column)\"\n ></div>\n </div>\n } @else {\n <div class=\"c-table__content\">\n <strong class=\"c-table__mobile-heading\">{{ column.label | translate }}:</strong> {{ getFormattedValue(row,\n column) }}\n </div>\n }\n </td>\n }\n\n <!-- Actions-->\n\n @if (showActions() && (actions().length > 0 || customActions().length > 0 || expansionConfig()?.enabled)) {\n\n <td class=\"u-align-right\">\n <div class=\"c-table__actions\">\n\n @for (actionConfig of regularDefaultActions(); track actionConfig.action) {\n @if (hasPermission(actionConfig)) {\n @if (actionConfig.action === TableAction.VIEW || actionConfig.action === TableAction.EDIT ||\n actionConfig.action === TableAction.DELETE) {\n <core-generic-button [config]=\"getActionButtonConfig(actionConfig.action, actionConfig)\"\n (buttonClick)=\"onButtonClick($event, actionConfig.action, row)\">\n </core-generic-button>\n }\n }\n }\n @for (customAction of getVisibleCustomActions(row, false); track customAction.label || $index) {\n @if (hasPermission(customAction)) {\n <core-generic-button [config]=\"getCustomActionButtonConfigForRow(customAction, row)\"\n (buttonClick)=\"onButtonClick($event, customAction, row)\">\n </core-generic-button>\n }\n }\n\n @if (hasExtraActionsForRow(row)) {\n <core-generic-button [config]=\"getMoreActionsButtonConfig(row.getId())\" [data]=\"row\"\n (buttonClick)=\"onMoreActionsClick($event, row.getId())\" #dropdownTrigger>\n </core-generic-button>\n <core-dropdown [rowId]=\"row.getId()\" [extraDefaultActions]=\"extraDefaultActions()\"\n [extraCustomActions]=\"getVisibleCustomActions(row, true)\" [row]=\"row\"\n [triggerElementId]=\"'dropdown-trigger-' + row.getId()\"\n (actionTriggered)=\"triggerAction($event.action, $event.row)\"\n (customActionTriggered)=\"triggerCustomAction($event.action, $event.row)\" #dropdown>\n </core-dropdown>\n }\n\n @if (expansionConfig()?.enabled) {\n <!-- ✅ Solcre: Celda dedicada para expansión en su posición correcta -->\n <core-generic-button [config]=\"getExpandButtonConfig(row)\" (buttonClick)=\"onExpandButtonClick($event, row)\">\n </core-generic-button>\n }\n\n </div> <!-- .c-table__actions -->\n </td> <!-- td parent of .c-table__actions -->\n } <!-- @if (showActions() -->\n\n\n </tr>\n @if (expansionConfig()?.enabled && isRowExpanded(row)) {\n <!-- Todo: Ver que es esto -->\n <tr class=\"expansion-row\" [ngClass]=\"getRowClasses(row)\">\n <td [attr.colspan]=\"displayedColumns().length\" class=\"expansion-content\">\n <ng-container *ngTemplateOutlet=\"expansionConfig()!.template; context: { $implicit: row }\">\n </ng-container>\n </td>\n </tr>\n }\n } @empty {\n <tr>\n <!-- Todo: Estilo .no-data -->\n <td [attr.colspan]=\"displayedColumns().length\">\n <p class=\"c-placeholder\">{{ 'table.noData' | translate }}</p>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div> <!-- .c-table -->\n\n<!-- Todo: Todo lo que viene dsp de la tabla -->\n\n@if (!enablePagination()) {\n<!-- Todo: Ver qué onda esto -->\n<div #sentinel class=\"sentinel\"></div>\n}\n\n@if (enablePagination()) {\n<!-- Todo: Ver qué onda esto -->\n<core-generic-pagination [tableId]=\"tableId\"></core-generic-pagination>\n}\n\n<core-generic-modal [isOpen]=\"tableActionService.getIsModalOpen()\" [mode]=\"tableActionService.getModalMode()\"\n [data]=\"tableActionService.getModalData()\" [fields]=\"hasTabs() ? [] : tableActionService.getModalFieldsToShow()\"\n [tabs]=\"hasTabs() ? modalTabs() : []\" [title]=\"tableActionService.getModalTitle()\" [modelFactory]=\"modelFactory() || null\"\n (save)=\"onModalSave($event)\" (close)=\"tableActionService.closeModal()\" (modalData)=\"onModalData($event)\">\n</core-generic-modal>\n\n<core-filter-modal [isOpen]=\"isFilterModalOpen()\" [filters]=\"customFilters()\" [currentFilterValues]=\"currentFilterValues()\" (close)=\"closeFiltersPopup()\"\n (filterChange)=\"handleFilterChange($event)\" (globalFilterChange)=\"applyGlobalFilter($event)\"\n (clearFilters)=\"handleClearFilters()\">\n</core-filter-modal>","import { Component, input, computed, TemplateRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertType } from '../../enums/global/AlertType.enum';\nimport { Alert } from '../../interfaces/global/Alert.interface';\nimport { AlertService } from '../../services/alert.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-alert',\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [CoreHostDirective],\n template: `\n <div [class]=\"alert().inBottom ? 'c-bottom-alert' : 'c-alert'\" [ngClass]=\"alertClass()\">\n <span class=\"c-bottom-alert__icon\" [ngClass]=\"alert().icon\"></span>\n <div>\n @if (alert().customTemplate) {\n <ng-container [ngTemplateOutlet]=\"alert().customTemplate!\" [ngTemplateOutletContext]=\"alert().templateContext\"></ng-container>\n } @else {\n <p>\n <ng-content></ng-content>\n </p>\n }\n </div>\n <button class=\"c-bottom-alert__close icon-cross-thin u-tap-size\" (click)=\"close()\"></button>\n </div>\n `\n})\nexport class AlertComponent {\n alert = input.required<Alert>();\n \n private alertService = inject(AlertService);\n \n alertClass = computed(() => {\n switch (this.alert().type) {\n case AlertType.ERROR:\n return 'context:error';\n case AlertType.SUCCESS:\n return 'context:success';\n case AlertType.HIGHLIGHTED:\n return 'context:highlight';\n case AlertType.WAITING:\n return 'context:waiting';\n case AlertType.DEFAULT:\n return '';\n default:\n return '';\n }\n });\n\n close() {\n this.alertService.remove(this.alert());\n }\n} ","import { Component, inject } from '@angular/core';\n\nimport { AlertComponent } from './alert.component';\nimport { AlertService } from '../../services/alert.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-alert-container',\n standalone: true,\n imports: [AlertComponent, TranslateModule],\n hostDirectives: [CoreHostDirective],\n template: `\n <div class=\"c-bottom-alert-holder\">\n @for (alert of alertService.alerts$(); track alert) {\n <core-alert [alert]=\"alert\">\n @if (!alert.customTemplate) {\n {{ alert.message | translate }}\n }\n </core-alert>\n }\n </div> \n `,\n})\nexport class AlertContainerComponent {\n protected alertService = inject(AlertService);\n} ","export enum DocumentAction {\n DOWNLOAD = 'download',\n DELETE = 'delete',\n HELP = 'help',\n UPLOAD = 'upload'\n} ","export enum DocumentDisplayMode {\n GRID = 'grid',\n LIST = 'list'\n} ","import { Component, input, output, signal, computed, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DocumentItem } from './interfaces/DocumentItem.interface';\nimport { DocumentConfig } from './interfaces/DocumentConfig.interface';\nimport { DocumentActionEvent } from './interfaces/DocumentActionEvent.interface';\nimport { DocumentDisplayMode } from './enums/DocumentDisplayMode.enum';\nimport { DocumentAction } from './enums/DocumentAction.enum';\nimport { DatePipe } from '@angular/common';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-documentation',\n standalone: true,\n imports: [CommonModule, TranslateModule, GenericButtonComponent],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-documentation.component.html',\n styleUrl: './generic-documentation.component.scss'\n})\nexport class GenericDocumentationComponent implements OnInit, OnDestroy {\n public DocumentDisplayMode = DocumentDisplayMode;\n public DocumentAction = DocumentAction;\n\n documents = input<DocumentItem[]>([]);\n config = input<DocumentConfig>({\n displayMode: DocumentDisplayMode.GRID,\n showUploadDate: true,\n showUploadedBy: true,\n showDescription: true,\n allowDownload: true,\n allowDelete: false,\n allowHelp: false,\n customDateFormat: 'dd/MM/yyyy HH:mm',\n emptyStateMessage: 'documentation.noDocuments',\n emptyStateIcon: 'icon-file-not-found'\n });\n loading = input<boolean>(false);\n permissions = input<{\n canDownload?: boolean;\n canDelete?: boolean;\n canHelp?: boolean;\n canUpload?: boolean;\n }>({});\n\n actionTriggered = output<DocumentActionEvent>();\n uploadRequested = output<Event>();\n\n hasDocuments = computed(() => this.documents().length > 0);\n \n displayMode = computed(() => this.config().displayMode);\n \n isGridMode = computed(() => this.displayMode() === DocumentDisplayMode.GRID);\n isListMode = computed(() => this.displayMode() === DocumentDisplayMode.LIST);\n\n selectedDocuments = signal<DocumentItem[]>([]);\n\n uploadButtonConfig = computed<ButtonConfig>(() => ({\n type: ButtonType.PRIMARY,\n text: 'documentation.upload',\n icon: 'icon-upload',\n customClass: 'c-empty-state__action'\n }));\n\n constructor() {}\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n }\n\n getDownloadButtonConfig(document: DocumentItem): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-download',\n ariaLabel: 'documentation.download',\n tooltip: 'documentation.download',\n customClass: '',\n disabled: !this.canPerformAction(DocumentAction.DOWNLOAD, document)\n };\n }\n\n getDeleteButtonConfig(document: DocumentItem): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-delete',\n ariaLabel: 'documentation.delete',\n tooltip: 'documentation.delete',\n context: ButtonContext.ERROR,\n customClass: '',\n disabled: !this.canPerformAction(DocumentAction.DELETE, document)\n };\n }\n\n getHelpButtonConfig(document: DocumentItem): ButtonConfig {\n return {\n type: ButtonType.ICON,\n icon: 'icon-help',\n ariaLabel: 'documentation.help',\n tooltip: 'documentation.help',\n customClass: '',\n disabled: !this.canPerformAction(DocumentAction.HELP, document)\n };\n }\n\n onButtonClick(action: DocumentAction, document: DocumentItem, event?: Event): void {\n this.onDocumentAction(action, document, event);\n }\n\n onDocumentAction(action: DocumentAction, document: DocumentItem, event?: Event): void {\n if (!this.canPerformAction(action, document)) {\n return;\n }\n\n const actionEvent: DocumentActionEvent = {\n action,\n document,\n event\n };\n\n this.actionTriggered.emit(actionEvent);\n }\n\n onUploadClick(event: Event): void {\n if (!this.canUpload()) {\n return;\n }\n this.uploadRequested.emit(event);\n }\n\n canPerformAction(action: DocumentAction, document: DocumentItem): boolean {\n const permissions = this.permissions();\n const config = this.config();\n\n switch (action) {\n case DocumentAction.DOWNLOAD:\n return config.allowDownload !== false && \n document.canDownload !== false &&\n (permissions.canDownload !== false);\n \n case DocumentAction.DELETE:\n return config.allowDelete === true && \n document.canDelete === true &&\n (permissions.canDelete === true);\n \n case DocumentAction.HELP:\n return config.allowHelp === true && \n document.hasHelp === true &&\n (permissions.canHelp === true);\n \n default:\n return false;\n }\n }\n\n canUpload(): boolean {\n const permissions = this.permissions();\n return permissions.canUpload === true;\n }\n\n formatDate(date: Date | string): string {\n const config = this.config();\n const dateFormat = config.customDateFormat || 'dd/MM/yyyy HH:mm';\n \n if (typeof date === 'string') {\n date = new Date(date);\n }\n \n return new DatePipe('en-US').transform(date, dateFormat) || '';\n }\n\n getFileIcon(document: DocumentItem): string {\n if (document.fileType) {\n const extension = document.fileType.toLowerCase();\n switch (extension) {\n case 'pdf':\n return 'icon-file-pdf';\n case 'doc':\n case 'docx':\n return 'icon-file-word';\n case 'xls':\n case 'xlsx':\n return 'icon-file-excel';\n case 'jpg':\n case 'jpeg':\n case 'png':\n case 'gif':\n return 'icon-file-image';\n default:\n return 'icon-file';\n }\n }\n return 'icon-file';\n }\n\n trackByDocumentId(index: number, document: DocumentItem): string | number {\n return document.id;\n }\n\n getEmptyStateIcon(): string {\n return this.config().emptyStateIcon || 'icon-file';\n }\n\n getEmptyStateMessage(): string {\n return this.config().emptyStateMessage || 'documentation.noDocuments';\n }\n}\n","<div *ngIf=\"!loading() && hasDocuments() && isGridMode()\" class=\"c-components-grid\">\n <div \n *ngFor=\"let document of documents(); trackBy: trackByDocumentId\" \n class=\"c-doc\">\n \n <div class=\"c-bulleted-text\" *ngIf=\"config().showUploadDate || config().showUploadedBy\">\n <time \n *ngIf=\"config().showUploadDate\"\n \n [attr.datetime]=\"document.uploadedDate\">\n <span [class]=\"getFileIcon(document)\"></span>\n {{ formatDate(document.uploadedDate) }}\n </time>\n <span \n *ngIf=\"config().showUploadedBy\"\n >\n {{ document.uploadedBy }}\n </span>\n </div>\n\n <div class=\"c-doc__file c-doc-file\">\n <div>\n <p class=\"c-doc__name\">{{ document.name }}</p>\n <p \n *ngIf=\"config().showDescription && document.description\"\n class=\"c-doc__description\">\n {{ document.description }}\n </p>\n </div>\n <!-- DEV: Ajustar botones -->\n <div class=\"c-doc__group-btns\">\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DOWNLOAD, document)\"\n [config]=\"getDownloadButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DOWNLOAD, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DELETE, document)\"\n [config]=\"getDeleteButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DELETE, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.HELP, document)\"\n [config]=\"getHelpButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.HELP, document, $event.originalEvent)\">\n </core-generic-button>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!loading() && hasDocuments() && isListMode()\" class=\"c-components-grid\">\n <ul class=\"c-doc-list\">\n <li \n *ngFor=\"let document of documents(); trackBy: trackByDocumentId\" \n class=\"c-doc-list__item\">\n \n <div class=\"c-doc\">\n <div class=\"c-bulleted-text\" *ngIf=\"config().showUploadDate || config().showUploadedBy\">\n <time \n *ngIf=\"config().showUploadDate\"\n [attr.datetime]=\"document.uploadedDate\">\n <span [class]=\"getFileIcon(document)\"></span>\n {{ formatDate(document.uploadedDate) }}\n </time>\n <span \n *ngIf=\"config().showUploadedBy\">\n {{ document.uploadedBy }}\n </span>\n </div>\n\n <div class=\"c-doc__file c-doc-file\">\n <div>\n <p class=\"c-doc__name\">{{ document.name }}</p>\n <p \n *ngIf=\"config().showDescription && document.description\"\n class=\"c-doc__description\">\n {{ document.description }}\n </p>\n </div>\n\n <div class=\"c-doc__group-btns\">\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DOWNLOAD, document)\"\n [config]=\"getDownloadButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DOWNLOAD, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.DELETE, document)\"\n [config]=\"getDeleteButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.DELETE, document, $event.originalEvent)\">\n </core-generic-button>\n\n <core-generic-button \n *ngIf=\"canPerformAction(DocumentAction.HELP, document)\"\n [config]=\"getHelpButtonConfig(document)\"\n [data]=\"document\"\n (buttonClick)=\"onButtonClick(DocumentAction.HELP, document, $event.originalEvent)\">\n </core-generic-button>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n\n<!-- Loading state -->\n<div *ngIf=\"loading()\" class=\"c-empty-state\">\n <div class=\"c-empty-state__content\">\n <span class=\"c-empty-state__icon icon-loading\"></span>\n <p class=\"c-empty-state__message\">{{ 'commons.loading' | translate }}</p>\n </div>\n</div>\n\n<!-- Empty state - No documents -->\n<div *ngIf=\"!loading() && !hasDocuments()\" class=\"c-empty-state\">\n <div class=\"c-empty-state__content\">\n <span class=\"c-empty-state__icon\" [class]=\"getEmptyStateIcon()\"></span>\n <p class=\"c-empty-state__message\">{{ getEmptyStateMessage() | translate }}</p>\n \n <!-- Upload button if user can upload -->\n <core-generic-button \n *ngIf=\"canUpload()\"\n [config]=\"uploadButtonConfig()\"\n (buttonClick)=\"onUploadClick($event.originalEvent)\">\n </core-generic-button>\n </div>\n</div>\n","export enum SidebarWidth {\n DEFAULT = 'default',\n WIDE = 'wide'\n}","export enum SidebarHeight {\n DEFAULT = 'default',\n FULL = 'full'\n}","export enum FileType {\n COMPANY_INVENTORY = 'company_inventory',\n COMPANY_LEGAL = 'company_legals',\n COMPANY_AZF_PROCEDURE = 'company_azf_procedure',\n COMPANY_TELEWORK = 'company_remote_work',\n FILE_TEMPLATE = 'file_template',\n COMPANY_EMPLOYEES_BULK = 'company_employees_bulk'\n} ","export enum NumberRange {\n MIN = 'min',\n MAX = 'max'\n}","export enum LayoutBreakpoint {\n MOBILE = 'mobile',\n TABLET = 'tablet',\n DESKTOP = 'desktop'\n}","export enum SidebarVisibility {\n SHOW = 'show',\n HIDE = 'hide'\n}","export enum LayoutType {\n DEFAULT = 'default'\n}","export enum SidebarPosition {\n LEFT = 'left',\n RIGHT = 'right'\n}","export enum SidebarMobileType {\n SELECT = 'select',\n SCROLL = 'scroll',\n MODAL = 'modal'\n}\n","import { Injectable, signal, computed } from '@angular/core';\nimport { LayoutConfig, SidebarConfig } from '../../../interfaces';\nimport { LayoutType, SidebarHeight, SidebarVisibility, SidebarWidth } from '../../../enums';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n \n private layoutConfig = signal<LayoutConfig>({\n layout: LayoutType.DEFAULT,\n sidebarLeft: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n },\n sidebarRight: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n }\n });\n\n public layout = computed(() => this.layoutConfig().layout);\n public sidebarLeft = computed(() => this.layoutConfig().sidebarLeft);\n public sidebarRight = computed(() => this.layoutConfig().sidebarRight);\n\n public dataAttributes = computed(() => ({\n 'data-layout': this.layout(),\n 'data-sidebar-left': this.sidebarLeft().visibility,\n 'data-sidebar-left-w': this.sidebarLeft().width,\n 'data-sidebar-left-h': this.sidebarLeft().height,\n 'data-sidebar-right': this.sidebarRight().visibility,\n 'data-sidebar-right-w': this.sidebarRight().width,\n 'data-sidebar-right-h': this.sidebarRight().height\n }));\n\n setLayoutConfig(config: LayoutConfig): void {\n this.layoutConfig.set(config);\n }\n\n setSidebarLeft(config: SidebarConfig): void {\n this.layoutConfig.update(current => ({\n ...current,\n sidebarLeft: config\n }));\n }\n\n setSidebarRight(config: SidebarConfig): void {\n this.layoutConfig.update(current => ({\n ...current,\n sidebarRight: config\n }));\n }\n\n showLeftSidebar(width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.setSidebarLeft({\n visibility: SidebarVisibility.SHOW,\n width,\n height\n });\n }\n\n hideLeftSidebar(): void {\n this.setSidebarLeft({\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n });\n }\n\n toggleLeftSidebar(): void {\n const currentVisibility = this.sidebarLeft().visibility;\n if (currentVisibility === SidebarVisibility.SHOW) {\n this.hideLeftSidebar();\n } else {\n this.showLeftSidebar();\n }\n }\n\n showRightSidebar(width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.setSidebarRight({\n visibility: SidebarVisibility.SHOW,\n width,\n height\n });\n }\n\n hideRightSidebar(): void {\n this.setSidebarRight({\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n });\n }\n\n toggleRightSidebar(): void {\n const currentVisibility = this.sidebarRight().visibility;\n if (currentVisibility === SidebarVisibility.SHOW) {\n this.hideRightSidebar();\n } else {\n this.showRightSidebar();\n }\n }\n\n reset(): void {\n this.setLayoutConfig({\n layout: LayoutType.DEFAULT,\n sidebarLeft: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n },\n sidebarRight: {\n visibility: SidebarVisibility.HIDE,\n width: SidebarWidth.DEFAULT,\n height: SidebarHeight.DEFAULT\n }\n });\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { SidebarComponentConfig } from '../../../interfaces/layout/sidebar-component.interface';\nimport { SidebarWidth } from '../../../enums/layout/sidebar-width.enum';\nimport { SidebarHeight } from '../../../enums/layout/sidebar-height.enum';\nimport { SidebarVisibility } from '../../../enums/layout/layout-visibility.enum';\nimport { LayoutService } from '../../layout/services/layout.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarService {\n private layoutService = inject(LayoutService);\n\n private currentLeftConfig: SidebarComponentConfig | null = null;\n private currentRightConfig: SidebarComponentConfig | null = null;\n\n setLeftSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.currentLeftConfig = config;\n this.layoutService.showLeftSidebar(width, height);\n }\n\n hideLeftSidebar(): void {\n this.currentLeftConfig = null;\n this.layoutService.hideLeftSidebar();\n }\n\n setRightSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.currentRightConfig = config;\n this.layoutService.showRightSidebar(width, height);\n }\n\n hideRightSidebar(): void {\n this.currentRightConfig = null;\n this.layoutService.hideRightSidebar();\n }\n\n getCurrentLeftConfig(): SidebarComponentConfig | null {\n return this.currentLeftConfig;\n }\n\n getCurrentRightConfig(): SidebarComponentConfig | null {\n return this.currentRightConfig;\n }\n} ","import { Injectable, signal, TemplateRef } from '@angular/core';\nimport { SidebarComponentConfig } from '../../../interfaces/layout/sidebar-component.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarMobileModalService {\n private isModalOpen = signal(false);\n private modalConfig = signal<SidebarComponentConfig | null>(null);\n \n public isOpen(): boolean {\n return this.isModalOpen();\n }\n \n openModal(config: SidebarComponentConfig): void {\n this.modalConfig.set(config);\n this.isModalOpen.set(true);\n }\n \n closeModal(): void {\n this.isModalOpen.set(false);\n this.modalConfig.set(null);\n }\n \n getModalState() {\n return {\n isOpen: this.isModalOpen.asReadonly(),\n config: this.modalConfig.asReadonly()\n };\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\n\nexport interface SidebarTemplateContext {\n config: any;\n position: string;\n onItemClick: (item: any) => void;\n onSubItemClick: (subItem: any) => void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarTemplateRegistryService {\n private templates = new Map<string, TemplateRef<SidebarTemplateContext>>();\n\n registerTemplate(key: string, template: TemplateRef<SidebarTemplateContext>): void {\n this.templates.set(key, template);\n }\n\n getTemplate(key: string): TemplateRef<SidebarTemplateContext> | null {\n return this.templates.get(key) || null;\n }\n\n unregisterTemplate(key: string): void {\n this.templates.delete(key);\n }\n\n hasTemplate(key: string): boolean {\n return this.templates.has(key);\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.templates.keys());\n }\n} ","import { Component, input, output, inject, TemplateRef, computed, OnInit, signal, effect, HostListener, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponentConfig } from '../../interfaces/layout/sidebar-component.interface';\nimport { SidebarItem } from '../../interfaces/layout/sidebar-item.interface';\nimport { SidebarSubItem } from '../../interfaces/layout/sidebar-sub-item.interface';\nimport { SidebarService } from './services/sidebar.service';\nimport { SidebarPosition } from '../../enums/layout/sidebar-position.enum';\nimport { SidebarMobileType } from '../../enums/layout/sidebar-mobile-type.enum';\nimport { SidebarMobileModalService } from './services/sidebar-mobile-modal.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SidebarTemplateRegistryService } from './services/sidebar-template-registry.service';\nimport { AlertService } from '../../services/alert.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\nimport { ModalButtonConfig } from '../../interfaces';\n\n@Component({\n selector: 'core-generic-sidebar',\n standalone: true,\n imports: [CommonModule, TranslateModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-sidebar.component.html',\n styleUrl: './generic-sidebar.component.scss'\n})\nexport class GenericSidebarComponent implements OnInit {\n private sidebarService = inject(SidebarService);\n private templateRegistry = inject(SidebarTemplateRegistryService);\n private alertService = inject(AlertService);\n private mobileModalService = inject(SidebarMobileModalService);\n \n config = input<SidebarComponentConfig | null>(null);\n position = input<SidebarPosition>(SidebarPosition.LEFT);\n customTemplate = input<TemplateRef<any> | null>(null);\n \n itemClicked = output<SidebarItem>();\n subItemClicked = output<SidebarSubItem>();\n\n sidebarContentTemplate = viewChild.required<TemplateRef<any>>('sidebarContentTemplate');\n\n SidebarMobileType = SidebarMobileType;\n\n private screenWidth = signal(typeof window !== 'undefined' ? window.innerWidth : 1024);\n\n public get modalService() {\n return this.mobileModalService;\n }\n\n public getFilteredItems() {\n const currentConfig = this.getConfig();\n return currentConfig?.items || [];\n }\n\n isMobileView = computed(() => {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n const maxBreakpoint = responsiveConfig?.maxMobileBreakpoint ?? 980;\n const minBreakpoint = responsiveConfig?.minMobileBreakpoint ?? 0;\n \n return this.screenWidth() <= maxBreakpoint && this.screenWidth() >= minBreakpoint;\n });\n\n getMobileType = computed(() => {\n const config = this.getConfig();\n return config?.responsiveConfig?.mobileType ?? SidebarMobileType.SELECT;\n });\n\n getMaxScrollItems = computed(() => {\n const config = this.getConfig();\n return config?.responsiveConfig?.maxScrollItems ?? 10;\n });\n\n getScrollableItems = computed(() => {\n const items = this.getConfig()?.items || [];\n const maxItems = this.getMaxScrollItems();\n return this.getMobileType() === SidebarMobileType.SCROLL ? items.slice(0, maxItems) : items;\n });\n\n modalState = this.mobileModalService.getModalState();\n\n hasValidConfiguration = computed(() => {\n const currentConfig = this.getConfig();\n if (!currentConfig) return false;\n \n const hasItems = currentConfig.items && currentConfig.items.length > 0;\n const hasCustomTemplate = !!(currentConfig.customTemplate || this.customTemplate());\n const hasTemplateKey = !!(currentConfig.templateKey && this.templateRegistry.hasTemplate(currentConfig.templateKey));\n \n return hasItems || hasCustomTemplate || hasTemplateKey;\n });\n\n shouldUseCustomTemplate = computed(() => {\n const currentConfig = this.getConfig();\n return !!(currentConfig?.customTemplate || this.customTemplate() || \n (currentConfig?.templateKey && this.templateRegistry.hasTemplate(currentConfig.templateKey)));\n });\n\n getActiveTemplate = computed(() => {\n const currentConfig = this.getConfig();\n \n if (currentConfig?.customTemplate) {\n return currentConfig.customTemplate;\n }\n \n if (this.customTemplate()) {\n return this.customTemplate();\n }\n \n if (currentConfig?.templateKey) {\n return this.templateRegistry.getTemplate(currentConfig.templateKey);\n }\n \n return null;\n });\n\n modalButtons = computed<ModalButtonConfig<any>[]>(() => {\n const config = this.getConfig();\n const customButtons = config?.responsiveConfig?.modalButtons;\n \n if (customButtons && customButtons.length > 0) {\n return customButtons;\n }\n \n return [\n {\n text: 'modal.cancel',\n action: () => this.mobileModalService.closeModal(),\n },\n ];\n });\n\n ngOnInit(): void {\n if (!this.hasValidConfiguration()) {\n }\n \n this.updateScreenWidth();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.updateScreenWidth();\n }\n\n private updateScreenWidth(): void {\n if (typeof window !== 'undefined') {\n this.screenWidth.set(window.innerWidth);\n }\n }\n\n onItemClick(item: SidebarItem): void {\n if (!item.disabled && item.action) {\n item.action();\n }\n this.itemClicked.emit(item);\n }\n\n onSubItemClick(subItem: SidebarSubItem): void {\n if (!subItem.disabled && subItem.action) {\n subItem.action();\n }\n this.subItemClicked.emit(subItem);\n }\n\n getConfig(): SidebarComponentConfig | null {\n if (this.config()) {\n return this.config();\n }\n return this.position() === SidebarPosition.LEFT \n ? this.sidebarService.getCurrentLeftConfig()\n : this.sidebarService.getCurrentRightConfig();\n }\n\n getTitleDisplay(): string {\n const currentConfig = this.getConfig();\n if (!currentConfig?.title) return '';\n \n if (currentConfig.titleNeedsTranslation === false) {\n return currentConfig.title;\n }\n \n if (currentConfig.titleNeedsTranslation === true) {\n return currentConfig.title;\n }\n \n if (currentConfig.title.includes('.')) {\n return currentConfig.title;\n }\n \n return currentConfig.title;\n }\n\n shouldTranslateTitle(): boolean {\n const currentConfig = this.getConfig();\n if (!currentConfig?.title) return false;\n \n if (currentConfig.titleNeedsTranslation !== undefined) {\n return currentConfig.titleNeedsTranslation;\n }\n \n return currentConfig.title.includes('.');\n }\n\n get hasSubmenu(): boolean {\n const items = this.getConfig()?.items || [];\n return items.some(item => item.children && item.children.length > 0);\n }\n\n openMobileModal(): void {\n const config = this.getConfig();\n if (config) {\n this.mobileModalService.openModal(config);\n }\n }\n\n closeMobileModal(): void {\n this.mobileModalService.closeModal();\n }\n\n onMobileSelectChange(event: any): void {\n const selectedId = event.target.value;\n const items = this.getConfig()?.items || [];\n \n for (const item of items) {\n if (item.id === selectedId) {\n this.onItemClick(item);\n return;\n }\n if (item.children) {\n for (const subItem of item.children) {\n if (subItem.id === selectedId) {\n this.onSubItemClick(subItem);\n return;\n }\n }\n }\n }\n }\n\n shouldShowMobileVersion(): boolean {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return false;\n \n return this.isMobileView();\n }\n\n shouldShowDesktopVersion(): boolean {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n return !this.isMobileView();\n }\n\n shouldRenderSidebar(): boolean {\n const config = this.getConfig();\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n if (this.isMobileView() && this.getMobileType() === SidebarMobileType.MODAL) {\n return false;\n }\n \n return true;\n }\n} ","@if(getConfig() && hasValidConfiguration() && shouldRenderSidebar()) {\n\n @if(getConfig()?.backButton) {\n <button class=\"c-back-link\" (click)=\"getConfig()?.backButton?.action()\">\n <span class=\"icon-arrow-left\"></span>\n @if(getConfig()?.backButton?.labelNeedsTranslation && getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label | translate }}\n } @else if(getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label }}\n }\n </button>\n }\n\n @if (shouldShowMobileVersion()) {\n \n @if (getMobileType() === SidebarMobileType.SELECT) {\n <div class=\"c-sidebar-mobile\">\n <label class=\"c-entry-input\">\n <select (change)=\"onMobileSelectChange($event)\">\n <option value=\"\">Seleccionar...</option>\n @for(item of getConfig()?.items || []; track item.id) {\n @if(item.children && item.children.length > 0) {\n <optgroup [label]=\"item.label\">\n @for(subItem of item.children; track subItem.id) {\n <option [disabled]=\"subItem.disabled\" [value]=\"subItem.id\">\n {{ subItem.label }}\n </option>\n }\n </optgroup>\n } @else {\n <option [disabled]=\"item.disabled\" [value]=\"item.id\">\n {{ item.label }}\n </option>\n }\n }\n </select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </label>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.SCROLL) {\n <div class=\"c-sidebar-mobile c-sidebar-mobile--scroll\">\n <nav class=\"c-sidenav c-sidenav--mobile-scroll\">\n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n <ul class=\"c-sidenav__list c-sidenav__list--scrollable\">\n @for(item of getScrollableItems(); track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.MODAL) {\n <!-- El modal se renderiza desde el componente layout usando el servicio -->\n <!-- No renderizamos nada aquí para ocultar completamente el sidebar -->\n }\n }\n\n @if (shouldShowDesktopVersion()) {\n <nav class=\"c-sidenav\" style=\"--_layout-padd-y: calc(var(--space-y) * 1.8);\">\n \n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n @if(shouldUseCustomTemplate()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n }\n} \n\n<ng-template #sidebarContentTemplate>\n <nav class=\"c-sidenav c-sidenav--modal\">\n @if(shouldUseCustomTemplate()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem); modalService.closeModal()\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item); modalService.closeModal()\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n</ng-template>","export enum TimelineStatus {\n EN_PROCESO = 'En proceso',\n PENDIENTE_APROBACION_CLIENTE = 'Pendiente aprobación cliente',\n COMPLETADO = 'Completado',\n RECHAZADO = 'Rechazado',\n CANCELADO = 'Cancelado',\n PENDIENTE = 'Esperando documentación',\n APROBADO = 'Aprobado',\n INICIADO = 'Iniciado',\n PENDIENTE_CLIENTE = 'Pendiente cliente'\n} ","export enum TimelineType {\n STANDARD = 'standard',\n CUSTOM = 'custom',\n MINIMAL = 'minimal'\n} ","import { Injectable } from '@angular/core';\nimport { TimelineItem } from '../interfaces/TimelineItem.interface';\nimport { TimelineStatus } from '../enums/TimelineStatus.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TimelineService {\n\n constructor() { }\n\n formatDate(date: string | Date, format: string = 'dd/MM/yyyy HH:mm'): string {\n if (!date) return '';\n \n const dateObj = typeof date === 'string' ? new Date(date) : date;\n \n if (isNaN(dateObj.getTime())) {\n return date.toString();\n }\n\n const day = String(dateObj.getDate()).padStart(2, '0');\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\n const year = dateObj.getFullYear();\n const hours = String(dateObj.getHours()).padStart(2, '0');\n const minutes = String(dateObj.getMinutes()).padStart(2, '0');\n\n return format\n .replace('dd', day)\n .replace('MM', month)\n .replace('yyyy', year.toString())\n .replace('HH', hours)\n .replace('mm', minutes);\n }\n\n getStatusClass(status: string): string {\n const statusClassMap: { [key: string]: string } = {\n [TimelineStatus.EN_PROCESO]: 'c-timeline__status--in-progress',\n [TimelineStatus.PENDIENTE_APROBACION_CLIENTE]: 'c-timeline__status--pending',\n [TimelineStatus.COMPLETADO]: 'c-timeline__status--completed',\n [TimelineStatus.RECHAZADO]: 'c-timeline__status--rejected',\n [TimelineStatus.CANCELADO]: 'c-timeline__status--cancelled',\n [TimelineStatus.PENDIENTE]: 'c-timeline__status--pending',\n [TimelineStatus.APROBADO]: 'c-timeline__status--approved',\n [TimelineStatus.INICIADO]: 'c-timeline__status--started',\n [TimelineStatus.PENDIENTE_CLIENTE]: 'c-timeline__status--pending-client'\n };\n\n return statusClassMap[status] || 'c-timeline__status--default';\n }\n\n validateTimelineItem(item: TimelineItem): boolean {\n return !!(item.text && item.date && item.status);\n }\n\n sortTimelineItems(items: TimelineItem[], ascending: boolean = false): TimelineItem[] {\n return [...items].sort((a, b) => {\n const dateA = new Date(a.date).getTime();\n const dateB = new Date(b.date).getTime();\n return ascending ? dateA - dateB : dateB - dateA;\n });\n }\n\n filterByStatus(items: TimelineItem[], statuses: string[]): TimelineItem[] {\n if (!statuses || statuses.length === 0) return items;\n return items.filter(item => statuses.includes(item.status));\n }\n} ","import { Component, input, output, computed, inject, TemplateRef, ContentChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TimelineItem } from './interfaces/TimelineItem.interface';\nimport { TimelineConfig } from './interfaces/TimelineConfig.interface';\nimport { TimelineStatus } from './enums/TimelineStatus.enum';\nimport { TimelineType } from './enums/TimelineType.enum';\nimport { TimelineService } from './services/timeline.service';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonContext } from '../generic-button/enums/ButtonContext.enum';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-timeline',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n GenericButtonComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-timeline.component.html',\n styleUrl: './generic-timeline.component.scss'\n})\nexport class GenericTimelineComponent {\n private timelineService = inject(TimelineService);\n\n @ContentChild('timelineTemplate') customTemplate!: TemplateRef<any>;\n\n items = input<TimelineItem[]>([]);\n config = input<Partial<TimelineConfig>>({});\n dateFormat = input<string>('dd/MM/yyyy HH:mm');\n showDate = input<boolean>(true);\n showStatus = input<boolean>(true);\n enableActions = input<boolean>(true);\n customClass = input<string>('');\n emptyMessage = input<string>('timeline.noItems');\n sortAscending = input<boolean>(false);\n filterStatuses = input<string[]>([]);\n type = input<TimelineType>(TimelineType.STANDARD);\n\n itemClicked = output<TimelineItem>();\n actionClicked = output<{ item: TimelineItem, action: string }>();\n \n processedItems = computed(() => {\n let processedItems = [...this.items()];\n \n if (this.filterStatuses().length > 0) {\n processedItems = this.timelineService.filterByStatus(processedItems, this.filterStatuses());\n }\n \n processedItems = this.timelineService.sortTimelineItems(processedItems, this.sortAscending());\n \n return processedItems;\n });\n\n mergedConfig = computed((): TimelineConfig => {\n const defaultConfig: TimelineConfig = {\n items: this.items(),\n dateFormat: this.dateFormat(),\n showDate: this.showDate(),\n showStatus: this.showStatus(),\n customClass: this.customClass(),\n emptyMessage: this.emptyMessage(),\n enableActions: this.enableActions()\n };\n \n return { ...defaultConfig, ...this.config() };\n });\n\n hasItems = computed(() => this.processedItems().length > 0);\n hasCustomTemplate = computed(() => !!this.customTemplate || !!this.mergedConfig().customTemplate);\n\n public TimelineStatus = TimelineStatus;\n public TimelineType = TimelineType;\n public ButtonType = ButtonType;\n public ButtonContext = ButtonContext;\n\n formatDate(date: string | Date): string {\n return this.timelineService.formatDate(date, this.mergedConfig().dateFormat || 'dd/MM/yyyy HH:mm');\n }\n\n getStatusClass(status: string): string {\n return this.timelineService.getStatusClass(status);\n }\n\n getItemClasses(item: TimelineItem): string {\n const classes = ['c-timeline__item'];\n \n if (item.isActive) {\n classes.push('is-active');\n }\n \n if (item.customClass) {\n classes.push(item.customClass);\n }\n \n return classes.join(' ');\n }\n\n getTimelineClasses(): string {\n const classes = ['c-timeline'];\n \n const customClass = this.mergedConfig().customClass;\n if (customClass) {\n classes.push(customClass);\n }\n \n if (this.type() !== TimelineType.STANDARD) {\n classes.push(`c-timeline--${this.type()}`);\n }\n \n return classes.join(' ');\n }\n\n onItemClick(item: TimelineItem): void {\n this.itemClicked.emit(item);\n }\n\n onActionClick(item: TimelineItem, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n \n if (item.actionCallback) {\n item.actionCallback();\n }\n \n this.actionClicked.emit({ item, action: item.actionText || 'action' });\n }\n\n getActionButtonConfig(item: TimelineItem): ButtonConfig {\n return {\n type: ButtonType.PRIMARY,\n text: item.actionText || 'timeline.action',\n customClass: item.actionClass || 'c-btn',\n ariaLabel: item.actionText || 'timeline.action',\n icon: item.actionIcon || ''\n };\n }\n\n isValidItem(item: TimelineItem): boolean {\n return this.timelineService.validateTimelineItem(item);\n }\n\n trackByItemId(index: number, item: TimelineItem): any {\n return item.id || index;\n }\n}\n","<div class=\"c-timeline-container\">\n @if (hasItems()) {\n <ul [class]=\"getTimelineClasses()\">\n @for (item of processedItems(); track trackByItemId($index, item)) {\n @if (isValidItem(item)) {\n <li [class]=\"getItemClasses(item)\" (click)=\"onItemClick(item)\">\n <div class=\"c-timeline__info\">\n @if (hasCustomTemplate()) {\n @if (customTemplate) {\n <ng-container *ngTemplateOutlet=\"customTemplate; context: { $implicit: item, index: $index }\"></ng-container>\n } @else if (mergedConfig().customTemplate) {\n <ng-container *ngTemplateOutlet=\"mergedConfig().customTemplate!; context: { $implicit: item, index: $index }\"></ng-container>\n }\n } @else {\n <div>\n <p class=\"u-text\">{{ item.text }}</p>\n <div class=\"c-bulleted-text\">\n @if (mergedConfig().showDate) {\n <time [attr.datetime]=\"item.date\">\n {{ formatDate(item.date) }}\n </time>\n }\n @if (mergedConfig().showStatus) {\n <span \n [ngClass]=\"getStatusClass(item.status)\">\n {{ item.status }}\n </span>\n }\n </div>\n </div>\n }\n \n @if (mergedConfig().enableActions && item.actionText && item.isActive) {\n <core-generic-button\n [config]=\"getActionButtonConfig(item)\"\n (clicked)=\"onActionClick(item, $event)\">\n </core-generic-button>\n }\n </div>\n </li>\n }\n }\n </ul>\n } @else {\n <div class=\"c-timeline-empty\">\n <p class=\"c-timeline-empty__message\">\n {{ mergedConfig().emptyMessage! | translate }}\n </p>\n </div>\n }\n</div>\n","import { Component, inject, OnInit, output, ChangeDetectorRef } from '@angular/core';\nimport { AuthService } from '@solcre-org/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { HeaderService } from '../../services/header.service';\nimport { GlobalAction } from '../generic-table/interfaces/GlobalAction.interface';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { HeaderActionConfig } from '../../interfaces/global/HeaderActionConfig.interface';\nimport { GenericButtonComponent } from '../generic-button/generic-button.component';\nimport { ButtonConfig } from '../generic-button/interfaces/ButtonConfig.interface';\nimport { ButtonType } from '../generic-button/enums/ButtonType.enum';\nimport { ButtonActionEvent } from '../generic-button/interfaces/ButtonActionEvent.interface';\nimport { HeaderElementType } from '../../enums/global/HeaderElementType.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-header',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n GenericButtonComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './header.component.html',\n styleUrl: './header.component.scss'\n})\nexport class HeaderComponent implements OnInit {\n private authService: AuthService = inject(AuthService);\n private router: Router = inject(Router);\n public headerService = inject(HeaderService);\n private permissionService = inject(PermissionWrapperService);\n private cdr = inject(ChangeDetectorRef);\n\n public HeaderElementType = HeaderElementType;\n\n title: string = 'ASDSAS';\n\n user: any;\n isDarkMode: boolean = false;\n\n filterRequested = output<void>();\n createRequested = output<void>();\n globalActionTriggered = output<GlobalAction<any>>();\n\n constructor() {\n this.user = this.authService.getLoggedUser();\n }\n\n ngOnInit(): void {\n const savedTheme = localStorage.getItem('theme');\n this.isDarkMode = savedTheme === 'dark';\n this.applyTheme();\n }\n\n toggleTheme(): void {\n this.isDarkMode = !this.isDarkMode;\n this.applyTheme();\n localStorage.setItem('theme', this.isDarkMode ? 'dark' : 'light');\n }\n\n private applyTheme(): void {\n if (this.isDarkMode) {\n document.body.classList.add('dark-mode');\n } else {\n document.body.classList.remove('dark-mode');\n }\n }\n\n logout(): void {\n this.authService.logout();\n this.router.navigate(['/app/auth']);\n }\n\n getGlobalActionButtonConfig(action: GlobalAction<any>): ButtonConfig {\n const config: ButtonConfig = {\n type: this.getButtonTypeFromClass(action.class || ''),\n text: action.label,\n icon: action.icon || 'default-icon',\n disabled: this.isGlobalActionDisabled(action),\n ariaLabel: action.label,\n customClass: action.class || '',\n requiredPermission: action.requiredPermission\n };\n\n if (action.tooltip) {\n config.tooltipConfig = {\n hasTooltip: true,\n text: action.tooltip,\n position: action.tooltipPosition || 'bottom'\n };\n }\n\n return config;\n }\n\n getCustomActionButtonConfig(action: HeaderActionConfig): ButtonConfig {\n const config: ButtonConfig = {\n type: this.getButtonTypeFromClass(action.class || ''),\n text: action.label,\n icon: action.icon,\n disabled: this.isCustomActionDisabled(action),\n ariaLabel: action.label,\n customClass: action.class || '',\n requiredPermission: action.requiredPermission,\n id: action.id\n };\n\n if (action.tooltip) {\n config.tooltipConfig = {\n hasTooltip: true,\n text: action.tooltip,\n position: action.tooltipPosition || 'bottom'\n };\n }\n\n return config;\n }\n\n getFilterButtonConfig(): ButtonConfig {\n const defaultConfig: ButtonConfig = {\n type: ButtonType.ICON,\n icon: 'icon-filter',\n ariaLabel: 'table.filter',\n tooltipConfig: {\n hasTooltip: true,\n text: 'table.filter',\n position: 'bottom'\n }\n };\n\n const customConfig = this.headerService.getFilterButtonConfig()();\n \n return customConfig ? { ...defaultConfig, ...customConfig } : defaultConfig;\n }\n\n getCreateButtonConfig(): ButtonConfig {\n const defaultConfig: ButtonConfig = {\n type: ButtonType.PRIMARY,\n text: 'table.create',\n icon: 'icon-add',\n ariaLabel: 'table.create',\n tooltipConfig: {\n hasTooltip: true,\n text: 'table.create',\n position: 'bottom'\n }\n };\n\n const customConfig = this.headerService.getCreateButtonConfig()();\n \n return customConfig ? { ...defaultConfig, ...customConfig } : defaultConfig;\n }\n\n private getButtonTypeFromClass(className: string): ButtonType {\n if (className.includes('c-btn--stroke')) return ButtonType.STROKE;\n if (className.includes('c-btn--secondary')) return ButtonType.SECONDARY;\n if (className.includes('c-icon-btn--fill')) return ButtonType.ICON_FILL;\n if (className.includes('c-icon-btn')) return ButtonType.ICON;\n if (className.includes('c-link--underlined')) return ButtonType.LINK_UNDERLINED;\n if (className.includes('c-link--secondary')) return ButtonType.LINK_SECONDARY;\n if (className.includes('c-link')) return ButtonType.LINK;\n if (className.includes('c-btn')) return ButtonType.PRIMARY;\n return ButtonType.PRIMARY;\n }\n\n onGlobalButtonClick(event: ButtonActionEvent, action: GlobalAction<any>): void {\n if (this.hasPermission(action)) {\n this.triggerGlobalAction(action);\n }\n }\n\n onCustomButtonClick(event: ButtonActionEvent, action: HeaderActionConfig): void {\n if (this.isCustomActionVisible(action) && !this.isCustomActionDisabled(action)) {\n this.triggerCustomAction(action);\n }\n }\n\n onFilterButtonClick(): void {\n this.showFiltersPopup();\n }\n\n onCreateButtonClick(): void {\n this.triggerCreate();\n }\n\n hasPermission(action: GlobalAction<any>): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n isGlobalActionDisabled(action: GlobalAction<any>): boolean {\n return action.isDisabled ?? false;\n }\n\n triggerGlobalAction(action: GlobalAction<any>): void {\n this.globalActionTriggered.emit(action);\n }\n\n showFiltersPopup(): void {\n this.filterRequested.emit();\n }\n\n triggerCreate(): void {\n this.createRequested.emit();\n }\n\n hasCustomActionPermission(action: HeaderActionConfig): boolean {\n if (!action.requiredPermission) return true;\n return this.permissionService.hasPermission(action.requiredPermission.resource, action.requiredPermission.action);\n }\n\n isCustomActionVisible(action: HeaderActionConfig): boolean {\n return action.visible !== false && this.hasCustomActionPermission(action);\n }\n\n isCustomActionDisabled(action: HeaderActionConfig): boolean {\n return action.disabled ?? false;\n }\n\n triggerCustomAction(action: HeaderActionConfig): void {\n if (!this.isCustomActionDisabled(action)) {\n action.callback();\n }\n }\n\n getHeaderTitle(): string {\n return this.headerService.getTitle()();\n }\n\n getHeaderText(): string {\n return this.headerService.getText()();\n }\n}","<!--\n MODELO:\n <div class=\"o-layout__header c-header\">\n <div class=\"c-header__row\">\n\n <div class=\"c-header__group\">\n\n <h2 class=\"c-header__heading u-heading\">Listado de usuarios</h2>\n <div class=\"c-header__text u-text\"></div>\n\n </div>\n\n <div class=\"c-header__group u-flex\">\n\n <button class=\"c-icon-btn\"><span class=\"icon-excel\"></span></button>\n <button class=\"c-icon-btn\"><span class=\"icon-filter\"></span></button>\n <button class=\"c-btn\"><span class=\"icon-add\"></span> Agregar</button>\n\n </div>\n\n </div>\n </div>\n-->\n\n@if (headerService.getIsVisible()()) {\n <div class=\"c-header\">\n <div class=\"c-header__row\">\n\n <div class=\"c-header__group\">\n\n <h2 class=\"c-header__heading u-heading\">{{ getHeaderTitle() }}</h2>\n\n </div>\n\n <div class=\"c-header__group u-flex\">\n\n @for (element of headerService.getOrderedElements(); track element.type) {\n @if (headerService.isElementVisible(element.type)) {\n \n @switch (element.type) {\n @case (HeaderElementType.GLOBAL_ACTIONS) {\n @for (globalAction of headerService.getGlobalActions()(); track globalAction.label || $index) {\n @if (hasPermission(globalAction)) {\n <core-generic-button \n [config]=\"getGlobalActionButtonConfig(globalAction)\"\n (buttonClick)=\"onGlobalButtonClick($event, globalAction)\">\n </core-generic-button>\n }\n }\n }\n \n @case (HeaderElementType.CUSTOM_ACTIONS) {\n @for (customAction of headerService.getCustomActions()(); track customAction.id) {\n @if (isCustomActionVisible(customAction)) {\n <core-generic-button \n [config]=\"getCustomActionButtonConfig(customAction)\"\n (buttonClick)=\"onCustomButtonClick($event, customAction)\">\n </core-generic-button>\n }\n }\n }\n \n @case (HeaderElementType.FILTER) {\n <core-generic-button \n [config]=\"getFilterButtonConfig()\"\n (buttonClick)=\"onFilterButtonClick()\">\n </core-generic-button>\n }\n \n @case (HeaderElementType.CREATE) {\n <core-generic-button \n [config]=\"getCreateButtonConfig()\"\n (buttonClick)=\"onCreateButtonClick()\">\n </core-generic-button>\n }\n }\n \n }\n }\n\n </div>\n\n </div>\n\n <p class=\"c-header__text u-text\" *ngIf=\"getHeaderText()\">\n {{ getHeaderText() }}\n </p>\n\n @if (headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) && headerService.getCustomTemplate()()) {\n <ng-container *ngTemplateOutlet=\"headerService.getCustomTemplate()()\"></ng-container>\n }\n </div>\n}","export enum PermissionsActions {\n WRITE = 'W',\n READ = 'R',\n DELETE = 'D',\n}","export enum SidebarState {\n EXPANDED = 'expanded',\n COLLAPSED = 'collapsed',\n}","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { SidebarState } from '../enums/SidebarState.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MainNavService {\n private readonly SIDEBAR_STATE = 'sidebar_state';\n private isCollapsedSubject = new BehaviorSubject<boolean>(false);\n isCollapsed$: Observable<boolean> = this.isCollapsedSubject.asObservable();\n private renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n const savedState = this.getSidebarState();\n const isCollapsed = savedState === SidebarState.COLLAPSED;\n this.isCollapsedSubject.next(isCollapsed);\n this.updateBodyClass(isCollapsed);\n if (!savedState) {\n this.setSidebarState(SidebarState.EXPANDED);\n }\n }\n\n public setSidebarState(state: string): void {\n sessionStorage.setItem(this.SIDEBAR_STATE, state);\n const isCollapsed = state === SidebarState.COLLAPSED;\n this.isCollapsedSubject.next(isCollapsed);\n this.updateBodyClass(isCollapsed);\n }\n\n public getSidebarState(): string | null {\n return sessionStorage.getItem(this.SIDEBAR_STATE);\n }\n\n public toggleSidebarState(): void {\n const currentState = this.getSidebarState();\n const newState = currentState === SidebarState.COLLAPSED ? SidebarState.EXPANDED : SidebarState.COLLAPSED;\n this.setSidebarState(newState);\n }\n\n public expandSidebar(): void {\n this.setSidebarState(SidebarState.EXPANDED);\n }\n\n public collapseSidebar(): void {\n this.setSidebarState(SidebarState.COLLAPSED);\n }\n\n public clearSidebarState(): void {\n sessionStorage.removeItem(this.SIDEBAR_STATE);\n this.isCollapsedSubject.next(false);\n this.updateBodyClass(false);\n }\n\n private updateBodyClass(isCollapsed: boolean): void {\n if (isCollapsed) {\n this.renderer.removeClass(document.body, 'nav-expanded');\n } else {\n this.renderer.addClass(document.body, 'nav-expanded');\n }\n }\n}","// Este archivo es generado automáticamente por scripts/update-version.js\n// No edites manualmente este archivo\n\nexport const VERSION = {\n full: '2.11.10',\n major: 2,\n minor: 11,\n patch: 10,\n timestamp: '2025-08-21T17:53:24.856Z',\n buildDate: '21/8/2025'\n};\n","import { Component, OnChanges, SimpleChanges, inject, OnInit, OnDestroy, input, output } from '@angular/core';\nimport { Router, RouterModule, NavigationEnd } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavItem } from './interfaces/NavItem.interface';\nimport { LogoImagesConfig } from './interfaces/LogoImagesConfig.interface';\nimport { PermissionWrapperService } from '../../services/permission-wrapper.service';\nimport { MainNavService } from './services/main-nav.service';\nimport { AuthService } from '@solcre-org/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { VERSION } from '../../constants/version';\nimport { BottomNavItem } from './interfaces/BottomNavItem.interface';\nimport { NavConfig } from './interfaces/NavConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-main-nav',\n standalone: true,\n imports: [CommonModule, TranslateModule, RouterModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './main-nav.component.html',\n})\nexport class MainNavComponent implements OnChanges, OnInit, OnDestroy {\n private permissionService = inject(PermissionWrapperService);\n private mainNavService: MainNavService = inject(MainNavService);\n private authService: AuthService = inject(AuthService);\n private router: Router = inject(Router);\n\n isCollapsed = false;\n isMobile = false;\n isBottomNavOpen = false;\n expandedSections: { [key: string]: boolean } = {};\n private routerSubscription: Subscription = new Subscription();\n private user = this.authService.getLoggedStartData();\n \n navConfig = input<NavConfig>({});\n appVersion = input<any>({ full: VERSION.full });\n navItems = input<NavItem[]>([])\n bottomNavItems = input<BottomNavItem[]>([]);\n isProduction = input<boolean>(false)\n logoImagesConfig = input<LogoImagesConfig | null>(null)\n collapsedLogo = input<string>('')\n expandedLogo = input<string>('')\n\n onLogout = output<void>();\n\n constructor() {}\n\n getCollapsedLogoSrc(): string {\n return this.logoImagesConfig()?.collapsedSettings.image || this.collapsedLogo() || '';\n }\n\n getExpandedLogoSrc(): string {\n return this.logoImagesConfig()?.expandedSettings.image || this.expandedLogo() || '';\n }\n\n getCollapsedLogoSettings() {\n return this.logoImagesConfig()?.collapsedSettings || {\n width: 56,\n height: 56,\n alt: 'Logo'\n };\n }\n\n getExpandedLogoSettings() {\n return this.logoImagesConfig()?.expandedSettings || {\n width: 103,\n height: 40,\n alt: 'Logo'\n };\n }\n\n ngOnInit() {\n this.checkIfMobile();\n this.setupResizeListener();\n \n this.mainNavService.isCollapsed$.subscribe(isCollapsed => {\n const wasCollapsed = this.isCollapsed;\n this.isCollapsed = isCollapsed;\n this.updateSidebarWidth();\n \n if (!isCollapsed) {\n setTimeout(() => {\n this.navItems().forEach((_, index) => {\n setTimeout(() => {\n document.querySelectorAll('.js-nav-text').forEach(text => text.classList.add('nav-expanded'));\n }, index * 100);\n });\n }, 0);\n \n if (wasCollapsed) {\n setTimeout(() => {\n this.updateExpandedSectionsBasedOnCurrentRoute(this.router.url);\n }, 300);\n }\n } else {\n document.querySelectorAll('.js-nav-text').forEach(text => text.classList.remove('nav-expanded'));\n this.expandedSections = {};\n }\n });\n\n this.routerSubscription.add(\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd)\n ).subscribe((event: NavigationEnd) => {\n this.updateExpandedSectionsBasedOnCurrentRoute(event.url);\n this.updateBottomNavActiveState(event.url);\n })\n );\n\n this.updateExpandedSectionsBasedOnCurrentRoute(this.router.url);\n this.updateBottomNavActiveState(this.router.url);\n }\n\n ngOnDestroy() {\n this.routerSubscription.unsubscribe();\n window.removeEventListener('resize', this.onResize.bind(this));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isCollapsed']) {\n this.updateSidebarWidth();\n }\n }\n\n hasPermission(item: NavItem): boolean {\n if (!item.requiredPermission) {\n return true;\n }\n\n if (item.disabled) {\n return true;\n }\n\n try {\n return this.permissionService.hasPermission(\n item.requiredPermission.resource, \n item.requiredPermission.action\n );\n } catch (error) {\n return !this.isProduction();\n }\n }\n\n onToggleSidebar(): void {\n this.mainNavService.toggleSidebarState();\n }\n\n toggleSection(label: string, level: number): void {\n const key = `${label}-${level}`;\n \n const isCurrentlyExpanded = this.expandedSections[key] || false;\n const newExpandedSections = { ...this.expandedSections };\n \n Object.keys(newExpandedSections).forEach(existingKey => {\n if (existingKey.endsWith(`-${level}`) && existingKey !== key) {\n newExpandedSections[existingKey] = false;\n }\n });\n \n newExpandedSections[key] = !isCurrentlyExpanded;\n this.expandedSections = newExpandedSections;\n }\n\n isSectionExpanded(label: string, level: number): boolean {\n const key = `${label}-${level}`;\n return this.expandedSections[key] || false;\n }\n\n private updateSidebarWidth(): void {\n document.documentElement.classList.remove('nav-expanded');\n if (!this.isCollapsed) {\n document.documentElement.classList.add('nav-expanded');\n }\n }\n\n private updateExpandedSectionsBasedOnCurrentRoute(currentUrl: string): void {\n this.findAndExpandParentMenus(this.navItems(), currentUrl, 0);\n }\n\n private findAndExpandParentMenus(items: NavItem[], currentUrl: string, level: number): boolean {\n for (const item of items) {\n if (item.children && item.children.length > 0) {\n const hasActiveChild = this.hasActiveChildRoute(item.children, currentUrl);\n \n if (hasActiveChild) {\n const key = `${item.label}-${level}`;\n this.expandedSections = {\n ...this.expandedSections,\n [key]: true\n };\n \n this.findAndExpandParentMenus(item.children, currentUrl, level + 1);\n return true;\n }\n }\n }\n return false;\n }\n\n private hasActiveChildRoute(children: NavItem[], currentUrl: string): boolean {\n const companiesMyRoute = '/app/admin/companies/my';\n if (currentUrl === companiesMyRoute) {\n const hasCompaniesChild = children.some(child => child.path === '/app/admin/companies');\n if (hasCompaniesChild) {\n return false;\n }\n }\n \n for (const child of children) {\n if (child.path) {\n const isExactMatch = currentUrl === child.path;\n const isChildRoute = currentUrl.startsWith(child.path + '/') && currentUrl !== companiesMyRoute;\n \n if (isExactMatch || isChildRoute) {\n return true;\n }\n }\n \n if (child.children && child.children.length > 0) {\n if (this.hasActiveChildRoute(child.children, currentUrl)) {\n return true;\n }\n }\n }\n return false;\n }\n\n isParentActive(item: NavItem): boolean {\n if (!item.children || item.children.length === 0) {\n return false;\n }\n return this.hasActiveChildRoute(item.children, this.router.url);\n }\n\n hasVisibleChildren(item: NavItem): boolean {\n if (!item.children || item.children.length === 0) {\n return false;\n }\n\n return item.children.some(child => this.isItemVisible(child));\n }\n\n private isItemVisible(item: NavItem): boolean {\n if (item.hidden) {\n return false;\n }\n\n if (!this.hasPermission(item)) {\n return false;\n }\n\n if (item.children && item.children.length > 0) {\n return this.hasVisibleChildren(item);\n }\n\n return true;\n }\n\n logout() {\n if(this.navConfig().customLogout) {\n this.onLogout.emit();\n return;\n }\n this.authService.logout();\n this.router.navigate(['/app/auth']);\n }\n\n toggleBottomNav(): void {\n if (!this.isMobile) return;\n \n this.isBottomNavOpen = !this.isBottomNavOpen;\n \n if (this.isBottomNavOpen) {\n document.body.classList.add('bottom-nav-open');\n document.documentElement.classList.add('nav-expanded');\n } else {\n document.body.classList.add('bottom-nav-closing');\n \n if (this.isMobile) {\n setTimeout(() => {\n document.body.classList.remove('bottom-nav-open');\n document.body.classList.remove('bottom-nav-closing');\n }, 700);\n } else {\n setTimeout(() => {\n document.documentElement.classList.remove('nav-expanded');\n document.body.classList.remove('bottom-nav-closing');\n }, 700);\n }\n }\n }\n\n onBottomNavItemClick(item: BottomNavItem): void {\n if (item.disabled) return;\n \n if (item.action) {\n item.action();\n } else if (item.routerLink) {\n this.router.navigate([item.routerLink]);\n }\n }\n\n handleBottomNavCenterClick(item: BottomNavItem): void {\n if (item.disabled) return;\n \n if (item.id === 'main-nav.menu-toggle') {\n this.toggleBottomNav();\n } else if (item.action) {\n item.action();\n } else if (item.routerLink) {\n this.router.navigate([item.routerLink]);\n }\n }\n\n getBottomNavClasses(item: BottomNavItem): string[] {\n const iconCompatPipe = new IconCompatPipe();\n const iconClasses = iconCompatPipe.transform(item.icon);\n \n const classes = ['c-bottom-nav__link', ...iconClasses];\n \n if (item.disabled) {\n classes.push('is-disabled');\n }\n \n return classes;\n }\n\n private checkIfMobile(): void {\n this.isMobile = window.innerWidth <= 980;\n }\n\n private setupResizeListener(): void {\n window.addEventListener('resize', this.onResize.bind(this));\n }\n\n private onResize(): void {\n this.checkIfMobile();\n \n if (!this.isMobile && this.isBottomNavOpen) {\n this.isBottomNavOpen = false;\n document.body.classList.remove('bottom-nav-open', 'bottom-nav-closing');\n document.documentElement.classList.remove('nav-expanded');\n }\n }\n\n private updateBottomNavActiveState(currentUrl: string): void {\n this.bottomNavItems().forEach(item => {\n if (item.routerLink) {\n item.isActive = currentUrl === item.routerLink || currentUrl.startsWith(item.routerLink + '/');\n }\n });\n }\n}","\n<!-- ! Refactor: Start -->\n<div class=\"c-nav-overlay\" (click)=\"toggleBottomNav()\"></div>\n<div class=\"o-layout__nav c-main-nav\"> <!-- [ngClass]=\"{'nav-expanded': !isCollapsed}\"> -->\n <div class=\"c-main-nav__viewport\">\n\n <!-- Toggle btn -->\n <button (click)=\"onToggleSidebar()\"\n class=\"c-main-nav__toggle c-mn-toggle\"\n [title]=\"isCollapsed ? ('Expandir navegación' | translate) : ('Colapsar navegación' | translate )\"\n aria-label=\"Expandir navegación\"\n ></button>\n\n <!-- Brand -->\n @if(navConfig().showLogo !== false) {\n <div class=\"c-main-nav__brand c-mn-brand\">\n @if(getCollapsedLogoSrc()) {\n <img class=\"c-mn-brand__iso\" \n [src]=\"getCollapsedLogoSrc()\" \n [width]=\"getCollapsedLogoSettings().width\" \n [height]=\"getCollapsedLogoSettings().height\" \n [alt]=\"getCollapsedLogoSettings().alt\">\n }\n @if(getExpandedLogoSrc()) {\n <img class=\"c-mn-brand__logo\" \n [src]=\"getExpandedLogoSrc()\" \n [width]=\"getExpandedLogoSettings().width\" \n [height]=\"getExpandedLogoSettings().height\" \n [alt]=\"getExpandedLogoSettings().alt\">\n }\n </div>\n }\n\n <!-- Nav -->\n <nav class=\"c-main-nav__nav c-mn-nav\">\n <ul class=\"c-mn-nav__list\">\n\n <ng-template #menuItems let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container *ngIf=\"hasPermission(item) && !item.hidden && (!item.children || hasVisibleChildren(item))\">\n\n <li class=\"c-mn-nav__item c-mn-nav__submenu\"\n [ngClass]=\"{'is-expanded': isSectionExpanded(item.label, level)}\"\n *ngIf=\"item.children && hasVisibleChildren(item); else singleLink\"\n >\n \n <button class=\"c-mn-nav__link\"\n [ngClass]=\"{'is-active': isParentActive(item)}\"\n (click)=\"toggleSection(item.label, level)\"\n [title]=\"isCollapsed ? (item.label | translate) : ''\">\n <span class=\"c-mn-nav__icon\" [ngClass]=\"item.icon | coreIconCompat\"></span>\n <span class=\"c-mn-nav__text\">\n {{ item.label | translate }}\n <span class=\"c-mn-nav__plus\"></span>\n </span>\n </button>\n\n <div class=\"c-mn-nav__subholder\">\n <ul class=\"c-mn-nav__sublist\">\n\n <ng-container *ngFor=\"let child of item.children; let j = index\">\n <ng-container *ngIf=\"hasPermission(child) && !child.hidden && (!child.children || hasVisibleChildren(child))\">\n\n <ng-container *ngIf=\"!child.children; else nestedChild\">\n\n <li class=\"c-mn-nav__subitem\">\n <button class=\"c-mn-nav__sublink\"\n [routerLink]=\"child.disabled ? null : child.path\" \n routerLinkActive=\"is-active\"\n [routerLinkActiveOptions]=\"{ exact: false }\" \n [title]=\"isCollapsed ? (child.label | translate) : ''\"\n [ngClass]=\"{'is-disabled': child.disabled}\"\n [style.pointer-events]=\"child.disabled ? 'none' : 'auto'\"\n [style.opacity]=\"child.disabled ? '0.5' : '1'\"\n >\n {{ child.label | translate }}\n </button>\n </li>\n </ng-container>\n\n <ng-template #nestedChild>\n \n <li class=\"c-mn-nav__subitem\"\n [ngClass]=\"{'submenu-open': isSectionExpanded(child.label, level + 1) && !isCollapsed}\"\n *ngIf=\"child.children && hasVisibleChildren(child)\"\n >\n <button class=\"c-mn-nav__sublink\"\n [ngClass]=\"{'is-active': isParentActive(child)}\"\n (click)=\"toggleSection(child.label, level + 1)\"\n [title]=\"isCollapsed ? (child.label | translate) : ''\"\n >\n {{ child.label | translate }}\n </button>\n\n <div class=\"c-mn-nav__subholder\">\n <ul class=\"c-mn-nav__sublist\">\n\n <ng-container *ngFor=\"let subItem of child.children\">\n <li class=\"c-mn-nav__subitem\"\n *ngIf=\"hasPermission(subItem) && !subItem.hidden\"\n >\n <button class=\"c-mn-nav__sublink\"\n [routerLink]=\"subItem.path\"\n routerLinkActive=\"is-active\"\n >\n {{ subItem.label | translate }}\n </button>\n </li>\n </ng-container>\n\n </ul>\n </div>\n </li>\n </ng-template>\n\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n\n <ng-template #singleLink>\n\n <li class=\"c-mn-nav__item\">\n <button class=\"c-mn-nav__link\"\n [routerLink]=\"item.disabled ? null : item.path\" \n routerLinkActive=\"is-active\"\n [routerLinkActiveOptions]=\"{ exact: false }\" \n [title]=\"isCollapsed ? (item.label | translate) : ''\" \n [ngClass]=\"{'is-disabled': item.disabled}\"\n [disabled]=\"item.disabled\"\n [style.opacity]=\"item.disabled ? '0.5' : '1'\"\n >\n <span class=\"c-mn-nav__icon\" [ngClass]=\"item.icon | coreIconCompat\"></span>\n <span class=\"c-mn-nav__text\">\n {{ item.label | translate }}\n </span>\n </button>\n </li>\n </ng-template>\n\n\n </ng-container>\n </ng-container>\n </ng-template>\n \n <ng-container *ngTemplateOutlet=\"menuItems; context: { items: navItems(), level: 0 }\"></ng-container>\n\n </ul>\n </nav> <!-- .c-mn-nav -->\n\n <!-- TODO User -->\n\n <nav class=\"c-main-nav__bottom c-mn-nav\">\n <ul class=\"c-mn-nav__list\">\n <li class=\"c-mn-nav__item\">\n <button class=\"c-mn-nav__link\"\n (click)=\"logout()\"\n [title]=\"isCollapsed ? ('sidebar.logout' | translate) : ''\"\n >\n <span class=\"c-mn-nav__icon icon-logout\"></span>\n <span class=\"c-mn-nav__text\">\n {{ 'sidebar.logout' | translate }}\n </span>\n </button>\n </li>\n @if(navConfig().showVersion !== false) {\n <li class=\"c-mn-nav__version\">\n v{{ appVersion().full }}\n </li>\n }\n </ul>\n </nav>\n\n </div> <!-- .c-main-nav__viewport -->\n</div> <!-- .c-main-nav -->\n\n<!-- ! Refactor: End -->\n\n<nav class=\"c-bottom-nav\">\n <h2 class=\"u-hidden\"></h2>\n <ul class=\"c-bottom-nav__list\">\n <ng-container *ngFor=\"let item of bottomNavItems().slice(0, 2); let i = index\">\n <li class=\"c-bottom-nav__item\"\n [ngClass]=\"{\n 'is-active': item.isActive,\n 'c-bottom-nav__item--highlighted': item.isHighlighted\n }\">\n <button type=\"button\" \n [ngClass]=\"getBottomNavClasses(item)\"\n [disabled]=\"item.disabled\"\n (click)=\"onBottomNavItemClick(item)\">\n </button>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"bottomNavItems().length > 2\">\n <li class=\"c-bottom-nav__item c-bottom-nav__item--center\"\n [ngClass]=\"{\n 'is-active': bottomNavItems()[2].isActive,\n 'c-bottom-nav__item--highlighted': bottomNavItems()[2].isHighlighted\n }\">\n <button type=\"button\" \n [ngClass]=\"getBottomNavClasses(bottomNavItems()[2])\"\n [disabled]=\"bottomNavItems()[2].disabled\"\n (click)=\"toggleBottomNav()\">\n </button>\n </li>\n </ng-container>\n\n <ng-container *ngFor=\"let item of bottomNavItems().slice(3, 5); let i = index\">\n <li class=\"c-bottom-nav__item\"\n [ngClass]=\"{\n 'is-active': item.isActive,\n 'c-bottom-nav__item--highlighted': item.isHighlighted\n }\">\n <button type=\"button\" \n [ngClass]=\"getBottomNavClasses(item)\"\n [disabled]=\"item.disabled\"\n (click)=\"onBottomNavItemClick(item)\">\n </button>\n </li>\n </ng-container>\n </ul>\n</nav>","import { Injectable, Signal, signal, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { SidebarService } from '../../generic-sidebar/services/sidebar.service';\nimport { SidebarComponentConfig } from '../../../interfaces';\nimport { SidebarHeight, SidebarWidth } from '../../../enums';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutStateService {\n public isHeaderVisible = signal<boolean>(true);\n private isHeaderVisibleSubject = new BehaviorSubject<boolean>(true);\n private sidebarService: SidebarService = inject(SidebarService);\n \n public leftSidebarConfig = signal<SidebarComponentConfig | null>(null);\n public rightSidebarConfig = signal<SidebarComponentConfig | null>(null);\n \n constructor() { }\n\n public toggleHeaderVisibility(): void {\n this.isHeaderVisible.set(!this.isHeaderVisible());\n this.isHeaderVisibleSubject.next(this.isHeaderVisible());\n }\n\n public isHeaderVisible$(): Observable<boolean> {\n this.isHeaderVisibleSubject.next(this.isHeaderVisible());\n return this.isHeaderVisibleSubject.asObservable();\n }\n\n public isHeaderVisibleSignal(): Signal<boolean> {\n return this.isHeaderVisible;\n }\n\n public hideHeader(): void {\n this.isHeaderVisible.set(false);\n this.isHeaderVisibleSubject.next(false);\n }\n\n public showHeader(): void {\n this.isHeaderVisible.set(true);\n this.isHeaderVisibleSubject.next(true);\n }\n\n public setLeftSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.leftSidebarConfig.set(config);\n this.sidebarService.setLeftSidebarConfig(config, width, height);\n }\n\n public setRightSidebarConfig(config: SidebarComponentConfig, width: SidebarWidth = SidebarWidth.DEFAULT, height: SidebarHeight = SidebarHeight.DEFAULT): void {\n this.rightSidebarConfig.set(config);\n this.sidebarService.setRightSidebarConfig(config, width, height);\n }\n\n public hideLeftSidebar(): void {\n this.leftSidebarConfig.set(null);\n this.sidebarService.hideLeftSidebar();\n }\n\n public hideRightSidebar(): void {\n this.rightSidebarConfig.set(null);\n this.sidebarService.hideRightSidebar();\n }\n\n public getLeftSidebarConfig(): Signal<SidebarComponentConfig | null> {\n return this.leftSidebarConfig;\n }\n\n public getRightSidebarConfig(): Signal<SidebarComponentConfig | null> {\n return this.rightSidebarConfig;\n }\n}\n","import { Component, inject, input, output, ViewChild, TemplateRef, HostListener, signal } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { MainNavComponent } from '../main-nav/main-nav.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { GenericSidebarComponent } from '../generic-sidebar/generic-sidebar.component';\nimport { GenericModalComponent } from '../generic-modal/generic-modal.component';\nimport { ConfirmationDialogService } from '../confirmation-dialog/services/confirmation-dialog.service';\nimport { MainNavService } from '../main-nav/services/main-nav.service';\nimport { LayoutService } from './services/layout.service';\nimport { NavItem } from '../main-nav/interfaces/NavItem.interface';\nimport { SidebarVisibility, SidebarWidth, SidebarHeight } from '../../enums';\nimport { LayoutStateService } from './services/layout-state.service';\nimport { GlobalAction } from '../generic-table/interfaces/GlobalAction.interface';\nimport { SidebarComponentConfig, ModalButtonConfig } from '../../interfaces';\nimport { LogoImagesConfig } from '../main-nav/interfaces/LogoImagesConfig.interface';\nimport { NavConfig } from '../main-nav/interfaces/NavConfig.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { BottomNavItem } from '../main-nav/interfaces/BottomNavItem.interface';\nimport { SidebarMobileModalService } from '../generic-sidebar/services/sidebar-mobile-modal.service';\nimport { SidebarTemplateRegistryService } from '../generic-sidebar/services/sidebar-template-registry.service';\nimport { ModalMode } from '../../enums/global/ModalMode.enum';\nimport { SidebarMobileType } from '../../enums/layout/sidebar-mobile-type.enum';\n\n@Component({\n selector: 'core-layout', \n imports: [\n MainNavComponent, \n HeaderComponent, \n CommonModule, \n ConfirmationDialogComponent,\n GenericSidebarComponent,\n GenericModalComponent\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './layout.html'\n})\nexport class LayoutComponent {\n navItems = input<NavItem[]>([])\n bottomNavItems = input<BottomNavItem[]>([])\n collapsedLogo = input<string>('')\n expandedLogo = input<string>('')\n logoImagesConfig = input<LogoImagesConfig | null>(null);\n navConfig = input<NavConfig>({});\n\n onLogout = output<void>();\n\n public dialogService: ConfirmationDialogService = inject(ConfirmationDialogService);\n private mainNavService: MainNavService = inject(MainNavService);\n public layoutService: LayoutService = inject(LayoutService);\n public layoutStateService: LayoutStateService = inject(LayoutStateService);\n public sidebarMobileModalService: SidebarMobileModalService = inject(SidebarMobileModalService);\n private templateRegistry: SidebarTemplateRegistryService = inject(SidebarTemplateRegistryService);\n\n public SidebarVisibility = SidebarVisibility;\n public ModalMode = ModalMode;\n public SidebarMobileType = SidebarMobileType;\n \n private screenWidth = signal(typeof window !== 'undefined' ? window.innerWidth : 1024);\n \n isSidebarCollapsed = false;\n isHeaderVisible = false;\n \n get leftSidebarConfig() {\n return this.layoutStateService.getLeftSidebarConfig()();\n }\n \n get rightSidebarConfig() {\n return this.layoutStateService.getRightSidebarConfig()();\n }\n\n ngOnInit(): void {\n this.mainNavService.isCollapsed$.subscribe(isCollapsed => {\n this.isSidebarCollapsed = isCollapsed;\n });\n this.layoutStateService.isHeaderVisible$().subscribe(isVisible => {\n this.isHeaderVisible = isVisible;\n });\n \n this.updateScreenWidth();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.updateScreenWidth();\n }\n\n private updateScreenWidth(): void {\n if (typeof window !== 'undefined') {\n this.screenWidth.set(window.innerWidth);\n }\n }\n\n private isMobileView(config?: SidebarComponentConfig): boolean {\n const responsiveConfig = config?.responsiveConfig;\n const maxBreakpoint = responsiveConfig?.maxMobileBreakpoint ?? 768;\n const minBreakpoint = responsiveConfig?.minMobileBreakpoint ?? 0;\n \n return this.screenWidth() <= maxBreakpoint && this.screenWidth() >= minBreakpoint;\n }\n\n shouldRenderLeftSidebar(): boolean {\n const config = this.leftSidebarConfig;\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n if (this.isMobileView(config) && responsiveConfig.mobileType === SidebarMobileType.MODAL) {\n return false;\n }\n \n return true;\n }\n\n shouldRenderRightSidebar(): boolean {\n const config = this.rightSidebarConfig;\n const responsiveConfig = config?.responsiveConfig;\n \n if (!responsiveConfig) return true;\n \n if (this.isMobileView(config) && responsiveConfig.mobileType === SidebarMobileType.MODAL) {\n return false;\n }\n \n return true;\n }\n\n getEffectiveLeftSidebarVisibility(): SidebarVisibility {\n if (!this.shouldRenderLeftSidebar()) {\n return SidebarVisibility.HIDE;\n }\n return this.layoutService.sidebarLeft().visibility;\n }\n\n getEffectiveLeftSidebarWidth(): SidebarWidth {\n if (!this.shouldRenderLeftSidebar()) {\n return SidebarWidth.DEFAULT;\n }\n return this.layoutService.sidebarLeft().width;\n }\n\n getEffectiveLeftSidebarHeight(): SidebarHeight {\n if (!this.shouldRenderLeftSidebar()) {\n return SidebarHeight.DEFAULT;\n }\n return this.layoutService.sidebarLeft().height;\n }\n\n getEffectiveRightSidebarVisibility(): SidebarVisibility {\n if (!this.shouldRenderRightSidebar()) {\n return SidebarVisibility.HIDE;\n }\n return this.layoutService.sidebarRight().visibility;\n }\n\n getEffectiveRightSidebarWidth(): SidebarWidth {\n if (!this.shouldRenderRightSidebar()) {\n return SidebarWidth.DEFAULT;\n }\n return this.layoutService.sidebarRight().width;\n }\n\n getEffectiveRightSidebarHeight(): SidebarHeight {\n if (!this.shouldRenderRightSidebar()) {\n return SidebarHeight.DEFAULT;\n }\n return this.layoutService.sidebarRight().height;\n }\n\n toggleSidebar(): void {\n this.mainNavService.toggleSidebarState();\n }\n\n onFilterRequested(): void {\n const event = new CustomEvent('filterRequested');\n window.dispatchEvent(event);\n }\n\n onCreateRequested(): void {\n const event = new CustomEvent('createRequested');\n window.dispatchEvent(event);\n }\n\n onGlobalActionTriggered(action: GlobalAction<any>): void {\n const event = new CustomEvent('globalActionTriggered', { detail: action });\n window.dispatchEvent(event);\n }\n\n setLeftSidebarConfig(config: SidebarComponentConfig): void {\n this.layoutStateService.setLeftSidebarConfig(config);\n }\n\n setRightSidebarConfig(config: SidebarComponentConfig): void {\n this.layoutStateService.setRightSidebarConfig(config);\n }\n\n hideLeftSidebar(): void {\n this.layoutStateService.hideLeftSidebar();\n }\n\n hideRightSidebar(): void {\n this.layoutStateService.hideRightSidebar();\n }\n\n getSidebarModalTitle(): string {\n const modalState = this.sidebarMobileModalService.getModalState();\n const config = modalState.config();\n \n if (!config) return '';\n \n if (config.title) {\n return config.title;\n }\n \n if (config.templateKey) {\n return config.title || 'Sidebar';\n }\n \n return 'Menu';\n }\n\n getSidebarModalButtons(): ModalButtonConfig<any>[] {\n return [\n {\n text: 'modal.cancel',\n action: () => this.sidebarMobileModalService.closeModal(),\n },\n ];\n }\n\n get sidebarModalContentTemplate(): TemplateRef<any> | null {\n const modalState = this.sidebarMobileModalService.getModalState();\n const config = modalState.config();\n \n if (!config) return null;\n \n if (config.customTemplate) {\n return config.customTemplate;\n }\n \n if (config.templateKey) {\n return this.templateRegistry.getTemplate(config.templateKey);\n }\n \n return null;\n }\n\n logout() {\n this.onLogout.emit();\n }\n }\n","<div class=\"o-layout\" \n [attr.data-layout]=\"layoutService.dataAttributes()['data-layout']\"\n [attr.data-sidebar-left]=\"getEffectiveLeftSidebarVisibility()\"\n [attr.data-sidebar-left-w]=\"getEffectiveLeftSidebarWidth()\"\n [attr.data-sidebar-left-h]=\"getEffectiveLeftSidebarHeight()\"\n [attr.data-sidebar-right]=\"getEffectiveRightSidebarVisibility()\"\n [attr.data-sidebar-right-w]=\"getEffectiveRightSidebarWidth()\"\n [attr.data-sidebar-right-h]=\"getEffectiveRightSidebarHeight()\"\n >\n\n <!-- Nav -->\n <core-main-nav class=\"o-layout__nav\" \n (toggleSidebar)=\"toggleSidebar()\"\n [navItems]=\"navItems()\"\n [navConfig]=\"navConfig()\"\n [bottomNavItems]=\"bottomNavItems()\"\n [logoImagesConfig]=\"logoImagesConfig()\"\n [collapsedLogo]=\"collapsedLogo()\"\n [expandedLogo]=\"expandedLogo()\"\n (onLogout)=\"logout()\"\n >\n </core-main-nav>\n\n <!-- Main -->\n <div class=\"o-layout__body\">\n \n @if(layoutStateService.isHeaderVisible$() | async) {\n <core-header\n class=\"o-layout__header\"\n (filterRequested)=\"onFilterRequested()\"\n (createRequested)=\"onCreateRequested()\"\n (globalActionTriggered)=\"onGlobalActionTriggered($event)\">\n </core-header>\n }\n\n @if(layoutService.sidebarLeft().visibility === SidebarVisibility.SHOW && leftSidebarConfig && shouldRenderLeftSidebar()) {\n <core-generic-sidebar \n class=\"o-layout__sidebar--left\"\n [config]=\"leftSidebarConfig\">\n </core-generic-sidebar>\n }\n\n <ng-content></ng-content>\n\n @if(layoutService.sidebarRight().visibility === SidebarVisibility.SHOW && rightSidebarConfig && shouldRenderRightSidebar()) {\n <core-generic-sidebar \n class=\"o-layout__sidebar--right\"\n [config]=\"rightSidebarConfig\">\n </core-generic-sidebar>\n }\n\n\n @if(dialogService.isOpen$()) {\n <core-confirmation-dialog\n [isOpen]=\"dialogService.isOpen$()\"\n [config]=\"dialogService.config$()\"\n (confirm)=\"dialogService.confirm($event)\"\n (cancel)=\"dialogService.cancel()\"\n ></core-confirmation-dialog>\n }\n\n @if(sidebarMobileModalService.isOpen()) {\n <core-generic-modal\n [isOpen]=\"sidebarMobileModalService.isOpen()\"\n [mode]=\"ModalMode.CREATE\"\n [title]=\"getSidebarModalTitle()\"\n [customTemplate]=\"sidebarModalContentTemplate\"\n (close)=\"sidebarMobileModalService.closeModal()\"\n [buttonConfig]=\"getSidebarModalButtons()\">\n </core-generic-modal>\n }\n\n </div> <!-- .o-layout__body -->\n</div> <!-- .o-layout -->\n\n<!-- ! Refactor: End -->","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { LayoutAuthConfig } from './layout-auth-config.interface';\n\n@Component({\n selector: 'core-layout-auth',\n imports: [\n CommonModule\n ],\n hostDirectives: [CoreHostDirective],\n templateUrl: './layout-auth.html',\n})\nexport class LayoutAuth {\n config = input.required<LayoutAuthConfig>();\n}\n","<div class=\"c-login\">\n @if (config().patternUrl) {\n <picture class=\"c-login__bg\">\n <img [src]=\"config().patternUrl!\" alt=\"Background pattern\" width=\"1044\" height=\"889\" />\n </picture>\n }\n\n @if (config().mainLogoUrl) {\n <picture class=\"c-login__logo\">\n <img [src]=\"config().mainLogoUrl!\" alt=\"Main logo\">\n </picture>\n }\n \n <div class=\"c-login__main c-entry-group\">\n <ng-content></ng-content>\n </div>\n</div>","export enum StepStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n COMPLETE = 'complete'\n} ","export enum StepType {\n NUMBER = 'number',\n TEXT = 'text',\n ICON = 'icon'\n} ","export enum StepSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n} ","import { Component, input, output, signal, OnInit, inject, computed, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n// Enums\nimport { StepStatus } from './enums/StepStatus.enum';\nimport { StepType } from './enums/StepType.enum';\nimport { StepSize } from './enums/StepSize.enum';\n\n// Interfaces\nimport { StepsConfig } from './interfaces/StepsConfig.interface';\nimport { StepConfig } from './interfaces/StepConfig.interface';\nimport { StepClickEvent } from './interfaces/StepClickEvent.interface';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\nimport { IconCompatPipe } from '../../pipelines/icon-compat.pipeline';\n\n@Component({\n selector: 'core-generic-steps',\n standalone: true,\n imports: [CommonModule, IconCompatPipe],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-steps.component.html'\n})\nexport class GenericStepsComponent implements OnInit, OnChanges {\n \n // Inputs\n config = input.required<StepsConfig>();\n \n // Outputs\n stepClick = output<StepClickEvent>();\n stepChange = output<{ step: StepConfig; index: number }>();\n \n // Signals\n activeStepId = signal<string>('');\n steps = signal<StepConfig[]>([]);\n customColors = signal<{ [key: string]: string }>({});\n \n // Computed\n activeStep = computed(() => {\n const activeId = this.activeStepId();\n return this.steps().find(step => step.id === activeId);\n });\n \n activeStepIndex = computed(() => {\n const activeId = this.activeStepId();\n return this.steps().findIndex(step => step.id === activeId);\n });\n \n // Enums for template\n StepStatus = StepStatus;\n StepType = StepType;\n StepSize = StepSize;\n \n ngOnInit(): void {\n this.initializeSteps();\n this.setupCustomColors();\n }\n \n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config']) {\n this.initializeSteps();\n this.setupCustomColors();\n }\n }\n \n private initializeSteps(): void {\n const config = this.config();\n this.steps.set(config.steps || []);\n \n if (config.activeStepId) {\n this.activeStepId.set(config.activeStepId);\n } else if (this.steps().length > 0) {\n const activeStep = this.steps().find(step => step.status === StepStatus.ACTIVE) || this.steps()[0];\n this.activeStepId.set(activeStep.id);\n }\n }\n \n private setupCustomColors(): void {\n const config = this.config();\n const colors: { [key: string]: string } = {};\n \n if (config.colors) {\n if (config.colors.pending) {\n colors['--step-pending-color'] = config.colors.pending;\n colors['--step-pending-bg'] = this.lightenColor(config.colors.pending, 0.9);\n colors['--step-pending-border'] = this.lightenColor(config.colors.pending, 0.8);\n }\n if (config.colors.active) {\n colors['--step-active-color'] = config.colors.active;\n colors['--step-active-bg'] = this.lightenColor(config.colors.active, 0.9);\n }\n if (config.colors.complete) {\n colors['--step-complete-color'] = config.colors.complete;\n colors['--step-complete-bg'] = this.lightenColor(config.colors.complete, 0.9);\n }\n if (config.colors.connector) {\n colors['--step-connector-color'] = config.colors.connector;\n }\n }\n \n this.customColors.set(colors);\n }\n \n private lightenColor(color: string, amount: number): string {\n return color;\n }\n \n onStepClick(step: StepConfig, index: number, event: MouseEvent): void {\n if (step.disabled || !this.config().clickable) {\n return;\n }\n \n const clickEvent: StepClickEvent = {\n step,\n stepIndex: index,\n event\n };\n \n this.stepClick.emit(clickEvent);\n \n if (this.config().clickable) {\n this.activeStepId.set(step.id);\n this.stepChange.emit({ step, index });\n }\n }\n \n getStepClasses(step: StepConfig): string {\n const classes = ['c-steps__item'];\n \n if (!step.disabled) {\n classes.push('is-active');\n }\n \n if (step.status === StepStatus.COMPLETE) {\n classes.push('is-complete');\n }\n if (step.id === this.activeStepId()) {\n classes.push('is-active-step');\n }\n if (step.status === StepStatus.PENDING) {\n classes.push('is-pending');\n }\n if (step.disabled) {\n classes.push('is-disabled');\n }\n \n const size = this.config().size || StepSize.MEDIUM;\n classes.push(`c-steps__item--${size}`);\n console.log(`Step ${step.id} size class: c-steps__item--${size}`);\n \n if (step.customClass) {\n classes.push(step.customClass);\n }\n \n return classes.join(' ');\n }\n \n getStepContent(step: StepConfig): string {\n if (step.status === StepStatus.COMPLETE && !step.icon) {\n return 'icon-check';\n }\n switch (step.type) {\n case StepType.NUMBER:\n return step.content?.toString() || '';\n case StepType.TEXT:\n return step.content?.toString() || '';\n case StepType.ICON:\n return step.icon || step.content?.toString() || 'icon-check';\n default:\n return step.content?.toString() || '';\n }\n }\n \n isStepClickable(step: StepConfig): boolean {\n return !step.disabled && (step.clickable !== false) && this.config().clickable !== false;\n }\n \n getConnectorClasses(index: number): string {\n const classes = ['c-steps__connector'];\n const currentStep = this.steps()[index];\n const nextStep = this.steps()[index + 1];\n \n if (currentStep?.status === StepStatus.COMPLETE) {\n classes.push('is-complete');\n } else if (currentStep?.status === StepStatus.ACTIVE || currentStep?.id === this.activeStepId()) {\n classes.push('is-active');\n }\n \n return classes.join(' ');\n }\n \n setActiveStep(stepId: string): void {\n const step = this.steps().find(s => s.id === stepId);\n if (step) {\n this.activeStepId.set(stepId);\n this.stepChange.emit({ step, index: this.steps().findIndex(s => s.id === stepId) });\n }\n }\n \n nextStep(): void {\n const currentIndex = this.activeStepIndex();\n if (currentIndex < this.steps().length - 1) {\n const updatedSteps = [...this.steps()];\n updatedSteps[currentIndex] = { ...updatedSteps[currentIndex], status: StepStatus.COMPLETE };\n const nextStep = updatedSteps[currentIndex + 1];\n updatedSteps[currentIndex + 1] = { ...nextStep, status: StepStatus.ACTIVE };\n this.steps.set(updatedSteps);\n this.setActiveStep(nextStep.id);\n }\n }\n \n previousStep(): void {\n const currentIndex = this.activeStepIndex();\n if (currentIndex > 0) {\n const prevStep = this.steps()[currentIndex - 1];\n this.setActiveStep(prevStep.id);\n }\n }\n \n completeStep(stepId: string): void {\n const stepIndex = this.steps().findIndex(s => s.id === stepId);\n if (stepIndex !== -1) {\n const updatedSteps = [...this.steps()];\n updatedSteps[stepIndex] = { ...updatedSteps[stepIndex], status: StepStatus.COMPLETE };\n this.steps.set(updatedSteps);\n }\n }\n \n getStepProgress(): number {\n const completedSteps = this.steps().filter(step => step.status === StepStatus.COMPLETE).length;\n return (completedSteps / this.steps().length) * 100;\n }\n \n getCustomStyles(): string {\n const colors = this.customColors();\n return Object.entries(colors)\n .map(([key, value]) => `${key}: ${value}`)\n .join('; ');\n }\n}","<nav class=\"c-steps-container\" [class]=\"config().customClass\" [style]=\"getCustomStyles()\">\n <ol class=\"c-steps\" [class]=\"'c-steps--' + (config().layout || 'horizontal') + ' c-steps--' + (config().size || StepSize.MEDIUM)\">\n @for (step of steps(); track step.id; let i = $index) {\n <li class=\"c-steps__step\">\n <button \n type=\"button\"\n class=\"c-steps__item\"\n [class]=\"getStepClasses(step)\"\n [disabled]=\"step.disabled\"\n [title]=\"step.tooltip || step.title\"\n (click)=\"onStepClick(step, i, $event)\"\n [attr.data-step-id]=\"step.id\">\n \n <span class=\"c-steps__num\" [class]=\"'c-steps__num--' + step.type\" [style]=\"step.id === activeStepId() ? '--step-border: var(--step-active-border); font-weight: 800' : ''\">\n @if (step.type === StepType.ICON || step.status === StepStatus.COMPLETE) {\n <i [ngClass]=\"getStepContent(step) | coreIconCompat\"></i>\n } @else {\n <strong *ngIf=\"step.id === activeStepId()\">{{ getStepContent(step) }}</strong>\n <span *ngIf=\"step.id !== activeStepId()\">{{ getStepContent(step) }}</span>\n }\n </span>\n \n @if (config().showLabels !== false) {\n <span class=\"c-steps__text\">{{ step.title }}</span>\n }\n </button>\n \n @if (config().showConnectors !== false && i < steps().length - 1) {\n <div class=\"c-steps__connector\" [class]=\"getConnectorClasses(i)\"></div>\n }\n </li>\n }\n </ol>\n</nav>\n\n@if (activeStep()) {\n <div class=\"c-steps__content\" [attr.data-active-step]=\"activeStepId()\">\n <ng-content></ng-content>\n </div>\n}","export enum RatingSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n} ","export enum RatingType {\n STARS = 'stars',\n NUMBERS = 'numbers',\n CUSTOM = 'custom'\n} ","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from '@solcre-org/core'; \n\n@Injectable({\n providedIn: 'root'\n})\nexport class RatingService {\n private apiService = inject(ApiService);\n\n /**\n * Submit a rating to the specified endpoint\n * @param endpoint - The API endpoint to submit the rating to\n * @param ratingData - The rating data to submit\n * @returns Observable with the API response\n */\n submitRating(endpoint: string, ratingData: {\n rating: number;\n label: string;\n }): Observable<any> {\n return this.apiService.createObj(endpoint, ratingData, false);\n }\n\n} ","import { Component, input, output, signal, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { RatingSize } from '../../enums/global/RatingSize.enum';\nimport { RatingType } from '../../enums/global/RatingType.enum';\n\nimport { RatingConfig } from '../../interfaces/global/RatingConfig.interface';\nimport { RatingStar } from '../../interfaces/global/RatingStar.interface';\nimport { RatingSubmitEvent } from '../../interfaces/global/RatingSubmitEvent.interface';\n\nimport { RatingService } from '../../services/rating.service';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-generic-rating',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './generic-rating.component.html'\n})\nexport class GenericRatingComponent implements OnInit {\n\n private ratingService = inject(RatingService);\n config = input.required<RatingConfig>();\n ratingChange = output<RatingSubmitEvent>();\n selectedRating = signal<number>(0);\n hoveredRating = signal<number>(0);\n stars = signal<RatingStar[]>([]);\n loading = signal<boolean>(false);\n uniqueId = signal<string>('');\n RatingSize = RatingSize;\n RatingType = RatingType;\n\n ngOnInit(): void {\n this.initializeStars();\n this.generateUniqueId();\n this.initializeDefaultRating();\n \n setTimeout(() => {\n this.updateStarVisuals(this.selectedRating());\n }, 0);\n }\n\n private generateUniqueId(): void {\n const timestamp = Date.now();\n const random1 = Math.floor(Math.random() * 10000);\n const random2 = Math.floor(Math.random() * 10000);\n const performanceTime = performance.now();\n const instanceId = Math.random().toString(36).substring(2, 15);\n \n this.uniqueId.set(`rating-${timestamp}-${random1}-${random2}-${performanceTime.toString().replace('.', '')}-${instanceId}`);\n }\n\n private initializeDefaultRating(): void {\n const config = this.config();\n if (config.defaultRating && config.defaultRating > 0 && config.defaultRating <= config.totalStars) {\n this.selectedRating.set(config.defaultRating);\n }\n }\n\n getUniqueName(): string {\n return `star-${this.uniqueId()}`;\n }\n\n getUniqueStarId(starValue: number): string {\n return `star-${this.uniqueId()}-${starValue}`;\n }\n\n private initializeStars(): void {\n const config = this.config();\n const totalStars = config.totalStars || 5;\n const starsArray: RatingStar[] = [];\n\n for (let i = totalStars; i >= 1; i--) {\n starsArray.push({\n value: i,\n label: config.starLabels?.[i] || `${i}`,\n id: `star-${i}` \n });\n }\n\n this.stars.set(starsArray);\n }\n\n onStarClick(rating: number): void {\n const config = this.config();\n if (config.readonly) {\n return;\n }\n\n this.selectedRating.set(rating);\n \n this.updateStarVisuals(rating);\n \n const event: RatingSubmitEvent = {\n rating,\n label: this.stars().find(star => star.value === rating)?.label || '',\n endpoint: config.endpoint\n };\n\n this.ratingChange.emit(event);\n\n if (config.endpoint && config.endpoint.trim() !== '') {\n this.submitRating(event);\n }\n }\n\n onStarHover(rating: number): void {\n const config = this.config();\n if (config.readonly) {\n return;\n }\n \n this.hoveredRating.set(rating);\n this.updateStarVisuals(rating);\n }\n\n onStarLeave(): void {\n const config = this.config();\n if (config.readonly) {\n return;\n }\n \n this.hoveredRating.set(0);\n this.updateStarVisuals(this.selectedRating());\n }\n\n private updateStarVisuals(targetRating: number): void {\n const container = document.querySelector(`[data-rating-id=\"${this.uniqueId()}\"]`);\n if (!container) return;\n\n const stars = container.querySelectorAll('.c-rating__filled-star');\n stars.forEach((star, index) => {\n const starValue = this.stars().length - index; \n const element = star as HTMLElement;\n \n if (starValue <= targetRating) {\n element.style.opacity = '1';\n element.style.display = 'block';\n } else {\n element.style.opacity = '0';\n element.style.display = 'none';\n }\n });\n }\n\n private submitRating(event: RatingSubmitEvent): void {\n this.loading.set(true);\n \n this.ratingService.submitRating(event.endpoint!, {\n rating: event.rating,\n label: event.label\n }).subscribe({\n next: (response: any) => {\n this.loading.set(false);\n },\n error: (error: any) => {\n console.error('Error submitting rating:', error);\n this.loading.set(false);\n }\n });\n }\n\n getCurrentLabel(): string {\n const config = this.config();\n \n const currentRating = config.readonly \n ? this.selectedRating() \n : (this.hoveredRating() || this.selectedRating());\n \n if (currentRating === 0) {\n return config.defaultLabel || '';\n }\n\n const star = this.stars().find(s => s.value === currentRating);\n return star?.label || '';\n }\n} ","@if (config().title) {\n <p class=\"u-text\"><strong>{{ config().title }}</strong></p>\n}\n\n<div class=\"c-rating\" [attr.data-rating-id]=\"uniqueId()\">\n \n <div class=\"c-rating__stars\">\n @for (star of stars(); track star.id) {\n <input \n type=\"radio\" \n [name]=\"getUniqueName()\" \n [id]=\"getUniqueStarId(star.value)\" \n [value]=\"star.value\"\n [disabled]=\"config().readonly || loading()\"\n (click)=\"onStarClick(star.value)\" />\n \n <label \n [for]=\"getUniqueStarId(star.value)\" \n [title]=\"star.label + ' estrellas'\"\n class=\"icon-star\"\n [class.c-rating__readonly]=\"config().readonly\"\n [style.cursor]=\"config().readonly ? 'default' : 'pointer'\"\n (mouseenter)=\"!config().readonly && onStarHover(star.value)\"\n (mouseleave)=\"!config().readonly && onStarLeave()\">\n <span class=\"c-rating__filled-star icon-star-filled\"></span>\n </label>\n }\n </div>\n \n @if (config().showLabels !== false) {\n <span class=\"c-rating__text\">{{ getCurrentLabel() }}</span>\n }\n</div> ","export enum ProgressBarSize {\n NORMAL = '',\n SMALL = 'xs',\n LARGE = 'xl',\n}","import { Component, input } from '@angular/core';\nimport { ProgressBarSize } from './progress-bar-size.enum';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-progress-bar',\n standalone: true,\n imports: [],\n hostDirectives: [CoreHostDirective],\n templateUrl: './progress-bar.component.html'\n})\nexport class ProgressBarComponent{\n progress = input<number>(0);\n size = input<ProgressBarSize>(ProgressBarSize.NORMAL);\n}\n","<div class=\"c-progress-bar c-progress-bar--{{ size() }}\" style=\"--progress: 0.{{ progress() }}\">\n <div class=\"c-progress-bar__bar\"></div>\n</div>","import { Component } from '@angular/core';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({\n selector: 'core-card',\n standalone: true,\n imports: [],\n hostDirectives: [CoreHostDirective],\n template: `\n <div class=\"u-card\">\n <ng-content></ng-content>\n </div>`\n})\nexport class CardComponent{ }\n","import { Component, input, output, signal, effect, HostListener, ElementRef, ViewChild, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreHostDirective } from '../../directives/core-host.directive';\n\n@Component({ \n selector: 'core-image-modal',\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [CoreHostDirective],\n templateUrl: './image-modal.component.html',\n styleUrls: ['./image-modal.component.scss']\n})\nexport class ImageModalComponent implements OnDestroy {\n @ViewChild('modalImage', { static: false }) modalImage!: ElementRef<HTMLImageElement>;\n @ViewChild('imageContainer', { static: false }) imageContainer!: ElementRef<HTMLDivElement>;\n\n isVisible = input<boolean>(false);\n imageSrc = input<string>('');\n imageAlt = input<string>('Imagen Ampliada');\n\n modalClosed = output<void>();\n\n zoomLevel = signal<number>(1);\n isDragging = signal<boolean>(false);\n lastMouseX = signal<number>(0);\n lastMouseY = signal<number>(0);\n translateX = signal<number>(0);\n translateY = signal<number>(0);\n\n private minZoom = 1;\n private maxZoom = 3;\n private zoomStep = 0.2;\n\n private targetTranslateX = 0;\n private targetTranslateY = 0;\n private velocityX = 0;\n private velocityY = 0;\n private friction = 0.9;\n private animationId: number | null = null;\n\n constructor() {\n effect(() => {\n if (this.isVisible()) {\n document.body.style.overflow = 'hidden';\n this.resetZoom();\n } else {\n document.body.style.overflow = '';\n this.resetZoom();\n this.stopAnimation();\n }\n });\n }\n\n private startAnimation(): void {\n if (this.animationId) return;\n \n const animate = () => {\n if (!this.isDragging()) {\n const currentX = this.translateX();\n const currentY = this.translateY();\n \n const newX = currentX + this.velocityX;\n const newY = currentY + this.velocityY;\n \n this.translateX.set(newX);\n this.translateY.set(newY);\n \n this.velocityX *= this.friction;\n this.velocityY *= this.friction;\n \n if (Math.abs(this.velocityX) < 0.1 && Math.abs(this.velocityY) < 0.1) {\n this.velocityX = 0;\n this.velocityY = 0;\n this.animationId = null;\n return;\n }\n \n this.animationId = requestAnimationFrame(animate);\n } else {\n this.animationId = null;\n }\n };\n \n this.animationId = requestAnimationFrame(animate);\n }\n\n private stopAnimation(): void {\n if (this.animationId) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n this.velocityX = 0;\n this.velocityY = 0;\n }\n\n resetZoom(): void {\n this.zoomLevel.set(1);\n this.translateX.set(0);\n this.translateY.set(0);\n this.isDragging.set(false);\n this.velocityX = 0;\n this.velocityY = 0;\n this.stopAnimation();\n }\n\n closeModal(): void {\n this.resetZoom();\n this.modalClosed.emit();\n }\n\n onWheel(event: WheelEvent): void {\n if (!this.isVisible()) return;\n \n event.preventDefault();\n event.stopPropagation();\n \n const delta = event.deltaY > 0 ? -this.zoomStep : this.zoomStep;\n const newZoom = Math.min(Math.max(this.zoomLevel() + delta, this.minZoom), this.maxZoom);\n \n if (newZoom !== this.zoomLevel()) {\n this.zoomLevel.set(newZoom);\n \n if (newZoom === 1) {\n this.translateX.set(0);\n this.translateY.set(0);\n this.velocityX = 0;\n this.velocityY = 0;\n }\n }\n }\n\n onMouseDown(event: MouseEvent): void {\n if (!this.isVisible() || this.zoomLevel() <= 1) return;\n \n event.preventDefault();\n this.isDragging.set(true);\n this.lastMouseX.set(event.clientX);\n this.lastMouseY.set(event.clientY);\n \n this.velocityX = 0;\n this.velocityY = 0;\n }\n\n onMouseMove(event: MouseEvent): void {\n if (!this.isDragging() || !this.isVisible()) return;\n \n event.preventDefault();\n \n const deltaX = event.clientX - this.lastMouseX();\n const deltaY = event.clientY - this.lastMouseY();\n \n const newX = this.translateX() + deltaX;\n const newY = this.translateY() + deltaY;\n \n this.translateX.set(newX);\n this.translateY.set(newY);\n \n this.velocityX = deltaX * 0.5;\n this.velocityY = deltaY * 0.5;\n \n this.lastMouseX.set(event.clientX);\n this.lastMouseY.set(event.clientY);\n }\n\n onMouseUp(): void {\n if (this.isDragging()) {\n this.isDragging.set(false);\n if (Math.abs(this.velocityX) > 1 || Math.abs(this.velocityY) > 1) {\n this.startAnimation();\n }\n }\n }\n\n onDoubleClick(): void {\n if (!this.isVisible()) return;\n \n if (this.zoomLevel() > 1) {\n this.resetZoom();\n } else {\n this.zoomLevel.set(2);\n this.translateX.set(0);\n this.translateY.set(0);\n this.velocityX = 0;\n this.velocityY = 0;\n this.stopAnimation();\n }\n }\n\n getHolderTransform(): string {\n return `scale(${this.zoomLevel()}) translate(${this.translateX()}px, ${this.translateY()}px)`;\n }\n\n getCursor(): string {\n if (this.zoomLevel() > 1) {\n return this.isDragging() ? 'grabbing' : 'grab';\n }\n return 'zoom-in';\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isVisible()) {\n this.closeModal();\n }\n }\n\n @HostListener('document:mousemove', ['$event'])\n onDocumentMouseMove(event: MouseEvent): void {\n this.onMouseMove(event);\n }\n\n @HostListener('document:mouseup')\n onDocumentMouseUp(): void {\n this.onMouseUp();\n }\n\n onTouchStart(event: TouchEvent): void {\n if (!this.isVisible() || this.zoomLevel() <= 1) return;\n \n event.preventDefault();\n const touch = event.touches[0];\n this.isDragging.set(true);\n this.lastMouseX.set(touch.clientX);\n this.lastMouseY.set(touch.clientY);\n \n this.velocityX = 0;\n this.velocityY = 0;\n }\n\n onTouchMove(event: TouchEvent): void {\n if (!this.isDragging() || !this.isVisible()) return;\n \n event.preventDefault();\n const touch = event.touches[0];\n \n const deltaX = touch.clientX - this.lastMouseX();\n const deltaY = touch.clientY - this.lastMouseY();\n \n const newX = this.translateX() + deltaX;\n const newY = this.translateY() + deltaY;\n \n this.translateX.set(newX);\n this.translateY.set(newY);\n \n this.velocityX = deltaX * 0.5;\n this.velocityY = deltaY * 0.5;\n \n this.lastMouseX.set(touch.clientX);\n this.lastMouseY.set(touch.clientY);\n }\n\n onTouchEnd(): void {\n if (this.isDragging()) {\n this.isDragging.set(false);\n if (Math.abs(this.velocityX) > 1 || Math.abs(this.velocityY) > 1) {\n this.startAnimation();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.stopAnimation();\n document.body.style.overflow = '';\n }\n}\n","<div class=\"c-img-modal js-img-modal\" [class.is-visible]=\"isVisible()\">\n <span class=\"c-img-modal__close icon-cross-thin js-gallery-modal-close\" (click)=\"closeModal()\"></span>\n <div class=\"c-img-modal__overlay js-img-modal-close\" (click)=\"closeModal()\"></div>\n <div \n class=\"c-img-modal__holder\" \n #imageContainer\n [style.transform]=\"getHolderTransform()\"\n [style.cursor]=\"getCursor()\"\n (mousedown)=\"onMouseDown($event)\"\n (wheel)=\"onWheel($event)\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd()\"\n (dblclick)=\"onDoubleClick()\">\n <img \n #modalImage\n [src]=\"imageSrc()\" \n [alt]=\"imageAlt()\" \n class=\"js-img-modal-img\"\n draggable=\"false\">\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CacheBustingInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.url.includes('/assets/i18n/') && req.url.endsWith('.json')) {\n const version = Date.now();\n const modifiedReq = req.clone({\n url: `${req.url}?v=${version}`,\n setHeaders: {\n 'Cache-Control': 'no-cache',\n 'Pragma': 'no-cache',\n 'If-Modified-Since': '0',\n },\n });\n return next.handle(modifiedReq);\n }\n return next.handle(req);\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class PermissionsInterceptor implements HttpInterceptor {\n private router = inject(Router);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 403 || error.status === 401) {\n if (error.status === 403) {\n this.router.navigate(['/app/home']);\n }\n \n if (error.status === 401) {\n this.router.navigate(['/app/auth']);\n }\n }\n\n return throwError(() => error);\n })\n );\n }\n}\n","import { ModalFieldConfig } from '../global/ModalFieldConfig.interface';\nimport { DataBaseModelInterface } from '@solcre-org/core';\nimport { FileType } from '../../enums/global/FileType.enum';\n\nexport interface FileFieldConfig<T extends DataBaseModelInterface> extends ModalFieldConfig<T> {\n accept?: string;\n multiple?: boolean;\n maxFiles?: number;\n minFiles?: number;\n maxSize?: number;\n showPreview?: boolean;\n acceptString: string;\n fileUploadConfig?: {\n fileType?: FileType;\n fileTypeResolver?: (data: T) => FileType;\n companyIdSource?: keyof T;\n staticCompanyId?: string;\n fileIdTarget?: keyof T;\n };\n customActions?: {\n id: string;\n label: string;\n icon: string;\n action: (value: any) => void;\n }[];\n};","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TranslationMergeService {\n\n constructor(private http: HttpClient) {}\n\n loadCombinedTranslations(\n lang: string,\n projectPath: string = './assets/i18n/',\n projectFileName: string = 'main.json',\n corePath: string = './assets/i18n/',\n coreFileName: string = 'common.json',\n useNodeModules: boolean = false\n ): Observable<any> {\n \n const projectUrl = `${projectPath}${lang}/${projectFileName}`;\n \n const projectTranslations$ = this.http.get(projectUrl).pipe(\n catchError(error => {\n console.warn(`No se pudieron cargar las traducciones del proyecto desde: ${projectUrl}`, error);\n return of({});\n })\n );\n\n const coreTranslations$ = useNodeModules \n ? this.loadCoreTranslationsWithFallback(lang, coreFileName)\n : this.http.get(`${corePath}${lang}/${coreFileName}`).pipe(\n catchError(error => {\n console.warn(`No se pudieron cargar las traducciones del core-ui desde: ${corePath}${lang}/${coreFileName}`, error);\n return of({});\n })\n );\n\n return forkJoin({\n project: projectTranslations$,\n core: coreTranslations$\n }).pipe(\n map(({ project, core }) => {\n const merged = this.mergeWithProjectPriority(core, project);\n return merged;\n })\n );\n }\n\n private loadCoreTranslationsWithFallback(lang: string, coreFileName: string): Observable<any> {\n const possiblePaths = [\n `./assets/i18n/${lang}/${coreFileName}`,\n `./node_modules/@solcre-org/core-ui/assets/i18n/${lang}/${coreFileName}`,\n `./i18n/${lang}/${coreFileName}`,\n ];\n\n return this.tryLoadFromPaths(possiblePaths, 0);\n }\n\n private tryLoadFromPaths(paths: string[], index: number): Observable<any> {\n if (index >= paths.length) {\n console.warn('No se pudieron cargar las traducciones del core-ui desde ninguna ruta');\n return of({});\n }\n\n const currentPath = paths[index];\n return this.http.get(currentPath).pipe(\n catchError(error => {\n console.warn(`Fallo al cargar desde: ${currentPath}`, error);\n return this.tryLoadFromPaths(paths, index + 1);\n })\n );\n }\n\n private mergeWithProjectPriority(coreTranslations: any, projectTranslations: any): any {\n const result = { ...coreTranslations };\n\n for (const key in projectTranslations) {\n if (projectTranslations.hasOwnProperty(key)) {\n if (\n projectTranslations[key] && \n typeof projectTranslations[key] === 'object' && \n !Array.isArray(projectTranslations[key]) &&\n result[key] &&\n typeof result[key] === 'object' &&\n !Array.isArray(result[key])\n ) {\n result[key] = this.mergeWithProjectPriority(result[key], projectTranslations[key]);\n } else {\n result[key] = projectTranslations[key];\n }\n }\n }\n\n return result;\n }\n}\n","import { TranslateLoader } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TranslationMergeService } from '../services/translation-merge.service';\nimport { inject } from '@angular/core';\n\nexport class CoreUiTranslateLoader implements TranslateLoader {\n private translationMergeService: TranslationMergeService;\n private http: HttpClient;\n\n constructor(\n private projectPath: string = './assets/i18n/',\n private projectFileName: string = 'main.json',\n private corePath: string = './assets/i18n/',\n private coreFileName: string = 'common.json',\n private useNodeModules: boolean = false\n ) {\n this.translationMergeService = inject(TranslationMergeService);\n this.http = inject(HttpClient);\n }\n\n getTranslation(lang: string): Observable<any> {\n return this.translationMergeService.loadCombinedTranslations(\n lang,\n this.projectPath,\n this.projectFileName,\n this.corePath,\n this.coreFileName,\n this.useNodeModules\n );\n }\n}\nexport function CoreUiHttpLoaderFactory(\n projectPath: string = './assets/i18n/',\n projectFileName: string = 'main.json',\n corePath: string = './assets/i18n/',\n coreFileName: string = 'common.json',\n useNodeModules: boolean = false\n) {\n return new CoreUiTranslateLoader(projectPath, projectFileName, corePath, coreFileName, useNodeModules);\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function equalToValidator(targetKey: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.parent) {\n return null;\n }\n const target = control.parent.get(targetKey);\n if (!target) {\n return null;\n }\n if (target.value !== control.value) {\n return { equalTo: true };\n }\n return null;\n };\n}","import { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { importProvidersFrom } from '@angular/core';\nimport { CoreUiHttpLoaderFactory } from '../loaders/core-ui-translate.loader';\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, './assets/i18n/', '/main.json');\n}\n\nexport function provideTranslateLoader() {\n return importProvidersFrom(\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n })\n );\n}\n\nexport function provideCoreUiTranslateLoader(config?: {\n projectPath?: string;\n projectFileName?: string;\n corePath?: string;\n coreFileName?: string;\n useNodeModules?: boolean;\n}) {\n return importProvidersFrom(\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: () => CoreUiHttpLoaderFactory(\n config?.projectPath || './assets/i18n/',\n config?.projectFileName || 'main.json',\n config?.corePath || './assets/i18n/',\n config?.coreFileName || 'common.json',\n config?.useNodeModules || false\n )\n }\n })\n );\n}","import { InjectionToken } from '@angular/core';\nimport { PermissionResourcesProvider, PermissionActionsProvider } from '../interfaces/global/PermissionEnums.interface';\n\nexport const PERMISSION_RESOURCES_PROVIDER = new InjectionToken<PermissionResourcesProvider>('PERMISSION_RESOURCES_PROVIDER');\nexport const PERMISSION_ACTIONS_PROVIDER = new InjectionToken<PermissionActionsProvider>('PERMISSION_ACTIONS_PROVIDER');\n","import { Provider } from '@angular/core';\nimport { PERMISSION_PROVIDER } from './permission.provider';\nimport { PERMISSION_RESOURCES_PROVIDER, PERMISSION_ACTIONS_PROVIDER } from './permission-enums.provider';\nimport { PermissionProvider } from '../interfaces/global/PermissionProvider.interface';\nimport { PermissionResourcesProvider, PermissionActionsProvider } from '../interfaces/global/PermissionEnums.interface';\n\nexport function providePermissionService(permissionService: any): Provider {\n return {\n provide: PERMISSION_PROVIDER,\n useExisting: permissionService\n };\n}\n\nexport function providePermissionServiceFactory(factory: () => PermissionProvider): Provider {\n return {\n provide: PERMISSION_PROVIDER,\n useFactory: factory\n };\n}\n\nexport function providePermissionResources(resources: PermissionResourcesProvider): Provider {\n return {\n provide: PERMISSION_RESOURCES_PROVIDER,\n useValue: resources\n };\n}\n\nexport function providePermissionActions(actions: PermissionActionsProvider): Provider {\n return {\n provide: PERMISSION_ACTIONS_PROVIDER,\n useValue: actions\n };\n}\n\nexport function providePermissionEnums(config: {\n resources?: PermissionResourcesProvider;\n actions?: PermissionActionsProvider;\n}): Provider[] {\n const providers: Provider[] = [];\n \n if (config.resources) {\n providers.push(providePermissionResources(config.resources));\n }\n \n if (config.actions) {\n providers.push(providePermissionActions(config.actions));\n }\n \n return providers;\n}\n","import { Injectable } from '@angular/core';\nimport { ApiConfig } from '../interfaces/global/ApiConfig.interface';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiConfigurationProvider {\n private configSubject = new BehaviorSubject<ApiConfig | null>(null);\n\n setConfig(config: ApiConfig): void {\n this.configSubject.next(config);\n }\n\n getConfig(): ApiConfig | null {\n const config = this.configSubject.value;\n return config;\n }\n\n hasConfig(): boolean {\n return this.configSubject.value !== null;\n }\n\n hasCustomHeaders(): boolean {\n const config = this.configSubject.value;\n if (!config) return false;\n \n return !!(\n config.customGetHeader ||\n config.customPostHeader ||\n config.customPutHeader ||\n config.customPatchHeader ||\n config.customDeleteHeader\n );\n }\n\n get config$() {\n return this.configSubject.asObservable();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CoreUiTranslateService {\n private translateService = inject(TranslateService);\n\n initialize(defaultLang: string = 'es', currentLang?: string) {\n this.translateService.setDefaultLang(defaultLang);\n this.translateService.use(currentLang || defaultLang);\n }\n\n changeLanguage(lang: string): Observable<any> {\n return this.translateService.use(lang);\n }\n\n instant(key: string, params?: any): string {\n return this.translateService.instant(key, params);\n }\n\n get(key: string, params?: any): Observable<string> {\n return this.translateService.get(key, params);\n }\n\n getMany(keys: string[], params?: any): Observable<any> {\n return this.translateService.get(keys, params);\n }\n\n getCurrentLang(): string {\n return this.translateService.currentLang;\n }\n\n getDefaultLang(): string {\n return this.translateService.getDefaultLang();\n }\n\n getTranslateService(): TranslateService {\n return this.translateService;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { PERMISSION_RESOURCES_PROVIDER, PERMISSION_ACTIONS_PROVIDER } from '../providers/permission-enums.provider';\nimport { PermissionsResources } from '../components/main-nav/enums/PermissionsResources.enum';\nimport { PermissionsActions } from '../components/main-nav/enums/PermissionsActions.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionEnumsService {\n private externalResources = inject(PERMISSION_RESOURCES_PROVIDER, { optional: true });\n private externalActions = inject(PERMISSION_ACTIONS_PROVIDER, { optional: true });\n\n getResources(): { [key: string]: string } {\n return this.externalResources || PermissionsResources;\n }\n\n getActions(): { [key: string]: string } {\n return this.externalActions || PermissionsActions;\n }\n\n getResourceValue(key: string): string | undefined {\n const resources = this.getResources();\n return resources[key];\n }\n\n getActionValue(key: string): string | undefined {\n const actions = this.getActions();\n return actions[key];\n }\n}\n","/*\n * Public API Surface of core-ui-library\n */\n\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/enums';\nexport * from './lib/interceptors';\nexport * from './lib/interfaces';\nexport * from './lib/loaders';\nexport * from './lib/validators';\nexport * from './lib/providers';\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/utilities';\nexport * from './lib/constants/version';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CoreHostDirective","i2","i3","i4","tap","i1.PaginationService","i2.TableDataService","i3.CoreHostDirective","i5","i2.DropdownService","catchError","map","i1"],"mappings":"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"}