@elasticias/screens 0.0.10 → 0.0.11
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.
|
@@ -46,10 +46,10 @@ class AbstractEntity {
|
|
|
46
46
|
class AbstractComponent {
|
|
47
47
|
readOnly = false;
|
|
48
48
|
destroyed$ = new Subject();
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: AbstractComponent, isStandalone: true, selector: "ng-component", inputs: { readOnly: "readOnly" }, ngImport: i0, template: '', isInline: true });
|
|
51
51
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
54
|
args: [{ template: '' }]
|
|
55
55
|
}], propDecorators: { readOnly: [{
|
|
@@ -306,10 +306,10 @@ class AbstractScreenComponent extends AbstractComponent {
|
|
|
306
306
|
}
|
|
307
307
|
}, 10);
|
|
308
308
|
}
|
|
309
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
310
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
309
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractScreenComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
310
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: AbstractScreenComponent, isStandalone: true, selector: "ng-component", inputs: { context: "context" }, viewQueries: [{ propertyName: "entityForm", first: true, predicate: ["entityForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
311
311
|
}
|
|
312
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractScreenComponent, decorators: [{
|
|
313
313
|
type: Component,
|
|
314
314
|
args: [{
|
|
315
315
|
template: ''
|
|
@@ -514,10 +514,10 @@ class AbstractDetailScreenComponent extends AbstractScreenComponent {
|
|
|
514
514
|
this.location.back();
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
518
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
517
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractDetailScreenComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
518
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: AbstractDetailScreenComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
519
519
|
}
|
|
520
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractDetailScreenComponent, decorators: [{
|
|
521
521
|
type: Component,
|
|
522
522
|
args: [{
|
|
523
523
|
template: '',
|
|
@@ -789,10 +789,10 @@ class AbstractSearchScreenComponent extends AbstractScreenComponent {
|
|
|
789
789
|
this.destroyed$.next();
|
|
790
790
|
this.destroyed$.complete();
|
|
791
791
|
}
|
|
792
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
793
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
792
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractSearchScreenComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
793
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: AbstractSearchScreenComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "pTable", first: true, predicate: ["pTable"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
794
794
|
}
|
|
795
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractSearchScreenComponent, decorators: [{
|
|
796
796
|
type: Component,
|
|
797
797
|
args: [{
|
|
798
798
|
template: '',
|
|
@@ -811,10 +811,10 @@ class AbstractSubScreenComponent extends AbstractScreenComponent {
|
|
|
811
811
|
ngAfterViewInit() {
|
|
812
812
|
super.ngAfterViewInit();
|
|
813
813
|
}
|
|
814
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
815
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
814
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractSubScreenComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
815
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: AbstractSubScreenComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
816
816
|
}
|
|
817
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
817
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AbstractSubScreenComponent, decorators: [{
|
|
818
818
|
type: Component,
|
|
819
819
|
args: [{
|
|
820
820
|
template: ''
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elasticias-screens.mjs","sources":["../../../../libs/screens/src/lib/abstract/abstract.entity.ts","../../../../libs/screens/src/lib/abstract/abstract.component.ts","../../../../libs/screens/src/lib/config/screen-context.ts","../../../../libs/screens/src/lib/services/screen-reference-data.service.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-screen.component.ts","../../../../libs/screens/src/lib/config/screen-state.enum.ts","../../../../libs/screens/src/lib/entities/view-model.entity.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-detail-screen.component.ts","../../../../libs/screens/src/lib/entities/search.entity.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-search-screen.component.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-sub-screen.component.ts","../../../../libs/screens/src/lib/config/screen-config.ts","../../../../libs/screens/src/index.ts","../../../../libs/screens/src/elasticias-screens.ts"],"sourcesContent":["export abstract class AbstractEntity {\n [key: string]: unknown;\n clone(entity: AbstractEntity): AbstractEntity {\n for (const field of Reflect.ownKeys(entity)) {\n if ((this as Record<string | symbol, unknown>)[field] == null) {\n (this as Record<string | symbol, unknown>)[field] = (entity as unknown as Record<string | symbol, unknown>)[field];\n }\n }\n return this;\n }\n\n newClone(): Record<string, unknown> {\n const cloneObj: Record<string, unknown> = {};\n for (const field of Reflect.ownKeys(this)) {\n cloneObj[field as string] = (this as Record<string | symbol, unknown>)[field];\n }\n return cloneObj;\n }\n\n update(entity: Record<string, unknown>): AbstractEntity {\n for (const field of Reflect.ownKeys(entity)) {\n if ((this as Record<string | symbol, unknown>)[field] != null) {\n (this as Record<string | symbol, unknown>)[field] = entity[field as string];\n }\n }\n return this;\n }\n\n buildEntity(entity: Record<string, unknown>): void {\n Object.keys(entity).forEach((key) => {\n (this as Record<string, unknown>)[key] = entity[key];\n });\n }\n\n clearFields(): void {\n for (const field of Reflect.ownKeys(this)) {\n (this as Record<string | symbol, unknown>)[field] = null;\n }\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({ template: '' })\nexport abstract class AbstractComponent implements OnInit, OnDestroy {\n @Input() readOnly = false;\n\n protected destroyed$ = new Subject<void>();\n\n abstract ngOnInit(): void;\n\n abstract ngOnDestroy(): void;\n}\n","import { Signal, signal } from '@angular/core';\nimport { AbstractEntity } from '../abstract/abstract.entity';\nimport { PermissionsEnum } from '@elasticias/types';\n\n/**\n * Abstract interface for reference data providers.\n * Apps must implement this and provide it to ScreenContext.\n */\nexport interface ReferenceDataProvider {\n getReference(key: string): Signal<any[]>;\n hasReference(key: string): boolean;\n}\n\nexport class ScreenContext extends AbstractEntity {\n state: string;\n screenName!: string;\n language: string;\n group: unknown;\n private _refDataProvider?: ReferenceDataProvider;\n bundles: Map<string, Map<string, Map<string, string>>>;\n entity: unknown;\n grants: string[];\n duplicateMode = false;\n\n constructor(\n state: string,\n group?: unknown,\n entity?: unknown,\n refDataProvider?: ReferenceDataProvider,\n bundles?: Map<string, Map<string, Map<string, string>>>,\n grants?: string[],\n screenName = '',\n language = 'fr'\n ) {\n super();\n this.state = state;\n this.group = group;\n this.entity = entity;\n this.screenName = screenName;\n this.language = language;\n this._refDataProvider = refDataProvider;\n this.bundles = bundles ?? new Map();\n this.grants = grants ?? [];\n }\n\n setReferenceDataProvider(provider: ReferenceDataProvider): void {\n this._refDataProvider = provider;\n }\n\n get ref() {\n return {\n get: (key: string): Signal<any[]> => {\n if (!this._refDataProvider) {\n console.warn('ReferenceDataProvider not set in ScreenContext. Returning empty signal.');\n return signal([]);\n }\n return this._refDataProvider.getReference(key);\n },\n has: (key: string): boolean => {\n return this._refDataProvider?.hasReference(key) ?? false;\n },\n };\n }\n\n getLabel(key: string): string {\n try {\n return this.bundles.get(this.language)!.get(this.screenName)!.get(key) ?? key;\n } catch {\n return key;\n }\n }\n\n isGranted(permission: PermissionsEnum): boolean {\n return this.grants?.some((value) => value === permission) ?? false;\n }\n\n isReadOnly(): boolean {\n return (\n this.isGranted(PermissionsEnum.Read) &&\n !this.isGranted(PermissionsEnum.Write) &&\n !this.isGranted(PermissionsEnum.Edit) &&\n !this.isGranted(PermissionsEnum.Delete)\n );\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { ReferenceDataProvider } from '../config/screen-context';\nimport { LoadOptions } from '../config/screen-config';\n\n/**\n * Abstract interface for reference data services used by screen components.\n * Apps must implement this interface and provide it via SCREEN_REF_DATA_SERVICE token.\n *\n * Extends ReferenceDataProvider (getReference/hasReference for ScreenContext)\n * with methods for loading, refreshing, and invalidating reference data.\n */\nexport interface ScreenReferenceDataService extends ReferenceDataProvider {\n /**\n * Load dynamic reference data by keys\n * @param keys Array of reference data keys to load\n * @param options Optional load options (bypassCache, ttl, forceRefresh)\n */\n loadReferenceKeys(keys: string[], options?: LoadOptions): Promise<void>;\n\n /**\n * Load static reference data by type names\n * @param types Array of static reference type names\n * @param forceRefresh Force reload from server\n */\n loadStaticRefs(types: string[], forceRefresh?: boolean): Promise<void>;\n\n /**\n * Refresh reference data keys (force reload from server)\n * @param keys Array of keys to refresh\n * @param bypassCache Bypass cache entirely\n */\n refreshKeys(keys: string[], bypassCache?: boolean): Promise<void>;\n\n /**\n * Invalidate reference data keys (mark as stale)\n * @param keys Array of keys to invalidate\n */\n invalidateKeys(keys: string[]): Promise<void>;\n}\n\n/**\n * Injection token for the screen reference data service.\n * Apps must provide this token with their concrete implementation.\n *\n * @example\n * // In app module or component providers:\n * { provide: SCREEN_REF_DATA_SERVICE, useExisting: ReferenceDataService }\n */\nexport const SCREEN_REF_DATA_SERVICE = new InjectionToken<ScreenReferenceDataService>(\n 'SCREEN_REF_DATA_SERVICE'\n);\n","import { AfterViewInit, ChangeDetectorRef, Component, inject, Input, OnDestroy, OnInit, signal, ViewChild } from '@angular/core';\nimport { AbstractComponent } from '../abstract.component';\nimport { ScreenContext } from '../../config/screen-context';\nimport { ScreenConfig, LoadOptions } from '../../config/screen-config';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NgForm } from '@angular/forms';\nimport { AppUtils, StorageUtils } from '@elasticias/utils';\nimport { ToastService, ConfirmDialogService, CacheService } from '@elasticias/core';\nimport { Subject } from 'rxjs';\nimport { ScreenReferenceDataService, SCREEN_REF_DATA_SERVICE } from '../../services/screen-reference-data.service';\n\n@Component({\n template: ''\n})\nexport abstract class AbstractScreenComponent extends AbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() context!: ScreenContext;\n connectedUser: any;\n\n @ViewChild('entityForm') entityForm!: NgForm;\n serverErrors = signal<{ [key: string]: string[] }>({});\n protected refDataLoaded$ = new Subject<void>();\n\n cacheService = inject(CacheService);\n changeDetector = inject(ChangeDetectorRef);\n toastService = inject(ToastService);\n confirmDialogService = inject(ConfirmDialogService);\n router = inject(Router);\n route = inject(ActivatedRoute);\n refDataService = inject(SCREEN_REF_DATA_SERVICE);\n\n currentUrl = '';\n\n protected abstract readonly screenState: string | null;\n get state(): string | null { return this.screenState; }\n screenStateKey = '';\n\n ngOnInit(): void {\n this.cacheService.configure(true);\n this.currentUrl = this.router.url;\n this.context = new ScreenContext(this.screenState ?? '', undefined, undefined, this.refDataService);\n\n this.screenStateKey = `SCREEN_STATE_${this.screenState}_${this.getBundleName()}`;\n this.context.screenName = this.getBundleName();\n this.processGrants();\n }\n\n ngAfterViewInit(): void {\n this.changeDetector.detectChanges();\n if (this.context && this.context.isReadOnly()) {\n this.disableAllControls();\n }\n }\n\n processGrants() {\n const userGrants: any = StorageUtils.getSession('CURRENT_USER_GRANTS');\n if (userGrants && userGrants[this.context.screenName] && userGrants[this.context.screenName].permissions) {\n this.context.grants = userGrants[this.context.screenName].permissions;\n } else {\n this.context.grants = [];\n }\n this.changeDetector.detectChanges();\n }\n\n isFormValid(): boolean {\n if (this.context.isReadOnly()) { return true; }\n if (!this.entityForm) {\n return false;\n }\n return this.entityForm.valid ?? false;\n }\n\n getConfig(): any {\n return null;\n }\n\n getBundleName(): string {\n const config = this.getConfig();\n if (config) {\n return config.SCREEN;\n } else {\n console.error('getConfig() method should be implemented !!');\n }\n return '';\n }\n\n setFormErrors(errors: { [key: string]: string[] }) {\n if (!errors || !this.entityForm) { return; }\n\n Object.keys(errors).forEach((field) => {\n const camelCaseField = AppUtils.toCamelCase(field);\n const control = this.entityForm.controls[camelCaseField];\n\n if (control) {\n control.setErrors({ serverError: errors[field] });\n control.markAsTouched();\n }\n });\n }\n\n referentialKeys: any;\n staticListKeys: string[] = [];\n\n initializeReferenceKeys(keys: string[]): void {\n if (!keys) return;\n const referencialKeys: any = {};\n\n keys.forEach(p => {\n referencialKeys[p] = {};\n });\n\n this.referentialKeys = referencialKeys;\n }\n\n initializeStaticLists(keys: string[]): void {\n if (!keys) return;\n this.staticListKeys = keys;\n }\n\n async loadReferenceData(options?: LoadOptions) {\n const loadPromises: Promise<void>[] = [];\n\n if (!AppUtils.isNullOrEmpty(this.referentialKeys)) {\n const dynamicKeys = Object.keys(this.referentialKeys);\n\n const dynamicPromise = this.refDataService\n .loadReferenceKeys(dynamicKeys, options)\n .catch((error: unknown) => {\n console.error('Failed to load dynamic reference data:', error);\n });\n\n loadPromises.push(dynamicPromise);\n }\n\n if (this.staticListKeys && this.staticListKeys.length > 0) {\n const staticPromise = this.refDataService\n .loadStaticRefs(this.staticListKeys)\n .catch((error: unknown) => {\n console.error('Failed to load static lists:', error);\n });\n\n loadPromises.push(staticPromise);\n }\n\n if (loadPromises.length === 0) {\n this.refDataLoaded$.next();\n return;\n }\n\n try {\n await Promise.all(loadPromises);\n this.refDataLoaded$.next();\n } catch (error) {\n console.error('Failed to load reference data:', error);\n this.refDataLoaded$.next();\n }\n }\n\n async refreshReferenceData(keys?: string[]) {\n const keysToRefresh = keys || Object.keys(this.referentialKeys || {});\n\n if (keysToRefresh.length === 0) {\n return;\n }\n\n try {\n await this.refDataService.refreshKeys(keysToRefresh, true);\n this.toastService.showSuccess('Reference data refreshed successfully', 'Success');\n } catch (error) {\n console.error('Failed to refresh reference data:', error);\n this.toastService.showError('Failed to refresh reference data', 'Error');\n }\n }\n\n async refreshStaticLists() {\n if (!this.staticListKeys || this.staticListKeys.length === 0) {\n return;\n }\n\n try {\n await this.refDataService.loadStaticRefs(this.staticListKeys, true);\n this.toastService.showSuccess('Static lists refreshed successfully', 'Success');\n } catch (error) {\n console.error('Failed to refresh static lists:', error);\n this.toastService.showError('Failed to refresh static lists', 'Error');\n }\n }\n\n async invalidateReference(key: string) {\n await this.refDataService.invalidateKeys([key]);\n }\n\n async invalidateReferences(keys: string[]) {\n await this.refDataService.invalidateKeys(keys);\n }\n\n handleErrors(errors: string[]) {\n if (errors && errors.length > 0) {\n errors.forEach(error => this.toastService.showError(error, 'Erreur de validation'));\n } else {\n this.toastService.showError('Une erreur inconnue est survenue', 'Erreur');\n }\n }\n\n setServerErrors(errors: { [key: string]: string[] }) {\n this.serverErrors.set(errors || {});\n }\n\n clearServerErrors() {\n this.serverErrors.set({});\n }\n\n disableAllControls() {\n setTimeout(() => {\n if (this.entityForm && Object.keys(this.entityForm.controls).length > 0) {\n const controlNames = Object.keys(this.entityForm.controls);\n controlNames.forEach(controlName => {\n const control = this.entityForm.controls[controlName];\n if (control) {\n control.disable();\n }\n });\n }\n }, 10);\n }\n}\n","export enum ScreenStateEnum {\n READ_ONLY = 'READ_ONLY',\n DETAIL = 'DETAIL',\n SEARCH = 'SEARCH',\n CUSTOM = 'CUSTOM',\n}\n\nexport enum StateUtilsEnum {\n REMOVE = 'removeState',\n ADD = 'addState',\n DUPLICATE = 'duplicateState',\n EDIT = 'editState',\n EDIT_AFTER_ERROR = 'editAfterErrorState',\n ADD_AFTER_ERROR = 'addAfterErrorState',\n SAVE = 'afterSaveState',\n}\n","import { AbstractEntity } from '../abstract/abstract.entity';\n\nexport class ViewModelEntity extends AbstractEntity {\n constructor(entity: Record<string, unknown>) {\n super();\n this.clone(entity as unknown as AbstractEntity);\n }\n}\n","import {\n AfterViewInit,\n Component,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ScreenStateEnum } from '../../config/screen-state.enum';\nimport { ViewModelEntity } from '../../entities/view-model.entity';\nimport { AbstractScreenComponent } from './abstract-screen.component';\nimport { Location } from '@angular/common';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n template: '',\n})\nexport abstract class AbstractDetailScreenComponent\n extends AbstractScreenComponent\n implements AfterViewInit, OnInit, OnDestroy\n{\n protected readonly screenState = ScreenStateEnum.DETAIL;\n\n entity: any = {};\n entityId: any;\n editionState = false;\n duplicateMode = false;\n\n private location = inject(Location);\n protected injector = inject(Injector);\n private serviceInstance: any;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.serviceInstance = this.injector.get(this.getConfig()!.SERVICE as any);\n\n const screenConfig = this.getConfig();\n if (screenConfig) {\n const hasDynamicRefs = (screenConfig.DETAILS_REFERENTIALS_KEYS?.length ?? 0) > 0;\n const hasStaticLists = (screenConfig.DETAILS_STATIC_LISTS?.length ?? 0) > 0;\n\n if (hasDynamicRefs) {\n this.initializeReferenceKeys(screenConfig.DETAILS_REFERENTIALS_KEYS);\n }\n if (hasStaticLists) {\n this.initializeStaticLists(screenConfig.DETAILS_STATIC_LISTS);\n }\n if (hasDynamicRefs || hasStaticLists) {\n this.loadReferenceData(screenConfig.REF_DATA_OPTIONS);\n }\n }\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n combineLatest([this.route.paramMap, this.route.queryParamMap]).subscribe(\n ([params, queryParams]) => {\n this.entityId = params.get('id');\n this.duplicateMode = queryParams.get('mode') === 'duplicate';\n this.context.duplicateMode = this.duplicateMode;\n\n if (this.entityId) {\n this.editionState = !this.duplicateMode;\n this.loadData();\n } else {\n this.editionState = false;\n this.duplicateMode = false;\n this.context.duplicateMode = false;\n }\n },\n );\n }\n\n public loadData(): void {\n try {\n this.serviceInstance.get(this.entityId).subscribe({\n next: (result: any) => {\n this.entity = new ViewModelEntity(result);\n this.entity.id = this.entityId;\n this.afterLoad();\n },\n error: (_error: any) => {\n // Errors handled by global error handler\n },\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n protected afterLoad() {\n this.changeDetector.detectChanges();\n }\n\n abstract beforeSave(): void;\n\n save() {\n try {\n this.beforeSave();\n this.clearServerErrors();\n\n const isCreateOperation = !this.editionState || this.duplicateMode;\n const entityToSave = this.duplicateMode\n ? this.prepareEntityForDuplication()\n : this.entity;\n\n const saveOperation = isCreateOperation\n ? this.serviceInstance.create(entityToSave)\n : this.serviceInstance.update(this.entityId, this.entity);\n\n saveOperation.subscribe({\n next: (response: any) => {\n if (response && response.errors && response.errors.length > 0) {\n this.handleErrors(response.errors);\n } else {\n this.toastService.showSuccess();\n this.afterSave(response);\n }\n },\n error: (response: any) => {\n console.log(response);\n if (response.errors) {\n this.setServerErrors(response.errors);\n this.setFormErrors(response.errors);\n this.onSaveError(response.errors);\n }\n },\n });\n } catch (error: any) {\n this.toastService.showError(\n error?.message || \"Une erreur est survenue lors de l'enregistrement\",\n );\n }\n }\n\n protected onSaveError(_errors: { [key: string]: string[] }) {\n // Override in subclass to handle validation errors\n }\n\n protected afterSave(result: any) {\n const screenConfig = this.getConfig();\n if (screenConfig?.INVALIDATE_KEYS_ON_SAVE) {\n this.invalidateReferences(screenConfig.INVALIDATE_KEYS_ON_SAVE);\n\n if (screenConfig.REFRESH_ON_SAVE) {\n this.refreshReferenceData(screenConfig.INVALIDATE_KEYS_ON_SAVE);\n }\n }\n\n if (!this.editionState || this.duplicateMode) {\n const baseUrl = this.currentUrl.split('?')[0];\n const detailsIndex = baseUrl.indexOf('/details');\n const cleanBaseUrl =\n detailsIndex !== -1\n ? baseUrl.substring(0, detailsIndex + '/details'.length)\n : baseUrl;\n this.router.navigate([cleanBaseUrl, result]);\n return;\n }\n }\n\n protected prepareEntityForDuplication(): any {\n const duplicatedEntity = { ...this.entity };\n delete duplicatedEntity.id;\n delete duplicatedEntity.Id;\n return this.customizeDuplicatedEntity(duplicatedEntity);\n }\n\n protected customizeDuplicatedEntity(entity: any): any {\n return entity;\n }\n\n duplicate() {\n const baseUrl = this.currentUrl.split('?')[0];\n this.router.navigate([baseUrl], {\n queryParams: { mode: 'duplicate' },\n });\n }\n\n print() {\n // Override in subclass to implement print functionality\n }\n\n delete(): void {\n if (!this.entityId)\n return this.toastService.showError('Item [id] is undefined!');\n\n this.confirmDialogService.confirm(\n 'Êtes-vous sûr de vouloir supprimer ?',\n () =>\n this.serviceInstance.delete(this.entityId).subscribe({\n next: (result: any) => {\n if (result && result.errors && result.errors.length > 0) {\n this.handleErrors(result.errors);\n } else {\n this.toastService.showSuccess();\n this.navigateBack();\n }\n },\n error: () => {\n // Errors handled by global error handler\n },\n }),\n () => {\n // User cancelled deletion\n },\n );\n }\n\n navigateBack() {\n const currentUrl = this.router.url.split('?')[0];\n const detailsIndex = currentUrl.indexOf('/details');\n if (detailsIndex !== -1) {\n this.router.navigate([currentUrl.substring(0, detailsIndex)]);\n } else {\n this.location.back();\n }\n }\n}\n","import { AbstractEntity } from '../abstract/abstract.entity';\n\nexport enum SortDirectionEnum {\n ASC = 'Ascending',\n DESC = 'Descending',\n DEFAULT_SORT_FIELD = 'id',\n}\n\nexport enum PaginationEnum {\n DEFAULT_PAGE = 1,\n DEFAULT_PAGE_SIZE = 10,\n}\n\nexport class SearchEntity extends AbstractEntity {\n pagination: { pageNumber: number; pageSize: number } = {\n pageNumber: PaginationEnum.DEFAULT_PAGE,\n pageSize: PaginationEnum.DEFAULT_PAGE_SIZE,\n };\n\n sort: Array<{ field: string; sortDirection: string }> = [];\n\n totalPages = 0;\n totalCount = 0;\n items: AbstractEntity[] = [];\n start: Date | null = null;\n end: Date | null = null;\n startEndDateRanges: Date[] | null = null;\n\n constructor(entity: Record<string, unknown>) {\n super();\n this.buildEntity(entity);\n\n if (!this.pagination) {\n this.pagination = {\n pageNumber: PaginationEnum.DEFAULT_PAGE,\n pageSize: PaginationEnum.DEFAULT_PAGE_SIZE,\n };\n }\n\n if (!this.sort) {\n this.sort = [{ field: SortDirectionEnum.DEFAULT_SORT_FIELD, sortDirection: SortDirectionEnum.DESC }];\n }\n\n if (!this.startEndDateRanges && entity['start'] && entity['end']) {\n this.startEndDateRanges = [new Date(entity['start'] as string), new Date(entity['end'] as string)];\n }\n }\n\n getSearchCriteria(): Record<string, unknown> {\n const { items: _items, totalPages: _totalPages, totalCount: _totalCount, ...criteria } = this;\n return criteria;\n }\n}\n","import {\n AfterViewInit,\n Component,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ScreenStateEnum } from '../../config/screen-state.enum';\nimport { ViewModelEntity } from '../../entities/view-model.entity';\nimport { SearchEntity, SortDirectionEnum } from '../../entities/search.entity';\nimport { AbstractScreenComponent } from './abstract-screen.component';\nimport { Table, TableLazyLoadEvent } from 'primeng/table';\nimport { take } from 'rxjs';\n\n/**\n * Column definition interface for ef-datatable integration.\n * Kept minimal here to avoid circular dependency on @elasticias/ui.\n */\nexport interface ScreenDatatableColumn {\n field: string;\n header: string;\n type?: string;\n [key: string]: any;\n}\n\n@Component({\n template: '',\n standalone: true,\n})\nexport abstract class AbstractSearchScreenComponent\n extends AbstractScreenComponent\n implements AfterViewInit, OnInit, OnDestroy\n{\n protected readonly screenState = ScreenStateEnum.SEARCH;\n\n @ViewChild('pTable') pTable!: Table;\n\n entity: any = new ViewModelEntity({});\n searchEntity = new SearchEntity(this.entity);\n enableDateRangeFilter = true;\n isLazySearch = true;\n lastSearchEvent: TableLazyLoadEvent | null = null;\n\n tableColumns: any[] = [];\n\n protected injector = inject(Injector);\n private serviceInstance: any;\n private isInitialLoad = true;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.serviceInstance = this.injector.get(this.getConfig()!.SERVICE as any);\n\n this.tableColumns = this.getTableColumns();\n\n const screenConfig = this.getConfig();\n const hasDynamicRefs = (screenConfig?.SEARCH_REFERENTIALS_KEYS?.length ?? 0) > 0;\n const hasStaticLists = (screenConfig?.SEARCH_STATIC_LISTS?.length ?? 0) > 0;\n\n if (hasDynamicRefs || hasStaticLists) {\n if (hasDynamicRefs) {\n this.initializeReferenceKeys(screenConfig!.SEARCH_REFERENTIALS_KEYS);\n }\n\n if (hasStaticLists) {\n this.initializeStaticLists(screenConfig!.SEARCH_STATIC_LISTS);\n }\n\n this.loadReferenceData(screenConfig!.REF_DATA_OPTIONS);\n\n this.refDataLoaded$.pipe(take(1)).subscribe(() => {\n this.triggerSearchIfNeeded();\n });\n } else {\n this.triggerSearchIfNeeded();\n }\n }\n\n protected getTableColumns(): any[] {\n return [];\n }\n\n private triggerSearchIfNeeded() {\n const cachedCriteria = this.cacheService.getCache<any>(this.screenStateKey);\n if (cachedCriteria) {\n this.searchEntity = new SearchEntity(cachedCriteria);\n this.entity.buildEntity(this.searchEntity);\n this.searchEntity.items = [];\n\n if (this.searchEntity.startEndDateRanges) {\n this.entity.startEndDateRanges = [\n new Date(this.searchEntity.start!),\n new Date(this.searchEntity.end!),\n ];\n }\n\n this.changeDetector.detectChanges();\n this.search();\n } else {\n this.search();\n }\n }\n\n onLazyLoad(event: TableLazyLoadEvent): void {\n if (this.isInitialLoad) {\n this.isInitialLoad = false;\n return;\n }\n\n if (this.isReactiveBindingEcho(event)) {\n return;\n }\n\n this.search(event);\n }\n\n private isReactiveBindingEcho(event: TableLazyLoadEvent): boolean {\n if (!this.searchEntity.sort || this.searchEntity.sort.length === 0) {\n return false;\n }\n\n const currentSort = this.searchEntity.sort[0];\n const eventSortField = Array.isArray(event.sortField)\n ? event.sortField[0]\n : event.sortField;\n const eventSortDirection =\n event.sortOrder === 1 ? SortDirectionEnum.ASC : SortDirectionEnum.DESC;\n\n const currentPage = this.searchEntity.pagination?.pageNumber || 1;\n const currentPageSize = this.searchEntity.pagination?.pageSize || 10;\n const eventPage = this.getPageNumber(event);\n const eventPageSize = event.rows || 10;\n\n return (\n currentSort.field === eventSortField &&\n currentSort.sortDirection === eventSortDirection &&\n currentPage === eventPage &&\n currentPageSize === eventPageSize\n );\n }\n\n private prepareSearch(event: TableLazyLoadEvent | null): void {\n this.searchEntity.buildEntity(this.entity);\n const e = event || this.lastSearchEvent || { first: 0, rows: 10 };\n\n this.searchEntity.pagination = {\n pageNumber: this.getPageNumber(e),\n pageSize: e.rows || 10,\n };\n\n if (this.entity.startEndDateRanges) {\n this.searchEntity.start = this.entity.startEndDateRanges[0];\n this.searchEntity.end = this.entity.startEndDateRanges[1];\n } else {\n this.searchEntity.start = null;\n this.searchEntity.end = null;\n }\n\n if (this.isLazySearch) {\n if (e.sortField) {\n const sortField = this.getSortField(e);\n this.searchEntity.sort = [\n {\n field: sortField,\n sortDirection: this.getSortDirection(e),\n },\n ];\n } else if (!this.searchEntity.sort || this.searchEntity.sort.length === 0) {\n const defaultSort = this.getConfig()?.DEFAULT_SORT;\n this.searchEntity.sort = [\n {\n field: defaultSort?.field || 'id',\n sortDirection: defaultSort?.direction || SortDirectionEnum.DESC,\n },\n ];\n }\n }\n }\n\n protected search(event: TableLazyLoadEvent | null = null): void {\n this.prepareSearch(event);\n\n this.serviceInstance.search(this.searchEntity).subscribe({\n next: (result: any) => {\n this.lastSearchEvent = event;\n this.searchEntity = Object.assign(new SearchEntity({}), this.searchEntity, result);\n this.cacheService.setCache(this.screenStateKey, this.searchEntity);\n this.changeDetector.detectChanges();\n },\n error: () => {\n // Errors handled by global error handler\n },\n });\n }\n\n paginate(event: any) {\n const pageNumber = this.getPageNumber(event);\n const pageSize = event.rows;\n\n this.searchEntity.pagination.pageNumber = pageNumber;\n this.searchEntity.pagination.pageSize = pageSize;\n\n if (\n this.searchEntity.items == null ||\n this.searchEntity.items.length === 0\n ) {\n return;\n }\n }\n\n getPageNumber(event: TableLazyLoadEvent): number {\n return event.first != null\n ? Math.floor(event.first / (event.rows || 10)) + 1\n : 1;\n }\n\n getSortField(event: TableLazyLoadEvent): string {\n return Array.isArray(event.sortField)\n ? event.sortField[0]\n : event.sortField || 'id';\n }\n\n getSortDirection(event: TableLazyLoadEvent): string {\n return event.sortOrder === 1\n ? SortDirectionEnum.ASC\n : SortDirectionEnum.DESC;\n }\n\n navigateToDetails(id?: any): void {\n const path =\n id || id === 0\n ? `${this.currentUrl}/details/${id}`\n : `${this.currentUrl}/details`;\n this.router.navigate([path]);\n }\n\n add() {\n this.router.navigate([this.currentUrl.concat('/details')]);\n }\n\n edit(id: any) {\n if (!id) {\n this.toastService.showError('Item [id] is undefined !');\n return;\n }\n this.router.navigate([this.currentUrl.concat('/details/'), id]);\n }\n\n delete(id: any): void {\n if (!id) return this.toastService.showError('Item [id] is undefined!');\n\n this.confirmDialogService.confirm(\n 'Êtes-vous sûr de vouloir supprimer ?',\n () =>\n this.serviceInstance.delete(id).subscribe({\n next: (result: any) => {\n if (result && result.errors && result.errors.length > 0) {\n this.handleErrors(result.errors);\n } else {\n this.search();\n this.toastService.showSuccess();\n }\n },\n error: () => {\n // Errors handled by global error handler\n },\n }),\n () => {\n // User cancelled deletion\n },\n );\n }\n\n duplicate(id: any) {\n if (!id) {\n this.toastService.showError('Item [id] is undefined !');\n return;\n }\n this.router.navigate(\n [this.currentUrl.concat('/details/'), id],\n { queryParams: { mode: 'duplicate' } }\n );\n }\n\n clear(): void {\n this.entity.clearFields();\n this.searchEntity.clearFields();\n this.searchEntity = new SearchEntity({});\n\n this.lastSearchEvent = null;\n this.isInitialLoad = true;\n\n this.cacheService.setCache(this.screenStateKey, this.searchEntity);\n\n if (this.pTable) {\n this.pTable.first = 0;\n this.pTable.reset();\n }\n\n this.changeDetector.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractScreenComponent } from './abstract-screen.component';\n\n@Component({\n template: ''\n})\nexport abstract class AbstractSubScreenComponent extends AbstractScreenComponent {\n protected readonly screenState = null;\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n}\n","import { SortDirectionEnum } from '../entities/search.entity';\n\nexport interface DefaultSort {\n field: string;\n direction: SortDirectionEnum;\n}\n\nexport interface LoadOptions {\n bypassCache?: boolean;\n ttl?: number;\n forceRefresh?: boolean;\n useSql?: boolean;\n}\n\nexport abstract class ScreenConfig {\n SCREEN!: string;\n SERVICE!: unknown;\n\n SEARCH_REFERENTIALS_KEYS!: string[];\n DETAILS_REFERENTIALS_KEYS!: string[];\n\n SEARCH_STATIC_LISTS: string[] = [];\n DETAILS_STATIC_LISTS: string[] = [];\n\n INVALIDATE_KEYS_ON_SAVE?: string[];\n REFRESH_ON_SAVE?: boolean;\n REF_DATA_OPTIONS?: LoadOptions;\n DEFAULT_SORT?: DefaultSort;\n}\n","// Abstract base classes\nexport { AbstractEntity } from './lib/abstract/abstract.entity';\nexport { AbstractComponent } from './lib/abstract/abstract.component';\n\n// Screen abstract components\nexport { AbstractScreenComponent } from './lib/abstract/screen/abstract-screen.component';\nexport { AbstractDetailScreenComponent } from './lib/abstract/screen/abstract-detail-screen.component';\nexport { AbstractSearchScreenComponent } from './lib/abstract/screen/abstract-search-screen.component';\nexport type { ScreenDatatableColumn } from './lib/abstract/screen/abstract-search-screen.component';\nexport { AbstractSubScreenComponent } from './lib/abstract/screen/abstract-sub-screen.component';\n\n// Services\nexport { SCREEN_REF_DATA_SERVICE } from './lib/services/screen-reference-data.service';\nexport type { ScreenReferenceDataService } from './lib/services/screen-reference-data.service';\n\n// Config\nexport { ScreenStateEnum, StateUtilsEnum } from './lib/config/screen-state.enum';\nexport { ScreenConfig } from './lib/config/screen-config';\nexport type { LoadOptions, DefaultSort } from './lib/config/screen-config';\nexport { ScreenContext } from './lib/config/screen-context';\nexport type { ReferenceDataProvider } from './lib/config/screen-context';\n\n// Entities\nexport { SearchEntity, SortDirectionEnum, PaginationEnum } from './lib/entities/search.entity';\nexport { ViewModelEntity } from './lib/entities/view-model.entity';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elasticias-screens.mjs","sources":["../../../../libs/screens/src/lib/abstract/abstract.entity.ts","../../../../libs/screens/src/lib/abstract/abstract.component.ts","../../../../libs/screens/src/lib/config/screen-context.ts","../../../../libs/screens/src/lib/services/screen-reference-data.service.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-screen.component.ts","../../../../libs/screens/src/lib/config/screen-state.enum.ts","../../../../libs/screens/src/lib/entities/view-model.entity.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-detail-screen.component.ts","../../../../libs/screens/src/lib/entities/search.entity.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-search-screen.component.ts","../../../../libs/screens/src/lib/abstract/screen/abstract-sub-screen.component.ts","../../../../libs/screens/src/lib/config/screen-config.ts","../../../../libs/screens/src/index.ts","../../../../libs/screens/src/elasticias-screens.ts"],"sourcesContent":["export abstract class AbstractEntity {\n [key: string]: unknown;\n clone(entity: AbstractEntity): AbstractEntity {\n for (const field of Reflect.ownKeys(entity)) {\n if ((this as Record<string | symbol, unknown>)[field] == null) {\n (this as Record<string | symbol, unknown>)[field] = (entity as unknown as Record<string | symbol, unknown>)[field];\n }\n }\n return this;\n }\n\n newClone(): Record<string, unknown> {\n const cloneObj: Record<string, unknown> = {};\n for (const field of Reflect.ownKeys(this)) {\n cloneObj[field as string] = (this as Record<string | symbol, unknown>)[field];\n }\n return cloneObj;\n }\n\n update(entity: Record<string, unknown>): AbstractEntity {\n for (const field of Reflect.ownKeys(entity)) {\n if ((this as Record<string | symbol, unknown>)[field] != null) {\n (this as Record<string | symbol, unknown>)[field] = entity[field as string];\n }\n }\n return this;\n }\n\n buildEntity(entity: Record<string, unknown>): void {\n Object.keys(entity).forEach((key) => {\n (this as Record<string, unknown>)[key] = entity[key];\n });\n }\n\n clearFields(): void {\n for (const field of Reflect.ownKeys(this)) {\n (this as Record<string | symbol, unknown>)[field] = null;\n }\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({ template: '' })\nexport abstract class AbstractComponent implements OnInit, OnDestroy {\n @Input() readOnly = false;\n\n protected destroyed$ = new Subject<void>();\n\n abstract ngOnInit(): void;\n\n abstract ngOnDestroy(): void;\n}\n","import { Signal, signal } from '@angular/core';\nimport { AbstractEntity } from '../abstract/abstract.entity';\nimport { PermissionsEnum } from '@elasticias/types';\n\n/**\n * Abstract interface for reference data providers.\n * Apps must implement this and provide it to ScreenContext.\n */\nexport interface ReferenceDataProvider {\n getReference(key: string): Signal<any[]>;\n hasReference(key: string): boolean;\n}\n\nexport class ScreenContext extends AbstractEntity {\n state: string;\n screenName!: string;\n language: string;\n group: unknown;\n private _refDataProvider?: ReferenceDataProvider;\n bundles: Map<string, Map<string, Map<string, string>>>;\n entity: unknown;\n grants: string[];\n duplicateMode = false;\n\n constructor(\n state: string,\n group?: unknown,\n entity?: unknown,\n refDataProvider?: ReferenceDataProvider,\n bundles?: Map<string, Map<string, Map<string, string>>>,\n grants?: string[],\n screenName = '',\n language = 'fr'\n ) {\n super();\n this.state = state;\n this.group = group;\n this.entity = entity;\n this.screenName = screenName;\n this.language = language;\n this._refDataProvider = refDataProvider;\n this.bundles = bundles ?? new Map();\n this.grants = grants ?? [];\n }\n\n setReferenceDataProvider(provider: ReferenceDataProvider): void {\n this._refDataProvider = provider;\n }\n\n get ref() {\n return {\n get: (key: string): Signal<any[]> => {\n if (!this._refDataProvider) {\n console.warn('ReferenceDataProvider not set in ScreenContext. Returning empty signal.');\n return signal([]);\n }\n return this._refDataProvider.getReference(key);\n },\n has: (key: string): boolean => {\n return this._refDataProvider?.hasReference(key) ?? false;\n },\n };\n }\n\n getLabel(key: string): string {\n try {\n return this.bundles.get(this.language)!.get(this.screenName)!.get(key) ?? key;\n } catch {\n return key;\n }\n }\n\n isGranted(permission: PermissionsEnum): boolean {\n return this.grants?.some((value) => value === permission) ?? false;\n }\n\n isReadOnly(): boolean {\n return (\n this.isGranted(PermissionsEnum.Read) &&\n !this.isGranted(PermissionsEnum.Write) &&\n !this.isGranted(PermissionsEnum.Edit) &&\n !this.isGranted(PermissionsEnum.Delete)\n );\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { ReferenceDataProvider } from '../config/screen-context';\nimport { LoadOptions } from '../config/screen-config';\n\n/**\n * Abstract interface for reference data services used by screen components.\n * Apps must implement this interface and provide it via SCREEN_REF_DATA_SERVICE token.\n *\n * Extends ReferenceDataProvider (getReference/hasReference for ScreenContext)\n * with methods for loading, refreshing, and invalidating reference data.\n */\nexport interface ScreenReferenceDataService extends ReferenceDataProvider {\n /**\n * Load dynamic reference data by keys\n * @param keys Array of reference data keys to load\n * @param options Optional load options (bypassCache, ttl, forceRefresh)\n */\n loadReferenceKeys(keys: string[], options?: LoadOptions): Promise<void>;\n\n /**\n * Load static reference data by type names\n * @param types Array of static reference type names\n * @param forceRefresh Force reload from server\n */\n loadStaticRefs(types: string[], forceRefresh?: boolean): Promise<void>;\n\n /**\n * Refresh reference data keys (force reload from server)\n * @param keys Array of keys to refresh\n * @param bypassCache Bypass cache entirely\n */\n refreshKeys(keys: string[], bypassCache?: boolean): Promise<void>;\n\n /**\n * Invalidate reference data keys (mark as stale)\n * @param keys Array of keys to invalidate\n */\n invalidateKeys(keys: string[]): Promise<void>;\n}\n\n/**\n * Injection token for the screen reference data service.\n * Apps must provide this token with their concrete implementation.\n *\n * @example\n * // In app module or component providers:\n * { provide: SCREEN_REF_DATA_SERVICE, useExisting: ReferenceDataService }\n */\nexport const SCREEN_REF_DATA_SERVICE = new InjectionToken<ScreenReferenceDataService>(\n 'SCREEN_REF_DATA_SERVICE'\n);\n","import { AfterViewInit, ChangeDetectorRef, Component, inject, Input, OnDestroy, OnInit, signal, ViewChild } from '@angular/core';\nimport { AbstractComponent } from '../abstract.component';\nimport { ScreenContext } from '../../config/screen-context';\nimport { ScreenConfig, LoadOptions } from '../../config/screen-config';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NgForm } from '@angular/forms';\nimport { AppUtils, StorageUtils } from '@elasticias/utils';\nimport { ToastService, ConfirmDialogService, CacheService } from '@elasticias/core';\nimport { Subject } from 'rxjs';\nimport { ScreenReferenceDataService, SCREEN_REF_DATA_SERVICE } from '../../services/screen-reference-data.service';\n\n@Component({\n template: ''\n})\nexport abstract class AbstractScreenComponent extends AbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() context!: ScreenContext;\n connectedUser: any;\n\n @ViewChild('entityForm') entityForm!: NgForm;\n serverErrors = signal<{ [key: string]: string[] }>({});\n protected refDataLoaded$ = new Subject<void>();\n\n cacheService = inject(CacheService);\n changeDetector = inject(ChangeDetectorRef);\n toastService = inject(ToastService);\n confirmDialogService = inject(ConfirmDialogService);\n router = inject(Router);\n route = inject(ActivatedRoute);\n refDataService = inject(SCREEN_REF_DATA_SERVICE);\n\n currentUrl = '';\n\n protected abstract readonly screenState: string | null;\n get state(): string | null { return this.screenState; }\n screenStateKey = '';\n\n ngOnInit(): void {\n this.cacheService.configure(true);\n this.currentUrl = this.router.url;\n this.context = new ScreenContext(this.screenState ?? '', undefined, undefined, this.refDataService);\n\n this.screenStateKey = `SCREEN_STATE_${this.screenState}_${this.getBundleName()}`;\n this.context.screenName = this.getBundleName();\n this.processGrants();\n }\n\n ngAfterViewInit(): void {\n this.changeDetector.detectChanges();\n if (this.context && this.context.isReadOnly()) {\n this.disableAllControls();\n }\n }\n\n processGrants() {\n const userGrants: any = StorageUtils.getSession('CURRENT_USER_GRANTS');\n if (userGrants && userGrants[this.context.screenName] && userGrants[this.context.screenName].permissions) {\n this.context.grants = userGrants[this.context.screenName].permissions;\n } else {\n this.context.grants = [];\n }\n this.changeDetector.detectChanges();\n }\n\n isFormValid(): boolean {\n if (this.context.isReadOnly()) { return true; }\n if (!this.entityForm) {\n return false;\n }\n return this.entityForm.valid ?? false;\n }\n\n getConfig(): any {\n return null;\n }\n\n getBundleName(): string {\n const config = this.getConfig();\n if (config) {\n return config.SCREEN;\n } else {\n console.error('getConfig() method should be implemented !!');\n }\n return '';\n }\n\n setFormErrors(errors: { [key: string]: string[] }) {\n if (!errors || !this.entityForm) { return; }\n\n Object.keys(errors).forEach((field) => {\n const camelCaseField = AppUtils.toCamelCase(field);\n const control = this.entityForm.controls[camelCaseField];\n\n if (control) {\n control.setErrors({ serverError: errors[field] });\n control.markAsTouched();\n }\n });\n }\n\n referentialKeys: any;\n staticListKeys: string[] = [];\n\n initializeReferenceKeys(keys: string[]): void {\n if (!keys) return;\n const referencialKeys: any = {};\n\n keys.forEach(p => {\n referencialKeys[p] = {};\n });\n\n this.referentialKeys = referencialKeys;\n }\n\n initializeStaticLists(keys: string[]): void {\n if (!keys) return;\n this.staticListKeys = keys;\n }\n\n async loadReferenceData(options?: LoadOptions) {\n const loadPromises: Promise<void>[] = [];\n\n if (!AppUtils.isNullOrEmpty(this.referentialKeys)) {\n const dynamicKeys = Object.keys(this.referentialKeys);\n\n const dynamicPromise = this.refDataService\n .loadReferenceKeys(dynamicKeys, options)\n .catch((error: unknown) => {\n console.error('Failed to load dynamic reference data:', error);\n });\n\n loadPromises.push(dynamicPromise);\n }\n\n if (this.staticListKeys && this.staticListKeys.length > 0) {\n const staticPromise = this.refDataService\n .loadStaticRefs(this.staticListKeys)\n .catch((error: unknown) => {\n console.error('Failed to load static lists:', error);\n });\n\n loadPromises.push(staticPromise);\n }\n\n if (loadPromises.length === 0) {\n this.refDataLoaded$.next();\n return;\n }\n\n try {\n await Promise.all(loadPromises);\n this.refDataLoaded$.next();\n } catch (error) {\n console.error('Failed to load reference data:', error);\n this.refDataLoaded$.next();\n }\n }\n\n async refreshReferenceData(keys?: string[]) {\n const keysToRefresh = keys || Object.keys(this.referentialKeys || {});\n\n if (keysToRefresh.length === 0) {\n return;\n }\n\n try {\n await this.refDataService.refreshKeys(keysToRefresh, true);\n this.toastService.showSuccess('Reference data refreshed successfully', 'Success');\n } catch (error) {\n console.error('Failed to refresh reference data:', error);\n this.toastService.showError('Failed to refresh reference data', 'Error');\n }\n }\n\n async refreshStaticLists() {\n if (!this.staticListKeys || this.staticListKeys.length === 0) {\n return;\n }\n\n try {\n await this.refDataService.loadStaticRefs(this.staticListKeys, true);\n this.toastService.showSuccess('Static lists refreshed successfully', 'Success');\n } catch (error) {\n console.error('Failed to refresh static lists:', error);\n this.toastService.showError('Failed to refresh static lists', 'Error');\n }\n }\n\n async invalidateReference(key: string) {\n await this.refDataService.invalidateKeys([key]);\n }\n\n async invalidateReferences(keys: string[]) {\n await this.refDataService.invalidateKeys(keys);\n }\n\n handleErrors(errors: string[]) {\n if (errors && errors.length > 0) {\n errors.forEach(error => this.toastService.showError(error, 'Erreur de validation'));\n } else {\n this.toastService.showError('Une erreur inconnue est survenue', 'Erreur');\n }\n }\n\n setServerErrors(errors: { [key: string]: string[] }) {\n this.serverErrors.set(errors || {});\n }\n\n clearServerErrors() {\n this.serverErrors.set({});\n }\n\n disableAllControls() {\n setTimeout(() => {\n if (this.entityForm && Object.keys(this.entityForm.controls).length > 0) {\n const controlNames = Object.keys(this.entityForm.controls);\n controlNames.forEach(controlName => {\n const control = this.entityForm.controls[controlName];\n if (control) {\n control.disable();\n }\n });\n }\n }, 10);\n }\n}\n","export enum ScreenStateEnum {\n READ_ONLY = 'READ_ONLY',\n DETAIL = 'DETAIL',\n SEARCH = 'SEARCH',\n CUSTOM = 'CUSTOM',\n}\n\nexport enum StateUtilsEnum {\n REMOVE = 'removeState',\n ADD = 'addState',\n DUPLICATE = 'duplicateState',\n EDIT = 'editState',\n EDIT_AFTER_ERROR = 'editAfterErrorState',\n ADD_AFTER_ERROR = 'addAfterErrorState',\n SAVE = 'afterSaveState',\n}\n","import { AbstractEntity } from '../abstract/abstract.entity';\n\nexport class ViewModelEntity extends AbstractEntity {\n constructor(entity: Record<string, unknown>) {\n super();\n this.clone(entity as unknown as AbstractEntity);\n }\n}\n","import {\n AfterViewInit,\n Component,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ScreenStateEnum } from '../../config/screen-state.enum';\nimport { ViewModelEntity } from '../../entities/view-model.entity';\nimport { AbstractScreenComponent } from './abstract-screen.component';\nimport { Location } from '@angular/common';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n template: '',\n})\nexport abstract class AbstractDetailScreenComponent\n extends AbstractScreenComponent\n implements AfterViewInit, OnInit, OnDestroy\n{\n protected readonly screenState = ScreenStateEnum.DETAIL;\n\n entity: any = {};\n entityId: any;\n editionState = false;\n duplicateMode = false;\n\n private location = inject(Location);\n protected injector = inject(Injector);\n private serviceInstance: any;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.serviceInstance = this.injector.get(this.getConfig()!.SERVICE as any);\n\n const screenConfig = this.getConfig();\n if (screenConfig) {\n const hasDynamicRefs = (screenConfig.DETAILS_REFERENTIALS_KEYS?.length ?? 0) > 0;\n const hasStaticLists = (screenConfig.DETAILS_STATIC_LISTS?.length ?? 0) > 0;\n\n if (hasDynamicRefs) {\n this.initializeReferenceKeys(screenConfig.DETAILS_REFERENTIALS_KEYS);\n }\n if (hasStaticLists) {\n this.initializeStaticLists(screenConfig.DETAILS_STATIC_LISTS);\n }\n if (hasDynamicRefs || hasStaticLists) {\n this.loadReferenceData(screenConfig.REF_DATA_OPTIONS);\n }\n }\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n combineLatest([this.route.paramMap, this.route.queryParamMap]).subscribe(\n ([params, queryParams]) => {\n this.entityId = params.get('id');\n this.duplicateMode = queryParams.get('mode') === 'duplicate';\n this.context.duplicateMode = this.duplicateMode;\n\n if (this.entityId) {\n this.editionState = !this.duplicateMode;\n this.loadData();\n } else {\n this.editionState = false;\n this.duplicateMode = false;\n this.context.duplicateMode = false;\n }\n },\n );\n }\n\n public loadData(): void {\n try {\n this.serviceInstance.get(this.entityId).subscribe({\n next: (result: any) => {\n this.entity = new ViewModelEntity(result);\n this.entity.id = this.entityId;\n this.afterLoad();\n },\n error: (_error: any) => {\n // Errors handled by global error handler\n },\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n protected afterLoad() {\n this.changeDetector.detectChanges();\n }\n\n abstract beforeSave(): void;\n\n save() {\n try {\n this.beforeSave();\n this.clearServerErrors();\n\n const isCreateOperation = !this.editionState || this.duplicateMode;\n const entityToSave = this.duplicateMode\n ? this.prepareEntityForDuplication()\n : this.entity;\n\n const saveOperation = isCreateOperation\n ? this.serviceInstance.create(entityToSave)\n : this.serviceInstance.update(this.entityId, this.entity);\n\n saveOperation.subscribe({\n next: (response: any) => {\n if (response && response.errors && response.errors.length > 0) {\n this.handleErrors(response.errors);\n } else {\n this.toastService.showSuccess();\n this.afterSave(response);\n }\n },\n error: (response: any) => {\n console.log(response);\n if (response.errors) {\n this.setServerErrors(response.errors);\n this.setFormErrors(response.errors);\n this.onSaveError(response.errors);\n }\n },\n });\n } catch (error: any) {\n this.toastService.showError(\n error?.message || \"Une erreur est survenue lors de l'enregistrement\",\n );\n }\n }\n\n protected onSaveError(_errors: { [key: string]: string[] }) {\n // Override in subclass to handle validation errors\n }\n\n protected afterSave(result: any) {\n const screenConfig = this.getConfig();\n if (screenConfig?.INVALIDATE_KEYS_ON_SAVE) {\n this.invalidateReferences(screenConfig.INVALIDATE_KEYS_ON_SAVE);\n\n if (screenConfig.REFRESH_ON_SAVE) {\n this.refreshReferenceData(screenConfig.INVALIDATE_KEYS_ON_SAVE);\n }\n }\n\n if (!this.editionState || this.duplicateMode) {\n const baseUrl = this.currentUrl.split('?')[0];\n const detailsIndex = baseUrl.indexOf('/details');\n const cleanBaseUrl =\n detailsIndex !== -1\n ? baseUrl.substring(0, detailsIndex + '/details'.length)\n : baseUrl;\n this.router.navigate([cleanBaseUrl, result]);\n return;\n }\n }\n\n protected prepareEntityForDuplication(): any {\n const duplicatedEntity = { ...this.entity };\n delete duplicatedEntity.id;\n delete duplicatedEntity.Id;\n return this.customizeDuplicatedEntity(duplicatedEntity);\n }\n\n protected customizeDuplicatedEntity(entity: any): any {\n return entity;\n }\n\n duplicate() {\n const baseUrl = this.currentUrl.split('?')[0];\n this.router.navigate([baseUrl], {\n queryParams: { mode: 'duplicate' },\n });\n }\n\n print() {\n // Override in subclass to implement print functionality\n }\n\n delete(): void {\n if (!this.entityId)\n return this.toastService.showError('Item [id] is undefined!');\n\n this.confirmDialogService.confirm(\n 'Êtes-vous sûr de vouloir supprimer ?',\n () =>\n this.serviceInstance.delete(this.entityId).subscribe({\n next: (result: any) => {\n if (result && result.errors && result.errors.length > 0) {\n this.handleErrors(result.errors);\n } else {\n this.toastService.showSuccess();\n this.navigateBack();\n }\n },\n error: () => {\n // Errors handled by global error handler\n },\n }),\n () => {\n // User cancelled deletion\n },\n );\n }\n\n navigateBack() {\n const currentUrl = this.router.url.split('?')[0];\n const detailsIndex = currentUrl.indexOf('/details');\n if (detailsIndex !== -1) {\n this.router.navigate([currentUrl.substring(0, detailsIndex)]);\n } else {\n this.location.back();\n }\n }\n}\n","import { AbstractEntity } from '../abstract/abstract.entity';\n\nexport enum SortDirectionEnum {\n ASC = 'Ascending',\n DESC = 'Descending',\n DEFAULT_SORT_FIELD = 'id',\n}\n\nexport enum PaginationEnum {\n DEFAULT_PAGE = 1,\n DEFAULT_PAGE_SIZE = 10,\n}\n\nexport class SearchEntity extends AbstractEntity {\n pagination: { pageNumber: number; pageSize: number } = {\n pageNumber: PaginationEnum.DEFAULT_PAGE,\n pageSize: PaginationEnum.DEFAULT_PAGE_SIZE,\n };\n\n sort: Array<{ field: string; sortDirection: string }> = [];\n\n totalPages = 0;\n totalCount = 0;\n items: AbstractEntity[] = [];\n start: Date | null = null;\n end: Date | null = null;\n startEndDateRanges: Date[] | null = null;\n\n constructor(entity: Record<string, unknown>) {\n super();\n this.buildEntity(entity);\n\n if (!this.pagination) {\n this.pagination = {\n pageNumber: PaginationEnum.DEFAULT_PAGE,\n pageSize: PaginationEnum.DEFAULT_PAGE_SIZE,\n };\n }\n\n if (!this.sort) {\n this.sort = [{ field: SortDirectionEnum.DEFAULT_SORT_FIELD, sortDirection: SortDirectionEnum.DESC }];\n }\n\n if (!this.startEndDateRanges && entity['start'] && entity['end']) {\n this.startEndDateRanges = [new Date(entity['start'] as string), new Date(entity['end'] as string)];\n }\n }\n\n getSearchCriteria(): Record<string, unknown> {\n const { items: _items, totalPages: _totalPages, totalCount: _totalCount, ...criteria } = this;\n return criteria;\n }\n}\n","import {\n AfterViewInit,\n Component,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ScreenStateEnum } from '../../config/screen-state.enum';\nimport { ViewModelEntity } from '../../entities/view-model.entity';\nimport { SearchEntity, SortDirectionEnum } from '../../entities/search.entity';\nimport { AbstractScreenComponent } from './abstract-screen.component';\nimport { Table, TableLazyLoadEvent } from 'primeng/table';\nimport { take } from 'rxjs';\n\n/**\n * Column definition interface for ef-datatable integration.\n * Kept minimal here to avoid circular dependency on @elasticias/ui.\n */\nexport interface ScreenDatatableColumn {\n field: string;\n header: string;\n type?: string;\n [key: string]: any;\n}\n\n@Component({\n template: '',\n standalone: true,\n})\nexport abstract class AbstractSearchScreenComponent\n extends AbstractScreenComponent\n implements AfterViewInit, OnInit, OnDestroy\n{\n protected readonly screenState = ScreenStateEnum.SEARCH;\n\n @ViewChild('pTable') pTable!: Table;\n\n entity: any = new ViewModelEntity({});\n searchEntity = new SearchEntity(this.entity);\n enableDateRangeFilter = true;\n isLazySearch = true;\n lastSearchEvent: TableLazyLoadEvent | null = null;\n\n tableColumns: any[] = [];\n\n protected injector = inject(Injector);\n private serviceInstance: any;\n private isInitialLoad = true;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.serviceInstance = this.injector.get(this.getConfig()!.SERVICE as any);\n\n this.tableColumns = this.getTableColumns();\n\n const screenConfig = this.getConfig();\n const hasDynamicRefs = (screenConfig?.SEARCH_REFERENTIALS_KEYS?.length ?? 0) > 0;\n const hasStaticLists = (screenConfig?.SEARCH_STATIC_LISTS?.length ?? 0) > 0;\n\n if (hasDynamicRefs || hasStaticLists) {\n if (hasDynamicRefs) {\n this.initializeReferenceKeys(screenConfig!.SEARCH_REFERENTIALS_KEYS);\n }\n\n if (hasStaticLists) {\n this.initializeStaticLists(screenConfig!.SEARCH_STATIC_LISTS);\n }\n\n this.loadReferenceData(screenConfig!.REF_DATA_OPTIONS);\n\n this.refDataLoaded$.pipe(take(1)).subscribe(() => {\n this.triggerSearchIfNeeded();\n });\n } else {\n this.triggerSearchIfNeeded();\n }\n }\n\n protected getTableColumns(): any[] {\n return [];\n }\n\n private triggerSearchIfNeeded() {\n const cachedCriteria = this.cacheService.getCache<any>(this.screenStateKey);\n if (cachedCriteria) {\n this.searchEntity = new SearchEntity(cachedCriteria);\n this.entity.buildEntity(this.searchEntity);\n this.searchEntity.items = [];\n\n if (this.searchEntity.startEndDateRanges) {\n this.entity.startEndDateRanges = [\n new Date(this.searchEntity.start!),\n new Date(this.searchEntity.end!),\n ];\n }\n\n this.changeDetector.detectChanges();\n this.search();\n } else {\n this.search();\n }\n }\n\n onLazyLoad(event: TableLazyLoadEvent): void {\n if (this.isInitialLoad) {\n this.isInitialLoad = false;\n return;\n }\n\n if (this.isReactiveBindingEcho(event)) {\n return;\n }\n\n this.search(event);\n }\n\n private isReactiveBindingEcho(event: TableLazyLoadEvent): boolean {\n if (!this.searchEntity.sort || this.searchEntity.sort.length === 0) {\n return false;\n }\n\n const currentSort = this.searchEntity.sort[0];\n const eventSortField = Array.isArray(event.sortField)\n ? event.sortField[0]\n : event.sortField;\n const eventSortDirection =\n event.sortOrder === 1 ? SortDirectionEnum.ASC : SortDirectionEnum.DESC;\n\n const currentPage = this.searchEntity.pagination?.pageNumber || 1;\n const currentPageSize = this.searchEntity.pagination?.pageSize || 10;\n const eventPage = this.getPageNumber(event);\n const eventPageSize = event.rows || 10;\n\n return (\n currentSort.field === eventSortField &&\n currentSort.sortDirection === eventSortDirection &&\n currentPage === eventPage &&\n currentPageSize === eventPageSize\n );\n }\n\n private prepareSearch(event: TableLazyLoadEvent | null): void {\n this.searchEntity.buildEntity(this.entity);\n const e = event || this.lastSearchEvent || { first: 0, rows: 10 };\n\n this.searchEntity.pagination = {\n pageNumber: this.getPageNumber(e),\n pageSize: e.rows || 10,\n };\n\n if (this.entity.startEndDateRanges) {\n this.searchEntity.start = this.entity.startEndDateRanges[0];\n this.searchEntity.end = this.entity.startEndDateRanges[1];\n } else {\n this.searchEntity.start = null;\n this.searchEntity.end = null;\n }\n\n if (this.isLazySearch) {\n if (e.sortField) {\n const sortField = this.getSortField(e);\n this.searchEntity.sort = [\n {\n field: sortField,\n sortDirection: this.getSortDirection(e),\n },\n ];\n } else if (!this.searchEntity.sort || this.searchEntity.sort.length === 0) {\n const defaultSort = this.getConfig()?.DEFAULT_SORT;\n this.searchEntity.sort = [\n {\n field: defaultSort?.field || 'id',\n sortDirection: defaultSort?.direction || SortDirectionEnum.DESC,\n },\n ];\n }\n }\n }\n\n protected search(event: TableLazyLoadEvent | null = null): void {\n this.prepareSearch(event);\n\n this.serviceInstance.search(this.searchEntity).subscribe({\n next: (result: any) => {\n this.lastSearchEvent = event;\n this.searchEntity = Object.assign(new SearchEntity({}), this.searchEntity, result);\n this.cacheService.setCache(this.screenStateKey, this.searchEntity);\n this.changeDetector.detectChanges();\n },\n error: () => {\n // Errors handled by global error handler\n },\n });\n }\n\n paginate(event: any) {\n const pageNumber = this.getPageNumber(event);\n const pageSize = event.rows;\n\n this.searchEntity.pagination.pageNumber = pageNumber;\n this.searchEntity.pagination.pageSize = pageSize;\n\n if (\n this.searchEntity.items == null ||\n this.searchEntity.items.length === 0\n ) {\n return;\n }\n }\n\n getPageNumber(event: TableLazyLoadEvent): number {\n return event.first != null\n ? Math.floor(event.first / (event.rows || 10)) + 1\n : 1;\n }\n\n getSortField(event: TableLazyLoadEvent): string {\n return Array.isArray(event.sortField)\n ? event.sortField[0]\n : event.sortField || 'id';\n }\n\n getSortDirection(event: TableLazyLoadEvent): string {\n return event.sortOrder === 1\n ? SortDirectionEnum.ASC\n : SortDirectionEnum.DESC;\n }\n\n navigateToDetails(id?: any): void {\n const path =\n id || id === 0\n ? `${this.currentUrl}/details/${id}`\n : `${this.currentUrl}/details`;\n this.router.navigate([path]);\n }\n\n add() {\n this.router.navigate([this.currentUrl.concat('/details')]);\n }\n\n edit(id: any) {\n if (!id) {\n this.toastService.showError('Item [id] is undefined !');\n return;\n }\n this.router.navigate([this.currentUrl.concat('/details/'), id]);\n }\n\n delete(id: any): void {\n if (!id) return this.toastService.showError('Item [id] is undefined!');\n\n this.confirmDialogService.confirm(\n 'Êtes-vous sûr de vouloir supprimer ?',\n () =>\n this.serviceInstance.delete(id).subscribe({\n next: (result: any) => {\n if (result && result.errors && result.errors.length > 0) {\n this.handleErrors(result.errors);\n } else {\n this.search();\n this.toastService.showSuccess();\n }\n },\n error: () => {\n // Errors handled by global error handler\n },\n }),\n () => {\n // User cancelled deletion\n },\n );\n }\n\n duplicate(id: any) {\n if (!id) {\n this.toastService.showError('Item [id] is undefined !');\n return;\n }\n this.router.navigate(\n [this.currentUrl.concat('/details/'), id],\n { queryParams: { mode: 'duplicate' } }\n );\n }\n\n clear(): void {\n this.entity.clearFields();\n this.searchEntity.clearFields();\n this.searchEntity = new SearchEntity({});\n\n this.lastSearchEvent = null;\n this.isInitialLoad = true;\n\n this.cacheService.setCache(this.screenStateKey, this.searchEntity);\n\n if (this.pTable) {\n this.pTable.first = 0;\n this.pTable.reset();\n }\n\n this.changeDetector.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractScreenComponent } from './abstract-screen.component';\n\n@Component({\n template: ''\n})\nexport abstract class AbstractSubScreenComponent extends AbstractScreenComponent {\n protected readonly screenState = null;\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n}\n","import { SortDirectionEnum } from '../entities/search.entity';\n\nexport interface DefaultSort {\n field: string;\n direction: SortDirectionEnum;\n}\n\nexport interface LoadOptions {\n bypassCache?: boolean;\n ttl?: number;\n forceRefresh?: boolean;\n useSql?: boolean;\n}\n\nexport abstract class ScreenConfig {\n SCREEN!: string;\n SERVICE!: unknown;\n\n SEARCH_REFERENTIALS_KEYS!: string[];\n DETAILS_REFERENTIALS_KEYS!: string[];\n\n SEARCH_STATIC_LISTS: string[] = [];\n DETAILS_STATIC_LISTS: string[] = [];\n\n INVALIDATE_KEYS_ON_SAVE?: string[];\n REFRESH_ON_SAVE?: boolean;\n REF_DATA_OPTIONS?: LoadOptions;\n DEFAULT_SORT?: DefaultSort;\n}\n","// Abstract base classes\nexport { AbstractEntity } from './lib/abstract/abstract.entity';\nexport { AbstractComponent } from './lib/abstract/abstract.component';\n\n// Screen abstract components\nexport { AbstractScreenComponent } from './lib/abstract/screen/abstract-screen.component';\nexport { AbstractDetailScreenComponent } from './lib/abstract/screen/abstract-detail-screen.component';\nexport { AbstractSearchScreenComponent } from './lib/abstract/screen/abstract-search-screen.component';\nexport type { ScreenDatatableColumn } from './lib/abstract/screen/abstract-search-screen.component';\nexport { AbstractSubScreenComponent } from './lib/abstract/screen/abstract-sub-screen.component';\n\n// Services\nexport { SCREEN_REF_DATA_SERVICE } from './lib/services/screen-reference-data.service';\nexport type { ScreenReferenceDataService } from './lib/services/screen-reference-data.service';\n\n// Config\nexport { ScreenStateEnum, StateUtilsEnum } from './lib/config/screen-state.enum';\nexport { ScreenConfig } from './lib/config/screen-config';\nexport type { LoadOptions, DefaultSort } from './lib/config/screen-config';\nexport { ScreenContext } from './lib/config/screen-context';\nexport type { ReferenceDataProvider } from './lib/config/screen-context';\n\n// Entities\nexport { SearchEntity, SortDirectionEnum, PaginationEnum } from './lib/entities/search.entity';\nexport { ViewModelEntity } from './lib/entities/view-model.entity';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elasticias/screens",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^21.0.0",
|
|
6
6
|
"@angular/core": "^21.0.0",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"default": "./fesm2022/elasticias-screens.mjs"
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
|
+
"type": "module",
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"tslib": "^2.3.0"
|
|
38
39
|
}
|