@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/index.d.ts CHANGED
@@ -286,6 +286,24 @@ interface FlowScreenField {
286
286
  autoSelectSingleChoice?: boolean;
287
287
  scale?: number;
288
288
  maxLength?: number;
289
+ /**
290
+ * §5.2 — **che cosa** il campo raccoglie, oltre al fatto di essere un testo: `Email`, `Url`,
291
+ * `Phone`, `MobilePhone`, `LandlinePhone`, o un nome che l'host ha registrato. Il frontend ne
292
+ * ricava il tipo di input, e il runtime rifiuta l'invio con `FORMAT_INVALID`.
293
+ *
294
+ * **L'elenco non e' chiuso e i pattern non stanno nel metadata**: che cosa sia un cellulare valido
295
+ * e' una regola del paese in cui il sistema gira, quindi i formati proposti arrivano da
296
+ * `dictionaries.screenFieldFormats` e un nome fuori elenco e' un'**osservazione**
297
+ * (`SCREEN_FIELD_FORMAT_UNKNOWN`), non un errore — bloccare l'attivazione per un nome che la
298
+ * libreria non conosce sarebbe un falso positivo. Su un campo che non raccoglie un singolo testo
299
+ * e' l'avviso `SCREEN_FIELD_FORMAT_NOT_APPLICABLE`: non ha effetto.
300
+ *
301
+ * Due cose che il formato **non** e'. Non e' un'etichetta che il flow puo' leggere: se a valle
302
+ * serve sapere che un numero e' un cellulare, quella distinzione sta nel dato — due campi, o due
303
+ * membri di una `Structure`. E non riscrive il valore: togliere spazi o aggiungere il prefisso
304
+ * internazionale e' una trasformazione, e il posto per farla e' una screen action.
305
+ */
306
+ format?: string;
289
307
  /** 1..12 nella griglia della schermata: il frontend puo' ignorarla. */
290
308
  width?: number;
291
309
  /**
@@ -314,10 +332,28 @@ interface FlowScreenField {
314
332
  * sola lettura: `STRUCTURE_MEMBER_UNKNOWN` e `TARGET_NOT_WRITABLE`.
315
333
  */
316
334
  memberName?: string;
317
- /** §5.2 — `RepeatingSection`: righe minime. */
335
+ /**
336
+ * §5.2 — `RepeatingSection`: righe minime, ed e' un **vincolo**: sotto quel numero la sezione non
337
+ * scende, e con `minInstances: 1` il runtime non consente di togliere l'ultima riga. Da non
338
+ * confondere con {@link initialInstances}.
339
+ */
318
340
  minInstances?: number;
319
341
  /** §5.2 — `RepeatingSection`: righe massime. Assente e' l'avviso `REPEATING_SECTION_WITHOUT_LIMIT`. */
320
342
  maxInstances?: number;
343
+ /**
344
+ * §5.2 — `RepeatingSection`: quante righe trovare **gia' aperte** arrivando sulla schermata, ed e'
345
+ * la distinzione che serve piu' spesso. Non e' il minimo: il minimo e' un vincolo, queste sono una
346
+ * comodita' e si possono togliere tutte. Un modulo con un punto luce e un punto gas gia' aperti,
347
+ * dove chi ha una sola commodity toglie quello che non gli serve, e' `initialInstances: 1` con
348
+ * `minInstances: 0`; con il minimo a 1 sarebbe un modulo che **obbliga** a entrambe.
349
+ *
350
+ * Si applicano **una volta sola**, e la condizione e' che nessuno abbia ancora scritto la
351
+ * collection: righe arrivate da altrove — un ciclo su un OCR, un Assignment, una schermata
352
+ * precedente — **sono** le righe iniziali e non vengono diluite con righe vuote, e chi le toglie
353
+ * tutte non se le ritrova alla presentazione successiva, perche' l'invio della schermata e' a sua
354
+ * volta una scrittura. Vale anche attraverso una sospensione.
355
+ */
356
+ initialInstances?: number;
321
357
  /** §5.2 — `RepeatingSection`: default `true`. */
322
358
  allowAdd?: boolean;
323
359
  /** §5.2 — `RepeatingSection`: default `true`. */
@@ -1044,6 +1080,16 @@ interface FlowDictionaries {
1044
1080
  screenNavigations?: FlowDictionaryEntry[];
1045
1081
  /** §5.2 — i tipi di campo di uno screen dinamico, con i flag che guidano il form. */
1046
1082
  screenFieldTypes?: FlowScreenFieldTypeEntry[];
1083
+ /**
1084
+ * §5.2 — i formati di un campo di testo: `Email`, `Url`, `Phone`, `MobilePhone`, `LandlinePhone`.
1085
+ *
1086
+ * **E' l'unico dizionario dichiaratamente aperto**, e va trattato come tale: i pattern non stanno
1087
+ * nel metadata — che cosa sia un cellulare valido e' una regola del paese in cui il sistema gira —
1088
+ * e l'host ne registra dei propri (codice fiscale, partita IVA, IBAN, CAP). Quindi qui si propone,
1089
+ * non si giudica: un nome fuori elenco e' `SCREEN_FIELD_FORMAT_UNKNOWN`, un'osservazione, e un
1090
+ * editor che voglia proporli tutti unisce questo elenco con quello che l'host espone per conto suo.
1091
+ */
1092
+ screenFieldFormats?: FlowDictionaryEntry[];
1047
1093
  /** §5.2 — `SectionWithHeader` | `SectionWithoutHeader`. */
1048
1094
  regionContainerTypes?: FlowDictionaryEntry[];
1049
1095
  /** §5.2 — `UseStoredValues` | `ResetValues` (`inputsOnNextNavToAssocScrn`). */
@@ -2713,6 +2759,11 @@ declare class FlowDictionaryStore {
2713
2759
  readonly assigneeTypes: _angular_core.Signal<FlowDictionaryEntry[]>;
2714
2760
  readonly conditionLogicModes: _angular_core.Signal<FlowDictionaryEntry[]>;
2715
2761
  readonly regionContainerTypes: _angular_core.Signal<FlowDictionaryEntry[]>;
2762
+ /**
2763
+ * §5.2 — i formati di un campo di testo. Elenco **aperto**: vuoto significa «non lo so» e un nome
2764
+ * fuori elenco e' un'osservazione, non un errore — i pattern li registra l'host, non la libreria.
2765
+ */
2766
+ readonly screenFieldFormats: _angular_core.Signal<FlowDictionaryEntry[]>;
2716
2767
  readonly screenFieldInputsRevisited: _angular_core.Signal<FlowDictionaryEntry[]>;
2717
2768
  /**
2718
2769
  * §5.2 — le proprieta' citabili in un choice set da enum. Elenco vuoto: il dizionario non le
@@ -5178,8 +5229,14 @@ declare class NamePickerComponent {
5178
5229
  * La gravita' dell'avviso. Non e' cosmetica: un'action o un form che non esistono sono
5179
5230
  * **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
5180
5231
  * senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
5232
+ *
5233
+ * `'note'` e' il terzo caso, e serve dove l'elenco **non e' autoritativo**: il `format` di un campo
5234
+ * di screen (§5.2) lo registra l'host, quindi un nome fuori catalogo non e' ne' un errore ne' un
5235
+ * difetto — e' un'osservazione (`SCREEN_FIELD_FORMAT_UNKNOWN`). Si scrive senza colore, come il
5236
+ * `connector-editor` scrive il promemoria del ramo di guasto: il colore d'avviso su un nome
5237
+ * legittimo manda a cercare un difetto che non c'e'.
5181
5238
  */
5182
- readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
5239
+ readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn" | "note">;
5183
5240
  /**
5184
5241
  * Nomi che **esistono** ma non sono utilizzabili qui. Il caso vero e' il catalogo dei form,
5185
5242
  * dove una schermata intera e un componente vivono nello stesso elenco e si distinguono per
@@ -6753,6 +6810,18 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6753
6810
  readonly selectedAutoSelectsSingleChoice: _angular_core.Signal<boolean>;
6754
6811
  /** §5.2 — `scale` su un campo non numerico e' `SCALE_NOT_APPLICABLE`. */
6755
6812
  readonly scaleApplies: _angular_core.Signal<boolean>;
6813
+ /**
6814
+ * §5.2 — il `format` vale dove il campo raccoglie **un solo testo**: altrove e'
6815
+ * `SCREEN_FIELD_FORMAT_NOT_APPLICABLE` e non ha effetto. La condizione e' quella, non l'elenco dei
6816
+ * tipi di campo: un `dataType` assente vale `String` perche' e' il default del contratto, e il
6817
+ * plurale lo dice il dizionario (`isCollection`), non il codice.
6818
+ */
6819
+ readonly formatApplies: _angular_core.Signal<boolean>;
6820
+ /**
6821
+ * I formati da proporre. L'elenco e' **aperto** — i pattern li registra l'host — quindi vuoto
6822
+ * significa «non lo so» e un nome fuori elenco non si accusa: il picker lo scrive come nota.
6823
+ */
6824
+ readonly formatOptions: _angular_core.Signal<NamePickerOption[]>;
6756
6825
  readonly requiresObjectType: _angular_core.Signal<boolean>;
6757
6826
  readonly objectTypeIsStructure: _angular_core.Signal<boolean>;
6758
6827
  /** L'oggetto di un `ObjectProvided`, cioe' la parte prima del punto (§5.2). */
@@ -6804,6 +6873,12 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6804
6873
  readonly repeaterIssue: _angular_core.Signal<string | null>;
6805
6874
  /** §5.2 — il massimo mancante e' un **avviso**: senza, l'utente puo' aggiungere righe all'infinito. */
6806
6875
  readonly repeaterHasNoLimit: _angular_core.Signal<boolean>;
6876
+ /**
6877
+ * §5.2 — righe iniziali fuori dai limiti. Il runtime le riporta comunque dentro, quindi non e' un
6878
+ * difetto che rompe qualcosa: e' che il numero scritto **non e' quello che si vedra'**, e finche'
6879
+ * nessuno lo dice si crede il contrario. Va detto qui, dove i tre numeri stanno insieme.
6880
+ */
6881
+ readonly repeaterInitialOutOfRange: _angular_core.Signal<string | null>;
6807
6882
  /**
6808
6883
  * La variabile del documento con quel nome, se e' una variabile. Non un riferimento qualunque: una
6809
6884
  * costante o una formula qui e' `REPEATING_SECTION_INVALID`, e distinguerle e' il punto.
@@ -6824,7 +6899,7 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6824
6899
  */
6825
6900
  setFieldType(type: string): void;
6826
6901
  setDefaultValue(value: FlowValue | undefined): void;
6827
- setNumberProperty(property: 'scale' | 'maxLength' | 'width' | 'minInstances' | 'maxInstances', raw: string): void;
6902
+ setNumberProperty(property: 'scale' | 'maxLength' | 'width' | 'minInstances' | 'maxInstances' | 'initialInstances', raw: string): void;
6828
6903
  /**
6829
6904
  * §5.2 — `allowAdd` e `allowRemove` hanno default `true`: si scrive solo il `false`, che e' la
6830
6905
  * scelta significativa. È la stessa regola dei flag del node (§2), non quella di un `FlowValue`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/flow-builder",
3
- "version": "20.3.48",
3
+ "version": "20.3.49",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^20.2.14",
6
6
  "@angular/common": "^20.3.31",