@esfaenza/flow-builder 20.3.10 → 20.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -708,6 +708,23 @@ interface FlowFieldValue {
708
708
  value: string;
709
709
  label?: string | null;
710
710
  }
711
+ /**
712
+ * §4.6 — un valore di un tipo di enumerazione: la risposta di
713
+ * `GET /catalog/enum-types/{name}/values`, dove `{name}` e' l'`objectType` della risorsa.
714
+ *
715
+ * Cio' che si scrive in `enumValue` e' il **nome** (§4.2): `numericValue` e' informativo — serve a
716
+ * riconoscere il valore in dati legacy — e non va mai messo nel documento, perche' un numero lì
717
+ * verrebbe letto come un altro tipo (§13.18).
718
+ *
719
+ * `name` e' il campo del valore, non `value` come in {@link FlowFieldValue}: sono due cataloghi
720
+ * diversi (i valori di un campo di schema contro i valori di un tipo enum) e leggere l'uno con la
721
+ * forma dell'altro darebbe un elenco di `undefined` senza nessun errore.
722
+ */
723
+ interface FlowEnumValue {
724
+ name: string;
725
+ label?: string | null;
726
+ numericValue?: number | null;
727
+ }
711
728
  /**
712
729
  * §4.7 — un membro di una classe utilizzabile come `Structure`.
713
730
  *
@@ -880,13 +897,12 @@ interface FlowReference {
880
897
  isWritable?: boolean;
881
898
  description?: string | null;
882
899
  }
883
- /** Filtro opzionale per non trasferire riferimenti che il campo non accetta. */
884
- interface FlowReferenceQuery {
885
- definition: FlowDefinition;
886
- dataType?: FlowDataType;
887
- isCollection?: boolean;
888
- objectType?: string;
889
- }
900
+ /**
901
+ * Non esiste un `FlowReferenceQuery`: il body di `POST /flows/references` e
902
+ * `POST /flows/references/writable` e' il **documento nudo**, senza involucro e senza campi di
903
+ * filtro (§6.4, §13.17). La risposta porta tutti i riferimenti col proprio tipo, e la
904
+ * compatibilita' col campo la decide l'editor con `filterReferences` (`core/reference-filter.util`).
905
+ */
890
906
  interface FlowConnectorTarget {
891
907
  name: string;
892
908
  label?: string | null;
@@ -1188,8 +1204,12 @@ declare abstract class FlowBuilderApi {
1188
1204
  * `POST /flows/references` — i valori proponibili in un campo che accetta una risorsa.
1189
1205
  * Include gli **output automatici** degli elementi, che non sono dichiarati in nessuna
1190
1206
  * collection: e' il motivo per cui non va ricostruita lato client (§4.5, §13.3).
1207
+ *
1208
+ * Prende il **documento nudo** e restituisce **tutti** i riferimenti: nel body non c'e' nessun
1209
+ * filtro di tipo, e la compatibilita' col campo la decide l'editor (§6.4, §13.17). Cosi' la
1210
+ * stessa risposta serve tutte le tendine di una schermata.
1191
1211
  */
1192
- abstract getReferences(query: FlowReferenceQuery): Promise<FlowReference[]>;
1212
+ abstract getReferences(definition: FlowDefinition): Promise<FlowReference[]>;
1193
1213
  /**
1194
1214
  * `POST /flows/references/writable` — le variabili **piu' le globali assegnabili**, per i
1195
1215
  * campi di destinazione. Le globali assegnabili sono **due**, `$Flow.CurrentStage` e
@@ -1197,8 +1217,11 @@ declare abstract class FlowBuilderApi {
1197
1217
  * flag per dichiararne una scrivibile (§5.2). La primitiva le comprende già, l'editor non le
1198
1218
  * aggiunge. Restano fuori i campi di `$Record`, che dipendono dallo schema: quelli arrivano da
1199
1219
  * `listFields(object, 'updateable')` (§6.4).
1220
+ *
1221
+ * Come `getReferences`: documento nudo nel body, nessun filtro di tipo, elenco completo in
1222
+ * risposta (§13.17).
1200
1223
  */
1201
- abstract getWritableReferences(query: FlowReferenceQuery): Promise<FlowReference[]>;
1224
+ abstract getWritableReferences(definition: FlowDefinition): Promise<FlowReference[]>;
1202
1225
  /** `POST /flows/connector-targets?excluding=` — i node a cui un arco puo' puntare. */
1203
1226
  abstract getConnectorTargets(definition: FlowDefinition, excluding?: string): Promise<FlowConnectorTarget[]>;
1204
1227
  /**
@@ -1230,6 +1253,23 @@ declare abstract class FlowBuilderApi {
1230
1253
  abstract listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1231
1254
  /** `GET /catalog/enum-types` — per `objectType` delle risorse `Enum`. */
1232
1255
  abstract listEnumTypes(): Promise<FlowCatalogEntry[]>;
1256
+ /**
1257
+ * `GET /catalog/enum-types/{enumType}/values` — i valori di **un** tipo di enumerazione, cioe'
1258
+ * i nomi che si possono scrivere in `enumValue` (§4.2, §4.6). `enumType` e' esattamente
1259
+ * l'`objectType` della risorsa, del parametro o del membro.
1260
+ *
1261
+ * `listEnumTypes` e' l'altra meta' della catena e non basta: quella dice **quali tipi** esistono,
1262
+ * questa **quali valori** ha un tipo. Senza la seconda chiamata all'utente resta una casella di
1263
+ * testo su un insieme chiuso, che e' il modo piu' facile di scrivere un valore che il runtime non
1264
+ * riconoscera'.
1265
+ *
1266
+ * I valori sono del **tipo**, non del punto in cui compare: la risposta si tiene in cache per
1267
+ * nome del tipo e serve risorse, parametri di action e di form, e membri di una classe (§4.7.1).
1268
+ *
1269
+ * Opzionale come {@link listFieldValues}: un ambiente che non la espone degrada a "non lo so" —
1270
+ * elenco vuoto, valore digitabile a mano e nessuna segnalazione — invece di rompersi (§7).
1271
+ */
1272
+ listEnumValues(enumType: string): Promise<FlowEnumValue[]>;
1233
1273
  /**
1234
1274
  * `GET /catalog/structures` — le classi utilizzabili come `objectType` di una risorsa
1235
1275
  * `Structure` (§4.7). È un **elenco di classi** nella forma di ogni altro catalogo: i membri
@@ -1339,11 +1379,23 @@ declare class HttpFlowBuilderApi extends FlowBuilderApi {
1339
1379
  deactivateFlow(flowName: string): Promise<void>;
1340
1380
  deleteVersion(flowName: string, version: number): Promise<void>;
1341
1381
  deleteFlow(flowName: string): Promise<void>;
1382
+ /**
1383
+ * Documento nudo alla radice: le primitive che **analizzano** il documento non usano
1384
+ * l'involucro `{definition, flowName, …}` della §6.2, che serve solo a chi deve sapere dove
1385
+ * riporlo (§6.4, §13.17). Sbagliare involucro qui non produce nessun errore: si otterrebbe la
1386
+ * validazione di un flow vuoto, cioe' «manca lo Start».
1387
+ */
1342
1388
  validateDefinition(definition: FlowDefinition): Promise<FlowValidationResult>;
1343
1389
  validateVersion(flowName: string, version: number): Promise<FlowValidationResult>;
1344
1390
  getDictionaries(processType?: string): Promise<FlowDictionaries>;
1345
- getReferences(query: FlowReferenceQuery): Promise<FlowReference[]>;
1346
- getWritableReferences(query: FlowReferenceQuery): Promise<FlowReference[]>;
1391
+ /**
1392
+ * Il body e' il documento **nudo**, come per validate/parse/outline/connector-targets (§6.4,
1393
+ * §13.17): avvolgerlo (`{definition: …}`) o aggiungergli campi di filtro non da' nessun errore
1394
+ * — il backend deserializza un `Flow` in cui non riconosce nessuna proprieta', risponde `200` e
1395
+ * l'elenco contiene le sole globali. Se le tendine sembrano vuote, si guarda qui prima di tutto.
1396
+ */
1397
+ getReferences(definition: FlowDefinition): Promise<FlowReference[]>;
1398
+ getWritableReferences(definition: FlowDefinition): Promise<FlowReference[]>;
1347
1399
  getConnectorTargets(definition: FlowDefinition, excluding?: string): Promise<FlowConnectorTarget[]>;
1348
1400
  getOutline(definition: FlowDefinition): Promise<FlowOutline>;
1349
1401
  listObjects(): Promise<FlowObjectSummary[]>;
@@ -1358,6 +1410,8 @@ declare class HttpFlowBuilderApi extends FlowBuilderApi {
1358
1410
  listForms(): Promise<FlowCatalogEntry[]>;
1359
1411
  listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1360
1412
  listEnumTypes(): Promise<FlowCatalogEntry[]>;
1413
+ /** §4.6 — i valori di un tipo: `enumType` e' l'`objectType`, e va nel path come segmento. */
1414
+ listEnumValues(enumType: string): Promise<FlowEnumValue[]>;
1361
1415
  /** §4.7.1 — solo l'elenco delle classi: i membri **non** ci sono, si chiedono a parte. */
1362
1416
  listStructures(): Promise<FlowCatalogEntry[]>;
1363
1417
  /**
@@ -1413,6 +1467,18 @@ interface FlowOutlet {
1413
1467
  * di un percorso: il corpo di un Loop (§3.5).
1414
1468
  */
1415
1469
  isStructural?: boolean;
1470
+ /**
1471
+ * `true` → e' un ramo di **recupero da errore**, e la sua assenza non e' «il percorso
1472
+ * finisce qui»: se l'elemento fallisce l'interview finisce `Failed`, con `fault`
1473
+ * valorizzato e le modifiche già eseguite **annullate** (§3.5). Resta una scelta
1474
+ * legittima, e la piu' comune: la validazione la segnala con l'avviso
1475
+ * `FAULT_CONNECTOR_MISSING`, che e' un promemoria e non un difetto.
1476
+ *
1477
+ * Vale sui soli elementi che possono fallire (Record*, ActionCall, ScriptCall, Wait):
1478
+ * il `faultConnector` di un `OrchestratedStage` porta `kind: 'Fault'` ma e' il ramo
1479
+ * dello **step rifiutato** (§5.13), non un ramo di guasto, e la §7 non lo comprende.
1480
+ */
1481
+ isFaultRecovery?: boolean;
1416
1482
  read(node: FlowAnyNode): FlowConnector | undefined;
1417
1483
  write(node: FlowAnyNode, connector: FlowConnector | undefined): void;
1418
1484
  }
@@ -1818,6 +1884,7 @@ declare class FlowCatalogStore {
1818
1884
  private readonly objectsCache;
1819
1885
  private readonly fieldsCache;
1820
1886
  private readonly fieldValuesCache;
1887
+ private readonly enumValuesCache;
1821
1888
  private readonly entriesCache;
1822
1889
  private readonly parametersCache;
1823
1890
  private readonly membersCache;
@@ -1840,6 +1907,15 @@ declare class FlowCatalogStore {
1840
1907
  listForms(): Promise<FlowCatalogEntry[]>;
1841
1908
  listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1842
1909
  listEnumTypes(): Promise<FlowCatalogEntry[]>;
1910
+ /**
1911
+ * §4.6 — i valori di un tipo di enumerazione, cioe' i nomi scrivibili in `enumValue` (§4.2).
1912
+ *
1913
+ * La cache e' per **nome del tipo** e non per punto di uso: i valori sono del tipo, quindi la
1914
+ * stessa risposta serve una risorsa, un parametro di action e un membro di classe che dichiarano
1915
+ * lo stesso `objectType`. La primitiva e' opzionale: assente o in errore l'elenco resta vuoto,
1916
+ * che significa "non lo so" — valore digitabile a mano e nessuna segnalazione (§7).
1917
+ */
1918
+ listEnumValues(enumType: string | undefined): Promise<FlowEnumValue[]>;
1843
1919
  /**
1844
1920
  * §4.7 — le classi utilizzabili come `objectType` di una `Structure`. La primitiva e'
1845
1921
  * opzionale: se l'ambiente non la espone, l'errore non si memoizza e l'elenco resta vuoto —
@@ -2035,6 +2111,40 @@ interface PathNavigation {
2035
2111
  */
2036
2112
  declare function navigatePath(catalog: PathCatalog, request: () => PathNavigationRequest | null): PathNavigation;
2037
2113
 
2114
+ /**
2115
+ * Filtro di compatibilita' dei riferimenti — FRONTEND.md §6.4.
2116
+ *
2117
+ * `POST /flows/references` e `POST /flows/references/writable` prendono il **documento nudo** e
2118
+ * restituiscono **tutti** i riferimenti, ognuno col proprio `dataType`, `isCollection` e
2119
+ * `isWritable`: nel body non c'e' nessun campo di filtro. Chi sceglie cosa e' compatibile col
2120
+ * campo che l'utente sta compilando e' quindi l'editor, ed e' deliberato — la stessa risposta
2121
+ * serve tutte le tendine di una schermata, quindi si chiede una volta e si filtra n volte.
2122
+ *
2123
+ * Il filtro guarda **la radice**, non il percorso: una radice scartata si porta via anche cio'
2124
+ * che sta sotto, e chi propone i segmenti navigati applica la stessa regola separatamente
2125
+ * (`reference-picker`).
2126
+ */
2127
+
2128
+ /** I vincoli del campo che si sta compilando. Un campo assente e' "nessun vincolo". */
2129
+ interface FlowReferenceFilter {
2130
+ dataType?: FlowDataType;
2131
+ isCollection?: boolean;
2132
+ objectType?: string;
2133
+ }
2134
+ /**
2135
+ * La forma minima su cui il filtro lavora: la regola vale sia per un riferimento sia per un
2136
+ * segmento di percorso, che riferimento non e'.
2137
+ */
2138
+ interface FlowTypedEntry {
2139
+ dataType?: FlowDataType | null;
2140
+ isCollection?: boolean | null;
2141
+ objectType?: string | null;
2142
+ }
2143
+ /** `true` se il campo non pone nessun vincolo: lì filtrare e' inutile. */
2144
+ declare function isEmptyReferenceFilter(filter: FlowReferenceFilter | undefined): boolean;
2145
+ declare function matchesReferenceFilter(entry: FlowTypedEntry, filter: FlowReferenceFilter): boolean;
2146
+ declare function filterReferences(references: readonly FlowReference[], filter: FlowReferenceFilter | undefined): FlowReference[];
2147
+
2038
2148
  /** Un node come lo vede l'editor: il node piu' da dove viene. */
2039
2149
  interface FlowNodeRef {
2040
2150
  name: string;
@@ -2686,19 +2796,29 @@ declare class ReferencePickerComponent {
2686
2796
  */
2687
2797
  readonly elementsOnly: _angular_core.InputSignal<boolean>;
2688
2798
  readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
2689
- private readonly references;
2690
2799
  /**
2691
- * L'elenco **senza** il filtro di tipo, che serve solo a riconoscere le radici dei percorsi.
2692
- *
2693
- * Il filtro (§6.4) guarda il tipo della **radice**, e una radice scartata si porta via anche cio'
2694
- * che sta sotto: in un parametro `String` una variabile `Structure` non e' compatibile, ma
2695
- * `Richiesta.Ragione` lo e', e `Leggi_Ordine` non e' un `String` mentre `Leggi_Ordine.Numero` lo
2696
- * e'. Senza questo elenco il primo membro non si puo' proporre e il secondo viene accusato di non
2697
- * esistere pur essendo un riferimento valido (§4.5).
2800
+ * L'elenco come arriva dalla primitiva, **senza** il filtro di tipo.
2698
2801
  *
2699
- * Vuoto dove il filtro non c'e': {@link references} e' già l'elenco completo.
2802
+ * Serve a due cose oltre che a produrre le proposte: riconoscere le radici dei percorsi e
2803
+ * mostrare i contenitori come righe in cui si entra. Il filtro (§6.4) guarda il tipo della
2804
+ * **radice**, e una radice scartata si porta via anche cio' che sta sotto: in un parametro
2805
+ * `String` una variabile `Structure` non e' compatibile, ma `Richiesta.Ragione` lo e', e
2806
+ * `Leggi_Ordine` non e' un `String` mentre `Leggi_Ordine.Numero` lo e'. Senza questo elenco il
2807
+ * primo membro non si puo' proporre e il secondo viene accusato di non esistere pur essendo un
2808
+ * riferimento valido (§4.5).
2700
2809
  */
2701
2810
  private readonly unfiltered;
2811
+ /**
2812
+ * L'insieme da cui si pesca prima del filtro di tipo: in un campo di destinazione e' la
2813
+ * risposta di `getWritableReferences`, altrove {@link unfiltered} stesso.
2814
+ */
2815
+ private readonly available;
2816
+ /**
2817
+ * Le proposte compatibili col campo. Il filtro e' **locale**: la primitiva prende il documento
2818
+ * nudo e restituisce tutto (§6.4, §13.17), cosi' la stessa risposta serve tutte le tendine di
2819
+ * una schermata.
2820
+ */
2821
+ private readonly references;
2702
2822
  /** Tutto cio' che puo' essere la radice di un percorso, filtrato o no. */
2703
2823
  private readonly roots;
2704
2824
  private readonly isLoading;
@@ -2744,10 +2864,9 @@ declare class ReferencePickerComponent {
2744
2864
  private readonly isReadOnlyPath;
2745
2865
  private readonly pathReferences;
2746
2866
  /**
2747
- * Lo stesso filtro che il backend applica alle radici (§6.4), applicato ai segmenti di un
2748
- * percorso: in un parametro `String` non si propone un membro `Date`. Un segmento da cui si
2749
- * scende resta comunque proposto anche se il suo tipo non combacia — e' la strada per arrivare
2750
- * al membro che combacia.
2867
+ * Lo stesso filtro delle radici (§6.4), applicato ai segmenti di un percorso: in un parametro
2868
+ * `String` non si propone un membro `Date`. Un segmento da cui si scende resta comunque proposto
2869
+ * anche se il suo tipo non combacia — e' la strada per arrivare al membro che combacia.
2751
2870
  */
2752
2871
  private matchesTarget;
2753
2872
  /**
@@ -2786,7 +2905,7 @@ declare class ReferencePickerComponent {
2786
2905
  * percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
2787
2906
  * risponderebbe `GLOBAL_UNKNOWN`.
2788
2907
  */
2789
- readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid" | "unknown">;
2908
+ readonly valueState: _angular_core.Signal<"empty" | "member" | "unknown" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
2790
2909
  /** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
2791
2910
  private readonly tailIsObject;
2792
2911
  private readonly tailContainer;
@@ -3063,6 +3182,31 @@ declare class StructureMemberPickerComponent {
3063
3182
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StructureMemberPickerComponent, "fb-structure-member-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
3064
3183
  }
3065
3184
 
3185
+ declare class EnumValuePickerComponent {
3186
+ private readonly catalog;
3187
+ readonly value: _angular_core.InputSignal<string | undefined>;
3188
+ /** Il tipo di enumerazione: e' esattamente l'`objectType` della destinazione (§4.6). */
3189
+ readonly enumType: _angular_core.InputSignal<string | undefined>;
3190
+ readonly label: _angular_core.InputSignal<string>;
3191
+ readonly placeholder: _angular_core.InputSignal<string>;
3192
+ readonly disabled: _angular_core.InputSignal<boolean>;
3193
+ readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
3194
+ private readonly values;
3195
+ /** Cresce a ogni caricamento: scarta la risposta di un tipo che non e' piu' quello scelto. */
3196
+ private sequence;
3197
+ constructor();
3198
+ readonly options: _angular_core.Signal<NamePickerOption[]>;
3199
+ /**
3200
+ * Due "non lo so" diversi, e la differenza e' azionabile: senza `objectType` manca una scelta a
3201
+ * monte — ed e' `OBJECT_TYPE_MISSING` da qualche parte in questo form — mentre col tipo scelto e
3202
+ * l'elenco vuoto non c'e' niente da correggere.
3203
+ */
3204
+ readonly emptyMessage: _angular_core.Signal<string>;
3205
+ readonly unknownMessage: _angular_core.Signal<string>;
3206
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EnumValuePickerComponent, never>;
3207
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EnumValuePickerComponent, "fb-enum-value-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "enumType": { "alias": "enumType"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
3208
+ }
3209
+
3066
3210
  /** Le modalita' offerte: una per campo del modello. */
3067
3211
  type ValueMode = 'reference' | 'literal' | 'formula' | 'globalConstant' | 'empty';
3068
3212
  declare class ValueEditorComponent {
@@ -3112,6 +3256,11 @@ declare class ValueEditorComponent {
3112
3256
  setMode(mode: ValueMode): void;
3113
3257
  onReferenceChange(reference: string | undefined): void;
3114
3258
  onLiteralChange(raw: string): void;
3259
+ /**
3260
+ * §4.2 — l'`enumValue` e' il **nome** del valore. Svuotare il picker toglie il valore invece di
3261
+ * scrivere una stringa vuota: un `enumValue: ''` sarebbe un campo valorizzato con niente.
3262
+ */
3263
+ onEnumChange(name: string | undefined): void;
3115
3264
  onBooleanChange(checked: boolean): void;
3116
3265
  private withDateZone;
3117
3266
  /**
@@ -3162,6 +3311,12 @@ declare class ConditionEditorComponent {
3162
3311
  private typeOfReference;
3163
3312
  /** Il tipo del lato sinistro: guida il secondo operando. */
3164
3313
  leftDataType(condition: FlowCondition): FlowDataType | undefined;
3314
+ /**
3315
+ * Il tipo concreto del lato sinistro quando e' un `Enum`: senza di questo il valore di confronto
3316
+ * resterebbe una casella di testo su un insieme chiuso (§4.6). Su un percorso navigato
3317
+ * (`Cliente.Stato`) il riferimento non e' in elenco e resta `undefined`: si digita, come prima.
3318
+ */
3319
+ leftObjectType(condition: FlowCondition): string | undefined;
3165
3320
  /** Il tipo del lato destro, dedotto dal campo valorizzato o dal riferimento scelto. */
3166
3321
  private rightDataType;
3167
3322
  /**
@@ -3170,7 +3325,7 @@ declare class ConditionEditorComponent {
3170
3325
  */
3171
3326
  hasTypeMismatch(condition: FlowCondition): boolean;
3172
3327
  typeMismatchMessage(condition: FlowCondition): string;
3173
- readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
3328
+ readonly logicMode: _angular_core.Signal<"formula" | "and" | "or" | "custom">;
3174
3329
  readonly customLogic: _angular_core.Signal<string>;
3175
3330
  /** Feedback immediato sull'espressione: la verita' resta della validazione backend. */
3176
3331
  readonly customLogicError: _angular_core.Signal<string | null>;
@@ -3252,7 +3407,7 @@ declare class RecordFilterEditorComponent {
3252
3407
  * evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
3253
3408
  */
3254
3409
  readonly identifierNotFilterable: _angular_core.Signal<boolean>;
3255
- readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
3410
+ readonly logicMode: _angular_core.Signal<"formula" | "and" | "or" | "custom">;
3256
3411
  readonly customLogic: _angular_core.Signal<string>;
3257
3412
  readonly showEmptyWarning: _angular_core.Signal<boolean>;
3258
3413
  addFilter(): void;
@@ -3271,6 +3426,12 @@ declare class RecordFilterEditorComponent {
3271
3426
  * catalogo resta caricato qui, e non solo dentro il picker.
3272
3427
  */
3273
3428
  fieldDataType(filter: FlowRecordFilter): string | undefined;
3429
+ /**
3430
+ * Il tipo concreto del campo: su un campo `Enum` e' cio' che permette di proporre i valori
3431
+ * ammessi invece di farli digitare (§4.6). Su un percorso di relazione il campo non e' in elenco
3432
+ * e resta `undefined`, come per il tipo.
3433
+ */
3434
+ fieldObjectType(filter: FlowRecordFilter): string | undefined;
3274
3435
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecordFilterEditorComponent, never>;
3275
3436
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RecordFilterEditorComponent, "fb-record-filter-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "supportsLogic": { "alias": "supportsLogic"; "required": false; "isSignal": true; }; "supportsFormula": { "alias": "supportsFormula"; "required": false; "isSignal": true; }; "emptyWarning": { "alias": "emptyWarning"; "required": false; "isSignal": true; }; "emptyWarningSeverity": { "alias": "emptyWarningSeverity"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
3276
3437
  }
@@ -3776,6 +3937,13 @@ declare class DebugPanelComponent {
3776
3937
  private readonly membersByClass;
3777
3938
  /** I membri **scrivibili** di una classe: gli altri li calcola il backend. */
3778
3939
  membersOf(className: string | undefined): FlowStructureMember[];
3940
+ /**
3941
+ * §4.6 — i valori di un tipo di enumerazione, per nome del tipo. Elenco vuoto significa "non lo
3942
+ * so" — tipo non indicato, primitiva assente, tipo senza valori dichiarati — e allora il valore
3943
+ * si scrive a mano.
3944
+ */
3945
+ private readonly valuesByEnumType;
3946
+ enumValuesOf(enumType: string | null | undefined): FlowEnumValue[];
3779
3947
  isStructureVariable(variable: FlowVariable): boolean;
3780
3948
  readonly canRun: _angular_core.Signal<boolean>;
3781
3949
  readonly status: _angular_core.Signal<string | null>;
@@ -4006,5 +4174,5 @@ declare class SelectValueDirective implements AfterViewChecked {
4006
4174
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4007
4175
  }
4008
4176
 
4009
- export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, loadPathLevel, moveCondition, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, resolvePath, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
4010
- export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, PathCatalog, PathContainer, PathContainerKind, PathEntry, PathLevel, PathLevelStatus, PathNavigation, PathNavigationRequest, PathResolution, PathStopReason, StructureMemberUsage, ValueMode };
4177
+ export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, elementIcon, emptyFlowDefinition, filterReferences, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isEmptyReferenceFilter, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, loadPathLevel, matchesReferenceFilter, moveCondition, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, resolvePath, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
4178
+ export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedEntry, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, PathCatalog, PathContainer, PathContainerKind, PathEntry, PathLevel, PathLevelStatus, PathNavigation, PathNavigationRequest, PathResolution, PathStopReason, StructureMemberUsage, ValueMode };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/flow-builder",
3
- "version": "20.3.10",
3
+ "version": "20.3.12",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.25",
6
6
  "@angular/core": "^20.3.25",