@esfaenza/flow-builder 20.3.14 → 20.3.15
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 +40 -4
- package/fesm2022/esfaenza-flow-builder.mjs +880 -14
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +395 -15
- package/package.json +2 -1
- package/styles/flow-builder.css +33 -0
package/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
|
|
|
2
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
|
+
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Modello del documento Flow — FRONTEND.md §3, §4, §5.
|
|
@@ -188,6 +189,91 @@ interface FlowScreen extends FlowNodeBase {
|
|
|
188
189
|
outputParameters?: FlowOutputParameter[];
|
|
189
190
|
connector?: FlowConnector;
|
|
190
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* §5.2 — il tipo di un campo di screen dinamico. L'elenco autoritativo e' il dizionario
|
|
194
|
+
* `screenFieldTypes`, che porta anche i flag (`storesValue`, `isContainer`, …) con cui
|
|
195
|
+
* l'editor decide quali campi mostrare: qui il tipo e' aperto proprio per quello.
|
|
196
|
+
*/
|
|
197
|
+
type FlowScreenFieldType = 'DisplayText' | 'InputField' | 'LargeTextArea' | 'PasswordField' | 'RadioButtons' | 'DropdownBox' | 'MultiSelectCheckboxes' | 'MultiSelectPicklist' | 'ComponentInstance' | 'Region' | 'RegionContainer' | 'ObjectProvided' | string;
|
|
198
|
+
/** §5.2 — la sezione con o senza intestazione. */
|
|
199
|
+
type FlowRegionContainerType = 'SectionWithHeader' | 'SectionWithoutHeader' | string;
|
|
200
|
+
/** §5.2 — cosa succede ai valori quando si torna sulla schermata. */
|
|
201
|
+
type FlowScreenFieldInputsRevisited = 'UseStoredValues' | 'ResetValues' | string;
|
|
202
|
+
/** §5.2 — regola di validazione di un campo: espressione piu' messaggio d'errore. */
|
|
203
|
+
interface FlowScreenValidationRule {
|
|
204
|
+
formulaExpression?: string;
|
|
205
|
+
errorMessage?: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* §5.2 — un campo di uno screen dinamico.
|
|
209
|
+
*
|
|
210
|
+
* Due cose che il tipo non dice da solo:
|
|
211
|
+
* - un campo che raccoglie un valore **e' una risorsa del flow**, referenziabile per nome e di
|
|
212
|
+
* sola lettura (`kind: "ScreenField"`, §4.6): il suo `name` vive nello stesso spazio dei nomi
|
|
213
|
+
* di node e risorse (§3.3), e un Assignment che ci scrive e' `TARGET_NOT_WRITABLE`;
|
|
214
|
+
* - `fields` esiste solo sui contenitori (`Region`, `RegionContainer`) e l'annidamento previsto
|
|
215
|
+
* e' **sezione → colonne → campi**: piu' profondo di così e' un avviso.
|
|
216
|
+
*/
|
|
217
|
+
interface FlowScreenField {
|
|
218
|
+
name?: string;
|
|
219
|
+
/** Obbligatorio: senza, `SCREEN_FIELD_TYPE_MISSING`. */
|
|
220
|
+
fieldType?: FlowScreenFieldType;
|
|
221
|
+
/** La label; per `DisplayText` e' il testo stesso. Supporta i merge field `{!...}`. */
|
|
222
|
+
fieldText?: string;
|
|
223
|
+
helpText?: string;
|
|
224
|
+
/** Obbligatorio dove il tipo `storesValue`, tranne `ObjectProvided` (§5.2). */
|
|
225
|
+
dataType?: FlowDataType;
|
|
226
|
+
objectType?: string;
|
|
227
|
+
isRequired?: boolean;
|
|
228
|
+
/** Default `true`. A `false` il runtime **ignora** cio' che il client rimanda indietro. */
|
|
229
|
+
isEditable?: boolean;
|
|
230
|
+
defaultValue?: FlowValue;
|
|
231
|
+
/** Nome di una choice; fuori da `choiceReferences` e' un avviso. */
|
|
232
|
+
defaultSelectedChoiceReference?: string;
|
|
233
|
+
/** Nomi di `FlowChoice` o `FlowDynamicChoiceSet`, **nell'ordine di presentazione**. */
|
|
234
|
+
choiceReferences?: string[];
|
|
235
|
+
scale?: number;
|
|
236
|
+
maxLength?: number;
|
|
237
|
+
/** 1..12 nella griglia della schermata: il frontend puo' ignorarla. */
|
|
238
|
+
width?: number;
|
|
239
|
+
/** Solo sui contenitori: sezione → colonne → campi. */
|
|
240
|
+
fields?: FlowScreenField[];
|
|
241
|
+
regionContainerType?: FlowRegionContainerType;
|
|
242
|
+
/** `ComponentInstance`: il componente del frontend, dal catalogo dei form. */
|
|
243
|
+
extensionName?: string;
|
|
244
|
+
inputParameters?: FlowInputParameter[];
|
|
245
|
+
outputParameters?: FlowOutputParameter[];
|
|
246
|
+
/** Insieme a `outputParameters` e' `OUTPUT_CONFIGURATION_CONFLICT` (§5.2). */
|
|
247
|
+
storeOutputAutomatically?: boolean;
|
|
248
|
+
/** `ObjectProvided`: forma `<Oggetto>.<Campo>`. */
|
|
249
|
+
objectFieldReference?: string;
|
|
250
|
+
inputsOnNextNavToAssocScrn?: FlowScreenFieldInputsRevisited;
|
|
251
|
+
validationRule?: FlowScreenValidationRule;
|
|
252
|
+
/** Come una regola di Decision: rivalutata sui valori appena inviati (§5.2). */
|
|
253
|
+
visibilityRule?: FlowConditionHolder;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* §5.2 — lo screen dinamico: **descrive i propri campi**, invece di referenziare un form.
|
|
257
|
+
*
|
|
258
|
+
* E' il complemento dello Screen a form (§5.1), non il suo sostituto: convivono nello stesso
|
|
259
|
+
* flow e il motore li tratta allo stesso modo. Cambia chi decide il layout.
|
|
260
|
+
*/
|
|
261
|
+
interface FlowDynamicScreen extends FlowNodeBase {
|
|
262
|
+
helpText?: string;
|
|
263
|
+
allowBack?: boolean;
|
|
264
|
+
allowFinish?: boolean;
|
|
265
|
+
allowPause?: boolean;
|
|
266
|
+
pausedText?: string;
|
|
267
|
+
showHeader?: boolean;
|
|
268
|
+
showFooter?: boolean;
|
|
269
|
+
backButtonLabel?: string;
|
|
270
|
+
nextOrFinishButtonLabel?: string;
|
|
271
|
+
pauseButtonLabel?: string;
|
|
272
|
+
/** Nome di uno stage dichiarato: alimenta l'indicatore di avanzamento. */
|
|
273
|
+
stageReference?: string;
|
|
274
|
+
fields?: FlowScreenField[];
|
|
275
|
+
connector?: FlowConnector;
|
|
276
|
+
}
|
|
191
277
|
type FlowAssignmentOperator = 'Assign' | 'Add' | 'Subtract' | 'AddAtStart' | 'AssignCount' | 'RemoveFirst' | 'RemoveAll' | 'RemovePosition' | 'RemoveAfterFirst' | 'RemoveBeforeFirst' | 'RemoveUncommon' | string;
|
|
192
278
|
interface FlowAssignmentItem {
|
|
193
279
|
assignToReference?: string;
|
|
@@ -504,6 +590,7 @@ interface FlowDefinition {
|
|
|
504
590
|
dynamicChoiceSets?: FlowDynamicChoiceSet[];
|
|
505
591
|
stages?: FlowStage[];
|
|
506
592
|
screens?: FlowScreen[];
|
|
593
|
+
dynamicScreens?: FlowDynamicScreen[];
|
|
507
594
|
assignments?: FlowAssignment[];
|
|
508
595
|
decisions?: FlowDecision[];
|
|
509
596
|
loops?: FlowLoop[];
|
|
@@ -530,13 +617,13 @@ interface FlowDefinition {
|
|
|
530
617
|
customProperties?: FlowCustomProperty[];
|
|
531
618
|
}
|
|
532
619
|
/** Le collection di node: `metadataProperty` del dizionario `elementTypes` (§3.2). */
|
|
533
|
-
declare const FLOW_NODE_COLLECTIONS: readonly ["screens", "assignments", "decisions", "loops", "collectionProcessors", "recordLookups", "recordCreates", "recordUpdates", "recordDeletes", "recordRollbacks", "actionCalls", "scriptPluginCalls", "subflows", "transforms", "waits", "customErrors", "orchestratedStages", "steps", "experiments"];
|
|
620
|
+
declare const FLOW_NODE_COLLECTIONS: readonly ["screens", "dynamicScreens", "assignments", "decisions", "loops", "collectionProcessors", "recordLookups", "recordCreates", "recordUpdates", "recordDeletes", "recordRollbacks", "actionCalls", "scriptPluginCalls", "subflows", "transforms", "waits", "customErrors", "orchestratedStages", "steps", "experiments"];
|
|
534
621
|
type FlowNodeCollection = (typeof FLOW_NODE_COLLECTIONS)[number];
|
|
535
622
|
/** Le collection di risorse (§4.6). Condividono lo spazio dei nomi con i node (§3.3). */
|
|
536
623
|
declare const FLOW_RESOURCE_COLLECTIONS: readonly ["variables", "constants", "formulas", "textTemplates", "choices", "dynamicChoiceSets", "stages"];
|
|
537
624
|
type FlowResourceCollection = (typeof FLOW_RESOURCE_COLLECTIONS)[number];
|
|
538
625
|
/** Il discriminatore `value` del dizionario `elementTypes`. */
|
|
539
|
-
type FlowElementType = 'Screen' | 'Assignment' | 'Decision' | 'Loop' | 'CollectionProcessor' | 'CustomError' | 'Wait' | 'RecordLookup' | 'RecordCreate' | 'RecordUpdate' | 'RecordDelete' | 'RecordRollback' | 'ActionCall' | 'ScriptCall' | 'Subflow' | 'Transform' | 'OrchestratedStage' | 'Step' | 'Experiment' | string;
|
|
626
|
+
type FlowElementType = 'Screen' | 'DynamicScreen' | 'Assignment' | 'Decision' | 'Loop' | 'CollectionProcessor' | 'CustomError' | 'Wait' | 'RecordLookup' | 'RecordCreate' | 'RecordUpdate' | 'RecordDelete' | 'RecordRollback' | 'ActionCall' | 'ScriptCall' | 'Subflow' | 'Transform' | 'OrchestratedStage' | 'Step' | 'Experiment' | string;
|
|
540
627
|
/** Un node qualunque, come lo vede il canvas. */
|
|
541
628
|
type FlowAnyNode = FlowNodeBase & Record<string, unknown>;
|
|
542
629
|
|
|
@@ -629,6 +716,27 @@ interface FlowStageStepTypeEntry extends FlowDictionaryEntry {
|
|
|
629
716
|
/** `true` → il rifiuto e' un esito previsto, e prende il `faultConnector` dello stage. */
|
|
630
717
|
supportsRejection?: boolean;
|
|
631
718
|
}
|
|
719
|
+
/**
|
|
720
|
+
* §5.2, §6.4 — un tipo di campo di screen dinamico.
|
|
721
|
+
*
|
|
722
|
+
* E' l'unica voce di dizionario che porta piu' di `value`/`label`/`description`, e i flag non
|
|
723
|
+
* sono un di piu': sono **gli stessi** che applica il runtime. Reimplementarli lato editor
|
|
724
|
+
* porta prima o poi a proporre una configurazione che il motore rifiuta — un `dataType` su un
|
|
725
|
+
* `DisplayText`, delle choice su una textarea.
|
|
726
|
+
*/
|
|
727
|
+
interface FlowScreenFieldTypeEntry extends FlowDictionaryEntry {
|
|
728
|
+
value: FlowScreenFieldType;
|
|
729
|
+
/** Il campo raccoglie un valore: e' una risorsa del flow, e vuole `dataType`, default, … */
|
|
730
|
+
storesValue?: boolean;
|
|
731
|
+
/** Il valore raccolto e' una **collection**, non una stringa con i valori concatenati. */
|
|
732
|
+
isCollection?: boolean;
|
|
733
|
+
/** Il campo si configura con `choiceReferences`. */
|
|
734
|
+
acceptsChoices?: boolean;
|
|
735
|
+
/** Il campo contiene altri campi (`Region`, `RegionContainer`). */
|
|
736
|
+
isContainer?: boolean;
|
|
737
|
+
/** `dataType` obbligatorio: senza, `DATA_TYPE_MISSING`. */
|
|
738
|
+
requiresDataType?: boolean;
|
|
739
|
+
}
|
|
632
740
|
interface FlowResourceKindEntry extends FlowDictionaryEntry {
|
|
633
741
|
/** Solo le variabili sono scrivibili (§4.6). */
|
|
634
742
|
isWritable?: boolean;
|
|
@@ -667,6 +775,12 @@ interface FlowDictionaries {
|
|
|
667
775
|
assigneeTypes?: FlowDictionaryEntry[];
|
|
668
776
|
conditionLogicModes?: FlowDictionaryEntry[];
|
|
669
777
|
screenNavigations?: FlowDictionaryEntry[];
|
|
778
|
+
/** §5.2 — i tipi di campo di uno screen dinamico, con i flag che guidano il form. */
|
|
779
|
+
screenFieldTypes?: FlowScreenFieldTypeEntry[];
|
|
780
|
+
/** §5.2 — `SectionWithHeader` | `SectionWithoutHeader`. */
|
|
781
|
+
regionContainerTypes?: FlowDictionaryEntry[];
|
|
782
|
+
/** §5.2 — `UseStoredValues` | `ResetValues` (`inputsOnNextNavToAssocScrn`). */
|
|
783
|
+
screenFieldInputsRevisited?: FlowDictionaryEntry[];
|
|
670
784
|
}
|
|
671
785
|
interface FlowObjectSummary {
|
|
672
786
|
name: string;
|
|
@@ -1742,6 +1856,77 @@ declare function stageStepOutputReferenced(reference: string | undefined, steps:
|
|
|
1742
1856
|
*/
|
|
1743
1857
|
declare const ORCHESTRATION_CONDITION_OUTPUT = "isOrchestrationConditionMet";
|
|
1744
1858
|
|
|
1859
|
+
/**
|
|
1860
|
+
* L'albero dei campi di uno screen dinamico — FRONTEND.md §5.2.
|
|
1861
|
+
*
|
|
1862
|
+
* Un campo puo' contenerne altri (`Region` dentro `RegionContainer`), quindi «il campo
|
|
1863
|
+
* selezionato» non e' un indice ma un **percorso di indici**: `[1, 0, 2]` e' il terzo campo
|
|
1864
|
+
* della prima colonna della seconda sezione. Tutto cio' che cammina l'albero sta qui, perche'
|
|
1865
|
+
* inspector, store e outline lo fanno con la stessa regola e sbagliarne una copia significa
|
|
1866
|
+
* scrivere in un campo diverso da quello che l'utente vede selezionato.
|
|
1867
|
+
*
|
|
1868
|
+
* L'altra ragione per cui questo file esiste: **i campi che raccolgono un valore sono risorse
|
|
1869
|
+
* del flow** (§5.2). I loro nomi vivono nello stesso spazio dei nomi di node e risorse (§3.3),
|
|
1870
|
+
* quindi `usedNames` dello store deve comprenderli — un campo omonimo di una variabile e'
|
|
1871
|
+
* `NAME_DUPLICATED`, non una stranezza tollerata.
|
|
1872
|
+
*/
|
|
1873
|
+
|
|
1874
|
+
/** Il percorso di un campo nell'albero: indici dalla radice alla foglia. */
|
|
1875
|
+
type FlowScreenFieldPath = number[];
|
|
1876
|
+
/** Un campo con il suo percorso e la sua profondita': e' cio' che l'albero mostra. */
|
|
1877
|
+
interface FlowScreenFieldNode {
|
|
1878
|
+
field: FlowScreenField;
|
|
1879
|
+
path: FlowScreenFieldPath;
|
|
1880
|
+
depth: number;
|
|
1881
|
+
}
|
|
1882
|
+
/** Uguaglianza fra percorsi: due array diversi con gli stessi indici sono lo stesso campo. */
|
|
1883
|
+
declare function samePath(a: FlowScreenFieldPath | null, b: FlowScreenFieldPath | null): boolean;
|
|
1884
|
+
/** `true` se `parent` e' un antenato di `path` (o lo stesso campo). */
|
|
1885
|
+
declare function isPathInside(parent: FlowScreenFieldPath, path: FlowScreenFieldPath): boolean;
|
|
1886
|
+
/** Chiave stabile di un percorso: serve al `track` e agli id delle liste di trascinamento. */
|
|
1887
|
+
declare function pathKey(path: FlowScreenFieldPath): string;
|
|
1888
|
+
/** Il campo a un percorso, o `undefined` se il percorso non esiste piu'. */
|
|
1889
|
+
declare function fieldAt(fields: FlowScreenField[] | undefined, path: FlowScreenFieldPath): FlowScreenField | undefined;
|
|
1890
|
+
/** L'albero appiattito in ordine di visita, con profondita': e' l'elenco che si disegna. */
|
|
1891
|
+
declare function flattenFields(fields: FlowScreenField[] | undefined, parentPath?: FlowScreenFieldPath): FlowScreenFieldNode[];
|
|
1892
|
+
/** Tutti i campi di uno screen, in ordine di visita. */
|
|
1893
|
+
declare function allFieldsOf(screen: FlowDynamicScreen | undefined): FlowScreenField[];
|
|
1894
|
+
/**
|
|
1895
|
+
* I nomi dei campi di tutti gli screen dinamici del documento.
|
|
1896
|
+
*
|
|
1897
|
+
* Contenitori compresi: un `Region` non e' una risorsa — non raccoglie un valore — ma il suo
|
|
1898
|
+
* nome resta un nome, e due campi omonimi nella stessa schermata sono comunque un problema.
|
|
1899
|
+
* Chi vuole i **soli** riferimenti proponibili usa `isFieldResource`.
|
|
1900
|
+
*/
|
|
1901
|
+
declare function screenFieldNames(definition: FlowDefinition | undefined): string[];
|
|
1902
|
+
/**
|
|
1903
|
+
* §5.2 — il campo e' una risorsa del flow (`kind: "ScreenField"`), quindi referenziabile
|
|
1904
|
+
* per nome ovunque e **di sola lettura**.
|
|
1905
|
+
*
|
|
1906
|
+
* Un `ComponentInstance` non lo e' pur essendo un campo: non ha un valore proprio, ce l'hanno
|
|
1907
|
+
* i suoi output. Il flag `storesValue` arriva dal dizionario, che e' l'unica fonte autoritativa:
|
|
1908
|
+
* senza la voce del dizionario si risponde `false`, cioe' "non lo so" — proporre un riferimento
|
|
1909
|
+
* che il backend non conosce e' peggio che non proporlo.
|
|
1910
|
+
*/
|
|
1911
|
+
declare function isFieldResource(field: FlowScreenField | undefined, entry: FlowScreenFieldTypeEntry | undefined): boolean;
|
|
1912
|
+
/** Inserisce un campo dentro `parentPath` alla posizione indicata (in fondo se assente). */
|
|
1913
|
+
declare function insertField(screen: FlowDynamicScreen, parentPath: FlowScreenFieldPath, field: FlowScreenField, index?: number): FlowScreenFieldPath | undefined;
|
|
1914
|
+
/** Rimuove il campo a un percorso, e con esso tutto cio' che conteneva. */
|
|
1915
|
+
declare function removeField(screen: FlowDynamicScreen, path: FlowScreenFieldPath): void;
|
|
1916
|
+
/**
|
|
1917
|
+
* Sposta un campo dentro un'altra lista, a una posizione precisa.
|
|
1918
|
+
*
|
|
1919
|
+
* `toIndex` e' l'indice **dopo** l'estrazione, cioe' la stessa convenzione di
|
|
1920
|
+
* `moveItemInArray` del CDK: e' l'indice che il drop del trascinamento consegna, e riallinearlo
|
|
1921
|
+
* qui sposterebbe di uno ogni trascinamento verso il basso nella stessa lista.
|
|
1922
|
+
*
|
|
1923
|
+
* Uno spostamento dentro se stesso e' rifiutato: sposterebbe un contenitore dentro il proprio
|
|
1924
|
+
* sottoalbero, e il sottoalbero sparirebbe con lui.
|
|
1925
|
+
*/
|
|
1926
|
+
declare function moveField(screen: FlowDynamicScreen, from: FlowScreenFieldPath, toParent: FlowScreenFieldPath, toIndex: number): FlowScreenFieldPath | undefined;
|
|
1927
|
+
/** Duplica un campo accanto all'originale, rinominandolo: i nomi restano unici (§3.3). */
|
|
1928
|
+
declare function duplicateField(screen: FlowDynamicScreen, path: FlowScreenFieldPath, newName: string): FlowScreenFieldPath | undefined;
|
|
1929
|
+
|
|
1745
1930
|
/**
|
|
1746
1931
|
* La gravita' di un rilievo, ridotta a tre secchi — FRONTEND.md §7.
|
|
1747
1932
|
*
|
|
@@ -1816,6 +2001,27 @@ declare class FlowDictionaryStore {
|
|
|
1816
2001
|
readonly stageStepTypes: _angular_core.Signal<FlowStageStepTypeEntry[]>;
|
|
1817
2002
|
readonly assigneeTypes: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
1818
2003
|
readonly conditionLogicModes: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2004
|
+
readonly regionContainerTypes: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2005
|
+
readonly screenFieldInputsRevisited: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2006
|
+
/** §5.2 — i tipi di campo di uno screen dinamico, con i flag che guidano il form. */
|
|
2007
|
+
readonly screenFieldTypes: _angular_core.Signal<FlowScreenFieldTypeEntry[]>;
|
|
2008
|
+
/**
|
|
2009
|
+
* La voce di un tipo di campo. **Non c'e' un fallback cablato**, di proposito: i flag sono gli
|
|
2010
|
+
* stessi che applica il runtime (§5.2, §6.4), e indovinarli qui vorrebbe dire proporre una
|
|
2011
|
+
* configurazione che il motore rifiuta. Voce assente = nessun flag, cioe' il form mostra i soli
|
|
2012
|
+
* campi comuni e lascia decidere al backend.
|
|
2013
|
+
*/
|
|
2014
|
+
screenFieldType(value: string | undefined | null): FlowScreenFieldTypeEntry | undefined;
|
|
2015
|
+
/** §5.2 — il campo raccoglie un valore: e' una risorsa, e vuole tipo, default, … */
|
|
2016
|
+
screenFieldStoresValue(value: string | undefined | null): boolean;
|
|
2017
|
+
/** §5.2 — il campo contiene altri campi: `Region`, `RegionContainer`. */
|
|
2018
|
+
screenFieldIsContainer(value: string | undefined | null): boolean;
|
|
2019
|
+
/** §5.2 — il campo si configura con `choiceReferences`. */
|
|
2020
|
+
screenFieldAcceptsChoices(value: string | undefined | null): boolean;
|
|
2021
|
+
/** §5.2 — `dataType` obbligatorio: senza, `DATA_TYPE_MISSING`. */
|
|
2022
|
+
screenFieldRequiresDataType(value: string | undefined | null): boolean;
|
|
2023
|
+
/** §5.2 — il valore raccolto e' una collection: contano gli operatori di collection. */
|
|
2024
|
+
screenFieldIsCollection(value: string | undefined | null): boolean;
|
|
1819
2025
|
readonly elementTypes: _angular_core.Signal<FlowElementTypeEntry[]>;
|
|
1820
2026
|
/**
|
|
1821
2027
|
* I tipi mostrabili nella palette: `isSupported: false` va nascosto (§3.2, §13.9).
|
|
@@ -2229,10 +2435,12 @@ declare class FlowDocumentStore {
|
|
|
2229
2435
|
readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
|
|
2230
2436
|
readonly resources: _angular_core.Signal<FlowResourceRef[]>;
|
|
2231
2437
|
/**
|
|
2232
|
-
* §3.3 — l'insieme dei nomi già usati: node, risorse
|
|
2233
|
-
* spazio di nomi. Il controllo di unicita' che guarda solo le
|
|
2234
|
-
* variabile omonima di un node (§13.5); quello che dimentica gli
|
|
2235
|
-
* step omonimo di una variabile
|
|
2438
|
+
* §3.3 — l'insieme dei nomi già usati: node, risorse, step di orchestrazione **e campi di
|
|
2439
|
+
* screen dinamico**, un unico spazio di nomi. Il controllo di unicita' che guarda solo le
|
|
2440
|
+
* variabili lascia passare una variabile omonima di un node (§13.5); quello che dimentica gli
|
|
2441
|
+
* step lascia passare uno step omonimo di una variabile (§5.13); quello che dimentica i campi
|
|
2442
|
+
* lascia passare un campo omonimo di una variabile, che e' `NAME_DUPLICATED` come gli altri
|
|
2443
|
+
* — e lì il danno e' peggiore, perche' un campo **e' un riferimento** (§5.2).
|
|
2236
2444
|
*/
|
|
2237
2445
|
readonly usedNames: _angular_core.Signal<string[]>;
|
|
2238
2446
|
/** Gli archi derivati dal documento, Start incluso. */
|
|
@@ -2289,6 +2497,15 @@ declare class FlowDocumentStore {
|
|
|
2289
2497
|
* riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
|
|
2290
2498
|
*/
|
|
2291
2499
|
renameNode(oldName: string, newName: string): void;
|
|
2500
|
+
/**
|
|
2501
|
+
* §5.2 — rinomina un campo di screen dinamico riscrivendo i riferimenti che lo usano.
|
|
2502
|
+
*
|
|
2503
|
+
* Un campo che raccoglie un valore **e' una risorsa** referenziabile per nome: rinominarlo
|
|
2504
|
+
* senza riscrivere le condizioni e le assegnazioni che lo citano lascia dei
|
|
2505
|
+
* `REFERENCE_UNKNOWN` che si scoprono solo alla validazione. Vale la stessa regola dei node
|
|
2506
|
+
* (§13.8): nessuna primitiva del backend lo fa, lo fa l'editor.
|
|
2507
|
+
*/
|
|
2508
|
+
renameScreenField(nodeName: string, path: FlowScreenFieldPath, newName: string): void;
|
|
2292
2509
|
/** Rinomina una risorsa, riscrivendo i riferimenti che la usano. */
|
|
2293
2510
|
renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
|
|
2294
2511
|
/**
|
|
@@ -2789,7 +3006,11 @@ declare class ElementPaletteComponent {
|
|
|
2789
3006
|
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
2790
3007
|
onFilter(value: string): void;
|
|
2791
3008
|
pick(item: PaletteItem): void;
|
|
2792
|
-
/**
|
|
3009
|
+
/**
|
|
3010
|
+
* Uno screen in un flow che non mostra nulla: si segnala, non si nasconde (§3.1). Vale per
|
|
3011
|
+
* entrambi i tipi di screen — quello a form e quello dinamico sono la stessa interazione con
|
|
3012
|
+
* l'utente, e in un flow `AutoLaunched` non c'e' nessuno a cui mostrarli.
|
|
3013
|
+
*/
|
|
2793
3014
|
isIncompatible(item: PaletteItem): boolean;
|
|
2794
3015
|
/**
|
|
2795
3016
|
* Il testo del tooltip. Su una voce che nasce da una variante ci va anche il nome del tipo:
|
|
@@ -2935,7 +3156,7 @@ declare class ReferencePickerComponent {
|
|
|
2935
3156
|
* percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
|
|
2936
3157
|
* risponderebbe `GLOBAL_UNKNOWN`.
|
|
2937
3158
|
*/
|
|
2938
|
-
readonly valueState: _angular_core.Signal<"
|
|
3159
|
+
readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid" | "unknown">;
|
|
2939
3160
|
/** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
|
|
2940
3161
|
private readonly tailIsObject;
|
|
2941
3162
|
private readonly tailContainer;
|
|
@@ -3087,7 +3308,7 @@ declare class NamePickerComponent {
|
|
|
3087
3308
|
* **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
|
|
3088
3309
|
* senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
|
|
3089
3310
|
*/
|
|
3090
|
-
readonly unknownSeverity: _angular_core.InputSignal<"
|
|
3311
|
+
readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
|
|
3091
3312
|
/** Cosa dire quando l'elenco e' vuoto: e' il caso "non lo so", non un errore. */
|
|
3092
3313
|
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
3093
3314
|
/** Testo monospazio: i nomi tecnici si leggono meglio, ed e' come li mostra il resto del form. */
|
|
@@ -3363,7 +3584,7 @@ declare class ConditionEditorComponent {
|
|
|
3363
3584
|
*/
|
|
3364
3585
|
hasTypeMismatch(condition: FlowCondition): boolean;
|
|
3365
3586
|
typeMismatchMessage(condition: FlowCondition): string;
|
|
3366
|
-
readonly logicMode: _angular_core.Signal<"
|
|
3587
|
+
readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
|
|
3367
3588
|
readonly customLogic: _angular_core.Signal<string>;
|
|
3368
3589
|
/** Feedback immediato sull'espressione: la verita' resta della validazione backend. */
|
|
3369
3590
|
readonly customLogicError: _angular_core.Signal<string | null>;
|
|
@@ -3431,7 +3652,7 @@ declare class RecordFilterEditorComponent {
|
|
|
3431
3652
|
* (§5.7, §13.10).
|
|
3432
3653
|
*/
|
|
3433
3654
|
readonly emptyWarning: _angular_core.InputSignal<string | null>;
|
|
3434
|
-
readonly emptyWarningSeverity: _angular_core.InputSignal<"
|
|
3655
|
+
readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
|
|
3435
3656
|
readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
|
|
3436
3657
|
/** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.7). */
|
|
3437
3658
|
private readonly allFields;
|
|
@@ -3454,7 +3675,7 @@ declare class RecordFilterEditorComponent {
|
|
|
3454
3675
|
* evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
|
|
3455
3676
|
*/
|
|
3456
3677
|
readonly identifierNotFilterable: _angular_core.Signal<boolean>;
|
|
3457
|
-
readonly logicMode: _angular_core.Signal<"
|
|
3678
|
+
readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
|
|
3458
3679
|
readonly customLogic: _angular_core.Signal<string>;
|
|
3459
3680
|
readonly showEmptyWarning: _angular_core.Signal<boolean>;
|
|
3460
3681
|
addFilter(): void;
|
|
@@ -3828,6 +4049,159 @@ declare class OrchestratedStageInspectorComponent extends NodeInspectorBase {
|
|
|
3828
4049
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OrchestratedStageInspectorComponent, "fb-orchestrated-stage-inspector", never, {}, {}, never, never, true, never>;
|
|
3829
4050
|
}
|
|
3830
4051
|
|
|
4052
|
+
/** Il payload della lista di rilascio: l'albero appiattito, cioe' le righe che si vedono. */
|
|
4053
|
+
type DropData = FlowScreenFieldNode[];
|
|
4054
|
+
declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
4055
|
+
private readonly catalog;
|
|
4056
|
+
protected readonly dictionary: FlowDictionaryStore;
|
|
4057
|
+
readonly elementType: FlowElementType;
|
|
4058
|
+
readonly screen: _angular_core.Signal<FlowDynamicScreen>;
|
|
4059
|
+
/** Il percorso del campo selezionato: `null` = nessuno, e il pannello destro lo dice. */
|
|
4060
|
+
private readonly selection;
|
|
4061
|
+
/** L'albero appiattito: e' anche cio' che serve per capire quali percorsi esistono ancora. */
|
|
4062
|
+
readonly tree: _angular_core.Signal<FlowScreenFieldNode[]>;
|
|
4063
|
+
readonly selectedPath: _angular_core.Signal<FlowScreenFieldPath | null>;
|
|
4064
|
+
readonly selectedField: _angular_core.Signal<FlowScreenField | undefined>;
|
|
4065
|
+
/** La voce di dizionario del campo selezionato: e' lei a decidere il form di destra. */
|
|
4066
|
+
readonly selectedType: _angular_core.Signal<FlowScreenFieldTypeEntry | undefined>;
|
|
4067
|
+
/** Componenti e form sono la stessa domanda al frontend, e lo stesso catalogo (§5.2). */
|
|
4068
|
+
private readonly components;
|
|
4069
|
+
private readonly componentParameters;
|
|
4070
|
+
/** I tipi di enumerazione: dizionario chiuso, quindi `<select>` e non combo (§4.6). */
|
|
4071
|
+
private readonly enumTypes;
|
|
4072
|
+
constructor();
|
|
4073
|
+
readonly componentOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4074
|
+
readonly enumOptions: _angular_core.Signal<FlowCatalogEntry[]>;
|
|
4075
|
+
readonly componentParameterList: _angular_core.Signal<FlowCatalogParameter[]>;
|
|
4076
|
+
/**
|
|
4077
|
+
* Le choice proponibili: **solo** `choices` e `dynamicChoiceSets` (§5.2). Un elenco costruito
|
|
4078
|
+
* dai riferimenti in generale farebbe scegliere una variabile, che e'
|
|
4079
|
+
* `SCREEN_FIELD_CHOICE_UNKNOWN`.
|
|
4080
|
+
*/
|
|
4081
|
+
readonly choiceOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4082
|
+
/** Gli stage dichiarati: `stageReference` alimenta l'indicatore di avanzamento (§5.2). */
|
|
4083
|
+
readonly stageOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4084
|
+
readonly icon: string;
|
|
4085
|
+
isSelected(path: FlowScreenFieldPath): boolean;
|
|
4086
|
+
isContainer(field: FlowScreenField | undefined): boolean;
|
|
4087
|
+
/** L'etichetta mostrata nell'albero: `fieldText`, poi il nome, poi un segnaposto. */
|
|
4088
|
+
captionOf(field: FlowScreenField): string;
|
|
4089
|
+
typeLabelOf(field: FlowScreenField): string;
|
|
4090
|
+
/** La larghezza in dodicesimi: assente = tutta la riga, che e' il comportamento di default. */
|
|
4091
|
+
widthOf(field: FlowScreenField): number;
|
|
4092
|
+
/** `true` dove il tipo non e' nel dizionario: il form di destra lo dice invece di indovinare. */
|
|
4093
|
+
isUnknownType(field: FlowScreenField | undefined): boolean;
|
|
4094
|
+
/** Il campo raccoglie un valore, quindi e' referenziabile per nome nel resto del flow (§5.2). */
|
|
4095
|
+
readonly selectedIsResource: _angular_core.Signal<boolean>;
|
|
4096
|
+
/**
|
|
4097
|
+
* §5.2 — uno screen senza campi non ha niente da mostrare (`SCREEN_WITHOUT_FIELDS`), e uno
|
|
4098
|
+
* senza destinazione che non consente «fine» e' un vicolo cieco (`SCREEN_DEAD_END`). Si dicono
|
|
4099
|
+
* qui prima che lo dica la validazione.
|
|
4100
|
+
*/
|
|
4101
|
+
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
4102
|
+
readonly isDeadEnd: _angular_core.Signal<boolean>;
|
|
4103
|
+
allowBack: _angular_core.Signal<boolean>;
|
|
4104
|
+
allowFinish: _angular_core.Signal<boolean>;
|
|
4105
|
+
allowPause: _angular_core.Signal<boolean>;
|
|
4106
|
+
showHeader: _angular_core.Signal<boolean>;
|
|
4107
|
+
showFooter: _angular_core.Signal<boolean>;
|
|
4108
|
+
/** §5.2 — `isEditable` ha default `true`: a `false` il runtime ignora cio' che torna. */
|
|
4109
|
+
readonly selectedIsEditable: _angular_core.Signal<boolean>;
|
|
4110
|
+
readonly selectedIsRequired: _angular_core.Signal<boolean>;
|
|
4111
|
+
/**
|
|
4112
|
+
* §5.2 — `storeOutputAutomatically` **insieme** a `outputParameters` e'
|
|
4113
|
+
* `OUTPUT_CONFIGURATION_CONFLICT`: la coppia si mostra come esclusiva, non come due caselle.
|
|
4114
|
+
*/
|
|
4115
|
+
readonly hasOutputConflict: _angular_core.Signal<boolean>;
|
|
4116
|
+
/** §5.2 — la choice di default fuori dall'elenco e' un avviso, non un errore. */
|
|
4117
|
+
readonly defaultChoiceIsForeign: _angular_core.Signal<boolean>;
|
|
4118
|
+
/** §5.2 — `scale` su un campo non numerico e' `SCALE_NOT_APPLICABLE`. */
|
|
4119
|
+
readonly scaleApplies: _angular_core.Signal<boolean>;
|
|
4120
|
+
readonly requiresObjectType: _angular_core.Signal<boolean>;
|
|
4121
|
+
readonly objectTypeIsStructure: _angular_core.Signal<boolean>;
|
|
4122
|
+
/** L'oggetto di un `ObjectProvided`, cioe' la parte prima del punto (§5.2). */
|
|
4123
|
+
readonly providedObject: _angular_core.Signal<string>;
|
|
4124
|
+
readonly providedField: _angular_core.Signal<string>;
|
|
4125
|
+
select(path: FlowScreenFieldPath): void;
|
|
4126
|
+
/** Aggiunge un campo dentro il contenitore selezionato, o in fondo alla schermata. */
|
|
4127
|
+
addField(type: string): void;
|
|
4128
|
+
/**
|
|
4129
|
+
* Dove finisce un campo nuovo: dentro il contenitore selezionato (o dentro il contenitore
|
|
4130
|
+
* che contiene il campo selezionato), altrimenti in fondo alla schermata. È il gesto che
|
|
4131
|
+
* l'utente si aspetta dopo aver cliccato una colonna.
|
|
4132
|
+
*/
|
|
4133
|
+
private parentForNewField;
|
|
4134
|
+
removeSelected(): void;
|
|
4135
|
+
duplicateSelected(): void;
|
|
4136
|
+
/**
|
|
4137
|
+
* Spostamento con i tasti: la stessa operazione del trascinamento, per chi non trascina e per
|
|
4138
|
+
* i casi in cui la lista e' piu' alta del pannello.
|
|
4139
|
+
*/
|
|
4140
|
+
moveSelected(direction: -1 | 1): void;
|
|
4141
|
+
/**
|
|
4142
|
+
* Sposta il campo dentro il contenitore che lo precede. È la controparte esplicita del
|
|
4143
|
+
* trascinamento: dove l'albero e' lungo, mirare la riga giusta costa piu' di un clic.
|
|
4144
|
+
*/
|
|
4145
|
+
indentSelected(): void;
|
|
4146
|
+
/** Il contenitore in cui «porta dentro» metterebbe il campo, o `null` se non ce n'e' uno. */
|
|
4147
|
+
readonly indentTarget: _angular_core.Signal<FlowScreenFieldPath | null>;
|
|
4148
|
+
/** Estrae il campo dal proprio contenitore e lo mette subito dopo di esso. */
|
|
4149
|
+
outdentSelected(): void;
|
|
4150
|
+
/**
|
|
4151
|
+
* Rilascio del trascinamento sulla lista **piatta**.
|
|
4152
|
+
*
|
|
4153
|
+
* Il contenitore di arrivo non lo dice il CDK — c'e' una sola lista — ma si deduce dalla riga
|
|
4154
|
+
* che **precede** il punto di rilascio, che e' anche cio' che l'utente vede: rilasciare subito
|
|
4155
|
+
* sotto una sezione o una colonna significa «mettilo dentro»; rilasciare sotto un campo
|
|
4156
|
+
* normale significa «mettilo accanto». Sono le due sole intenzioni possibili.
|
|
4157
|
+
*/
|
|
4158
|
+
onDrop(event: CdkDragDrop<DropData>): void;
|
|
4159
|
+
/**
|
|
4160
|
+
* `preRemoval` distingue le due convenzioni sull'indice di arrivo: i comandi (su, giu',
|
|
4161
|
+
* porta fuori) ragionano sulla lista **dopo** l'estrazione, il rilascio ragiona su cio' che
|
|
4162
|
+
* si vedeva **prima**. Confonderle sposta di uno ogni trascinamento verso il basso.
|
|
4163
|
+
*/
|
|
4164
|
+
private applyMove;
|
|
4165
|
+
/** Scrive una proprieta' del campo selezionato; valore vuoto → chiave omessa (§2). */
|
|
4166
|
+
private patchField;
|
|
4167
|
+
setFieldProperty(property: keyof FlowScreenField, value: unknown): void;
|
|
4168
|
+
/**
|
|
4169
|
+
* Il nome si applica sull'uscita dal campo e passa da `renameScreenField`: il campo e' una
|
|
4170
|
+
* risorsa, quindi la rinomina deve riscrivere i riferimenti che lo citano (§5.2, §13.8).
|
|
4171
|
+
*/
|
|
4172
|
+
setFieldName(value: string): void;
|
|
4173
|
+
/**
|
|
4174
|
+
* Cambiare tipo **ripulisce** cio' che il tipo nuovo non prevede: choice su una textarea o un
|
|
4175
|
+
* `dataType` su un `DisplayText` sono `SCREEN_FIELD_CONFIGURATION_INVALID`, e lasciarli nel
|
|
4176
|
+
* documento significa lasciare un errore invisibile nell'editor.
|
|
4177
|
+
*/
|
|
4178
|
+
setFieldType(type: string): void;
|
|
4179
|
+
setDefaultValue(value: FlowValue | undefined): void;
|
|
4180
|
+
setNumberProperty(property: 'scale' | 'maxLength' | 'width', raw: string): void;
|
|
4181
|
+
/** `isRequired` si scrive solo quando e' vero: il default e' facoltativo. */
|
|
4182
|
+
setRequired(value: boolean): void;
|
|
4183
|
+
/** `isEditable` ha default `true`: si scrive solo il `false`, che e' la scelta significativa. */
|
|
4184
|
+
setEditable(value: boolean): void;
|
|
4185
|
+
addChoice(name: string | undefined): void;
|
|
4186
|
+
removeChoice(index: number): void;
|
|
4187
|
+
moveChoice(index: number, direction: -1 | 1): void;
|
|
4188
|
+
setValidationRule(part: 'formulaExpression' | 'errorMessage', value: string): void;
|
|
4189
|
+
/** La regola di visibilita' e' un blocco condizioni come quello di una Decision (§5.2). */
|
|
4190
|
+
onVisibilityChanged(mutate: (holder: FlowConditionHolder) => void): void;
|
|
4191
|
+
/** Il blocco passato all'editor delle condizioni: mai `undefined`, altrimenti non si apre. */
|
|
4192
|
+
readonly visibilityRule: _angular_core.Signal<FlowConditionHolder>;
|
|
4193
|
+
onComponentParametersChanged(mutate: (holder: ParameterHolder) => void): void;
|
|
4194
|
+
setStoreOutputAutomatically(value: boolean): void;
|
|
4195
|
+
/** `ObjectProvided`: oggetto e campo si scrivono in un unico `<Oggetto>.<Campo>` (§5.2). */
|
|
4196
|
+
setProvidedObject(value: string | undefined): void;
|
|
4197
|
+
setProvidedField(value: string | undefined): void;
|
|
4198
|
+
setScreenText(property: string, value: string): void;
|
|
4199
|
+
/** I flag con default `true` si scrivono solo quando si nega, per non sporcare il diff. */
|
|
4200
|
+
setScreenFlag(flag: 'allowBack' | 'allowFinish' | 'allowPause' | 'showHeader' | 'showFooter', value: boolean): void;
|
|
4201
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicScreenInspectorComponent, never>;
|
|
4202
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicScreenInspectorComponent, "fb-dynamic-screen-inspector", never, {}, {}, never, never, true, never>;
|
|
4203
|
+
}
|
|
4204
|
+
|
|
3831
4205
|
interface ResourceKindDescriptor {
|
|
3832
4206
|
collection: FlowResourceCollection;
|
|
3833
4207
|
label: string;
|
|
@@ -4088,7 +4462,7 @@ declare class FlowBuilderComponent {
|
|
|
4088
4462
|
* troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
|
|
4089
4463
|
* modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
|
|
4090
4464
|
*/
|
|
4091
|
-
readonly inspectorMode: _angular_core.InputSignal<"
|
|
4465
|
+
readonly inspectorMode: _angular_core.InputSignal<"dialog" | "panel">;
|
|
4092
4466
|
readonly saved: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
4093
4467
|
readonly activated: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
4094
4468
|
readonly closeRequested: _angular_core.OutputEmitterRef<void>;
|
|
@@ -4138,6 +4512,12 @@ declare class FlowBuilderComponent {
|
|
|
4138
4512
|
* mancante; qui si decide solo se serve.
|
|
4139
4513
|
*/
|
|
4140
4514
|
readonly isProcessTypeOutOfCatalog: _angular_core.Signal<boolean>;
|
|
4515
|
+
/**
|
|
4516
|
+
* Quante schermate ha il flow. **Entrambi** i tipi di screen contano: quello a form e quello
|
|
4517
|
+
* dinamico sono la stessa interazione con l'utente, e contarne uno solo faceva comparire
|
|
4518
|
+
* «questo flow Screen non ha screen» su un flow fatto di soli screen dinamici (§5.2).
|
|
4519
|
+
*/
|
|
4520
|
+
private readonly screenCount;
|
|
4141
4521
|
/** `AutoLaunched` + screen e' un errore di validazione: si segnala subito (§13.6). */
|
|
4142
4522
|
readonly hasScreensInAutoLaunched: _angular_core.Signal<boolean>;
|
|
4143
4523
|
/** Un flow `Screen` senza screen e' `SCREEN_FLOW_WITHOUT_SCREENS`. */
|
|
@@ -4220,5 +4600,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
4220
4600
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4221
4601
|
}
|
|
4222
4602
|
|
|
4223
|
-
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, 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, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, 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, filterReferences, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isEmptyReferenceFilter, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, resolvePath, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
4224
|
-
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, FlowEnumValue, 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, FlowReferenceFilter, FlowReferenceKind, 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, FlowTypedEntry, 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 };
|
|
4603
|
+
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, 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, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, 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, allFieldsOf, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, insertField, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, removeField, resolvePath, samePath, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
4604
|
+
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, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, 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, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenValidationRule, 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, FlowTypedEntry, 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 };
|
package/package.json
CHANGED
package/styles/flow-builder.css
CHANGED
|
@@ -506,3 +506,36 @@ f-flow .fb-edge--goto .f-connection-path {
|
|
|
506
506
|
background: color-mix(in srgb, var(--fb-warning, #b7791f) 8%, transparent);
|
|
507
507
|
font-size: 11px;
|
|
508
508
|
}
|
|
509
|
+
|
|
510
|
+
/* ------------------------------------------------ trascinamento (CDK) */
|
|
511
|
+
/*
|
|
512
|
+
* L'anteprima del trascinamento e' l'unico pezzo di UI che il CDK sposta **fuori** dal
|
|
513
|
+
* componente: la aggancia a `body` (o al piu' vicino contenitore con overlay), dove il CSS
|
|
514
|
+
* incapsulato dell'inspector non arriva. Senza queste regole il campo trascinato si vede
|
|
515
|
+
* come testo nudo senza sfondo — lo stesso motivo per cui gli archi stanno qui.
|
|
516
|
+
*/
|
|
517
|
+
.cdk-drag-preview {
|
|
518
|
+
display: flex;
|
|
519
|
+
align-items: center;
|
|
520
|
+
gap: 6px;
|
|
521
|
+
box-sizing: border-box;
|
|
522
|
+
padding: 4px 6px;
|
|
523
|
+
border: 1px solid var(--fb-accent, #4f6ef7);
|
|
524
|
+
border-radius: var(--fb-radius-xs, 6px);
|
|
525
|
+
background: var(--fb-surface, #fff);
|
|
526
|
+
box-shadow: var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));
|
|
527
|
+
font-size: 12px;
|
|
528
|
+
color: var(--fb-text, #1a1c23);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/* L'anteprima resta essenziale: il tipo e la barra della larghezza sono contorno, e in un
|
|
532
|
+
riquadro che segue il puntatore rubano l'attenzione al punto di rilascio. */
|
|
533
|
+
.cdk-drag-preview .fb-dyn__type,
|
|
534
|
+
.cdk-drag-preview .fb-dyn__width {
|
|
535
|
+
display: none;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
.cdk-drag-animating,
|
|
539
|
+
.cdk-drop-list-dragging .cdk-drag {
|
|
540
|
+
transition: transform 180ms cubic-bezier(0, 0, 0.2, 1);
|
|
541
|
+
}
|