wuic-framework-lib 1.1.0 → 1.2.0

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.
Files changed (16) hide show
  1. package/fesm2022/{wuic-framework-lib-chart-list.component-C9_EDkGu.mjs → wuic-framework-lib-chart-list.component-B1V8Q-Qq.mjs} +2 -2
  2. package/fesm2022/{wuic-framework-lib-code-editor.component-D_p7LGSQ.mjs → wuic-framework-lib-code-editor.component-4N95qt3D.mjs} +24 -3
  3. package/fesm2022/{wuic-framework-lib-designer.component-Dx6RraAn.mjs → wuic-framework-lib-designer.component-pW1YK-oY.mjs} +2 -2
  4. package/fesm2022/{wuic-framework-lib-first-run-wizard.component-Cp8IKDb9.mjs → wuic-framework-lib-first-run-wizard.component-CaGePYLi.mjs} +12 -2
  5. package/fesm2022/{wuic-framework-lib-framework-docs.component-CxckBsIX.mjs → wuic-framework-lib-framework-docs.component-m0IlS0Sl.mjs} +3 -3
  6. package/fesm2022/{wuic-framework-lib-pivot-builder.component-C-ceJi48.mjs → wuic-framework-lib-pivot-builder.component-VIs0CIH_.mjs} +11 -8
  7. package/fesm2022/{wuic-framework-lib-prompt-dialog-fallback-host.component-DPZCgxOB.mjs → wuic-framework-lib-prompt-dialog-fallback-host.component-Dm9GTZ07.mjs} +2 -2
  8. package/fesm2022/{wuic-framework-lib-report-designer.component-3-hUYft8.mjs → wuic-framework-lib-report-designer.component-FiAwNkPM.mjs} +2 -2
  9. package/fesm2022/{wuic-framework-lib-report-viewer.component-D4QD_wPl.mjs → wuic-framework-lib-report-viewer.component-DY0dGMrt.mjs} +2 -2
  10. package/fesm2022/{wuic-framework-lib-scheduler-list.component-C0nY8Wd6.mjs → wuic-framework-lib-scheduler-list.component-3E5m-9Qd.mjs} +31 -5
  11. package/fesm2022/{wuic-framework-lib-spreadsheet-list-sf.component-C9sWgq61.mjs → wuic-framework-lib-spreadsheet-list-sf.component-D9P9WbDl.mjs} +42 -22
  12. package/fesm2022/{wuic-framework-lib-workflow-designer.component-8mv_Rbz9.mjs → wuic-framework-lib-workflow-designer.component-4RC2EkGA.mjs} +23 -3
  13. package/fesm2022/{wuic-framework-lib-wuic-framework-lib-DJZAYFw8.mjs → wuic-framework-lib-wuic-framework-lib-BSyGhpM1.mjs} +251 -39
  14. package/fesm2022/wuic-framework-lib.mjs +1 -1
  15. package/package.json +1 -1
  16. package/types/wuic-framework-lib.d.ts +56 -1
