@esfaenza/flow-builder 20.3.5 → 20.3.6
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 +29 -11
- package/fesm2022/esfaenza-flow-builder.mjs +588 -236
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +433 -190
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, AfterViewChecked } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Signal, AfterViewChecked } from '@angular/core';
|
|
3
3
|
import * as _esfaenza_flow_builder from '@esfaenza/flow-builder';
|
|
4
4
|
import { EFMarkerType, EFConnectableSide } from '@foblex/flow';
|
|
5
5
|
|
|
@@ -1665,141 +1665,6 @@ declare const SEVERITY_LABEL: Record<FlowSeverityBucket, string>;
|
|
|
1665
1665
|
*/
|
|
1666
1666
|
declare const SEVERITY_ICON: Record<FlowSeverityBucket, string>;
|
|
1667
1667
|
|
|
1668
|
-
/** Un node come lo vede l'editor: il node piu' da dove viene. */
|
|
1669
|
-
interface FlowNodeRef {
|
|
1670
|
-
name: string;
|
|
1671
|
-
type: FlowElementType;
|
|
1672
|
-
collection: FlowNodeCollection;
|
|
1673
|
-
index: number;
|
|
1674
|
-
node: FlowAnyNode;
|
|
1675
|
-
}
|
|
1676
|
-
/** Un arco derivato dal documento, con la sua origine precisa. */
|
|
1677
|
-
interface FlowEdge {
|
|
1678
|
-
/** Id stabile: `<sorgente>|<chiave uscita>`. */
|
|
1679
|
-
id: string;
|
|
1680
|
-
/** `$start` per gli archi uscenti dallo Start. */
|
|
1681
|
-
from: string;
|
|
1682
|
-
/** `undefined` → il connector esiste ma non ha destinazione: ramo incompleto (§6.4). */
|
|
1683
|
-
to?: string;
|
|
1684
|
-
outletKey: string;
|
|
1685
|
-
kind: FlowConnectionKind;
|
|
1686
|
-
label?: string | null;
|
|
1687
|
-
isGoTo?: boolean;
|
|
1688
|
-
}
|
|
1689
|
-
/** Una risorsa come la vede l'editor. */
|
|
1690
|
-
interface FlowResourceRef {
|
|
1691
|
-
name: string;
|
|
1692
|
-
collection: FlowResourceCollection;
|
|
1693
|
-
index: number;
|
|
1694
|
-
resource: Record<string, unknown>;
|
|
1695
|
-
}
|
|
1696
|
-
/** Documento minimo per un flow nuovo (§11, "Creare un flow"). */
|
|
1697
|
-
declare function emptyFlowDefinition(fullName: string, label: string, processType: string): FlowDefinition;
|
|
1698
|
-
declare class FlowDocumentStore {
|
|
1699
|
-
private readonly _document;
|
|
1700
|
-
private readonly _isDirty;
|
|
1701
|
-
private readonly _undoStack;
|
|
1702
|
-
private readonly _redoStack;
|
|
1703
|
-
/** Il documento in lavorazione. Sola lettura: si modifica con i metodi di questo store. */
|
|
1704
|
-
readonly document: _angular_core.Signal<FlowDefinition>;
|
|
1705
|
-
readonly isDirty: _angular_core.Signal<boolean>;
|
|
1706
|
-
readonly canUndo: _angular_core.Signal<boolean>;
|
|
1707
|
-
readonly canRedo: _angular_core.Signal<boolean>;
|
|
1708
|
-
/** §3.4 — l'elemento Start: array di uno, usa sempre il primo. */
|
|
1709
|
-
readonly start: _angular_core.Signal<FlowStart>;
|
|
1710
|
-
/** §3.1 — tutte le collection appiattite in un'unica lista di node. */
|
|
1711
|
-
readonly nodes: _angular_core.Signal<FlowNodeRef[]>;
|
|
1712
|
-
readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
|
|
1713
|
-
readonly resources: _angular_core.Signal<FlowResourceRef[]>;
|
|
1714
|
-
/**
|
|
1715
|
-
* §3.3 — l'insieme dei nomi già usati: node, risorse **e** step di orchestrazione, un unico
|
|
1716
|
-
* spazio di nomi. Il controllo di unicita' che guarda solo le variabili lascia passare una
|
|
1717
|
-
* variabile omonima di un node (§13.5); quello che dimentica gli step lascia passare uno
|
|
1718
|
-
* step omonimo di una variabile, che e' `NAME_DUPLICATED` allo stesso modo (§5.13).
|
|
1719
|
-
*/
|
|
1720
|
-
readonly usedNames: _angular_core.Signal<string[]>;
|
|
1721
|
-
/** Gli archi derivati dal documento, Start incluso. */
|
|
1722
|
-
readonly edges: _angular_core.Signal<FlowEdge[]>;
|
|
1723
|
-
/**
|
|
1724
|
-
* Raggiungibilita' calcolata localmente, per un feedback immediato mentre si disegna.
|
|
1725
|
-
* La fonte autoritativa resta `isReachable` di `POST /flows/outline` (§6.4): questa e'
|
|
1726
|
-
* un'anticipazione, non un sostituto.
|
|
1727
|
-
*/
|
|
1728
|
-
readonly reachableNames: _angular_core.Signal<ReadonlySet<string>>;
|
|
1729
|
-
/** Carica un documento dal backend: azzera storico e flag di modifica. */
|
|
1730
|
-
load(definition: FlowDefinition): void;
|
|
1731
|
-
/** Dopo un salvataggio riuscito: il documento resta, la modifica non e' piu' pendente. */
|
|
1732
|
-
markSaved(): void;
|
|
1733
|
-
/**
|
|
1734
|
-
* Applica una modifica al documento.
|
|
1735
|
-
* Il mutatore riceve una **copia** e la modifica liberamente; lo store si occupa di
|
|
1736
|
-
* storico e di sostituire il riferimento (nuovo oggetto → i signal derivati ricalcolano).
|
|
1737
|
-
*/
|
|
1738
|
-
update(mutate: (draft: FlowDefinition) => void, options?: {
|
|
1739
|
-
silent?: boolean;
|
|
1740
|
-
}): void;
|
|
1741
|
-
private pushHistory;
|
|
1742
|
-
undo(): void;
|
|
1743
|
-
redo(): void;
|
|
1744
|
-
/** Inserisce un node nella collection indicata dal dizionario (`metadataProperty`). */
|
|
1745
|
-
addNode(collection: FlowNodeCollection, node: FlowAnyNode): void;
|
|
1746
|
-
/** Modifica un node per nome. Il mutatore riceve la copia di lavoro. */
|
|
1747
|
-
updateNode(name: string, mutate: (node: FlowAnyNode) => void, options?: {
|
|
1748
|
-
silent?: boolean;
|
|
1749
|
-
}): void;
|
|
1750
|
-
/** Modifica lo Start. */
|
|
1751
|
-
updateStart(mutate: (start: FlowStart) => void, options?: {
|
|
1752
|
-
silent?: boolean;
|
|
1753
|
-
}): void;
|
|
1754
|
-
/**
|
|
1755
|
-
* Sposta un node sul canvas. `silent` per non riempire lo storico durante il drag:
|
|
1756
|
-
* il chiamante registra un solo passo alla fine del gesto.
|
|
1757
|
-
*/
|
|
1758
|
-
moveNode(name: string, x: number, y: number, options?: {
|
|
1759
|
-
silent?: boolean;
|
|
1760
|
-
}): void;
|
|
1761
|
-
/**
|
|
1762
|
-
* Rimuove un node **e** ogni connector che lo referenzia: un `targetReference` orfano
|
|
1763
|
-
* e' `CONNECTOR_TARGET_UNKNOWN`, cioe' un errore che blocca l'attivazione (§7).
|
|
1764
|
-
*/
|
|
1765
|
-
removeNode(name: string): void;
|
|
1766
|
-
/** Azzera i connector che puntano a un node scomparso, Start compreso. */
|
|
1767
|
-
private static clearReferencesTo;
|
|
1768
|
-
/**
|
|
1769
|
-
* Rinomina un node riscrivendo **tutti** i riferimenti che lo raggiungono.
|
|
1770
|
-
* Nessuna primitiva del backend lo fa (§13.8): se l'editor offre la rinomina, la
|
|
1771
|
-
* riscrittura la deve fare lui. Copre `targetReference`, i riferimenti a risorsa e i
|
|
1772
|
-
* riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
|
|
1773
|
-
*/
|
|
1774
|
-
renameNode(oldName: string, newName: string): void;
|
|
1775
|
-
/** Rinomina una risorsa, riscrivendo i riferimenti che la usano. */
|
|
1776
|
-
renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
|
|
1777
|
-
/**
|
|
1778
|
-
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
1779
|
-
* Cammina l'intero documento: e' l'unico modo per non dimenticare un campo, dato che
|
|
1780
|
-
* i riferimenti compaiono in una ventina di posti diversi (§4).
|
|
1781
|
-
*/
|
|
1782
|
-
private static rewriteReferences;
|
|
1783
|
-
/** Duplica un node con un nome nuovo, senza copiarne le uscite. */
|
|
1784
|
-
duplicateNode(name: string, newName: string, offset?: {
|
|
1785
|
-
x: number;
|
|
1786
|
-
y: number;
|
|
1787
|
-
}): void;
|
|
1788
|
-
/** Scrive la destinazione di un'uscita. `target` assente → il ramo resta incompleto. */
|
|
1789
|
-
setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
|
|
1790
|
-
/** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
|
|
1791
|
-
removeConnector(fromName: string, outletKey: string): void;
|
|
1792
|
-
addResource(collection: FlowResourceCollection, resource: Record<string, unknown>): void;
|
|
1793
|
-
updateResource(collection: FlowResourceCollection, index: number, mutate: (resource: Record<string, unknown>) => void): void;
|
|
1794
|
-
removeResource(collection: FlowResourceCollection, index: number): void;
|
|
1795
|
-
/** Modifica i campi del documento radice (label, description, processType, …). */
|
|
1796
|
-
updateHeader(mutate: (definition: FlowDefinition) => void, options?: {
|
|
1797
|
-
silent?: boolean;
|
|
1798
|
-
}): void;
|
|
1799
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowDocumentStore, never>;
|
|
1800
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
|
|
1801
|
-
}
|
|
1802
|
-
|
|
1803
1668
|
declare class FlowDictionaryStore {
|
|
1804
1669
|
private readonly api;
|
|
1805
1670
|
private readonly _dictionaries;
|
|
@@ -1988,6 +1853,313 @@ declare class FlowCatalogStore {
|
|
|
1988
1853
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowCatalogStore>;
|
|
1989
1854
|
}
|
|
1990
1855
|
|
|
1856
|
+
/**
|
|
1857
|
+
* Navigazione dei percorsi puntati — FRONTEND.md §4.4, §4.7, §4.7.1, §5.2, §5.7.
|
|
1858
|
+
*
|
|
1859
|
+
* La specifica e' cambiata su questo punto: i percorsi con il punto **si verificano**. Un percorso
|
|
1860
|
+
* di relazione (`Cliente.Citta`) si naviga un segmento alla volta e l'ultimo si verifica come un
|
|
1861
|
+
* campo semplice; dentro un'istanza di classe i membri annidati (`Richiesta.Cliente.Nome`) si
|
|
1862
|
+
* verificano **fino in fondo**, seguendo `objectType` di classe in classe e passando ai campi
|
|
1863
|
+
* dello schema quando il membro porta un record. Dove la catena si interrompe il rilievo e'
|
|
1864
|
+
* l'avviso `PATH_NOT_VERIFIABLE`, che significa "non lo so" e non "sbagliato".
|
|
1865
|
+
*
|
|
1866
|
+
* Perche' sta qui e non in tre pickers: la catena e' la stessa per campi e membri — cambiano solo
|
|
1867
|
+
* la primitiva che descrive la tappa (`listFields` contro `describeStructure`) e le parole
|
|
1868
|
+
* dell'avviso. Tenerla in un posto solo e' anche il modo di non far divergere l'editor dal
|
|
1869
|
+
* validatore, che naviga la stessa catena.
|
|
1870
|
+
*
|
|
1871
|
+
* Le due cose da non confondere:
|
|
1872
|
+
*
|
|
1873
|
+
* - **`objectType` di un membro** porta il nome di una classe se il membro e' `Structure`, il nome
|
|
1874
|
+
* di un'**entita' dello schema** se il membro e' `Object` — e da lì in poi si continua con i
|
|
1875
|
+
* campi, non con i membri (§4.7.1). Un `Enum` non e' un contenitore: `objectType` lì e' un tipo
|
|
1876
|
+
* di enumerazione e il percorso finisce.
|
|
1877
|
+
* - **scrivibile** non vuol dire la stessa cosa nei due mondi: un membro porta il proprio
|
|
1878
|
+
* `isWritable`, un campo no — fuori da un Create o da un Update il contesto non c'e', quindi
|
|
1879
|
+
* basta che sia `isCreateable` **oppure** `isUpdateable`, e un campo che non e' ne' l'uno ne'
|
|
1880
|
+
* l'altro e' `TARGET_NOT_WRITABLE` in qualunque contesto (§5.7).
|
|
1881
|
+
*/
|
|
1882
|
+
|
|
1883
|
+
/** Una tappa navigabile: un'entita' dello schema, oppure una classe (§4.7). */
|
|
1884
|
+
type PathContainerKind = 'object' | 'structure';
|
|
1885
|
+
interface PathContainer {
|
|
1886
|
+
kind: PathContainerKind;
|
|
1887
|
+
/** Nome dell'entita' o della classe. */
|
|
1888
|
+
name: string;
|
|
1889
|
+
}
|
|
1890
|
+
/**
|
|
1891
|
+
* Un segmento proponibile in una tappa — campo o membro ridotti al minimo comune, perche' chi
|
|
1892
|
+
* naviga non deve sapere quale dei due sta guardando.
|
|
1893
|
+
*/
|
|
1894
|
+
interface PathEntry {
|
|
1895
|
+
name: string;
|
|
1896
|
+
label?: string | null;
|
|
1897
|
+
description?: string | null;
|
|
1898
|
+
dataType?: FlowDataType;
|
|
1899
|
+
objectType?: string | null;
|
|
1900
|
+
isCollection?: boolean;
|
|
1901
|
+
/** Scrivibile come destinazione: `isWritable` per un membro, `createable || updateable` per un campo. */
|
|
1902
|
+
isWritable: boolean;
|
|
1903
|
+
/** Dove il percorso continua dopo questo segmento; assente = qui finisce cio' che si sa. */
|
|
1904
|
+
next?: PathContainer;
|
|
1905
|
+
}
|
|
1906
|
+
/**
|
|
1907
|
+
* Esito della descrizione di una tappa. Sono quattro come per le classi (§4.7.1) e vanno tenuti
|
|
1908
|
+
* distinti: solo `declared` autorizza a dire che un segmento non esiste.
|
|
1909
|
+
*/
|
|
1910
|
+
type PathLevelStatus = 'declared' | 'undeclared' | 'unknown-container' | 'unknown-catalog';
|
|
1911
|
+
interface PathLevel {
|
|
1912
|
+
container: PathContainer;
|
|
1913
|
+
status: PathLevelStatus;
|
|
1914
|
+
entries: PathEntry[];
|
|
1915
|
+
/** L'etichetta della tappa, quando la descrizione la porta (l'involucro della §4.7.1). */
|
|
1916
|
+
label?: string | null;
|
|
1917
|
+
}
|
|
1918
|
+
/**
|
|
1919
|
+
* Cio' che serve per navigare: le due primitive di catalogo. {@link FlowCatalogStore} la soddisfa
|
|
1920
|
+
* per forma, e prenderla come parametro tiene questo modulo verificabile senza un'iniezione.
|
|
1921
|
+
*/
|
|
1922
|
+
interface PathCatalog {
|
|
1923
|
+
listFields(object: string, usage?: FlowFieldUsage): Promise<FlowFieldDescription[]>;
|
|
1924
|
+
describeStructure(className: string): Promise<FlowStructureDescribed>;
|
|
1925
|
+
}
|
|
1926
|
+
/**
|
|
1927
|
+
* Perche' la navigazione si e' fermata. `unknown-segment` e' l'unico che accusa qualcuno: gli altri
|
|
1928
|
+
* sono `PATH_NOT_VERIFIABLE`, cioe' "non lo so".
|
|
1929
|
+
*/
|
|
1930
|
+
type PathStopReason = 'unknown-segment'
|
|
1931
|
+
/** Il segmento non dichiara dove continuare: nessun `objectType`, o un tipo che non e' un contenitore. */
|
|
1932
|
+
| 'no-object-type'
|
|
1933
|
+
/** Dentro una collection non si naviga: il percorso designa l'insieme, non un elemento. */
|
|
1934
|
+
| 'collection'
|
|
1935
|
+
/** Tappa valida di cui campi o membri non sono dichiarati: si digita, non si accusa. */
|
|
1936
|
+
| 'undeclared'
|
|
1937
|
+
/** Classe non registrata (404): l'errore sta sulla classe, non sul percorso. */
|
|
1938
|
+
| 'unknown-container'
|
|
1939
|
+
/** Catalogo assente o richiesta fallita: non dice niente sulla tappa. */
|
|
1940
|
+
| 'unknown-catalog';
|
|
1941
|
+
interface PathResolution {
|
|
1942
|
+
root: PathContainer;
|
|
1943
|
+
/** Il percorso come e' stato scritto, ripulito dagli spazi. */
|
|
1944
|
+
path: string;
|
|
1945
|
+
segments: string[];
|
|
1946
|
+
/** Le tappe attraversate, nell'ordine. L'ultima e' quella dove la navigazione si e' fermata. */
|
|
1947
|
+
levels: PathLevel[];
|
|
1948
|
+
/** I segmenti risolti, uno per tappa attraversata. */
|
|
1949
|
+
resolved: PathEntry[];
|
|
1950
|
+
/**
|
|
1951
|
+
* - `empty`: non c'e' ancora un ultimo segmento da verificare (percorso vuoto, o appena aperto
|
|
1952
|
+
* con il punto): niente da segnalare, ma c'e' da proporre;
|
|
1953
|
+
* - `resolved`: ogni segmento verificato, {@link last} e' cio' che il percorso designa;
|
|
1954
|
+
* - `unknown`: un segmento non esiste nella sua tappa, che era autorevole;
|
|
1955
|
+
* - `unverifiable`: la catena si interrompe — `PATH_NOT_VERIFIABLE`.
|
|
1956
|
+
*/
|
|
1957
|
+
status: 'empty' | 'resolved' | 'unknown' | 'unverifiable';
|
|
1958
|
+
reason?: PathStopReason;
|
|
1959
|
+
/** Dove si e' fermata: indice nel percorso e testo del segmento. */
|
|
1960
|
+
stoppedAt?: {
|
|
1961
|
+
index: number;
|
|
1962
|
+
segment: string;
|
|
1963
|
+
};
|
|
1964
|
+
/** Il segmento finale, solo con `resolved`: e' il campo o il membro che il percorso designa. */
|
|
1965
|
+
last?: PathEntry;
|
|
1966
|
+
/**
|
|
1967
|
+
* La tappa dell'**ultimo** segmento, quando la navigazione ci e' arrivata: e' cio' che l'editor
|
|
1968
|
+
* propone, con `prefix` da premettere al nome scelto. Assente se la catena si e' interrotta
|
|
1969
|
+
* prima: lì non c'e' niente da proporre.
|
|
1970
|
+
*/
|
|
1971
|
+
tail?: {
|
|
1972
|
+
level: PathLevel;
|
|
1973
|
+
prefix: string;
|
|
1974
|
+
segment: string;
|
|
1975
|
+
};
|
|
1976
|
+
}
|
|
1977
|
+
/**
|
|
1978
|
+
* Descrive una tappa. `usage` vale solo per le entita' e solo dove serve: i segmenti **intermedi**
|
|
1979
|
+
* si chiedono sempre con `any`, perche' l'uso riguarda l'ultimo — un filtro su `Cliente.Citta`
|
|
1980
|
+
* esige che `Citta` sia filtrabile, non che lo sia la relazione (§4.4).
|
|
1981
|
+
*/
|
|
1982
|
+
declare function loadPathLevel(catalog: PathCatalog, container: PathContainer, usage?: FlowFieldUsage): Promise<PathLevel>;
|
|
1983
|
+
/**
|
|
1984
|
+
* Naviga `path` a partire da `root`, un segmento alla volta. Non rifiuta mai: un catalogo assente
|
|
1985
|
+
* e' un esito (`unverifiable`), non un errore da gestire in ogni chiamante.
|
|
1986
|
+
*/
|
|
1987
|
+
declare function resolvePath(catalog: PathCatalog, root: PathContainer, path: string | undefined, options?: {
|
|
1988
|
+
usage?: FlowFieldUsage;
|
|
1989
|
+
}): Promise<PathResolution>;
|
|
1990
|
+
/** Come chiamare una tappa in un messaggio: la classe ha una label, l'entita' il proprio nome. */
|
|
1991
|
+
declare function pathContainerLabel(level: PathLevel | undefined): string;
|
|
1992
|
+
/**
|
|
1993
|
+
* Il testo dell'avviso `PATH_NOT_VERIFIABLE`, con il **motivo**: "non verificabile" senza dire
|
|
1994
|
+
* perche' e' indistinguibile da un difetto dell'editor.
|
|
1995
|
+
*/
|
|
1996
|
+
declare function pathNotVerifiableMessage(resolution: PathResolution): string;
|
|
1997
|
+
/** I nomi proponibili nella tappa dove un segmento non e' stato trovato: il messaggio li elenca. */
|
|
1998
|
+
declare function pathAvailableNames(resolution: PathResolution): string[];
|
|
1999
|
+
/**
|
|
2000
|
+
* La riga di descrizione di un segmento proponibile. `showWritability` la chiede chi sta
|
|
2001
|
+
* compilando una **destinazione**: in un filtro "sola lettura" sarebbe rumore, in un campo di
|
|
2002
|
+
* destinazione e' l'informazione che evita `TARGET_NOT_WRITABLE`.
|
|
2003
|
+
*/
|
|
2004
|
+
declare function describePathEntry(entry: PathEntry, options?: {
|
|
2005
|
+
showWritability?: boolean;
|
|
2006
|
+
}): string;
|
|
2007
|
+
interface PathNavigationRequest {
|
|
2008
|
+
/** `null` = niente da navigare: nessuna radice scelta, o radice non navigabile. */
|
|
2009
|
+
root: PathContainer | null;
|
|
2010
|
+
path: string | undefined;
|
|
2011
|
+
/** L'uso con cui chiedere i campi dell'**ultimo** segmento (§6.4). */
|
|
2012
|
+
usage?: FlowFieldUsage;
|
|
2013
|
+
}
|
|
2014
|
+
interface PathNavigation {
|
|
2015
|
+
/** `null` finche' non c'e' una radice o la prima risposta non e' arrivata. */
|
|
2016
|
+
resolution: Signal<PathResolution | null>;
|
|
2017
|
+
isPending: Signal<boolean>;
|
|
2018
|
+
}
|
|
2019
|
+
/**
|
|
2020
|
+
* La navigazione come coppia di signal, per i pickers. Da chiamare in un **contesto di
|
|
2021
|
+
* iniezione** (il costruttore del componente), perche' dentro crea un `effect`.
|
|
2022
|
+
*
|
|
2023
|
+
* Il token di sequenza non e' cosmetico: le tappe si caricano una alla volta e una risposta
|
|
2024
|
+
* superata che arriva dopo mostrerebbe l'avviso di un percorso che l'utente ha già cambiato.
|
|
2025
|
+
*/
|
|
2026
|
+
declare function navigatePath(catalog: PathCatalog, request: () => PathNavigationRequest | null): PathNavigation;
|
|
2027
|
+
|
|
2028
|
+
/** Un node come lo vede l'editor: il node piu' da dove viene. */
|
|
2029
|
+
interface FlowNodeRef {
|
|
2030
|
+
name: string;
|
|
2031
|
+
type: FlowElementType;
|
|
2032
|
+
collection: FlowNodeCollection;
|
|
2033
|
+
index: number;
|
|
2034
|
+
node: FlowAnyNode;
|
|
2035
|
+
}
|
|
2036
|
+
/** Un arco derivato dal documento, con la sua origine precisa. */
|
|
2037
|
+
interface FlowEdge {
|
|
2038
|
+
/** Id stabile: `<sorgente>|<chiave uscita>`. */
|
|
2039
|
+
id: string;
|
|
2040
|
+
/** `$start` per gli archi uscenti dallo Start. */
|
|
2041
|
+
from: string;
|
|
2042
|
+
/** `undefined` → il connector esiste ma non ha destinazione: ramo incompleto (§6.4). */
|
|
2043
|
+
to?: string;
|
|
2044
|
+
outletKey: string;
|
|
2045
|
+
kind: FlowConnectionKind;
|
|
2046
|
+
label?: string | null;
|
|
2047
|
+
isGoTo?: boolean;
|
|
2048
|
+
}
|
|
2049
|
+
/** Una risorsa come la vede l'editor. */
|
|
2050
|
+
interface FlowResourceRef {
|
|
2051
|
+
name: string;
|
|
2052
|
+
collection: FlowResourceCollection;
|
|
2053
|
+
index: number;
|
|
2054
|
+
resource: Record<string, unknown>;
|
|
2055
|
+
}
|
|
2056
|
+
/** Documento minimo per un flow nuovo (§11, "Creare un flow"). */
|
|
2057
|
+
declare function emptyFlowDefinition(fullName: string, label: string, processType: string): FlowDefinition;
|
|
2058
|
+
declare class FlowDocumentStore {
|
|
2059
|
+
private readonly _document;
|
|
2060
|
+
private readonly _isDirty;
|
|
2061
|
+
private readonly _undoStack;
|
|
2062
|
+
private readonly _redoStack;
|
|
2063
|
+
/** Il documento in lavorazione. Sola lettura: si modifica con i metodi di questo store. */
|
|
2064
|
+
readonly document: _angular_core.Signal<FlowDefinition>;
|
|
2065
|
+
readonly isDirty: _angular_core.Signal<boolean>;
|
|
2066
|
+
readonly canUndo: _angular_core.Signal<boolean>;
|
|
2067
|
+
readonly canRedo: _angular_core.Signal<boolean>;
|
|
2068
|
+
/** §3.4 — l'elemento Start: array di uno, usa sempre il primo. */
|
|
2069
|
+
readonly start: _angular_core.Signal<FlowStart>;
|
|
2070
|
+
/** §3.1 — tutte le collection appiattite in un'unica lista di node. */
|
|
2071
|
+
readonly nodes: _angular_core.Signal<FlowNodeRef[]>;
|
|
2072
|
+
readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
|
|
2073
|
+
readonly resources: _angular_core.Signal<FlowResourceRef[]>;
|
|
2074
|
+
/**
|
|
2075
|
+
* §3.3 — l'insieme dei nomi già usati: node, risorse **e** step di orchestrazione, un unico
|
|
2076
|
+
* spazio di nomi. Il controllo di unicita' che guarda solo le variabili lascia passare una
|
|
2077
|
+
* variabile omonima di un node (§13.5); quello che dimentica gli step lascia passare uno
|
|
2078
|
+
* step omonimo di una variabile, che e' `NAME_DUPLICATED` allo stesso modo (§5.13).
|
|
2079
|
+
*/
|
|
2080
|
+
readonly usedNames: _angular_core.Signal<string[]>;
|
|
2081
|
+
/** Gli archi derivati dal documento, Start incluso. */
|
|
2082
|
+
readonly edges: _angular_core.Signal<FlowEdge[]>;
|
|
2083
|
+
/**
|
|
2084
|
+
* Raggiungibilita' calcolata localmente, per un feedback immediato mentre si disegna.
|
|
2085
|
+
* La fonte autoritativa resta `isReachable` di `POST /flows/outline` (§6.4): questa e'
|
|
2086
|
+
* un'anticipazione, non un sostituto.
|
|
2087
|
+
*/
|
|
2088
|
+
readonly reachableNames: _angular_core.Signal<ReadonlySet<string>>;
|
|
2089
|
+
/** Carica un documento dal backend: azzera storico e flag di modifica. */
|
|
2090
|
+
load(definition: FlowDefinition): void;
|
|
2091
|
+
/** Dopo un salvataggio riuscito: il documento resta, la modifica non e' piu' pendente. */
|
|
2092
|
+
markSaved(): void;
|
|
2093
|
+
/**
|
|
2094
|
+
* Applica una modifica al documento.
|
|
2095
|
+
* Il mutatore riceve una **copia** e la modifica liberamente; lo store si occupa di
|
|
2096
|
+
* storico e di sostituire il riferimento (nuovo oggetto → i signal derivati ricalcolano).
|
|
2097
|
+
*/
|
|
2098
|
+
update(mutate: (draft: FlowDefinition) => void, options?: {
|
|
2099
|
+
silent?: boolean;
|
|
2100
|
+
}): void;
|
|
2101
|
+
private pushHistory;
|
|
2102
|
+
undo(): void;
|
|
2103
|
+
redo(): void;
|
|
2104
|
+
/** Inserisce un node nella collection indicata dal dizionario (`metadataProperty`). */
|
|
2105
|
+
addNode(collection: FlowNodeCollection, node: FlowAnyNode): void;
|
|
2106
|
+
/** Modifica un node per nome. Il mutatore riceve la copia di lavoro. */
|
|
2107
|
+
updateNode(name: string, mutate: (node: FlowAnyNode) => void, options?: {
|
|
2108
|
+
silent?: boolean;
|
|
2109
|
+
}): void;
|
|
2110
|
+
/** Modifica lo Start. */
|
|
2111
|
+
updateStart(mutate: (start: FlowStart) => void, options?: {
|
|
2112
|
+
silent?: boolean;
|
|
2113
|
+
}): void;
|
|
2114
|
+
/**
|
|
2115
|
+
* Sposta un node sul canvas. `silent` per non riempire lo storico durante il drag:
|
|
2116
|
+
* il chiamante registra un solo passo alla fine del gesto.
|
|
2117
|
+
*/
|
|
2118
|
+
moveNode(name: string, x: number, y: number, options?: {
|
|
2119
|
+
silent?: boolean;
|
|
2120
|
+
}): void;
|
|
2121
|
+
/**
|
|
2122
|
+
* Rimuove un node **e** ogni connector che lo referenzia: un `targetReference` orfano
|
|
2123
|
+
* e' `CONNECTOR_TARGET_UNKNOWN`, cioe' un errore che blocca l'attivazione (§7).
|
|
2124
|
+
*/
|
|
2125
|
+
removeNode(name: string): void;
|
|
2126
|
+
/** Azzera i connector che puntano a un node scomparso, Start compreso. */
|
|
2127
|
+
private static clearReferencesTo;
|
|
2128
|
+
/**
|
|
2129
|
+
* Rinomina un node riscrivendo **tutti** i riferimenti che lo raggiungono.
|
|
2130
|
+
* Nessuna primitiva del backend lo fa (§13.8): se l'editor offre la rinomina, la
|
|
2131
|
+
* riscrittura la deve fare lui. Copre `targetReference`, i riferimenti a risorsa e i
|
|
2132
|
+
* riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
|
|
2133
|
+
*/
|
|
2134
|
+
renameNode(oldName: string, newName: string): void;
|
|
2135
|
+
/** Rinomina una risorsa, riscrivendo i riferimenti che la usano. */
|
|
2136
|
+
renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
|
|
2137
|
+
/**
|
|
2138
|
+
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
2139
|
+
* Cammina l'intero documento: e' l'unico modo per non dimenticare un campo, dato che
|
|
2140
|
+
* i riferimenti compaiono in una ventina di posti diversi (§4).
|
|
2141
|
+
*/
|
|
2142
|
+
private static rewriteReferences;
|
|
2143
|
+
/** Duplica un node con un nome nuovo, senza copiarne le uscite. */
|
|
2144
|
+
duplicateNode(name: string, newName: string, offset?: {
|
|
2145
|
+
x: number;
|
|
2146
|
+
y: number;
|
|
2147
|
+
}): void;
|
|
2148
|
+
/** Scrive la destinazione di un'uscita. `target` assente → il ramo resta incompleto. */
|
|
2149
|
+
setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
|
|
2150
|
+
/** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
|
|
2151
|
+
removeConnector(fromName: string, outletKey: string): void;
|
|
2152
|
+
addResource(collection: FlowResourceCollection, resource: Record<string, unknown>): void;
|
|
2153
|
+
updateResource(collection: FlowResourceCollection, index: number, mutate: (resource: Record<string, unknown>) => void): void;
|
|
2154
|
+
removeResource(collection: FlowResourceCollection, index: number): void;
|
|
2155
|
+
/** Modifica i campi del documento radice (label, description, processType, …). */
|
|
2156
|
+
updateHeader(mutate: (definition: FlowDefinition) => void, options?: {
|
|
2157
|
+
silent?: boolean;
|
|
2158
|
+
}): void;
|
|
2159
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowDocumentStore, never>;
|
|
2160
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
|
|
2161
|
+
}
|
|
2162
|
+
|
|
1991
2163
|
declare class FlowValidationStore {
|
|
1992
2164
|
private readonly api;
|
|
1993
2165
|
private readonly destroyRef;
|
|
@@ -2511,13 +2683,26 @@ declare class ReferencePickerComponent {
|
|
|
2511
2683
|
readonly query: _angular_core.WritableSignal<string>;
|
|
2512
2684
|
constructor();
|
|
2513
2685
|
/**
|
|
2514
|
-
*
|
|
2515
|
-
*
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2686
|
+
* La risorsa da cui il valore corrente sta navigando, quando la sua forma e' **dichiarata**: una
|
|
2687
|
+
* `Structure` con la classe, un record con l'entita'. È cio' che rende il percorso verificabile.
|
|
2688
|
+
*
|
|
2689
|
+
* Un output automatico e' escluso di proposito: la primitiva ne dichiara il tipo, ma la
|
|
2690
|
+
* specifica tiene i percorsi che ne partono fuori dalla validazione (§7, ultimo capoverso), e
|
|
2691
|
+
* l'editor non deve accusare cio' che il backend non verifica.
|
|
2692
|
+
*/
|
|
2693
|
+
private readonly navigableRoot;
|
|
2694
|
+
/** Il percorso dopo la radice: `Cliente.Email` di `Richiesta.Cliente.Email`. */
|
|
2695
|
+
private readonly navigatedPath;
|
|
2696
|
+
private readonly navigation;
|
|
2697
|
+
private readonly resolution;
|
|
2698
|
+
/** La tappa in cui si sta scrivendo: da qui vengono le proposte dei segmenti. */
|
|
2699
|
+
private readonly tail;
|
|
2700
|
+
/**
|
|
2701
|
+
* I segmenti come riferimenti navigati: `Richiesta.Cliente.Email`, col tipo del segmento. Un
|
|
2702
|
+
* segmento di sola lettura non si propone in un campo di destinazione, a meno che da lì il
|
|
2703
|
+
* percorso continui: `Richiesta.Cliente` non si assegna, ma `Richiesta.Cliente.Email` sì (§5.7).
|
|
2704
|
+
*/
|
|
2705
|
+
private readonly pathReferences;
|
|
2521
2706
|
readonly options: _angular_core.Signal<FlowReference[]>;
|
|
2522
2707
|
/** Le opzioni raggruppate per `kind`, così gli output automatici si distinguono. */
|
|
2523
2708
|
readonly groups: _angular_core.Signal<{
|
|
@@ -2529,20 +2714,23 @@ declare class ReferencePickerComponent {
|
|
|
2529
2714
|
/**
|
|
2530
2715
|
* Stato del valore corrente rispetto all'elenco.
|
|
2531
2716
|
* - `known`: presente nell'elenco;
|
|
2532
|
-
* - `navigated`: la radice e' nota ma
|
|
2533
|
-
*
|
|
2534
|
-
* quindi si accetta senza segnalare;
|
|
2717
|
+
* - `navigated`: la radice e' nota ma la sua forma non e' dichiarata (output automatico di un
|
|
2718
|
+
* elemento): il percorso resta fuori dalla validazione, quindi si accetta senza segnalare;
|
|
2535
2719
|
* - `host`: scope del sistema ospite che **non dichiara percorsi**: non verificabile (§4.1);
|
|
2536
|
-
* - `member`:
|
|
2537
|
-
* - `memberUnknown`:
|
|
2538
|
-
* `
|
|
2539
|
-
* - `memberNotWritable`: il
|
|
2720
|
+
* - `member`: percorso dentro una forma dichiarata, verificato fino in fondo (§4.4, §4.7.1);
|
|
2721
|
+
* - `memberUnknown`: un segmento non esiste nella sua tappa: `STRUCTURE_MEMBER_UNKNOWN` su una
|
|
2722
|
+
* classe, `FIELD_UNKNOWN` su un'entita', e a differenza di prima si sa per certo;
|
|
2723
|
+
* - `memberNotWritable`: il segmento esiste, non e' scrivibile, e questo campo vuole una
|
|
2540
2724
|
* destinazione: `TARGET_NOT_WRITABLE`;
|
|
2725
|
+
* - `pathUnverified`: la catena si interrompe (`PATH_NOT_VERIFIABLE`): avviso, non errore;
|
|
2541
2726
|
* - `unknown`: nessuna corrispondenza: si avvisa, senza bloccare. Ci finisce anche il
|
|
2542
2727
|
* percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
|
|
2543
2728
|
* risponderebbe `GLOBAL_UNKNOWN`.
|
|
2544
2729
|
*/
|
|
2545
|
-
readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "memberUnknown" | "memberNotWritable" | "
|
|
2730
|
+
readonly valueState: _angular_core.Signal<"empty" | "unknown" | "known" | "navigated" | "host" | "member" | "memberUnknown" | "memberNotWritable" | "pathUnverified">;
|
|
2731
|
+
/** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
|
|
2732
|
+
private readonly tailIsObject;
|
|
2733
|
+
private readonly tailContainer;
|
|
2546
2734
|
readonly hint: _angular_core.Signal<string | null>;
|
|
2547
2735
|
/** I due stati che sono errori e non avvisi: il colore deve dirlo. */
|
|
2548
2736
|
readonly isHintError: _angular_core.Signal<boolean>;
|
|
@@ -2552,7 +2740,15 @@ declare class ReferencePickerComponent {
|
|
|
2552
2740
|
toggle(): void;
|
|
2553
2741
|
onQuery(value: string): void;
|
|
2554
2742
|
choose(reference: FlowReference): void;
|
|
2555
|
-
/**
|
|
2743
|
+
/**
|
|
2744
|
+
* Scende di un livello dentro un percorso proponibile invece di scegliere il segmento: scrive il
|
|
2745
|
+
* punto, e l'elenco diventa quello della tappa successiva. Serve perche' `Richiesta.Cliente` puo'
|
|
2746
|
+
* essere il riferimento che si vuole **oppure** la tappa da cui continuare.
|
|
2747
|
+
*/
|
|
2748
|
+
descend(reference: FlowReference): void;
|
|
2749
|
+
/** `true` se da questo riferimento il percorso continua: la sua forma e' dichiarata. */
|
|
2750
|
+
canDescend(reference: FlowReference): boolean;
|
|
2751
|
+
/** Scrittura libera: indispensabile per gli scope dell'host e per i percorsi non enumerabili. */
|
|
2556
2752
|
onManualInput(value: string): void;
|
|
2557
2753
|
clear(): void;
|
|
2558
2754
|
describe(reference: FlowReference): string;
|
|
@@ -2610,29 +2806,55 @@ declare class FieldPickerComponent {
|
|
|
2610
2806
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2611
2807
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2612
2808
|
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2613
|
-
private readonly fields;
|
|
2614
|
-
private readonly loadFailed;
|
|
2615
2809
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2616
2810
|
/** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
|
|
2617
2811
|
private readonly query;
|
|
2812
|
+
/**
|
|
2813
|
+
* La navigazione del percorso corrente. Il testo digitato conta quanto il valore: mentre si
|
|
2814
|
+
* scrive `Cliente.Cit` l'elenco deve già essere quello dei campi di `Cliente`.
|
|
2815
|
+
*/
|
|
2816
|
+
private readonly navigation;
|
|
2817
|
+
private readonly resolution;
|
|
2618
2818
|
constructor();
|
|
2619
2819
|
readonly text: _angular_core.Signal<string>;
|
|
2620
|
-
|
|
2820
|
+
/** La tappa in cui si sta scrivendo: da qui vengono le proposte, non dalla radice. */
|
|
2821
|
+
private readonly tail;
|
|
2822
|
+
/** Cio' che si premette al nome scelto: `''` sul primo segmento, `Cliente.` sul secondo. */
|
|
2823
|
+
readonly prefix: _angular_core.Signal<string>;
|
|
2824
|
+
readonly options: _angular_core.Signal<PathEntry[]>;
|
|
2825
|
+
/** `true` se la tappa in cui si scrive ha un elenco **autorevole** (§4.7.1). */
|
|
2621
2826
|
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2622
|
-
/**
|
|
2623
|
-
readonly
|
|
2827
|
+
/** L'etichetta della tappa: serve nell'intestazione dell'elenco quando non e' la radice. */
|
|
2828
|
+
readonly levelLabel: _angular_core.Signal<string>;
|
|
2829
|
+
/** `true` se il valore e' un percorso navigato: cambia il testo dei messaggi, non la severita'. */
|
|
2830
|
+
readonly isPath: _angular_core.Signal<boolean>;
|
|
2624
2831
|
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2625
|
-
/**
|
|
2626
|
-
readonly
|
|
2832
|
+
/** §4.4 — la catena si e' interrotta: avviso, non errore. Il percorso puo' essere giusto. */
|
|
2833
|
+
readonly isNotVerifiable: _angular_core.Signal<boolean>;
|
|
2834
|
+
/**
|
|
2835
|
+
* L'avviso dipende dall'uso — un campo puo' esistere e non essere filtrabile — e dalla **tappa**:
|
|
2836
|
+
* su `Cliente.Citta` il campo che non esiste e' di `Cliente`, non dell'oggetto di partenza.
|
|
2837
|
+
*/
|
|
2838
|
+
readonly unknownMessage: _angular_core.Signal<string>;
|
|
2839
|
+
readonly notVerifiableMessage: _angular_core.Signal<string>;
|
|
2627
2840
|
readonly describeValue: _angular_core.Signal<string | null>;
|
|
2841
|
+
/** Catalogo non raggiungibile sulla **radice**: il campo resta scrivibile a mano, non bloccato. */
|
|
2628
2842
|
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2629
2843
|
open(): void;
|
|
2630
2844
|
close(): void;
|
|
2631
2845
|
toggle(): void;
|
|
2632
2846
|
onInput(text: string): void;
|
|
2633
|
-
choose(
|
|
2847
|
+
choose(entry: PathEntry): void;
|
|
2848
|
+
/**
|
|
2849
|
+
* Scende dentro una relazione invece di scegliere il campo: il pannello resta aperto e l'elenco
|
|
2850
|
+
* diventa quello dell'oggetto referenziato. È l'equivalente di scrivere il punto, e infatti
|
|
2851
|
+
* scrive il punto: il valore intermedio e' quello che si vedrebbe digitando.
|
|
2852
|
+
*/
|
|
2853
|
+
descend(entry: PathEntry): void;
|
|
2854
|
+
/** `true` se da questo campo il percorso continua: e' una relazione con l'oggetto dichiarato. */
|
|
2855
|
+
canDescend(entry: PathEntry): boolean;
|
|
2634
2856
|
clear(): void;
|
|
2635
|
-
describe(
|
|
2857
|
+
describe(entry: PathEntry): string;
|
|
2636
2858
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldPickerComponent, never>;
|
|
2637
2859
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldPickerComponent, "fb-field-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2638
2860
|
}
|
|
@@ -2706,55 +2928,76 @@ declare class StructureMemberPickerComponent {
|
|
|
2706
2928
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2707
2929
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2708
2930
|
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2709
|
-
/**
|
|
2710
|
-
* §4.7.1 — non basta l'elenco: serve l'**esito**. Elenco vuoto perche' i membri non sono
|
|
2711
|
-
* dichiarati (si digita a mano) e classe non registrata (non c'e' niente da digitare) hanno
|
|
2712
|
-
* la stessa lista e messaggi opposti.
|
|
2713
|
-
*/
|
|
2714
|
-
private readonly result;
|
|
2715
|
-
private readonly members;
|
|
2716
2931
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2717
2932
|
/** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
|
|
2718
2933
|
private readonly query;
|
|
2934
|
+
/**
|
|
2935
|
+
* La navigazione del percorso corrente, dalla classe in giu'. Il testo digitato conta quanto il
|
|
2936
|
+
* valore: mentre si scrive `Cliente.No` l'elenco deve già essere quello dei campi di `Cliente`.
|
|
2937
|
+
*/
|
|
2938
|
+
private readonly navigation;
|
|
2939
|
+
private readonly resolution;
|
|
2719
2940
|
constructor();
|
|
2720
2941
|
readonly text: _angular_core.Signal<string>;
|
|
2721
|
-
/**
|
|
2722
|
-
readonly
|
|
2723
|
-
|
|
2942
|
+
/** La tappa in cui si sta scrivendo: la classe di partenza, o quella in cui si e' entrati. */
|
|
2943
|
+
private readonly tail;
|
|
2944
|
+
/** Cio' che si premette al nome scelto: `''` sul primo segmento, `Cliente.` sul secondo. */
|
|
2945
|
+
readonly prefix: _angular_core.Signal<string>;
|
|
2724
2946
|
/**
|
|
2725
|
-
*
|
|
2726
|
-
*
|
|
2947
|
+
* Con `usage="writable"` i segmenti di sola lettura non si propongono affatto — con
|
|
2948
|
+
* un'eccezione: quelli **navigabili** restano, perche' un membro record che non si sostituisce
|
|
2949
|
+
* puo' avere campi aggiornabili, e nasconderlo chiuderebbe la strada a `Richiesta.Cliente.Email`.
|
|
2950
|
+
*/
|
|
2951
|
+
readonly available: _angular_core.Signal<PathEntry[]>;
|
|
2952
|
+
readonly options: _angular_core.Signal<PathEntry[]>;
|
|
2953
|
+
/**
|
|
2954
|
+
* Come chiamare la tappa: la `label` la porta l'involucro della descrizione, ed e' il motivo per
|
|
2955
|
+
* cui l'involucro esiste (§4.7.1). Assente, si mostra il nome della classe o dell'entita'.
|
|
2727
2956
|
*/
|
|
2728
2957
|
readonly classLabel: _angular_core.Signal<string>;
|
|
2729
|
-
/**
|
|
2958
|
+
/** `true` se la tappa in cui si scrive ha un elenco **autorevole** (§4.7.1). */
|
|
2730
2959
|
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2731
|
-
/**
|
|
2960
|
+
/** Nell'elenco dei campi di un'entita' il titolo lo dice: non sono membri di una classe. */
|
|
2961
|
+
readonly isObjectLevel: _angular_core.Signal<boolean>;
|
|
2962
|
+
private readonly rootStatus;
|
|
2963
|
+
/** 404 sulla classe di partenza: il nome del membro non c'e' modo di indovinarlo. */
|
|
2732
2964
|
readonly isClassUnknown: _angular_core.Signal<boolean>;
|
|
2733
2965
|
/** Classe valida, membri non dichiarati: si digita, e non si segnala niente. */
|
|
2734
2966
|
readonly isUndeclared: _angular_core.Signal<boolean>;
|
|
2735
|
-
/**
|
|
2736
|
-
|
|
2737
|
-
/** `true` se il valore naviga dentro un membro: oltre il primo segmento non si verifica. */
|
|
2738
|
-
readonly isNestedPath: _angular_core.Signal<boolean>;
|
|
2739
|
-
private readonly declared;
|
|
2967
|
+
/** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
|
|
2968
|
+
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2740
2969
|
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2741
|
-
/**
|
|
2970
|
+
/** §4.4, §4.7.1 — la catena si e' interrotta: avviso, non errore. */
|
|
2971
|
+
readonly isNotVerifiable: _angular_core.Signal<boolean>;
|
|
2972
|
+
/**
|
|
2973
|
+
* Il messaggio elenca i disponibili: dire solo "non esiste" non aiuta a correggere. Su un
|
|
2974
|
+
* percorso annidato il segmento che manca e' di **quella** tappa, e le parole cambiano con essa —
|
|
2975
|
+
* un campo di un'entita' non e' un membro di una classe.
|
|
2976
|
+
*/
|
|
2742
2977
|
readonly unknownMessage: _angular_core.Signal<string>;
|
|
2978
|
+
readonly notVerifiableMessage: _angular_core.Signal<string>;
|
|
2743
2979
|
/**
|
|
2744
|
-
* Un
|
|
2745
|
-
* documento scritto altrove, e va detto qui invece di lasciarlo scoprire dall'attivazione.
|
|
2980
|
+
* Un segmento che esiste ma non e' scrivibile, scelto dove serve una destinazione: capita su un
|
|
2981
|
+
* documento scritto altrove, e va detto qui invece di lasciarlo scoprire dall'attivazione. Su un
|
|
2982
|
+
* campo di record "scrivibile" vuol dire `createable` **oppure** `updateable` (§5.7).
|
|
2746
2983
|
*/
|
|
2747
2984
|
readonly isNotWritable: _angular_core.Signal<boolean>;
|
|
2985
|
+
readonly notWritableMessage: _angular_core.Signal<"Questo campo non si scrive ne’ creando ne’ aggiornando un record: assegnarlo e’ TARGET_NOT_WRITABLE." | "Questo membro e’ calcolato: si legge, ma assegnarlo e’ TARGET_NOT_WRITABLE.">;
|
|
2748
2986
|
readonly describeValue: _angular_core.Signal<string | null>;
|
|
2749
|
-
/** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
|
|
2750
|
-
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2751
2987
|
open(): void;
|
|
2752
2988
|
close(): void;
|
|
2753
2989
|
toggle(): void;
|
|
2754
2990
|
onInput(text: string): void;
|
|
2755
|
-
choose(
|
|
2991
|
+
choose(entry: PathEntry): void;
|
|
2992
|
+
/**
|
|
2993
|
+
* Scende dentro un membro composto invece di sceglierlo: e' l'equivalente di scrivere il punto, e
|
|
2994
|
+
* infatti scrive il punto. Serve perche' `Richiesta.Cliente` puo' essere la destinazione che si
|
|
2995
|
+
* vuole **oppure** la tappa da cui continuare.
|
|
2996
|
+
*/
|
|
2997
|
+
descend(entry: PathEntry): void;
|
|
2998
|
+
canDescend(entry: PathEntry): boolean;
|
|
2756
2999
|
clear(): void;
|
|
2757
|
-
describe(
|
|
3000
|
+
describe(entry: PathEntry): string;
|
|
2758
3001
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StructureMemberPickerComponent, never>;
|
|
2759
3002
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StructureMemberPickerComponent, "fb-structure-member-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2760
3003
|
}
|
|
@@ -3570,7 +3813,7 @@ declare class FlowBuilderComponent {
|
|
|
3570
3813
|
* troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
|
|
3571
3814
|
* modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
|
|
3572
3815
|
*/
|
|
3573
|
-
readonly inspectorMode: _angular_core.InputSignal<"
|
|
3816
|
+
readonly inspectorMode: _angular_core.InputSignal<"panel" | "dialog">;
|
|
3574
3817
|
readonly saved: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
3575
3818
|
readonly activated: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
3576
3819
|
readonly closeRequested: _angular_core.OutputEmitterRef<void>;
|
|
@@ -3702,5 +3945,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
3702
3945
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3703
3946
|
}
|
|
3704
3947
|
|
|
3705
|
-
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, moveCondition, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, referenceRoot, remapConditionLogic, removeCondition, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
|
|
3706
|
-
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, StructureMemberUsage, ValueMode };
|
|
3948
|
+
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, loadPathLevel, moveCondition, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, resolvePath, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
|
|
3949
|
+
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, PathCatalog, PathContainer, PathContainerKind, PathEntry, PathLevel, PathLevelStatus, PathNavigation, PathNavigationRequest, PathResolution, PathStopReason, StructureMemberUsage, ValueMode };
|