@gnggln/ng-ui-system 1.0.0-alpha.14 → 1.0.0-alpha.15

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 (67) hide show
  1. package/crud-table/lib/components/form-builder/form-builder.component.d.ts +2 -0
  2. package/crud-table/lib/components/form-builder/types/field.types.d.ts +9 -2
  3. package/crud-table/lib/core/logging/logger.config.d.ts +18 -0
  4. package/crud-table/lib/core/logging/logger.service.d.ts +75 -0
  5. package/crud-table/lib/core/logging/logger.types.d.ts +70 -0
  6. package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +37 -20
  7. package/esm2022/crud-table/lib/components/form-builder/types/field.types.mjs +1 -1
  8. package/esm2022/crud-table/lib/core/logging/logger.config.mjs +18 -0
  9. package/esm2022/crud-table/lib/core/logging/logger.service.mjs +295 -0
  10. package/esm2022/crud-table/lib/core/logging/logger.types.mjs +7 -0
  11. package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +37 -20
  12. package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +68 -3
  13. package/esm2022/form-builder/lib/components/form-builder/types/field.types.mjs +1 -1
  14. package/esm2022/form-builder/lib/core/logging/logger.config.mjs +18 -0
  15. package/esm2022/form-builder/lib/core/logging/logger.service.mjs +295 -0
  16. package/esm2022/form-builder/lib/core/logging/logger.types.mjs +7 -0
  17. package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +37 -20
  18. package/esm2022/form-builder-editor/lib/components/form-builder/types/field.types.mjs +1 -1
  19. package/esm2022/form-builder-editor/lib/components/form-builder-editor/index.mjs +3 -1
  20. package/esm2022/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  21. package/esm2022/form-builder-editor/lib/core/logging/logger.config.mjs +18 -0
  22. package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +295 -0
  23. package/esm2022/form-builder-editor/lib/core/logging/logger.types.mjs +7 -0
  24. package/esm2022/lib/components/form-builder/form-builder.component.mjs +37 -20
  25. package/esm2022/lib/components/form-builder/form-wizard.component.mjs +68 -3
  26. package/esm2022/lib/components/form-builder/types/field.types.mjs +1 -1
  27. package/esm2022/lib/components/form-builder-editor/index.mjs +3 -1
  28. package/esm2022/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  29. package/esm2022/lib/core/logging/index.mjs +10 -0
  30. package/esm2022/lib/core/logging/logger.config.mjs +18 -0
  31. package/esm2022/lib/core/logging/logger.service.mjs +295 -0
  32. package/esm2022/lib/core/logging/logger.types.mjs +7 -0
  33. package/esm2022/lib/version/ng-ui-system-version.mjs +12 -0
  34. package/esm2022/public-api.mjs +5 -2
  35. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +344 -19
  36. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -1
  37. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +740 -20
  38. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -1
  39. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +410 -21
  40. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -1
  41. package/fesm2022/gnggln-ng-ui-system.mjs +829 -26
  42. package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
  43. package/form-builder/lib/components/form-builder/form-builder.component.d.ts +2 -0
  44. package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +1 -0
  45. package/form-builder/lib/components/form-builder/types/field.types.d.ts +9 -2
  46. package/form-builder/lib/core/logging/logger.config.d.ts +18 -0
  47. package/form-builder/lib/core/logging/logger.service.d.ts +75 -0
  48. package/form-builder/lib/core/logging/logger.types.d.ts +70 -0
  49. package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +2 -0
  50. package/form-builder-editor/lib/components/form-builder/types/field.types.d.ts +9 -2
  51. package/form-builder-editor/lib/components/form-builder-editor/index.d.ts +2 -0
  52. package/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  53. package/form-builder-editor/lib/core/logging/logger.config.d.ts +18 -0
  54. package/form-builder-editor/lib/core/logging/logger.service.d.ts +75 -0
  55. package/form-builder-editor/lib/core/logging/logger.types.d.ts +70 -0
  56. package/lib/components/form-builder/form-builder.component.d.ts +2 -0
  57. package/lib/components/form-builder/form-wizard.component.d.ts +1 -0
  58. package/lib/components/form-builder/types/field.types.d.ts +9 -2
  59. package/lib/components/form-builder-editor/index.d.ts +2 -0
  60. package/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  61. package/lib/core/logging/index.d.ts +8 -0
  62. package/lib/core/logging/logger.config.d.ts +18 -0
  63. package/lib/core/logging/logger.service.d.ts +75 -0
  64. package/lib/core/logging/logger.types.d.ts +70 -0
  65. package/lib/version/ng-ui-system-version.d.ts +9 -0
  66. package/package.json +24 -24
  67. package/public-api.d.ts +2 -0