@@ -1,2 +1,2 @@
1
- export { s as AUTH_REDIRECT_REASON_KEY, t as AppSettingsEditorComponent, n as AuthSessionService, B as BooleanEditorComponent, u as BoundedRepeaterComponent, v as ButtonEditorComponent, C as CallbackPipe, w as CallbackPipe2, x as CarouselListComponent, y as CodeAreaEditorComponent, z as ColorEditorComponent, E as CrashReporterService, H as CustomAttributesService, J as CustomException, K as DataActionButtonComponent, N as DataProviderOdataService, c as DataRepeaterComponent, b as DataSourceComponent, O as DateEditorComponent, Q as DesignerRouteComponent, R as DictionaryEditorComponent, a as DynamicCompilerService, S as DynamicRowTemplateComponent, i as FieldEditorComponent, F as FilterBarComponent, o as FilterInfo, V as FormatGridViewValuePipe, X as GetSrcUploadPreviewPipe, G as GlobalHandler, Y as HtmlEditorComponent, Z as ImageWrapperComponent, I as ImportExportButtonComponent, _ as IsSelectedRowPipe, $ as KanbanListComponent, a0 as KanbanOptions, a1 as KanbanStatusColumnItem, a2 as LazyChartListComponent, a3 as LazyCodeEditorComponent, a4 as LazyDataActionButtonComponent, a5 as LazyDataSourceComponent, a6 as LazyFieldEditorComponent, a7 as LazyFirstRunWizardComponent, a8 as LazyImageWrapperComponent, a9 as LazyKanbanListComponent, aa as LazyMetaMenuComponent, ab as LazyPivotBuilderComponent, ac as LazyReportDesignerComponent, ad as LazyReportViewerComponent, ae as LazySchedulerListComponent, af as LazySpreadsheetListSfComponent, p as LicenseFeatureService, ag as ListGridComponent, ah as LookupEditorComponent, ai as MapListComponent, m as MetaInfo, aj as MetaMenuComponent, g as MetadataEditorService, M as MetadataProviderService, e as MetadatiColonna, ak as MetadatiTabella, al as NotificationBellComponent, am as NotificationRealtimeService, an as NumberEditorComponent, ao as PRIMARY_PALETTES, P as PagerComponent, d as ParametricDialogComponent, ap as PropertyArrayEditorComponent, aq as PropertyObjectEditorComponent, ar as THEME_OPTIONS, as as TextAreaEditorComponent, at as TextEditorComponent, T as TranslationManagerService, au as TreeListComponent, av as TreeViewSelectorComponent, aw as UploadDialogComponent, ax as UploadEditorComponent, U as UserInfoService, ay as ValidationRule, az as ValueChangedPayload, aA as VisibleFieldListPipe, aB as WidgetDefinition, aC as WorkflowDesignerRouteComponent, aD as WorkflowRunnerComponent, h as WorkflowRuntimeMetadataService, W as WtoolboxService, aE as WuicAziendaSwitcherComponent, aF as WuicErrorDialogComponent, aG as WuicErrorInterceptor, aH as WuicFeatureDirective, aI as WuicFrozenColumnDirective, aJ as WuicRagChatbotComponent, aK as WuicRagChatbotFabComponent, aL as WuicRagService, aM as WuicRowTogglerDirective, aN as _PRIMENG_TABLE_DIRECTIVES_NAMES, aO as authExpiredInterceptor, aP as boundedRepeaterPendingChangesGuard, aQ as featureRouteCanActivateGuard, aR as featureRouteCanMatchGuard, r as getThemeOptions, aS as getThemePrimaryHex, aT as inferTemplateFieldFromBaseClass, aU as loadBooleanEditorComponent, aV as loadButtonEditorComponent, aW as loadCodeAreaEditorComponent, aX as loadColorEditorComponent, aY as loadDateEditorComponent, aZ as loadDictionaryEditorComponent, a_ as loadHtmlEditorComponent, a$ as loadLookupEditorComponent, b0 as loadNumberEditorComponent, b1 as loadPropertyArrayEditorComponent, b2 as loadPropertyObjectEditorComponent, b3 as loadTextAreaEditorComponent, b4 as loadTextEditorComponent, b5 as loadTreeViewSelectorComponent, b6 as loadUploadEditorComponent, b7 as menuRouteAccessCanActivateGuard, b8 as menuRouteAccessCanMatchGuard, b9 as routes, ba as wuicErrorInterceptor } from './wuic-framework-lib-wuic-framework-lib-DJZAYFw8.mjs';
1
+ export { s as AUTH_REDIRECT_REASON_KEY, t as AppSettingsEditorComponent, n as AuthSessionService, B as BooleanEditorComponent, u as BoundedRepeaterComponent, v as ButtonEditorComponent, C as CallbackPipe, w as CallbackPipe2, x as CarouselListComponent, y as CodeAreaEditorComponent, z as ColorEditorComponent, E as CrashReporterService, H as CustomAttributesService, J as CustomException, K as DataActionButtonComponent, N as DataProviderOdataService, c as DataRepeaterComponent, b as DataSourceComponent, O as DateEditorComponent, Q as DesignerRouteComponent, R as DictionaryEditorComponent, a as DynamicCompilerService, S as DynamicRowTemplateComponent, i as FieldEditorComponent, F as FilterBarComponent, o as FilterInfo, V as FormatGridViewValuePipe, X as GetSrcUploadPreviewPipe, G as GlobalHandler, Y as HtmlEditorComponent, Z as ImageWrapperComponent, I as ImportExportButtonComponent, _ as IsSelectedRowPipe, $ as KanbanListComponent, a0 as KanbanOptions, a1 as KanbanStatusColumnItem, a2 as LazyChartListComponent, a3 as LazyCodeEditorComponent, a4 as LazyDataActionButtonComponent, a5 as LazyDataSourceComponent, a6 as LazyFieldEditorComponent, a7 as LazyFirstRunWizardComponent, a8 as LazyImageWrapperComponent, a9 as LazyKanbanListComponent, aa as LazyMetaMenuComponent, ab as LazyPivotBuilderComponent, ac as LazyReportDesignerComponent, ad as LazyReportViewerComponent, ae as LazySchedulerListComponent, af as LazySpreadsheetListSfComponent, p as LicenseFeatureService, ag as ListGridComponent, ah as LookupEditorComponent, ai as MapListComponent, m as MetaInfo, aj as MetaMenuComponent, g as MetadataEditorService, M as MetadataProviderService, e as MetadatiColonna, ak as MetadatiTabella, al as NotificationBellComponent, am as NotificationRealtimeService, an as NumberEditorComponent, ao as PRIMARY_PALETTES, P as PagerComponent, d as ParametricDialogComponent, ap as PropertyArrayEditorComponent, aq as PropertyObjectEditorComponent, ar as THEME_OPTIONS, as as TextAreaEditorComponent, at as TextEditorComponent, T as TranslationManagerService, au as TreeListComponent, av as TreeViewSelectorComponent, aw as UploadDialogComponent, ax as UploadEditorComponent, U as UserInfoService, ay as ValidationRule, az as ValueChangedPayload, aA as VisibleFieldListPipe, aB as WidgetDefinition, aC as WorkflowDesignerRouteComponent, aD as WorkflowRunnerComponent, h as WorkflowRuntimeMetadataService, W as WtoolboxService, aE as WuicAziendaSwitcherComponent, aF as WuicErrorDialogComponent, aG as WuicErrorInterceptor, aH as WuicFeatureDirective, aI as WuicFrozenColumnDirective, aJ as WuicRagChatbotComponent, aK as WuicRagChatbotFabComponent, aL as WuicRagService, aM as WuicRowTogglerDirective, aN as _PRIMENG_TABLE_DIRECTIVES_NAMES, aO as authExpiredInterceptor, aP as boundedRepeaterPendingChangesGuard, aQ as featureRouteCanActivateGuard, aR as featureRouteCanMatchGuard, r as getThemeOptions, aS as getThemePrimaryHex, aT as inferTemplateFieldFromBaseClass, aU as loadBooleanEditorComponent, aV as loadButtonEditorComponent, aW as loadCodeAreaEditorComponent, aX as loadColorEditorComponent, aY as loadDateEditorComponent, aZ as loadDictionaryEditorComponent, a_ as loadHtmlEditorComponent, a$ as loadLookupEditorComponent, b0 as loadNumberEditorComponent, b1 as loadPropertyArrayEditorComponent, b2 as loadPropertyObjectEditorComponent, b3 as loadTextAreaEditorComponent, b4 as loadTextEditorComponent, b5 as loadTreeViewSelectorComponent, b6 as loadUploadEditorComponent, b7 as menuRouteAccessCanActivateGuard, b8 as menuRouteAccessCanMatchGuard, b9 as routes, ba as wuicErrorInterceptor } from './wuic-framework-lib-wuic-framework-lib-BSyGhpM1.mjs';
2
2
  //# sourceMappingURL=wuic-framework-lib.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wuic-framework-lib",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Wuic Angular Framework Library",
