@esfaenza/flow-builder 20.3.16 → 20.3.17

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
@@ -880,11 +880,27 @@ interface FlowStructureDescription {
880
880
  */
881
881
  members?: FlowStructureMember[];
882
882
  }
883
+ /**
884
+ * In quale dei due ruoli un artefatto del frontend e' utilizzabile (§5.1, §5.2, §6.4).
885
+ *
886
+ * `Form` e' una **schermata intera** (`formName` di uno Screen), `Component` un **componente**
887
+ * montabile dentro uno screen dinamico (`extensionName` di un `ComponentInstance`). `Any` — che
888
+ * e' anche cio' che significa il campo assente — dice «va bene in entrambi i posti»: un catalogo
889
+ * che il ruolo non lo dichiara non deve diventare un catalogo che vieta tutto.
890
+ */
891
+ type FlowFormKind = 'Form' | 'Component' | 'Any' | string;
883
892
  /** Voce di catalogo per action, script, form, eventi, tipi di enum, classi. */
884
893
  interface FlowCatalogEntry {
885
894
  name: string;
886
895
  label?: string | null;
887
896
  description?: string | null;
897
+ /**
898
+ * Solo per il catalogo dei form. Assente = `Any`: proponibile sia come schermata sia come
899
+ * componente. Una voce usata nel ruolo sbagliato e' `FORM_KIND_MISMATCH`, che e' un errore
900
+ * **diverso** da «il nome non esiste» — il nome esiste, e dirlo sconosciuto manderebbe a
901
+ * cercare un artefatto che c'e' (§5.1, §7).
902
+ */
903
+ formKind?: FlowFormKind | null;
888
904
  }
889
905
  /**
890
906
  * Parametro dichiarato da un'action, uno script o un form.
@@ -1424,8 +1440,18 @@ declare abstract class FlowBuilderApi {
1424
1440
  abstract listScripts(): Promise<FlowCatalogEntry[]>;
1425
1441
  /** `GET /catalog/scripts/{name}/parameters` */
1426
1442
  abstract listScriptParameters(scriptName: string): Promise<FlowCatalogParameter[]>;
1427
- /** `GET /catalog/forms` — i form realizzati a mano nel frontend applicativo (§5.1). */
1428
- abstract listForms(): Promise<FlowCatalogEntry[]>;
1443
+ /**
1444
+ * `GET /catalog/forms?kind=` — gli artefatti realizzati a mano nel frontend applicativo (§5.1,
1445
+ * §5.2). Un solo catalogo per due ruoli: le **schermate intere** che uno Screen mostra
1446
+ * (`formName`) e i **componenti** che uno screen dinamico monta (`extensionName`) sono la
1447
+ * stessa domanda al frontend — cosa sa rendere, e con quali parametri.
1448
+ *
1449
+ * `kind` filtra: `Form`, `Component`, o assente per tutto. Chiederlo non e' un dettaglio —
1450
+ * proporre una schermata intera dove va un componente porta a `FORM_KIND_MISMATCH`, che e' un
1451
+ * errore e blocca l'attivazione. Una voce senza `formKind` vale `Any` e resta proponibile in
1452
+ * entrambi i posti: un catalogo che il ruolo non lo dichiara non deve vietare tutto (§6.4).
1453
+ */
1454
+ abstract listForms(kind?: FlowFormKind): Promise<FlowCatalogEntry[]>;
1429
1455
  /** `GET /catalog/forms/{name}/parameters` */
1430
1456
  abstract listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1431
1457
  /** `GET /catalog/enum-types` — per `objectType` delle risorse `Enum`. */
