@esfaenza/flow-builder 20.3.48 → 20.3.49

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 CHANGED
@@ -435,7 +435,21 @@ Tre cose che il modello non mostra e il form dice:
435
435
  - `autoSelectSingleChoice` fa prendere al campo l'**unica** opzione risolta, quando e' una sola: e'
436
436
  la tendina che dipende da un'altra tendina — i CAP di un comune — dove chiedere di scegliere non
437
437
  decide niente. La spunta compare solo dove il tipo `acceptsChoices`, e altrove e'
438
- `SCREEN_FIELD_CONFIGURATION_INVALID` (avviso).
438
+ `SCREEN_FIELD_CONFIGURATION_INVALID` (avviso);
439
+ - `format` dice **che cosa** un campo di testo raccoglie — `Email`, `Url`, `Phone`, `MobilePhone`,
440
+ `LandlinePhone` — e serve a due cose insieme: il frontend ne ricava il tipo di input, il runtime
441
+ rifiuta l'invio sbagliato (`FORMAT_INVALID`). È l'unico dizionario **dichiaratamente aperto**
442
+ (`screenFieldFormats`): i pattern non stanno nel metadata — che cosa sia un cellulare valido e' una
443
+ regola del paese in cui il sistema gira — e l'host ne registra dei propri. Da lì le due gravita', che
444
+ sono l'eccezione alla regola di tutti gli altri cataloghi: fuori elenco e' un'**osservazione**
445
+ (`SCREEN_FIELD_FORMAT_UNKNOWN`), scritta senza il colore d'avviso, perche' bloccare l'attivazione per
446
+ un nome che la libreria non conosce sarebbe un falso positivo; su un campo che non raccoglie **un
447
+ solo testo** e' l'avviso `SCREEN_FIELD_FORMAT_NOT_APPLICABLE`, e il controllo non compare affatto —
448
+ la condizione e' il tipo di dato piu' la cardinalita', ed e' scritta una volta sola (`formatApplies`,
449
+ la stessa che applica il validatore della demo). Due cose che il formato **non** e': non e'
450
+ un'etichetta che il flow possa leggere — se a valle serve sapere che un numero e' un cellulare, quella
451
+ distinzione sta nel dato — e non riscrive il valore, che e' una trasformazione e la fa una screen
452
+ action.
439
453
 
440
454
  Il riordino e l'annidamento si fanno trascinando (`@angular/cdk/drag-drop`, senza drop list: il
441
455
  bersaglio si calcola dal DOM) oppure con i comandi «su / giu' / porta fuori».
@@ -473,6 +487,18 @@ cose che un editor ingenuo sbaglia lasciandole comporre per poi accusarle:
473
487
  variabile in `collectionReference`: il campo si sceglie da `<fb-structure-member-picker>` con
474
488
  `usage="writable"`, perche' un membro calcolato e' `TARGET_NOT_WRITABLE`.
475
489
 
490
+ - **le righe minime e le righe iniziali non sono la stessa cosa**, ed e' la distinzione che serve piu'
491
+ spesso. `minInstances` e' un **vincolo**: sotto quel numero la sezione non scende, e con `1` il
492
+ runtime non lascia togliere l'ultima riga. `initialInstances` e' una **comodita'**: la schermata si
493
+ apre con qualche riga pronta, e chi non la vuole la elimina. Un modulo con un punto luce e un punto
494
+ gas gia' aperti, dove chi ha una sola commodity toglie quello che non gli serve, e'
495
+ `initialInstances: 1` con `minInstances: 0` — col minimo a 1 sarebbe un modulo che **obbliga** a
496
+ entrambe. Le righe iniziali si applicano **una volta sola**, e solo finche' nessuno ha scritto la
497
+ collection: righe arrivate da un ciclo o da una schermata precedente *sono* le righe iniziali e non
498
+ vengono diluite con righe vuote. Fuori dai limiti il runtime le riporta dentro, quindi l'editor lo
499
+ dice come avviso e non come errore: il difetto non e' che qualcosa si rompa, e' che il numero scritto
500
+ non e' quello che si vedra'.
501
+
476
502
  Nell'anteprima si disegna **una** riga, ed e' il modello: a runtime la schermata ne rende una copia
477
503
  per elemento. Disegnarne due sarebbe finto — quante siano lo decide chi compila.
478
504