5
5
  "author": "Wuic",
6
6
  "license": "MIT",
@@ -560,6 +560,24 @@ declare class TranslationManagerService {
560
560
  private backendRetryTimer?;
561
561
  private firstRunStatusChecked;
562
562
  private firstRunStatusValue;
563
+ /**
564
+ * Circuit breaker BE-offline: dopo {@link MAX_BACKEND_RETRIES} fallimenti
565
+ * consecutivi di `loadTranslations`, smettiamo di rischedulare il retry
566
+ * automatico. Con il vecchio loop a 1s, un BE offline generava ~60 chiamate
567
+ * fallite/min (vedi screenshot 2026-05-19: 318 errori console + ~190 XHR in
568
+ * pochi secondi). Ora dopo 5 fallimenti il timer si ferma e l'utente vede
569
+ * un banner globale "Backend offline" + bottone "Riprova" che chiama
570
+ * `retryBackendNow()` per resettare il circuito.
571
+ *
572
+ * Reset condizioni:
573
+ * - chiamata esplicita a `ensureTranslationsLoaded(true)` (forceReload);
574
+ * - chiamata esplicita a `retryBackendNow()` (bottone UI);
575
+ * - prima chiamata con successo (counter back to 0).
576
+ */
577
+ private static readonly MAX_BACKEND_RETRIES;
578
+ private consecutiveBackendFailures;
579
+ /** True quando MAX_BACKEND_RETRIES e' stato raggiunto → niente piu' retry automatici. */
580
+ backendCircuitOpen$: BehaviorSubject<boolean>;
563
581
  /**
564
582
  * Dedup set per i warning "Missing translation resource". Senza questo
565
583
  * Angular ChangeDetection invoca `instant(key)` ad ogni ciclo per ogni
@@ -663,6 +681,14 @@ declare class TranslationManagerService {
663
681
  * Legge/scrive dati persistenti su storage browser.
664
682
  */
665
683
  loadTranslations(): Promise<void>;
684
+ /**
685
+ * Reset esplicito del circuit breaker BE-offline + retry immediato.
686
+ * Da chiamare quando l'utente clicca "Riprova" sul banner offline, o
687
+ * quando un altro servizio rileva che il BE e' tornato online (es. ping
688
+ * health check, network 'online' event, ecc.). NON usare in retry loops
689
+ * automatici — il senso del breaker e' proprio fermarli.
690
+ */
691
+ retryBackendNow(): void;
666
692
  /**
667
693
  * Revalidate background: rifetcha la tabella traduzioni dal backend SENZA
668
694
  * bloccare l'UI. Confronta size + contenuto (hash leggero su `id,resource,
@@ -1129,6 +1155,18 @@ declare class DataSourceComponent implements OnInit, OnDestroy {
1129
1155
  private aRoute;
1130
1156
  private userInfo;
1131
1157
  private static readonly liveInstances;
1158
+ /**
1159
+ * Riferimento al DOM host element. Iniettato via `inject()` (Angular 14+ functional
1160
+ * DI) invece che da costruttore per non rompere i call site manuali tipo
1161
+ * `new DataSourceComponent(metaSrv, dataSrv, ...)` in designer.component.ts
1162
+ * e metadata-editor.service.ts (che mantengono i 7 params posizionali storici).
1163
+ * `{ optional: true }` rende il field null fuori da un Angular DI context
1164
+ * (es. unit test che istanziano la classe a mano) — il consumo in ngOnInit
1165
+ * usa `?.nativeElement` per sopportare entrambi i path.
1166
+ * Scopo: esporre `this` su `host.__wuicCmp` per E2E introspection senza
1167
+ * dipendere da `window.ng.getComponent` (tree-shaken in prod build).
1168
+ */
1169
+ private elementRef;
1132
1170
  static getLiveInstances(): DataSourceComponent[];
1133
1171
  /**
1134
1172
  * Input dal componente padre per route; usata nella configurazione e nel rendering del componente.
@@ -10546,6 +10584,13 @@ declare class MetaMenuComponent implements OnInit, AfterViewInit, OnDestroy {
10546
10584
  * tradotti, che e' un'esperienza confusa.
10547
10585
  */
10548
10586
  translationsLoaded$: Observable<boolean>;
10587
+ /**
10588
+ * Stato circuit breaker BE-offline esposto dal TranslationManagerService.
10589
+ * Quando true → mostriamo il banner "Backend offline" + bottone "Riprova"
10590
+ * al posto dello spinner "Loading…" altrimenti infinito. Il click sul
10591
+ * bottone chiama `retryBackend()` che riarma il circuito e ritenta.
10592
+ */
10593
+ backendCircuitOpen$: Observable<boolean>;
10549
10594
  /**
10550
10595
  * Proprieta di stato del componente per auth return url, usata dalla logica interna e dal template.
10551
10596
  */
@@ -10627,6 +10672,14 @@ declare class MetaMenuComponent implements OnInit, AfterViewInit, OnDestroy {
10627
10672
  * @param workflowRuntimeMenu Stream dei menu runtime da fondere con il menu base.
10628
10673
  */
10629
10674
  constructor(metaSrv: MetadataProviderService, authSession: AuthSessionService, trslSrv: TranslationManagerService, userInfo: UserInfoService, workflowRuntimeMenu: WorkflowRuntimeMenuService, http: HttpClient, ngZone: NgZone, router: Router, licenseFeature: LicenseFeatureService, elementRef: ElementRef);
10675
+ /**
10676
+ * Handler del bottone "Riprova" del banner BE-offline. Resetta il circuit
10677
+ * breaker nel TranslationManagerService e tenta immediatamente una nuova
10678
+ * fetch di `MetaService.GetTranslation`. Se il BE e' di nuovo online il
10679
+ * banner sparisce e parte lo spinner standard; se il BE e' ancora offline,
10680
+ * dopo altri 5 fallimenti consecutivi il banner riappare.
10681
+ */
10682
+ retryBackend(): void;
10630
10683
  /**
10631
10684
  * Completa inizializzazione dopo il rendering della view e collega riferimenti UI.
10632
10685
  */
@@ -13337,6 +13390,8 @@ declare class KanbanListComponent implements OnInit, OnDestroy, IDataBoundHostCo
13337
13390
  private trslSrv;
13338
13391
  private dataProviderSrv;
13339
13392
  private userInfo;
13393
+ private cdr;
13394
+ private ngZone;
13340
13395
  hardcodedRoute: string;
13341
13396
  parentRecord: any;
13342
13397
  parentMetaInfo: MetaInfo;
@@ -13384,7 +13439,7 @@ declare class KanbanListComponent implements OnInit, OnDestroy, IDataBoundHostCo
13384
13439
  private datasourceReadySubscription?;
13385
13440
  private fetchInfoSubscription?;
13386
13441
  private pendingChanges;
13387
- constructor(router: Router, trslSrv: TranslationManagerService, dataProviderSrv: DataProviderService, userInfo: UserInfoService);
13442
+ constructor(router: Router, trslSrv: TranslationManagerService, dataProviderSrv: DataProviderService, userInfo: UserInfoService, cdr: ChangeDetectorRef, ngZone: NgZone);
13388
13443
  private t;
13389
13444
  ngOnInit(): void;
13390
13445
  ngOnDestroy(): void;