@esfaenza/flow-builder 20.3.40 → 20.3.42
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 +30 -5
- package/fesm2022/esfaenza-flow-builder.mjs +328 -39
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +113 -3
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -253,6 +253,12 @@ interface FlowScreenField {
|
|
|
253
253
|
defaultSelectedChoiceReference?: string;
|
|
254
254
|
/** Nomi di `FlowChoice` o `FlowDynamicChoiceSet`, **nell'ordine di presentazione**. */
|
|
255
255
|
choiceReferences?: string[];
|
|
256
|
+
/**
|
|
257
|
+
* §5.2 — con **una sola** opzione risolta il campo la sceglie da se'. Serve alle tendine che
|
|
258
|
+
* dipendono da un'altra tendina; dove il campo non presenta opzioni non ha effetto ed e'
|
|
259
|
+
* `SCREEN_FIELD_CONFIGURATION_INVALID` (avviso).
|
|
260
|
+
*/
|
|
261
|
+
autoSelectSingleChoice?: boolean;
|
|
256
262
|
scale?: number;
|
|
257
263
|
maxLength?: number;
|
|
258
264
|
/** 1..12 nella griglia della schermata: il frontend puo' ignorarla. */
|
|
@@ -3181,6 +3187,21 @@ declare class FlowDocumentStore {
|
|
|
3181
3187
|
* riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
|
|
3182
3188
|
*/
|
|
3183
3189
|
renameNode(oldName: string, newName: string): void;
|
|
3190
|
+
/**
|
|
3191
|
+
* Etichetta **e** nome tecnico in una sola mutazione.
|
|
3192
|
+
*
|
|
3193
|
+
* Serve al nome che segue l'etichetta di un elemento appena creato (§3.3): farlo con due
|
|
3194
|
+
* `update` scriverebbe due passi di storico per ogni battuta, e l'annulla riporterebbe
|
|
3195
|
+
* indietro il nome lasciando l'etichetta nuova — uno stato che non e' mai esistito. Con
|
|
3196
|
+
* `newName` assente e' un semplice cambio di etichetta.
|
|
3197
|
+
*/
|
|
3198
|
+
relabelNode(name: string, label: string, newName?: string | null): void;
|
|
3199
|
+
/**
|
|
3200
|
+
* Il corpo della rinomina, sul draft: nome del node, riferimenti, appartenenza ai riquadri.
|
|
3201
|
+
* `reference` va risolto **prima** dell'`update`, perche' l'indice viene dal documento
|
|
3202
|
+
* corrente e dentro il mutatore i signal derivati sono ancora quelli di prima.
|
|
3203
|
+
*/
|
|
3204
|
+
private static applyRename;
|
|
3184
3205
|
/**
|
|
3185
3206
|
* §5.2 — rinomina un campo di screen dinamico riscrivendo i riferimenti che lo usano.
|
|
3186
3207
|
*
|
|
@@ -4991,7 +5012,7 @@ declare class FormulaEditorComponent {
|
|
|
4991
5012
|
* dinamico — e riscriverla a ogni tasto costa. La **verifica** parte comunque durante la
|
|
4992
5013
|
* digitazione: usa la bozza locale, non cio' che e' arrivato al documento.
|
|
4993
5014
|
*/
|
|
4994
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
5015
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
4995
5016
|
readonly expressionChange: _angular_core.OutputEmitterRef<string>;
|
|
4996
5017
|
private readonly area;
|
|
4997
5018
|
/**
|
|
@@ -5541,7 +5562,7 @@ declare class MergeTextEditorComponent {
|
|
|
5541
5562
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5542
5563
|
readonly rows: _angular_core.InputSignal<number>;
|
|
5543
5564
|
/** Come nel formula editor: `change` dove mutare il documento ridisegna mezza schermata. */
|
|
5544
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
5565
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
5545
5566
|
readonly textChange: _angular_core.OutputEmitterRef<string>;
|
|
5546
5567
|
private readonly area;
|
|
5547
5568
|
/**
|
|
@@ -5662,6 +5683,9 @@ declare class ElementInspectorComponent {
|
|
|
5662
5683
|
private readonly store;
|
|
5663
5684
|
private readonly dictionaries;
|
|
5664
5685
|
private readonly validation;
|
|
5686
|
+
private readonly injector;
|
|
5687
|
+
/** L'etichetta: e' il primo campo di un elemento nuovo, e prende il focus da se'. */
|
|
5688
|
+
private readonly labelInput;
|
|
5665
5689
|
/** Il nome dell'elemento selezionato; `$start` per lo Start. */
|
|
5666
5690
|
readonly selectedName: _angular_core.InputSignal<string | null>;
|
|
5667
5691
|
/**
|
|
@@ -5706,6 +5730,43 @@ declare class ElementInspectorComponent {
|
|
|
5706
5730
|
readonly hiddenIssueCount: _angular_core.Signal<number>;
|
|
5707
5731
|
toggleIssues(): void;
|
|
5708
5732
|
readonly pendingName: _angular_core.WritableSignal<string | null>;
|
|
5733
|
+
/**
|
|
5734
|
+
* L'elemento il cui nome si sta ancora componendo, e cosa c'e' scritto nel campo.
|
|
5735
|
+
*
|
|
5736
|
+
* `draft: null` e' «segue l'etichetta», che e' lo stato iniziale e quello in cui si torna
|
|
5737
|
+
* svuotando il campo. `element` segue le rinomine: senza, la prima battuta sull'etichetta —
|
|
5738
|
+
* che rinomina — farebbe ripartire lo stato da capo e il campo tornerebbe a seguire una
|
|
5739
|
+
* scelta che l'utente aveva già disfatto.
|
|
5740
|
+
*/
|
|
5741
|
+
private readonly composing;
|
|
5742
|
+
/** Il nome si compone qui invece di stare dietro il comando di rinomina. */
|
|
5743
|
+
readonly isComposingName: _angular_core.Signal<boolean>;
|
|
5744
|
+
/** Cio' che si vede nel campo: vuoto finche' non c'e' un'etichetta da cui costruirlo. */
|
|
5745
|
+
readonly composedName: _angular_core.Signal<string>;
|
|
5746
|
+
readonly composedNameError: _angular_core.Signal<string | null>;
|
|
5747
|
+
constructor();
|
|
5748
|
+
/**
|
|
5749
|
+
* Un elemento **senza etichetta** e' un elemento che nessuno ha ancora nominato: il campo del
|
|
5750
|
+
* nome parte vuoto e segue l'etichetta. Uno che ce l'ha e' un elemento vero, e il suo nome si
|
|
5751
|
+
* cambia solo col comando di rinomina, che dice prima quanti riferimenti riscrivera'.
|
|
5752
|
+
*/
|
|
5753
|
+
private seedComposing;
|
|
5754
|
+
/**
|
|
5755
|
+
* Il nome scritto a mano: smette di seguire l'etichetta e, appena e' valido, diventa il nome
|
|
5756
|
+
* dell'elemento. Un nome intermedio non valido resta nel campo senza toccare il documento —
|
|
5757
|
+
* ricopiarci sopra il nome corrente impedirebbe di digitare.
|
|
5758
|
+
*/
|
|
5759
|
+
onComposedNameInput(value: string): void;
|
|
5760
|
+
/**
|
|
5761
|
+
* Il nome costruito dall'etichetta (§3.3): spazi e caratteri non ammessi diventano `_`, i
|
|
5762
|
+
* diacritici cadono e un nome già preso prende un suffisso.
|
|
5763
|
+
*
|
|
5764
|
+
* Etichetta vuota → `null`, cioe' resta il nome provvisorio con cui l'elemento e' nato: il
|
|
5765
|
+
* documento non puo' stare senza, perche' il nome e' la chiave di tutto (§3.3).
|
|
5766
|
+
*/
|
|
5767
|
+
private deriveName;
|
|
5768
|
+
/** Rimette il nome a seguire l'etichetta, dopo che il campo e' stato svuotato. */
|
|
5769
|
+
private applyDerivedName;
|
|
5709
5770
|
readonly nameError: _angular_core.Signal<string | null>;
|
|
5710
5771
|
/**
|
|
5711
5772
|
* Quanti riferimenti verrebbero riscritti dalla rinomina. Serve a rendere visibile che
|
|
@@ -5780,6 +5841,15 @@ declare class ElementDialogComponent {
|
|
|
5780
5841
|
private readonly reference;
|
|
5781
5842
|
readonly typeLabel: _angular_core.Signal<string>;
|
|
5782
5843
|
readonly title: _angular_core.Signal<string>;
|
|
5844
|
+
/**
|
|
5845
|
+
* L'ultimo nome adottato da una rinomina.
|
|
5846
|
+
*
|
|
5847
|
+
* La selezione dell'editor **e' il nome**, quindi una rinomina cambia `selectedName` senza
|
|
5848
|
+
* che l'elemento sia cambiato. Senza distinguere i due casi il nome che si costruisce
|
|
5849
|
+
* dall'etichetta mentre la si digita riportava il focus sul pannello a ogni battuta, e
|
|
5850
|
+
* l'etichetta si scriveva una lettera alla volta.
|
|
5851
|
+
*/
|
|
5852
|
+
private renamedTo?;
|
|
5783
5853
|
constructor();
|
|
5784
5854
|
/** Il vincolo: dentro il builder resta la maniglia, non la finestra intera. */
|
|
5785
5855
|
readonly constrainPosition: DialogConstrainPosition;
|
|
@@ -6198,6 +6268,8 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
|
6198
6268
|
readonly hasOutputConflict: _angular_core.Signal<boolean>;
|
|
6199
6269
|
/** §5.2 — la choice di default fuori dall'elenco e' un avviso, non un errore. */
|
|
6200
6270
|
readonly defaultChoiceIsForeign: _angular_core.Signal<boolean>;
|
|
6271
|
+
/** §5.2 — spunta spenta per default: si scrive solo il `true`. */
|
|
6272
|
+
readonly selectedAutoSelectsSingleChoice: _angular_core.Signal<boolean>;
|
|
6201
6273
|
/** §5.2 — `scale` su un campo non numerico e' `SCALE_NOT_APPLICABLE`. */
|
|
6202
6274
|
readonly scaleApplies: _angular_core.Signal<boolean>;
|
|
6203
6275
|
readonly requiresObjectType: _angular_core.Signal<boolean>;
|
|
@@ -6225,6 +6297,11 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
|
6225
6297
|
setRequired(value: boolean): void;
|
|
6226
6298
|
/** `isEditable` ha default `true`: si scrive solo il `false`, che e' la scelta significativa. */
|
|
6227
6299
|
setEditable(value: boolean): void;
|
|
6300
|
+
/**
|
|
6301
|
+
* §5.2 — la spunta e' spenta per default, quindi nel documento va **solo** il `true`: scriverla
|
|
6302
|
+
* a `false` sarebbe una scelta che nessuno ha fatto su un campo che il contratto omette.
|
|
6303
|
+
*/
|
|
6304
|
+
setAutoSelectSingleChoice(value: boolean): void;
|
|
6228
6305
|
addChoice(name: string | undefined): void;
|
|
6229
6306
|
removeChoice(index: number): void;
|
|
6230
6307
|
moveChoice(index: number, direction: -1 | 1): void;
|
|
@@ -6276,6 +6353,13 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
|
6276
6353
|
actionHasNoTrigger(action: FlowScreenAction): boolean;
|
|
6277
6354
|
/** §5.2 — senza campo e senza `initBehavior` il trigger non scattera' mai: `SCREEN_TRIGGER_WITHOUT_CAUSE`. */
|
|
6278
6355
|
triggerHasNoCause(trigger: FlowScreenTrigger): boolean;
|
|
6356
|
+
/**
|
|
6357
|
+
* §5.2 — `runOnLoad` **non serve** per il caso comune: un trigger il cui campo osservato porta un
|
|
6358
|
+
* `defaultValue` non vuoto scatta comunque all'arrivo sulla schermata, perche' un campo precompilato
|
|
6359
|
+
* dal flow conta come un campo che ha preso un valore. Dirlo qui evita di scriverlo per sicurezza e
|
|
6360
|
+
* poi chiedersi perche' l'action gira due volte.
|
|
6361
|
+
*/
|
|
6362
|
+
triggerFiresOnLoadByDefault(trigger: FlowScreenTrigger): boolean;
|
|
6279
6363
|
/**
|
|
6280
6364
|
* §5.2 — l'unico valore ammesso e' `runOnLoad`. Il `runOnRevisit` della specifica Salesforce e'
|
|
6281
6365
|
* `SCREEN_TRIGGER_INIT_BEHAVIOR_UNKNOWN`, e vale la pena dirlo qui: chi arriva da quella
|
|
@@ -6847,7 +6931,7 @@ declare class FlowBuilderComponent {
|
|
|
6847
6931
|
* troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
|
|
6848
6932
|
* modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
|
|
6849
6933
|
*/
|
|
6850
|
-
readonly inspectorMode: _angular_core.InputSignal<"
|
|
6934
|
+
readonly inspectorMode: _angular_core.InputSignal<"panel" | "dialog">;
|
|
6851
6935
|
/**
|
|
6852
6936
|
* L'esito dell'ultima esecuzione, se l'ospite ne ha uno da mostrare.
|
|
6853
6937
|
*
|
|
@@ -6944,8 +7028,23 @@ declare class FlowBuilderComponent {
|
|
|
6944
7028
|
setFullName(value: string): void;
|
|
6945
7029
|
setDescription(value: string): void;
|
|
6946
7030
|
setInterviewLabel(value: string): void;
|
|
7031
|
+
/**
|
|
7032
|
+
* Il tipo di flow si sceglie **alla creazione**, e su un flow salvato non si tocca.
|
|
7033
|
+
*
|
|
7034
|
+
* Non e' una preferenza: decide quali globali esistono (`$Record` non c'e' in uno screen
|
|
7035
|
+
* flow, §4.1), quali elementi sono ammessi (§13.6) e come il motore lo esegue. Cambiarlo su
|
|
7036
|
+
* un documento già scritto lo lascia pieno di riferimenti a cose che da quel momento non
|
|
7037
|
+
* esistono — e nessuna primitiva del backend rimedia. Il comando non c'e' nemmeno
|
|
7038
|
+
* nell'interfaccia; il controllo qui e' perché la chiamata resta pubblica.
|
|
7039
|
+
*/
|
|
6947
7040
|
setProcessType(value: string): void;
|
|
6948
7041
|
readonly processTypes: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
7042
|
+
/**
|
|
7043
|
+
* Il tipo scritto per esteso, per il flow salvato dove non e' più una scelta. Fuori catalogo
|
|
7044
|
+
* si mostra il valore grezzo: e' del backend, non nostro da correggere (vedi
|
|
7045
|
+
* {@link isProcessTypeOutOfCatalog}).
|
|
7046
|
+
*/
|
|
7047
|
+
readonly processTypeLabel: _angular_core.Signal<string>;
|
|
6949
7048
|
/**
|
|
6950
7049
|
* Il `processType` del documento non e' fra quelli del dizionario. Non e' un caso di scuola:
|
|
6951
7050
|
* basta che il dizionario arrivi senza `processTypes`, o che il backend salvi una scrittura
|
|
@@ -7123,6 +7222,17 @@ declare class FlowBuilderComponent {
|
|
|
7123
7222
|
autoLayout(): void;
|
|
7124
7223
|
undo(): void;
|
|
7125
7224
|
redo(): void;
|
|
7225
|
+
/**
|
|
7226
|
+
* Un passo di storico, con la selezione che lo segue.
|
|
7227
|
+
*
|
|
7228
|
+
* La selezione dell'editor **e' il nome** (§3.3), e un annulla può riportare indietro una
|
|
7229
|
+
* rinomina — succede a ogni battuta sull'etichetta di un elemento appena creato, dove il nome
|
|
7230
|
+
* la segue. Il nome selezionato allora non esiste più: l'inspector resta puntato sul vuoto, il
|
|
7231
|
+
* form del tipo sparisce e l'intestazione mostra un nome che nel documento non c'è. L'annulla
|
|
7232
|
+
* però non sposta gli elementi nella loro collection, quindi **dove** stavano — collection e
|
|
7233
|
+
* indice — e' la traccia che sopravvive: dopo il passo si adotta il nome che si trova lì.
|
|
7234
|
+
*/
|
|
7235
|
+
private stepHistory;
|
|
7126
7236
|
save(): Promise<void>;
|
|
7127
7237
|
/** Il modulo del duplicato e' aperto. */
|
|
7128
7238
|
readonly isCopyOpen: _angular_core.WritableSignal<boolean>;
|