@esfaenza/flow-builder 20.3.47 → 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 +27 -1
- package/fesm2022/esfaenza-flow-builder.mjs +229 -175
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +80 -5
- package/package.json +3 -3
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
|
-
/**
|
|
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
|
|
@@ -5405,7 +5462,7 @@ declare class FormulaEditorComponent {
|
|
|
5405
5462
|
* dinamico — e riscriverla a ogni tasto costa. La **verifica** parte comunque durante la
|
|
5406
5463
|
* digitazione: usa la bozza locale, non cio' che e' arrivato al documento.
|
|
5407
5464
|
*/
|
|
5408
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
5465
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
5409
5466
|
readonly expressionChange: _angular_core.OutputEmitterRef<string>;
|
|
5410
5467
|
private readonly area;
|
|
5411
5468
|
/**
|
|
@@ -5993,7 +6050,7 @@ declare class MergeTextEditorComponent {
|
|
|
5993
6050
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5994
6051
|
readonly rows: _angular_core.InputSignal<number>;
|
|
5995
6052
|
/** Come nel formula editor: `change` dove mutare il documento ridisegna mezza schermata. */
|
|
5996
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
6053
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
5997
6054
|
readonly textChange: _angular_core.OutputEmitterRef<string>;
|
|
5998
6055
|
private readonly area;
|
|
5999
6056
|
/**
|
|
@@ -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,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esfaenza/flow-builder",
|
|
3
|
-
"version": "20.3.
|
|
3
|
+
"version": "20.3.49",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "^20.2.14",
|
|
6
|
-
"@angular/common": "^20.3.
|
|
7
|
-
"@angular/core": "^20.3.
|
|
6
|
+
"@angular/common": "^20.3.31",
|
|
7
|
+
"@angular/core": "^20.3.31",
|
|
8
8
|
"@foblex/flow": ">=19.0.0",
|
|
9
9
|
"dagre": "0.8.5"
|
|
10
10
|
},
|