@esfaenza/flow-builder 20.3.43 → 20.3.44
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 +31 -4
- package/fesm2022/esfaenza-flow-builder.mjs +448 -134
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +127 -11
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -3389,11 +3389,21 @@ declare class FlowDocumentStore {
|
|
|
3389
3389
|
*/
|
|
3390
3390
|
declare const FLOW_REFERENCE_FIELDS: ReadonlySet<string>;
|
|
3391
3391
|
/**
|
|
3392
|
-
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti
|
|
3392
|
+
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti **e nei merge field**.
|
|
3393
3393
|
*
|
|
3394
3394
|
* Cammina tutto cio' che gli si passa — un documento intero per la rinomina, il solo frammento
|
|
3395
3395
|
* copiato per l'incolla — perche' i riferimenti compaiono in una ventina di posti diversi (§4)
|
|
3396
3396
|
* e l'elenco dei posti sarebbe la cosa che si dimentica di aggiornare.
|
|
3397
|
+
*
|
|
3398
|
+
* I **merge field** ci sono entrati insieme al loro conteggio, e non e' un caso: mostrare «5 usi»
|
|
3399
|
+
* contando i testi e poi riscriverne solo tre significa lasciare due messaggi rotti proprio a chi
|
|
3400
|
+
* ha letto il numero per fidarsi della rinomina. Il testo intorno all'isola non si tocca — lì la
|
|
3401
|
+
* stessa parola e' una parola — e la regola sta in `flow-merge-text.ts`.
|
|
3402
|
+
*
|
|
3403
|
+
* Restano fuori le **formule**: la loro sintassi e' del motore (§6.3), e sostituire un
|
|
3404
|
+
* identificatore in un'espressione che non si interpreta vuol dire indovinare. Chi mostra il
|
|
3405
|
+
* conteggio lo dice, invece di far scoprire dopo che una formula punta a un nome che non c'e'
|
|
3406
|
+
* piu' (`describeNameUses` le tiene contate a parte proprio per questo).
|
|
3397
3407
|
*/
|
|
3398
3408
|
declare function rewriteReferences(root: unknown, oldName: string, newName: string): void;
|
|
3399
3409
|
/**
|
|
@@ -4817,7 +4827,7 @@ declare class NamePickerComponent {
|
|
|
4817
4827
|
* **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
|
|
4818
4828
|
* senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
|
|
4819
4829
|
*/
|
|
4820
|
-
readonly unknownSeverity: _angular_core.InputSignal<"
|
|
4830
|
+
readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
|
|
4821
4831
|
/**
|
|
4822
4832
|
* Nomi che **esistono** ma non sono utilizzabili qui. Il caso vero e' il catalogo dei form,
|
|
4823
4833
|
* dove una schermata intera e un componente vivono nello stesso elenco e si distinguono per
|
|
@@ -5037,7 +5047,7 @@ declare class FormulaEditorComponent {
|
|
|
5037
5047
|
* dinamico — e riscriverla a ogni tasto costa. La **verifica** parte comunque durante la
|
|
5038
5048
|
* digitazione: usa la bozza locale, non cio' che e' arrivato al documento.
|
|
5039
5049
|
*/
|
|
5040
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
5050
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
5041
5051
|
readonly expressionChange: _angular_core.OutputEmitterRef<string>;
|
|
5042
5052
|
private readonly area;
|
|
5043
5053
|
/**
|
|
@@ -5386,7 +5396,7 @@ declare class RecordFilterEditorComponent {
|
|
|
5386
5396
|
* (§5.8, §13.10).
|
|
5387
5397
|
*/
|
|
5388
5398
|
readonly emptyWarning: _angular_core.InputSignal<string | null>;
|
|
5389
|
-
readonly emptyWarningSeverity: _angular_core.InputSignal<"
|
|
5399
|
+
readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
|
|
5390
5400
|
readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
|
|
5391
5401
|
/** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.8). */
|
|
5392
5402
|
private readonly allFields;
|
|
@@ -5607,7 +5617,7 @@ declare class MergeTextEditorComponent {
|
|
|
5607
5617
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5608
5618
|
readonly rows: _angular_core.InputSignal<number>;
|
|
5609
5619
|
/** Come nel formula editor: `change` dove mutare il documento ridisegna mezza schermata. */
|
|
5610
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
5620
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
5611
5621
|
readonly textChange: _angular_core.OutputEmitterRef<string>;
|
|
5612
5622
|
private readonly area;
|
|
5613
5623
|
/**
|
|
@@ -5817,7 +5827,22 @@ declare class ElementInspectorComponent {
|
|
|
5817
5827
|
* Quanti riferimenti verrebbero riscritti dalla rinomina. Serve a rendere visibile che
|
|
5818
5828
|
* l'operazione tocca il resto del documento, non solo questo elemento.
|
|
5819
5829
|
*/
|
|
5830
|
+
/**
|
|
5831
|
+
* Gli usi del nome, con la stessa funzione del pannello risorse: e' la stessa domanda, e due
|
|
5832
|
+
* numeri diversi per la stessa domanda sono un difetto — questo era una regex sul JSON
|
|
5833
|
+
* serializzato, che contava le stringhe uguali al nome in **qualunque** campo (anche dove non
|
|
5834
|
+
* sono riferimenti) e non vedeva ne' le formule ne' i merge field, cioe' sovrastimava e
|
|
5835
|
+
* sottostimava insieme.
|
|
5836
|
+
*/
|
|
5837
|
+
private readonly nameUses;
|
|
5838
|
+
/** Le occorrenze che la rinomina **riscrive**: riferimenti piu' merge field nei testi. */
|
|
5820
5839
|
readonly referenceCount: _angular_core.Signal<number>;
|
|
5840
|
+
/**
|
|
5841
|
+
* Le occorrenze che restano indietro: le espressioni delle formule, che l'editor non riscrive
|
|
5842
|
+
* perche' la loro sintassi e' del motore (§6.3). Dirlo qui e' l'unico modo di non farlo
|
|
5843
|
+
* scoprire dopo, quando la formula punta a un nome che non esiste piu'.
|
|
5844
|
+
*/
|
|
5845
|
+
readonly formulaUseCount: _angular_core.Signal<number>;
|
|
5821
5846
|
readonly canRename: _angular_core.Signal<boolean>;
|
|
5822
5847
|
startRename(): void;
|
|
5823
5848
|
onPendingNameInput(value: string): void;
|
|
@@ -6456,6 +6481,17 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
|
6456
6481
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicScreenInspectorComponent, "fb-dynamic-screen-inspector", never, { "initialSelection": { "alias": "initialSelection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6457
6482
|
}
|
|
6458
6483
|
|
|
6484
|
+
/** Gli usi di un nome, divisi per come sono scritti nel documento. */
|
|
6485
|
+
interface FlowNameUses {
|
|
6486
|
+
/** Campi di riferimento: `targetReference`, `leftValueReference`, `choiceReferences`, … */
|
|
6487
|
+
references: number;
|
|
6488
|
+
/** Espressioni del motore di regole: **non** vengono riscritte dalla rinomina. */
|
|
6489
|
+
formulas: number;
|
|
6490
|
+
/** Isole `{!...}` nei campi di testo che il contratto dichiara con merge field (§5.12). */
|
|
6491
|
+
mergeFields: number;
|
|
6492
|
+
total: number;
|
|
6493
|
+
}
|
|
6494
|
+
|
|
6459
6495
|
/** La risorsa aperta in modifica: collection piu' indice, la sola chiave del documento. */
|
|
6460
6496
|
interface FlowResourceEdit {
|
|
6461
6497
|
collection: FlowResourceCollection;
|
|
@@ -6621,6 +6657,17 @@ declare class ResourcePanelComponent {
|
|
|
6621
6657
|
* senza, tre formule che leggono una variabile la direbbero «non usata».
|
|
6622
6658
|
*/
|
|
6623
6659
|
usesOf(reference: FlowResourceRef): number;
|
|
6660
|
+
/**
|
|
6661
|
+
* Il dettaglio degli usi: quanti riferimenti, quante formule, quanti merge field.
|
|
6662
|
+
*
|
|
6663
|
+
* Serve al `title` della riga, e non e' un vezzo: `{!Cliente.Nome}` in un messaggio e' un uso
|
|
6664
|
+
* che non si vede da nessuna parte nel documento, quindi «13 usi» senza dire **dove** manda a
|
|
6665
|
+
* cercarli nei posti sbagliati. E le tre categorie non si comportano allo stesso modo davanti a
|
|
6666
|
+
* una rinomina, che e' l'altra cosa che si fa con questo numero.
|
|
6667
|
+
*/
|
|
6668
|
+
usesDetailOf(reference: FlowResourceRef): FlowNameUses;
|
|
6669
|
+
/** La riga del `title`: si scrivono le sole categorie presenti, altrimenti sono sempre tre. */
|
|
6670
|
+
usesDetailLabel(reference: FlowResourceRef): string;
|
|
6624
6671
|
/**
|
|
6625
6672
|
* Il conteggio di **tutte** le risorse, calcolato una volta per documento.
|
|
6626
6673
|
*
|
|
@@ -6628,10 +6675,10 @@ declare class ResourcePanelComponent {
|
|
|
6628
6675
|
* chiede per ogni risorsa di ogni collection — i numeri delle schede, il chip «non usate» —
|
|
6629
6676
|
* chiamarlo dal template significherebbe cinquanta walk per giro di change detection.
|
|
6630
6677
|
*
|
|
6631
|
-
* La chiave e' il nome **esatto** e non quello minuscolo:
|
|
6632
|
-
*
|
|
6633
|
-
*
|
|
6634
|
-
*
|
|
6678
|
+
* La chiave e' il nome **esatto** e non quello minuscolo: il conteggio confronta le stringhe
|
|
6679
|
+
* come sono, quindi due nomi che differiscono solo per il case — che sono un `NAME_DUPLICATED`,
|
|
6680
|
+
* non un caso da normalizzare qui — hanno due conteggi diversi, ed e' quello che il pannello
|
|
6681
|
+
* mostrava anche prima della memoizzazione.
|
|
6635
6682
|
*/
|
|
6636
6683
|
private readonly useCounts;
|
|
6637
6684
|
private keyOf;
|
|
@@ -6708,6 +6755,14 @@ declare class ResourceFormComponent {
|
|
|
6708
6755
|
ignoredChoiceSetFilters(): string | null;
|
|
6709
6756
|
/** La ripulitura e' un comando, non un effetto dell'apertura del form. */
|
|
6710
6757
|
clearIgnoredChoiceSetFilters(): void;
|
|
6758
|
+
/**
|
|
6759
|
+
* Quante volte il nome di questa risorsa compare dentro un'**espressione**.
|
|
6760
|
+
*
|
|
6761
|
+
* E' l'unica delle tre categorie che la rinomina non tocca (§6.3: la sintassi e' del motore), e
|
|
6762
|
+
* va detta dove si rinomina: il conteggio della riga lo dice già nel suo `title`, ma chi sta
|
|
6763
|
+
* cambiando il nome sta guardando questo campo.
|
|
6764
|
+
*/
|
|
6765
|
+
readonly formulaUseCount: _angular_core.Signal<number>;
|
|
6711
6766
|
/** Su un choice set da enum il tipo e' `enumType`: il campo generico sarebbe un doppione. */
|
|
6712
6767
|
hidesObjectType(): boolean;
|
|
6713
6768
|
isChoiceSetSource(source: ChoiceSetSource): boolean;
|
|
@@ -6836,21 +6891,82 @@ declare class ProblemsPanelComponent {
|
|
|
6836
6891
|
}>;
|
|
6837
6892
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
6838
6893
|
readonly filter: _angular_core.WritableSignal<SeverityFilter>;
|
|
6894
|
+
/** Il testo del filtro: cerca in cio' che la riga mostra. */
|
|
6895
|
+
readonly query: _angular_core.WritableSignal<string>;
|
|
6896
|
+
/**
|
|
6897
|
+
* I codici selezionati. Vuoto significa «tutti», non «nessuno»: e' l'unico modo di far
|
|
6898
|
+
* coincidere lo stato iniziale con l'assenza di filtro.
|
|
6899
|
+
*/
|
|
6900
|
+
readonly selectedCodes: _angular_core.WritableSignal<ReadonlySet<string>>;
|
|
6901
|
+
readonly isCodeMenuOpen: _angular_core.WritableSignal<boolean>;
|
|
6902
|
+
/** Il confine della tendina: il controllo, non il pannello. Vedi il commento nel costruttore. */
|
|
6903
|
+
private readonly codesRef;
|
|
6904
|
+
constructor();
|
|
6839
6905
|
readonly isRunning: _angular_core.Signal<boolean>;
|
|
6840
6906
|
readonly hasResult: _angular_core.Signal<boolean>;
|
|
6841
6907
|
readonly lastError: _angular_core.Signal<string | null>;
|
|
6908
|
+
/**
|
|
6909
|
+
* Il testo su cui la casella confronta, **una stringa per rilievo** e allineata per indice a
|
|
6910
|
+
* `validation.issues()`.
|
|
6911
|
+
*
|
|
6912
|
+
* Ci sta anche il percorso **tradotto per nome** (`pathLabel`), che e' quello che la riga
|
|
6913
|
+
* mostra: su uno screen dinamico il path arriva a indici, e cercare il nome del campo che si
|
|
6914
|
+
* legge sullo schermo non troverebbe niente. Si calcola una volta per risultato invece che a
|
|
6915
|
+
* ogni battuta, perche' tradurre un path significa camminare l'albero della schermata.
|
|
6916
|
+
*/
|
|
6917
|
+
private readonly haystacks;
|
|
6918
|
+
private readonly needle;
|
|
6919
|
+
/** Testo e codici: i due filtri che non sono la gravita'. */
|
|
6920
|
+
private matchesText;
|
|
6921
|
+
private matchesCode;
|
|
6842
6922
|
/**
|
|
6843
6923
|
* I conteggi dei chip vengono dai rilievi, non dal risultato: il numero sul filtro deve
|
|
6844
|
-
* essere quello che il filtro apre (vedi `FlowValidationStore.issueCounts`).
|
|
6924
|
+
* essere quello che il filtro apre (vedi `FlowValidationStore.issueCounts`). E' anche il
|
|
6925
|
+
* motivo per cui **non** si leggono piu' da `issueCounts` quando gli altri filtri sono attivi:
|
|
6926
|
+
* «Errori 47» accanto a una casella che ne lascia passare tre e' un numero che promette
|
|
6927
|
+
* quarantaquattro righe che non compariranno.
|
|
6845
6928
|
*/
|
|
6846
6929
|
private readonly counts;
|
|
6847
6930
|
readonly errorCount: _angular_core.Signal<number>;
|
|
6848
6931
|
readonly warningCount: _angular_core.Signal<number>;
|
|
6849
6932
|
readonly infoCount: _angular_core.Signal<number>;
|
|
6933
|
+
/** Quante righe aprirebbe «Tutti»: il totale **dopo** testo e codici. */
|
|
6850
6934
|
readonly totalCount: _angular_core.Signal<number>;
|
|
6935
|
+
/**
|
|
6936
|
+
* Il totale assoluto, che non guarda nessun filtro. Serve a due cose diverse dai chip: dire
|
|
6937
|
+
* che il flow **non** e' senza rilievi quando i filtri li nascondono tutti, e tenere in fondo
|
|
6938
|
+
* la nota sugli errori che bloccano l'attivazione — filtrando per «Note» quella nota spariva
|
|
6939
|
+
* pur essendoci quarantasette errori, cioe' proprio quando serve.
|
|
6940
|
+
*/
|
|
6941
|
+
readonly absoluteCount: _angular_core.Signal<number>;
|
|
6942
|
+
readonly hasErrors: _angular_core.Signal<boolean>;
|
|
6851
6943
|
readonly issues: _angular_core.Signal<FlowValidationIssue[]>;
|
|
6944
|
+
/**
|
|
6945
|
+
* I codici della tendina: quelli **presenti** dopo gravita' e testo, col loro conteggio.
|
|
6946
|
+
*
|
|
6947
|
+
* Piu' quelli **selezionati** anche se non compaiono piu', a zero: una selezione che sparisce
|
|
6948
|
+
* dall'elenco quando si cambia gravita' e' una selezione che continua a filtrare senza che si
|
|
6949
|
+
* possa vedere ne' togliere. Ordinati per frequenza e poi per nome, perche' su sessanta righe
|
|
6950
|
+
* il codice che conta e' quello che si ripete.
|
|
6951
|
+
*/
|
|
6952
|
+
readonly codeFacets: _angular_core.Signal<{
|
|
6953
|
+
code: string;
|
|
6954
|
+
count: number;
|
|
6955
|
+
selected: boolean;
|
|
6956
|
+
}[]>;
|
|
6957
|
+
readonly selectedCodeCount: _angular_core.Signal<number>;
|
|
6958
|
+
/** `true` se c'e' un filtro **oltre** la gravita': decide il messaggio dell'elenco vuoto. */
|
|
6959
|
+
readonly hasTextOrCodeFilter: _angular_core.Signal<boolean>;
|
|
6960
|
+
readonly hasAnyFilter: _angular_core.Signal<boolean>;
|
|
6961
|
+
onQuery(value: string): void;
|
|
6962
|
+
toggleCodeMenu(): void;
|
|
6963
|
+
/** La selezione e' un insieme nuovo a ogni gesto: un `Set` mutato non fa scattare il signal. */
|
|
6964
|
+
toggleCode(code: string): void;
|
|
6965
|
+
clearCodes(): void;
|
|
6966
|
+
resetFilters(): void;
|
|
6967
|
+
/** Nessun rilievo **nel flow**: e' un'altra cosa dal «nessuno che passi i filtri». */
|
|
6852
6968
|
readonly isClean: _angular_core.Signal<boolean>;
|
|
6853
|
-
/** Ci sono rilievi, ma
|
|
6969
|
+
/** Ci sono rilievi, ma i filtri attivi non ne mostrano nessuno: va detto, non lasciato in bianco. */
|
|
6854
6970
|
readonly isFilteredEmpty: _angular_core.Signal<boolean>;
|
|
6855
6971
|
readonly activeFilterLabel: _angular_core.Signal<string>;
|
|
6856
6972
|
/** Un secondo clic sul filtro attivo torna a «Tutti»: e' l'unico modo per uscirne col mouse dov'e'. */
|