@esfaenza/flow-builder 20.3.57 → 20.3.59
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 +25 -6
- package/fesm2022/esfaenza-flow-builder.mjs +336 -26
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +187 -18
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -533,7 +533,8 @@ cose che un editor ingenuo sbaglia lasciandole comporre per poi accusarle:
|
|
|
533
533
|
`fieldType` dentro una riga non offre la sezione ripetibile (non si annidano: il cursore e' una
|
|
534
534
|
variabile sola per sezione) e la spunta degli output automatici di un `ComponentInstance` sparisce
|
|
535
535
|
— si esporrebbero come `<NomeCampo>.<NomeOutput>`, cioe' **una risorsa sola per tutte le righe**.
|
|
536
|
-
|
|
536
|
+
Un campo di riga **compare** invece fra gli inneschi di una screen action, che allora gira per riga
|
|
537
|
+
(vedi *Screen action*, sotto);
|
|
537
538
|
- **`memberName` e il riferimento sono la stessa domanda posta due volte.** `memberName: "PodId"` e
|
|
538
539
|
`PuntoCorrente.PodId` sono lo stesso membro, e la classe da cui vengono e' l'`objectType` della
|
|
539
540
|
variabile in `collectionReference`: il campo si sceglie da `<fb-structure-member-picker>` con
|
|
@@ -592,9 +593,9 @@ Tre cose che il form mette a posto:
|
|
|
592
593
|
`IsEmpty` su una collection e' un operatore che il runtime valuta, mentre la stessa domanda in una
|
|
593
594
|
formula chiede al motore una funzione che potrebbe non avere. `Formula` resta un `conditionLogic`
|
|
594
595
|
ammesso — qui sì, a differenza di un `filterLogic` — quindi l'editor la offre lo stesso;
|
|
595
|
-
- il `fieldName` facoltativo pesca dai campi della schermata **senza quelli dentro una riga**:
|
|
596
|
-
|
|
597
|
-
|
|
596
|
+
- il `fieldName` facoltativo pesca dai campi della schermata **senza quelli dentro una riga**: un
|
|
597
|
+
campo che esiste in una copia per elemento non individua un controllo a cui agganciare il
|
|
598
|
+
messaggio. Non e' l'elenco degli inneschi, che i campi di riga li comprende.
|
|
598
599
|
|
|
599
600
|
**Screen action (§5.2).** Un campo che l'utente compila puo' **innescare un'action** i cui risultati
|
|
600
601
|
finiscono negli altri campi della stessa schermata: e' il caso «scrivi il codice fiscale e nome e
|
|
@@ -604,7 +605,7 @@ campi), in **due** elenchi che il contratto tiene separati — `actions` e `trig
|
|
|
604
605
|
trigger possono invocare la stessa action. Identificazione e parametri sono quelli di un elemento
|
|
605
606
|
Action, `ACTION_UNKNOWN` e `PARAMETER_UNKNOWN` compresi.
|
|
606
607
|
|
|
607
|
-
Le
|
|
608
|
+
Le cose che riguardano l'editor, e non il runtime:
|
|
608
609
|
|
|
609
610
|
- **il picker della destinazione e' allargato qui e solo qui.** L'`assignToReference` di un output
|
|
610
611
|
accetta anche i **campi di questa schermata**, che ovunque altrove sono di sola lettura:
|
|
@@ -624,7 +625,25 @@ Le tre cose che riguardano l'editor, e non il runtime:
|
|
|
624
625
|
`runOnRevisit` della specifica Salesforce e' `SCREEN_TRIGGER_INIT_BEHAVIOR_UNKNOWN`, e vale la
|
|
625
626
|
pena saperlo perche' chi arriva da quella specifica lo scrive per abitudine. Dove il campo
|
|
626
627
|
osservato ha un `defaultValue` il form dice che `runOnLoad` **non serve**: un campo precompilato
|
|
627
|
-
dal flow conta come un campo che ha preso un valore, e l'action gira comunque all'arrivo
|
|
628
|
+
dal flow conta come un campo che ha preso un valore, e l'action gira comunque all'arrivo;
|
|
629
|
+
- **un trigger puo' osservare un campo di riga**, e allora l'action gira **per ogni riga** in cui
|
|
630
|
+
quel campo e' cambiato (*Una screen action per ogni riga*). `triggerFieldName` e' l'unico posto in
|
|
631
|
+
cui il nome di un campo di riga si scrive, perche' nomina un campo e non un riferimento: condizioni,
|
|
632
|
+
input e output nominano la riga attraverso il **cursore** (`PuntoLuce.ProductId`), e i selettori lo
|
|
633
|
+
propongono per primo. Da quel momento le destinazioni dipendono da **chi** invoca l'action, e le
|
|
634
|
+
sbagliate sono `SCREEN_ACTION_ROW_TARGET_INVALID`: da un trigger di riga il cursore intero, la
|
|
635
|
+
collection delle righe, le righe di un'altra sezione e l'output automatico (che l'editor non
|
|
636
|
+
propone nemmeno); da uno di primo livello il cursore, che fuori dalla riga non porta nessuna riga.
|
|
637
|
+
Il rilievo sta sull'output e nomina il trigger, perche' con due trigger — uno di riga e uno no —
|
|
638
|
+
la stessa destinazione e' giusta per l'uno e sbagliata per l'altro. La regola e'
|
|
639
|
+
`screenActionRowTargetIssues` (`core/screen-field.util.ts`), e la applica anche il validatore
|
|
640
|
+
della demo;
|
|
641
|
+
- **anche un `ComponentInstance` puo' innescare**, in una riga o fuori. Non e' una risorsa e non ha
|
|
642
|
+
un valore proprio, quindi scatta quando **uno dei suoi output** cambia rispetto a cio' che la
|
|
643
|
+
destinazione conteneva. Il form lo dice sotto il trigger, e avverte quando il componente non
|
|
644
|
+
dichiara output — ne' parametri di uscita con una destinazione, ne' l'output automatico — perche'
|
|
645
|
+
allora non c'e' niente che possa cambiare e il trigger non scatta mai. La §7 non ha un codice per
|
|
646
|
+
questo caso, quindi resta un avviso del form e il validatore non lo emette.
|
|
628
647
|
|
|
629
648
|
Le action si aprono **una alla volta**: i cataloghi delle action e dei loro parametri dipendono da
|
|
630
649
|
`actionType`/`actionName`, e tenerne N in volo sarebbe N volte la corsa fra risposte che l'inspector
|