@esfaenza/flow-builder 20.3.14 → 20.3.15
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 +40 -4
- package/fesm2022/esfaenza-flow-builder.mjs +880 -14
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +395 -15
- package/package.json +2 -1
- package/styles/flow-builder.css +33 -0
package/README.md
CHANGED
|
@@ -221,10 +221,31 @@ stesso che avra' sul canvas. `core/element-variants.ts` tiene la mappa tipo →
|
|
|
221
221
|
discriminatore; i valori restano nel dizionario del backend (`collectionProcessorTypes`), e
|
|
222
222
|
senza quel dizionario il tipo torna a essere una voce sola.
|
|
223
223
|
|
|
224
|
-
**Inspector.** Un form per ogni tipo supportato: Start, Screen,
|
|
225
|
-
Collection Processor, Get / Create / Update / Delete / Rollback Records,
|
|
226
|
-
Subflow, Wait, Custom Error, Transform, Orchestrated Stage. Più l'intestazione
|
|
227
|
-
rinomina, che **riscrive tutti i riferimenti** all'elemento.
|
|
224
|
+
**Inspector.** Un form per ogni tipo supportato: Start, Screen, Screen dinamico, Assignment,
|
|
225
|
+
Decision, Loop, Collection Processor, Get / Create / Update / Delete / Rollback Records,
|
|
226
|
+
Action, Script, Subflow, Wait, Custom Error, Transform, Orchestrated Stage. Più l'intestazione
|
|
227
|
+
comune con la rinomina, che **riscrive tutti i riferimenti** all'elemento.
|
|
228
|
+
|
|
229
|
+
**Screen dinamico (§5.2).** È l'unico inspector a due pannelli, e per questo la dialog e' larga
|
|
230
|
+
il doppio di com'era: a sinistra l'albero dei campi con la larghezza in dodicesimi disegnata, a
|
|
231
|
+
destra le proprieta' del campo selezionato. Quali proprieta' mostrare **lo decide il dizionario**
|
|
232
|
+
(`screenFieldTypes` e i suoi flag `storesValue`, `isCollection`, `acceptsChoices`, `isContainer`,
|
|
233
|
+
`requiresDataType`), non il codice: sono gli stessi flag che applica il runtime, e
|
|
234
|
+
reimplementarli porta a proporre configurazioni che il motore rifiuta.
|
|
235
|
+
|
|
236
|
+
Tre cose che il modello non mostra e il form dice:
|
|
237
|
+
|
|
238
|
+
- un campo che raccoglie un valore **e' una risorsa del flow**, referenziabile per nome ovunque
|
|
239
|
+
e di **sola lettura** — il suo nome vive nello spazio dei nomi comune, e rinominarlo riscrive i
|
|
240
|
+
riferimenti (`FlowDocumentStore.renameScreenField`, come per i node: nessuna primitiva del
|
|
241
|
+
backend lo fa);
|
|
242
|
+
- le regole di visibilita' si rivalutano **sui valori appena inviati**, i campi nascosti vengono
|
|
243
|
+
**azzerati** e solo i visibili vengono validati;
|
|
244
|
+
- `choiceReferences` accetta **solo** `Choice` e `DynamicChoiceSet`, e gli output automatici di un
|
|
245
|
+
`ComponentInstance` sono esclusivi con i suoi `outputParameters`.
|
|
246
|
+
|
|
247
|
+
Il riordino e l'annidamento si fanno trascinando (`@angular/cdk/drag-drop`) oppure con i comandi
|
|
248
|
+
«su / giu' / porta dentro / porta fuori», che coprono anche gli alberi piu' alti del pannello.
|
|
228
249
|
|
|
229
250
|
Sullo stage di orchestrazione il form dice le tre cose che il modello non mostra: gli step
|
|
230
251
|
**non sono una sequenza** (le frecce riordinano l'esame, non l'esecuzione), ingresso e uscita
|
|
@@ -412,6 +433,7 @@ src/lib/
|
|
|
412
433
|
condition-logic.util.ts riscrittura di conditionLogic su cancella / riordina
|
|
413
434
|
condition-types.util.ts quali tipi si confrontano, e i numeri in cultura invariante
|
|
414
435
|
stage-step.util.ts gli step di uno stage: nomi, output non condizionabili
|
|
436
|
+
screen-field.util.ts l'albero dei campi di uno screen dinamico: percorsi, nomi, mutazioni
|
|
415
437
|
ui/
|
|
416
438
|
flow-builder.component.ts il componente da montare
|
|
417
439
|
canvas/ palette/ inspector/ resources/ problems/ versions/ debug/ shared/
|
|
@@ -442,6 +464,7 @@ Oltre ad Angular:
|
|
|
442
464
|
|---|---|
|
|
443
465
|
| `@foblex/flow` (+ `@foblex/platform`, `@foblex/mediator`, `@foblex/2d`, `@foblex/utils`) | rendering del grafo, pan/zoom, gesti su node e connessioni. Usata in *classic mode*: la libreria disegna e riconosce i gesti, lo stato resta nostro |
|
|
444
466
|
| `dagre` | auto-layout gerarchico del comando «Riordina» |
|
|
467
|
+
| `@angular/cdk` | il solo `drag-drop`, per l'albero dei campi dello screen dinamico. Nessun componente Material: i controlli restano input nativi |
|
|
445
468
|
|
|
446
469
|
Nessun design system: i controlli sono input nativi con binding espliciti e CSS custom, così
|
|
447
470
|
il builder si integra nel tema dell'app ospite senza imporre il proprio.
|
|
@@ -465,6 +488,12 @@ Le variabili si sovrascrivono sul contenitore:
|
|
|
465
488
|
Elenco completo in `styles/flow-builder.css`. Per la variante scura basta
|
|
466
489
|
`data-fb-theme="dark"` su un antenato.
|
|
467
490
|
|
|
491
|
+
La dialog di modifica ha **una misura sola per ogni tipo di elemento** — l'inspector dentro
|
|
492
|
+
cambia, la finestra no, altrimenti i comandi si spostano sotto il mouse a ogni apertura — e le
|
|
493
|
+
due misure sono token: `--fb-dialog-width` (1400px) e `--fb-dialog-height` (860px), entrambe
|
|
494
|
+
limitate allo spazio disponibile. La larghezza e' quella che serve al compositore dello screen
|
|
495
|
+
dinamico, che e' a due pannelli.
|
|
496
|
+
|
|
468
497
|
Nota sugli archi: il colore si imposta valorizzando le custom properties del tema di
|
|
469
498
|
@foblex/flow (`--ff-connection-color`, `--ff-marker-color`) invece di sovrascrivere le sue
|
|
470
499
|
regole, perche' i selettori hanno la stessa specificita' e chi vince dipenderebbe dall'ordine
|
|
@@ -523,6 +552,13 @@ possibile anche con errori e attivazione bloccata dagli errori (§8).
|
|
|
523
552
|
vivono dentro `rules[i].connector`, ma un arco selezionato perde la selezione.
|
|
524
553
|
- **`relatedRecords` di Get Records** e' esposto in sola lettura con un avviso: e' modellato
|
|
525
554
|
ma non tradotto in query.
|
|
555
|
+
- **L'albero dei campi dello screen dinamico e' una lista di rilascio piatta**, non una per
|
|
556
|
+
contenitore: le drop list annidate del CDK sono ambigue proprio qui — il rettangolo di una
|
|
557
|
+
sezione contiene quello delle sue colonne, e a ricevere il rilascio e' sempre la lista
|
|
558
|
+
registrata per prima, cioe' la radice. Con la lista piatta il contenitore di arrivo si deduce
|
|
559
|
+
dalla riga che precede il punto di rilascio (sotto un contenitore = dentro, sotto un campo =
|
|
560
|
+
accanto). Il prezzo: trascinando una sezione, i suoi figli restano fermi finche' non si
|
|
561
|
+
rilascia — poi si spostano con lei.
|
|
526
562
|
- **L'esecutore della demo non valuta le condizioni**: prende il primo ramo disponibile e lo
|
|
527
563
|
scrive nella traccia. È un mock per esercitare il pannello, non il motore.
|
|
528
564
|
- **Nessun test automatico**: la libreria e' stata verificata a mano sull'app demo (canvas,
|