@@ -1589,7 +1615,7 @@ declare class HttpFlowBuilderApi extends FlowBuilderApi {
1589
1615
  listActionParameters(actionType: string, actionName: string): Promise<FlowCatalogParameter[]>;
1590
1616
  listScripts(): Promise<FlowCatalogEntry[]>;
1591
1617
  listScriptParameters(scriptName: string): Promise<FlowCatalogParameter[]>;
1592
- listForms(): Promise<FlowCatalogEntry[]>;
1618
+ listForms(kind?: FlowFormKind): Promise<FlowCatalogEntry[]>;
1593
1619
  listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1594
1620
  listEnumTypes(): Promise<FlowCatalogEntry[]>;
1595
1621
  /** §4.6 — i valori di un tipo: `enumType` e' l'`objectType`, e va nel path come segmento. */
@@ -2215,7 +2241,12 @@ declare class FlowCatalogStore {
2215
2241
  listActionParameters(actionType: string, actionName: string): Promise<FlowCatalogParameter[]>;
2216
2242
  listScripts(): Promise<FlowCatalogEntry[]>;
2217
2243
  listScriptParameters(scriptName: string): Promise<FlowCatalogParameter[]>;
2218
- listForms(): Promise<FlowCatalogEntry[]>;
2244
+ /**
2245
+ * La cache e' **per ruolo**: `Form` e `Component` sono due risposte diverse dello stesso
2246
+ * catalogo, e una chiave sola le farebbe sovrascrivere a vicenda — il primo inspector aperto
2247
+ * deciderebbe cosa vede il secondo (§6.4).
2248
+ */
2249
+ listForms(kind?: FlowFormKind): Promise<FlowCatalogEntry[]>;
2219
2250
  listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
2220
2251
  listEnumTypes(): Promise<FlowCatalogEntry[]>;
2221
2252
  /**
@@ -2587,7 +2618,7 @@ declare class FlowDocumentStore {
2587
2618
  x: number;
2588
2619
  y: number;
2589
2620
  }): void;
2590
- /** Scrive la destinazione di un'uscita. `target` assente → il ramo resta incompleto. */
2621
+ /** Scrive la destinazione di un'uscita. `target` assente → il ramo si stacca del tutto. */
2591
2622
  setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
2592
2623
  /** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
2593
2624
  removeConnector(fromName: string, outletKey: string): void;
@@ -2752,7 +2783,15 @@ declare class FlowEditorSession {
2752
2783
  readonly lastSaveResult: _angular_core.Signal<FlowSaveResult | null>;
2753
2784
  readonly conflict: _angular_core.Signal<FlowConflictState | null>;
2754
2785
  readonly expectedUpdatedAt: _angular_core.Signal<string | undefined>;
2755
- /** `true` finche' il flow non e' mai stato salvato: il comando e' "Crea", non "Salva". */
2786
+ /**
2787
+ * `true` finche' il flow non e' mai stato salvato: il comando e' "Crea", non "Salva".
2788
+ *
2789
+ * Il confronto e' `== null` e non `=== null` di proposito: il segnale e' tipato
2790
+ * `number | null`, ma cio' che ci arriva viene da una risposta del backend, e una risposta
2791
+ * senza `version` porta `undefined`. Con `=== null` un `undefined` sarebbe «versione nota»:
2792
+ * lo stato diventa «Nuovo» con il chip «v», il comando primario «Nuova versione» e l'editor
2793
+ * in sola lettura, tutti insieme, senza nessun errore che lo spieghi.
2794
+ */
2756
2795
  readonly isNew: _angular_core.Signal<boolean>;
2757
2796
  readonly currentVersionSummary: _angular_core.Signal<FlowVersionSummary | undefined>;
2758
2797
  /**
@@ -2775,8 +2814,18 @@ declare class FlowEditorSession {
2775
2814
  open(flowName: string, version?: number): Promise<void>;
2776
2815
  /** Senza `version` il backend restituisce la versione attiva, altrimenti l'ultima (§6.1). */
2777
2816
  private static pickVersion;
2778
- /** Ricarica l'elenco versioni: dopo un'attivazione la precedente e' `Obsolete` (§8.4). */
2779
- refreshVersions(): Promise<void>;
2817
+ /**
2818
+ * Ricarica l'elenco versioni: dopo un'attivazione la precedente e' `Obsolete` (§8.4).
2819
+ *
2820
+ * `adoptVersion` serve dopo una scrittura la cui risposta non porta il numero di versione
2821
+ * (§6.2): l'elenco e' l'altra fonte che quel numero lo sa, e senza il ripiego un flow appena
2822
+ * creato resterebbe «Nuovo» — cioe' il salvataggio successivo tenterebbe una *creazione* su un
2823
+ * nome che esiste già. Sta dietro un flag perche' altrove una versione assente e' un flow
2824
+ * davvero nuovo, e adottarla lo farebbe passare per salvato.
2825
+ */
2826
+ refreshVersions(options?: {
2827
+ adoptVersion?: boolean;
2828
+ }): Promise<void>;
2780
2829
  /**
2781
2830
  * Crea o salva, a seconda dello stato. Non lancia su definizione invalida: il
2782
2831
  * salvataggio riesce anche con errori e il chiamante legge `validation` (§8.2).
@@ -2788,6 +2837,22 @@ declare class FlowEditorSession {
2788
2837
  activate?: boolean;
2789
2838
  flowName?: string;
2790
2839
  }): Promise<FlowSaveResult>;
2840
+ /**
2841
+ * Il risultato di una scrittura riportato alla forma su cui l'editor puo' contare.
2842
+ *
2843
+ * La §6.2 dice che `flowName` e `version` ci sono sempre, ma se mancano — risposta vuota,
2844
+ * `204`, o piu' spesso un host che serializza in PascalCase, dove `Version` non e' `version` —
2845
+ * il difetto non e' un errore: e' `undefined` che entra nello stato della sessione e ricompare
2846
+ * ovunque. Il chip della versione diventa «v», il banner dice «Versione undefined attivata», e
2847
+ * al salvataggio successivo si manda `flowName: undefined`. Nessuna eccezione, nessun rilievo.
2848
+ *
2849
+ * Cio' che sappiamo lo sappiamo già: il nome del flow e la versione sono quelli che abbiamo
2850
+ * appena chiesto di scrivere. Si tengono, e la discrepanza si dice **una volta** in console —
2851
+ * a chi integra, perche' e' la sua risposta a non avere la forma del contratto.
2852
+ */
2853
+ private normalizeResult;
2854
+ private static readonly warned;
2855
+ private static warnOnce;
2791
2856
  private applySaveResult;
2792
2857
  /** Copia la versione corrente in una nuova bozza (§8.1): il comando delle versioni chiuse. */
2793
2858
  createNewVersion(): Promise<FlowSaveResult>;
@@ -2987,9 +3052,10 @@ declare class FlowCanvasComponent {
2987
3052
  /** Sullo Start conta il trigger: e' cio' che decide quando il flow parte (§3.4). */
2988
3053
  private startSubtitle;
2989
3054
  /**
2990
- * Creazione di un arco. `targetId` assente significa rilascio nel vuoto: si lascia il
2991
- * ramo dichiarato ma senza destinazione, che e' esattamente il "ramo incompleto" del
2992
- * modello, invece di scartare il gesto.
3055
+ * Creazione di un arco. `targetId` assente significa rilascio nel vuoto: il ramo resta
3056
+ * **staccato**, cioe' omesso dal documento (`CONNECTOR_MISSING`, «il percorso finisce
3057
+ * qui»), non dichiarato-senza-destinazione che sarebbe `CONNECTOR_TARGET_MISSING`, un
3058
+ * avviso su un ramo che l'utente non ha mai voluto collegare.
2993
3059
  */
2994
3060
  onCreateConnection(event: {
2995
3061
  sourceId: string;
@@ -3185,7 +3251,20 @@ declare class ReferencePickerComponent {
3185
3251
  * `String` sta solo nell'elenco non filtrato.
3186
3252
  */
3187
3253
  private readonly declaredPrefix;
3254
+ /**
3255
+ * La radice **verificabile**: e' quella su cui si giudica il valore scritto (`valueState`), e
3256
+ * tiene fuori gli output automatici perche' la validazione non guarda i loro percorsi (§4.5, §7).
3257
+ */
3188
3258
  private readonly navigableRoot;
3259
+ /**
3260
+ * La radice da cui si **propone**, che comprende anche gli output automatici. Sono due computed e
3261
+ * non uno perche' le due domande sono diverse: proporre i campi di `Leggi_Ordine` aiuta a scrivere
3262
+ * `Leggi_Ordine.Numero` — un riferimento valido — mentre giudicarne i segmenti significherebbe
3263
+ * accusare cio' che il backend non verifica. Con una radice sola una delle due cose sarebbe
3264
+ * sbagliata: o la riga sparisce dai campi tipizzati, o un campo scritto a mano diventa
3265
+ * `FIELD_UNKNOWN` senza che nessuna primitiva lo dica.
3266
+ */
3267
+ private readonly proposalRoot;
3189
3268
  /** Il percorso dopo la radice: `Cliente.Email` di `Richiesta.Cliente.Email`. */
3190
3269
  private readonly navigatedPath;
3191
3270
  private readonly navigation;
@@ -3205,6 +3284,12 @@ declare class ReferencePickerComponent {
3205
3284
  */
3206
3285
  private readonly isReadOnlyPath;
3207
3286
  private readonly pathReferences;
3287
+ /**
3288
+ * Cosa dire di un segmento proposto. Sotto un output automatico «sola lettura» sarebbe vero ma
3289
+ * fuorviante — in un campo che vuole un valore nessuno stava cercando una destinazione: cio' che
3290
+ * cambia il comportamento e' che il percorso non lo verifica nessuno (§4.5).
3291
+ */
3292
+ private segmentDescription;
3208
3293
  /**
3209
3294
  * Lo stesso filtro delle radici (§6.4), applicato ai segmenti di un percorso: in un parametro
3210
3295
  * `String` non si propone un membro `Date`. Un segmento da cui si scende resta comunque proposto
@@ -3247,7 +3332,7 @@ declare class ReferencePickerComponent {
3247
3332
  * percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
3248
3333
  * risponderebbe `GLOBAL_UNKNOWN`.
3249
3334
  */
3250
- readonly valueState: _angular_core.Signal<"empty" | "unknown" | "member" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
3335
+ readonly valueState: _angular_core.Signal<"member" | "empty" | "unknown" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
3251
3336
  /** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
3252
3337
  private readonly tailIsObject;
3253
3338
  private readonly tailContainer;
@@ -3268,7 +3353,17 @@ declare class ReferencePickerComponent {
3268
3353
  * essere il riferimento che si vuole **oppure** la tappa da cui continuare.
3269
3354
  */
3270
3355
  descend(reference: FlowReference): void;
3271
- /** `true` se da questo riferimento il percorso continua: la sua forma e' dichiarata. */
3356
+ /**
3357
+ * `true` se da questo riferimento il percorso continua, cioe' se si conosce la forma di cio' che
3358
+ * designa. Comprende gli **output automatici** di un elemento: `Leggi_Ordine` dichiara la propria
3359
+ * entita', quindi i suoi campi si possono proporre — che il backend non verifichi i segmenti dopo
3360
+ * il punto (§4.5) cambia cosa si **dice** del valore scritto, non cosa si puo' proporre. Prima
3361
+ * l'esclusione era qui, e l'effetto era che in un campo tipizzato la riga spariva del tutto: il
3362
+ * filtro di tipo scarta il record, e senza `›` non restava nessuna strada verso `Leggi_Ordine.Numero`.
3363
+ *
3364
+ * Una collection resta esclusa: il riferimento designa l'insieme, e un campo di un insieme non
3365
+ * esiste — per scorrerlo c'e' il Loop.
3366
+ */
3272
3367
  canDescend(reference: FlowReference): boolean;
3273
3368
  /** Scrittura libera: indispensabile per gli scope dell'host e per i percorsi non enumerabili. */
3274
3369
  onManualInput(value: string): void;
@@ -3400,6 +3495,15 @@ declare class NamePickerComponent {
3400
3495
  * senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
3401
3496
  */
3402
3497
  readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
3498
+ /**
3499
+ * Nomi che **esistono** ma non sono utilizzabili qui. Il caso vero e' il catalogo dei form,
3500
+ * dove una schermata intera e un componente vivono nello stesso elenco e si distinguono per
3501
+ * `formKind`: usare l'uno al posto dell'altro e' `FORM_KIND_MISMATCH`, non `FORM_UNKNOWN`
3502
+ * (§5.1, §5.2). Senza questo secondo elenco il picker direbbe «non esiste» di un nome che c'e',
3503
+ * e manderebbe a cercare un artefatto già scritto.
3504
+ */
3505
+ readonly unusableOptions: _angular_core.InputSignal<NamePickerOption[]>;
3506
+ readonly unusableMessage: _angular_core.InputSignal<string>;
3403
3507
  /** Cosa dire quando l'elenco e' vuoto: e' il caso "non lo so", non un errore. */
3404
3508
  readonly emptyMessage: _angular_core.InputSignal<string>;
3405
3509
  /** Testo monospazio: i nomi tecnici si leggono meglio, ed e' come li mostra il resto del form. */
@@ -3411,6 +3515,8 @@ declare class NamePickerComponent {
3411
3515
  readonly text: _angular_core.Signal<string>;
3412
3516
  readonly visibleOptions: _angular_core.Signal<NamePickerOption[]>;
3413
3517
  readonly hasOptions: _angular_core.Signal<boolean>;
3518
+ /** Il nome c'e' nel catalogo, ma in un ruolo che qui non va: e' un errore a se' (§7). */
3519
+ readonly isUnusable: _angular_core.Signal<boolean>;
3414
3520
  readonly isUnknown: _angular_core.Signal<boolean>;
3415
3521
  readonly labelOfValue: _angular_core.Signal<string | null>;
3416
3522
  open(): void;
@@ -3421,7 +3527,7 @@ declare class NamePickerComponent {
3421
3527
  clear(): void;
3422
3528
  describe(option: NamePickerOption): string;
3423
3529
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NamePickerComponent, never>;
3424
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NamePickerComponent, "fb-name-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "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; }; "unknownMessage": { "alias": "unknownMessage"; "required": false; "isSignal": true; }; "unknownSeverity": { "alias": "unknownSeverity"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "isMono": { "alias": "isMono"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
3530
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NamePickerComponent, "fb-name-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "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; }; "unknownMessage": { "alias": "unknownMessage"; "required": false; "isSignal": true; }; "unknownSeverity": { "alias": "unknownSeverity"; "required": false; "isSignal": true; }; "unusableOptions": { "alias": "unusableOptions"; "required": false; "isSignal": true; }; "unusableMessage": { "alias": "unusableMessage"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "isMono": { "alias": "isMono"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
3425
3531
  }
3426
3532
 
3427
3533
  declare class StructurePickerComponent {
@@ -4252,6 +4358,20 @@ declare class OrchestratedStageInspectorComponent extends NodeInspectorBase {
4252
4358
  interface DropTarget {
4253
4359
  parent: FlowScreenFieldPath;
4254
4360
  index: number;
4361
+ /**
4362
+ * Dove disegnare la barra di inserimento, in coordinate del frame dell'anteprima. La calcola
4363
+ * {@link DynamicScreenInspectorComponent.hitTest} perche' e' lì che si conoscono i rettangoli
4364
+ * dei fratelli, e la barra e' un **velo**: non sta nel flusso (vedi `dropMarker`). Assente per
4365
+ * il bersaglio dei comandi a clic, che non nasce da un puntatore e non disegna niente.
4366
+ */
4367
+ marker?: DropMarker;
4368
+ }
4369
+ /** La barra di inserimento, in pixel relativi al frame dell'anteprima. */
4370
+ interface DropMarker {
4371
+ left: number;
4372
+ top: number;
4373
+ width: number;
4374
+ height: number;
4255
4375
  }
4256
4376
  declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
4257
4377
  private readonly catalog;
@@ -4281,12 +4401,23 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
4281
4401
  setPaletteTab(tab: 'components' | 'fields'): void;
4282
4402
  setFieldsObject(object: string | undefined): void;
4283
4403
  /** Componenti e form sono la stessa domanda al frontend, e lo stesso catalogo (§5.2). */
4404
+ /** I soli **componenti**: `GET /catalog/forms?kind=Component` (§5.2, §6.4). */
4284
4405
  private readonly components;
4406
+ /**
4407
+ * Le schermate intere, che qui non vanno. Serve a dire la cosa giusta su un nome che esiste:
4408
+ * `FORM_KIND_MISMATCH` e non `SCREEN_COMPONENT_UNKNOWN` (§5.2).
4409
+ */
4410
+ private readonly forms;
4285
4411
  private readonly componentParameters;
4286
4412
  /** I tipi di enumerazione: dizionario chiuso, quindi `<select>` e non combo (§4.6). */
4287
4413
  private readonly enumTypes;
4288
4414
  constructor();
4289
4415
  readonly componentOptions: _angular_core.Signal<NamePickerOption[]>;
4416
+ /**
4417
+ * Le schermate che **non** sono anche componenti: una voce senza `formKind` vale `Any` e
4418
+ * compare in entrambe le risposte, quindi qui non va accusata (§6.4).
4419
+ */
4420
+ readonly unusableComponents: _angular_core.Signal<NamePickerOption[]>;
4290
4421
  readonly enumOptions: _angular_core.Signal<FlowCatalogEntry[]>;
4291
4422
  readonly componentParameterList: _angular_core.Signal<FlowCatalogParameter[]>;
4292
4423
  /**
@@ -4326,8 +4457,22 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
4326
4457
  /** Il punto di inserimento corrente, disegnato come una barra fra i campi. */
4327
4458
  readonly dropTarget: _angular_core.WritableSignal<DropTarget | null>;
4328
4459
  isDragging(path: FlowScreenFieldPath): boolean;
4329
- /** `true` se la barra di inserimento va disegnata qui. */
4330
- isDropAt(parent: FlowScreenFieldPath, index: number): boolean;
4460
+ /**
4461
+ * La barra di inserimento, disegnata **sopra** l'anteprima e non dentro il contenitore.
4462
+ *
4463
+ * Un tempo era un figlio del contenitore di rilascio, e in una griglia a 12 tracce questo la
4464
+ * rendeva ingovernabile: una barra orizzontale prende `1 / -1`, cioe' una **riga intera piu' il
4465
+ * gap**, e spinge in basso tutto cio' che la segue — compresa la sezione che si stava puntando,
4466
+ * che si sposta di sotto il puntatore. Il gesto successivo rimisurava allora una geometria che
4467
+ * la barra stessa aveva cambiato, il bersaglio cambiava, la barra spariva, la sezione risaliva:
4468
+ * un'oscillazione a ogni movimento, e nessun modo di rilasciare dentro la sezione. Fuori dal
4469
+ * flusso la barra non muove niente, e `hitTest` misura sempre la stessa anteprima.
4470
+ *
4471
+ * Il secondo difetto che questo risolve: fra due colonne che riempivano tutte e 12 le tracce la
4472
+ * barra verticale finiva mandata a capo su una riga di altezza zero, cioe' **invisibile** —
4473
+ * proprio dove serviva di piu'.
4474
+ */
4475
+ readonly dropMarker: _angular_core.Signal<DropMarker | null>;
4331
4476
  onFieldDragStarted(path: FlowScreenFieldPath): void;
4332
4477
  onFieldDragMoved(event: CdkDragMove): void;
4333
4478
  onFieldDragEnded(event: CdkDragEnd, path: FlowScreenFieldPath): void;
@@ -4352,8 +4497,32 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
4352
4497
  *
4353
4498
  * L'indice viene dal confronto con la mezzeria dei fratelli, sull'asse del contenitore: le
4354
4499
  * colonne di una sezione stanno in riga, tutto il resto in colonna.
4500
+ *
4501
+ * La misura e' **sempre** su un'anteprima senza barra di inserimento: la barra e' un velo
4502
+ * assoluto (vedi `dropMarker`), quindi non c'e' il ciclo per cui disegnarla spostava cio' che
4503
+ * si stava puntando.
4355
4504
  */
4356
4505
  private hitTest;
4506
+ /** Barra verticale a sinistra di un campo, alta quanto lui. */
4507
+ private barBefore;
4508
+ /** Barra verticale a destra di un campo. */
4509
+ private barAfter;
4510
+ /** Barra orizzontale sopra un campo, larga quanto le tracce del contenitore. */
4511
+ private barAbove;
4512
+ /** Barra orizzontale sotto un campo. */
4513
+ private barBelow;
4514
+ /** Barra orizzontale in mezzo a un contenitore vuoto, dov'e' il segnaposto. */
4515
+ private barInside;
4516
+ /** La banda occupata dalle tracce della griglia: il rettangolo del contenitore meno il padding. */
4517
+ private contentBand;
4518
+ /** `true` se il campo occupa tutte le tracce, cioe' se la sua riga e' sua e basta. */
4519
+ private fillsRow;
4520
+ /**
4521
+ * Da coordinate del viewport a coordinate del frame dell'anteprima, che e' il contenitore
4522
+ * posizionato in cui vive il velo. Senza la conversione la barra sarebbe fuori posto appena la
4523
+ * dialog e' scorsa.
4524
+ */
4525
+ private toFrame;
4357
4526
  /** `"0.2"` → `[0, 2]`; la radice e' la stringa vuota. */
4358
4527
  private static parsePath;
4359
4528
  /** Il valore dell'attributo che marca un contenitore di rilascio. */
@@ -4866,4 +5035,4 @@ declare class SelectValueDirective implements AfterViewChecked {
4866
5035
  }
4867
5036
 
4868
5037
  export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, 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, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, 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, allFieldsOf, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, insertField, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, removeField, resolvePath, samePath, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
4869
- 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, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, 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, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenValidationRule, 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 };
5038
+ 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, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormKind, FlowFormula, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, 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, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenValidationRule, 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.16",
3
+ "version": "20.3.17",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^20.2.14",
6
6
  "@angular/common": "^20.3.25",