@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/README.md +1 -1
- package/fesm2022/esfaenza-flow-builder.mjs +417 -80
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +186 -17
- package/package.json +1 -1
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
|
-
/**
|
|
1428
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
2779
|
-
|
|
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:
|
|
2991
|
-
*
|
|
2992
|
-
*
|
|
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<"
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
4330
|
-
|
|
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 };
|