@@ -44,6 +44,8 @@ export declare class UiFormBuilderComponent implements OnInit, OnChanges, OnDest
44
44
  private readonly blackbox;
45
45
  /** @internal Router inject for BlackBox route context. */
46
46
  private readonly bbRouter;
47
+ /** @internal Optional Logger service — logs form actions when available. */
48
+ private readonly logger;
47
49
  private readonly destroy$;
48
50
  private valueChangeSub?;
49
51
  /** @internal Listener cleanup for BlackBox focus/blur tracking. */
@@ -273,9 +273,16 @@ export interface UiFormFieldDescriptor {
273
273
  searchable?: boolean;
274
274
  /** Mostra pulsante "Seleziona tutto" per multiselect. */
275
275
  allowSelectAll?: boolean;
276
- /** Callback per recupero asincrono di opzioni filtrate per query. */
276
+ /**
277
+ * Con `searchable: true` su `select`/`text`, ogni `input` dell'autocomplete
278
+ * invoca la callback: il risultato sostituisce l'elenco opzioni mostrato.
279
+ */
277
280
  asyncOptions?: (query: string) => Promise<UiFieldOption[]>;
278
- /** Callback per recupero asincrono di opzioni per ID (prevalorizzazione). */
281
+ /**
282
+ * Contratto per risolvere opzioni da id (es. prefill da API). Il Form Builder
283
+ * Angular attuale non invoca questa callback; l'app può comporre le opzioni
284
+ * in `options` o collegarla a logica custom.
285
+ */
279
286
  recoverAsyncValues?: (ids: any[]) => Promise<UiFieldOption[]>;
280
287
  /** Generazione dinamica di opzioni. */
281
288
  dynamicOptions?: UiDynamicOptionsConfig;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @module ng-ui-system/core/logging
3
+ * Configurazione IndexedDB per UiLoggerService.
4
+ * Pattern omologato a action-logger.config.ts del progetto Siform-PAL.
5
+ */
6
+ import type { UiLogLevel } from './logger.types';
7
+ /** Durata default retention log (7 giorni). */
8
+ export declare const UI_LOGGER_DEFAULT_TTL_MS: number;
9
+ /** Nome database IndexedDB. */
10
+ export declare const UI_LOGGER_IDB_NAME = "ng-ui-system-logs";
11
+ /** Versione database (incrementare su schema change). */
12
+ export declare const UI_LOGGER_IDB_VERSION = 1;
13
+ /** Nome object store. */
14
+ export declare const UI_LOGGER_IDB_STORE = "entries";
15
+ /** Max entry totali per cleanup automatico. */
16
+ export declare const UI_LOGGER_MAX_ENTRIES = 10000;
17
+ /** Livelli di log ordinati per severità crescente. */
18
+ export declare const UI_LOGGER_LEVELS: readonly UiLogLevel[];
@@ -0,0 +1,75 @@
1
+ import type { UiLogCategory, UiLogEntry, UiLogFilter, UiLogLevel, UiLogSummary, UiLoggerConfig } from './logger.types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Logger centralizzato per componenti ng-ui-system.
5
+ * Persiste su IndexedDB con cleanup automatico.
6
+ */
7
+ export declare class UiLoggerService {
8
+ private readonly platformId;
9
+ private dbPromise;
10
+ /** Stato toggle runtime. */
11
+ readonly enabled: import("@angular/core").WritableSignal<boolean>;
12
+ /** Configurazione runtime. */
13
+ private config;
14
+ /** True se IndexedDB disponibile e siamo in browser. */
15
+ private idbSupported;
16
+ /** Rileva se logging attivo (default: true in dev se non production). */
17
+ private detectEnabled;
18
+ /** Abilita/disabilita logging runtime. */
19
+ setEnabled(value: boolean): void;
20
+ /** Configura il logger. */
21
+ configure(config: Partial<UiLoggerConfig>): void;
22
+ /**
23
+ * Log generico con controllo enabled e livello.
24
+ */
25
+ log(category: UiLogCategory, level: UiLogLevel, action: string, payload?: Record<string, unknown>, duration?: number): void;
26
+ /**
27
+ * Log azione form (submit, reset, valueChange, etc).
28
+ */
29
+ logFormAction(action: 'init' | 'submit' | 'reset' | 'valueChange' | 'validationChange' | 'customEvent' | 'destroy', payload: {
30
+ schemaId: string;
31
+ [key: string]: unknown;
32
+ }): void;
33
+ /**
34
+ * Log azione wizard (stepChange, complete, validationFailed, etc).
35
+ */
36
+ logWizardAction(action: 'init' | 'stepChange' | 'stepComplete' | 'stepValidationFailed' | 'complete' | 'navigation' | 'save' | 'valueChange' | 'keyboardNavigation' | 'destroy', payload: {
37
+ wizardId?: string;
38
+ step?: number;
39
+ [key: string]: unknown;
40
+ }): void;
41
+ /**
42
+ * Log errore.
43
+ */
44
+ logError(error: Error | unknown, context?: Record<string, unknown>): void;
45
+ /**
46
+ * Log debug (solo se enabled e minLevel <= debug).
47
+ */
48
+ debug(category: UiLogCategory, action: string, payload?: Record<string, unknown>): void;
49
+ private persist;
50
+ /** Recupera userId da localStorage se disponibile. */
51
+ private getUserId;
52
+ /** Verifica se il livello deve essere loggato in base a minLevel. */
53
+ private shouldLogLevel;
54
+ /**
55
+ * Recupera log con filtri.
56
+ */
57
+ query(filter?: UiLogFilter): Promise<UiLogEntry[]>;
58
+ /**
59
+ * Riepilogo log per dashboard.
60
+ */
61
+ summary(): Promise<UiLogSummary>;
62
+ /**
63
+ * Cancella log più vecchi di TTL.
64
+ */
65
+ purgeOld(): Promise<number>;
66
+ /**
67
+ * Cancella tutti i log.
68
+ */
69
+ clear(): Promise<void>;
70
+ private openDb;
71
+ private cleanupIfNeeded;
72
+ private applyFilter;
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiLoggerService, never>;
74
+ static ɵprov: i0.ɵɵInjectableDeclaration<UiLoggerService>;
75
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @module ng-ui-system/core/logging
3
+ * Tipologie per il sistema di logging centralizzato della libreria.
4
+ * Pattern omologato a ActionLoggerService del progetto Siform-PAL.
5
+ */
6
+ /**
7
+ * Categorie di log per filtraggio e organizzazione.
8
+ */
9
+ export type UiLogCategory = 'form' | 'wizard' | 'navigation' | 'system' | 'error';
10
+ /**
11
+ * Livelli di severità log.
12
+ */
13
+ export type UiLogLevel = 'debug' | 'info' | 'warn' | 'error';
14
+ /**
15
+ * Entry singola nel log. Persistita su IndexedDB.
16
+ */
17
+ export interface UiLogEntry {
18
+ /** ID univoco (timestamp + random). */
19
+ id: string;
20
+ /** Categoria log. */
21
+ category: UiLogCategory;
22
+ /** Livello severità. */
23
+ level: UiLogLevel;
24
+ /** Azione/etichetta descrittiva (es. 'form_submit', 'step_change'). */
25
+ action: string;
26
+ /** Payload dati (schema id, step, valori, errori). */
27
+ payload?: Record<string, unknown>;
28
+ /** Timestamp creazione (ms). */
29
+ timestamp: number;
30
+ /** Durata operazione (ms), opzionale. */
31
+ duration?: number;
32
+ /** URL corrente al momento del log. */
33
+ url: string;
34
+ /** User ID se disponibile. */
35
+ userId?: string;
36
+ }
37
+ /**
38
+ * Filtri per query log.
39
+ */
40
+ export interface UiLogFilter {
41
+ category?: UiLogCategory;
42
+ level?: UiLogLevel;
43
+ action?: string;
44
+ from?: number;
45
+ to?: number;
46
+ limit?: number;
47
+ }
48
+ /**
49
+ * Riepilogo log per UI admin/debug.
50
+ */
51
+ export interface UiLogSummary {
52
+ total: number;
53
+ byCategory: Record<UiLogCategory, number>;
54
+ byLevel: Record<UiLogLevel, number>;
55
+ oldest: number;
56
+ newest: number;
57
+ }
58
+ /**
59
+ * Configurazione runtime del logger.
60
+ */
61
+ export interface UiLoggerConfig {
62
+ /** Abilita/disabilita logging. Default: true in dev, false in production. */
63
+ enabled: boolean;
64
+ /** Livello minimo da loggare. */
65
+ minLevel: UiLogLevel;
66
+ /** Durata retention log in ms. Default: 7 giorni. */
67
+ ttlMs: number;
68
+ /** Max entry totali per cleanup automatico. */
69
+ maxEntries: number;
70
+ }