@esfaenza/flow-builder 20.3.34 → 20.3.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -3255,8 +3255,19 @@ declare class FlowDocumentStore {
3255
3255
  *
3256
3256
  * `silent` per il trascinamento: il chiamante registra un solo passo alla fine.
3257
3257
  */
3258
+ /**
3259
+ * `from` e' l'origine da cui misurare lo spostamento, e serve per i riquadri **auto-dimensionati**
3260
+ * (§3.6): lì il rettangolo disegnato e' l'ingombro dei membri, che dopo che qualcuno ha spostato un
3261
+ * membro non coincide piu' con `locationX`/`locationY`. Misurando dal documento, lo spostamento
3262
+ * della cornice portava i membri di un delta che nessuno aveva chiesto. Chi disegna il rettangolo
3263
+ * lo conosce: e' il canvas, e lo passa. Assente, si misura dal documento come prima.
3264
+ */
3258
3265
  moveGroup(name: string, x: number, y: number, options?: {
3259
3266
  silent?: boolean;
3267
+ from?: {
3268
+ x: number;
3269
+ y: number;
3270
+ };
3260
3271
  }): void;
3261
3272
  /**
3262
3273
  * Scrive la geometria dichiarata di un riquadro: e' il ridimensionamento a mano.
@@ -3789,6 +3800,32 @@ declare function parseCanvasNodeId(id: string): string | null;
3789
3800
  */
3790
3801
  declare function canvasGroupId(groupName: string): string;
3791
3802
  declare function parseCanvasGroupId(id: string): string | null;
3803
+ /**
3804
+ * Il **node segnaposto** di un riquadro chiuso (§3.6).
3805
+ *
3806
+ * Terzo prefisso, accanto a `node:` e `group:`, e per la stessa ragione: gli eventi della libreria
3807
+ * portano tutto nello stesso elenco, e un riquadro chiuso non e' ne' un elemento del documento ne'
3808
+ * una cornice — spostarlo sposta i **membri**, cancellarlo cancella il riquadro.
3809
+ */
3810
+ declare function canvasFoldId(groupName: string): string;
3811
+ declare function parseCanvasFoldId(id: string): string | null;
3812
+ /**
3813
+ * I connettori del segnaposto: uno in ingresso e **uno solo** in uscita.
3814
+ *
3815
+ * Uno solo perche' il segnaposto non ha rami: gli archi che escono dal riquadro appartengono a
3816
+ * elementi diversi che stanno dentro, e disegnarne un connettore per ciascuno rimetterebbe sul
3817
+ * canvas la complessita' che chiudere il riquadro serviva a togliere. L'arco porta nell'etichetta
3818
+ * il nome dell'elemento interno, che e' l'informazione che serve.
3819
+ *
3820
+ * Il nome dietro il prefisso e' quello del **riquadro**, quindi `parseSourceConnectorId` risponde
3821
+ * `fold:<riquadro>`, che non e' il nome di nessun elemento: chi gestisce i gesti degli archi lo
3822
+ * riconosce con {@link isFoldReference} e rifiuta, invece di scrivere un connector su un node che
3823
+ * non esiste.
3824
+ */
3825
+ declare function foldTargetConnectorId(groupName: string): string;
3826
+ declare function foldSourceConnectorId(groupName: string): string;
3827
+ /** `true` se il nome estratto da un connettore e' un segnaposto e non un elemento del documento. */
3828
+ declare function isFoldReference(name: string | undefined | null): boolean;
3792
3829
  interface FlowCanvasNode {
3793
3830
  /** Nome nel documento; `$start` per lo Start, che nel modello non ha nome. */
3794
3831
  name: string;
@@ -3845,6 +3882,12 @@ interface FlowCanvasEdge {
3845
3882
  kind: string;
3846
3883
  label?: string | null;
3847
3884
  isGoTo: boolean;
3885
+ /**
3886
+ * Un capo dell'arco e' il segnaposto di un riquadro chiuso, non l'elemento vero. Serve a due
3887
+ * cose: non offrirlo come bersaglio dell'innesto (innestare su un arco di cui non si vede un
3888
+ * capo non e' una scelta, e' una sorpresa) e disegnarlo un po' piu' tenue.
3889
+ */
3890
+ isFolded?: boolean;
3848
3891
  }
3849
3892
  /**
3850
3893
  * Un riquadro di raggruppamento come lo disegna il canvas (§3.6).
@@ -3880,6 +3923,34 @@ interface FlowCanvasGroup {
3880
3923
  /** La geometria e' calcolata sui membri: ridimensionarlo la dichiara (§3.6). */
3881
3924
  isAutoSized: boolean;
3882
3925
  }
3926
+ /**
3927
+ * Un riquadro **chiuso**, disegnato come un node segnaposto invece che come una cornice (§3.6).
3928
+ *
3929
+ * Chiuso e aperto sono due disegni alternativi dello stesso riquadro, non due stati dello stesso
3930
+ * disegno: aperto e' una cornice sotto i node, chiuso e' una pastiglia **al posto** dei node. Per
3931
+ * questo `groups()` non contiene i chiusi e `folds()` non contiene gli aperti — disegnarli
3932
+ * entrambi metterebbe due titoli nello stesso punto.
3933
+ */
3934
+ interface FlowCanvasFold {
3935
+ /** Il nome del riquadro: la pastiglia non e' un elemento e non ne ha uno proprio. */
3936
+ name: string;
3937
+ /** Id per il canvas, vedi {@link canvasFoldId}. */
3938
+ id: string;
3939
+ label: string;
3940
+ description?: string | null;
3941
+ position: {
3942
+ x: number;
3943
+ y: number;
3944
+ };
3945
+ colorClass: string;
3946
+ /** Quanti membri esistono davvero, cioe' quanti elementi la pastiglia sta nascondendo. */
3947
+ memberCount: number;
3948
+ /** I rilievi degli elementi nascosti, sommati: chiudere un riquadro non deve nascondere un errore. */
3949
+ issueCount: number;
3950
+ severity: FlowSeverityBucket | null;
3951
+ /** Membri che nominano un elemento che non c'e' piu' (§3.6, regola 3): avviso, non difetto. */
3952
+ unknownMembers: string[];
3953
+ }
3883
3954
 
3884
3955
  /**
3885
3956
  * Dimensioni nominali di un node, usate dal layout automatico.
@@ -3890,6 +3961,14 @@ interface FlowCanvasGroup {
3890
3961
  */
3891
3962
  declare const FLOW_NODE_WIDTH = 240;
3892
3963
  declare const FLOW_NODE_HEIGHT = 116;
3964
+ /**
3965
+ * L'ingombro della pastiglia di un riquadro chiuso (§3.6). Gli stessi valori stanno nel CSS
3966
+ * (`.fb-fold`): la misura serve **due volte** — a disegnarla e a stimarla per l'inquadratura — e la
3967
+ * larghezza non puo' essere uno stile inline, perche' @foblex/flow riscrive l'attributo `style` del
3968
+ * node a ogni riposizionamento.
3969
+ */
3970
+ declare const FLOW_FOLD_WIDTH = 260;
3971
+ declare const FLOW_FOLD_HEIGHT = 64;
3893
3972
  declare function flowNodeWidth(outletCount: number): number;
3894
3973
  /** La classe che porta quella larghezza: unico modo di sopravvivere ai riposizionamenti. */
3895
3974
  declare function flowNodeWidthClass(outletCount: number): string;
@@ -3991,6 +4070,11 @@ declare class FlowCanvasComponent {
3991
4070
  * Con un solo node (un flow appena creato ha solo lo Start) non si inquadra niente: la
3992
4071
  * vista si spalancherebbe su una card sola.
3993
4072
  */
4073
+ /**
4074
+ * L'elemento su cui andare appena i node sono stati disegnati: lo scrive `bringIntoView` quando
4075
+ * per mostrarlo ha dovuto aprire un riquadro chiuso.
4076
+ */
4077
+ private pendingFocus;
3994
4078
  onNodesRendered(): void;
3995
4079
  /**
3996
4080
  * Porta la vista **su** un elemento: e' l'arrivo della ricerca e del clic su un problema.
@@ -4063,8 +4147,25 @@ declare class FlowCanvasComponent {
4063
4147
  private readonly reachability;
4064
4148
  readonly nodes: _angular_core.Signal<FlowCanvasNode[]>;
4065
4149
  private toCanvasNode;
4066
- /** Gli archi con destinazione: solo questi diventano `<f-connection>`. */
4150
+ /**
4151
+ * Gli archi con destinazione: solo questi diventano `<f-connection>`.
4152
+ *
4153
+ * Un riquadro **chiuso** (§3.6) cambia tre cose, e sono la ragione per cui questo non e' piu' una
4154
+ * `map` sulle uscite del documento. Un arco fra due membri dello stesso riquadro chiuso **non si
4155
+ * disegna**: entrambi i capi sono nascosti, e un arco fra due punti che non ci sono e' un arco che
4156
+ * parte dall'angolo del canvas. Un arco che attraversa il confine si riattacca al **segnaposto**,
4157
+ * che e' l'unico modo di nascondere un node senza rompere l'arco: un connettore con `display:
4158
+ * none` ha geometria 0×0 (regola 4 di @foblex/flow), quindi il node si nasconde solo se l'arco
4159
+ * trova un connettore vero altrove. E due archi che, riattaccati, avrebbero gli stessi capi
4160
+ * diventano **uno**: sarebbero due tratti sovrapposti, indistinguibili e cliccabili a caso.
4161
+ */
4067
4162
  readonly edges: _angular_core.Signal<FlowCanvasEdge[]>;
4163
+ /**
4164
+ * L'etichetta di un arco. Sugli archi normali e' quella del ramo; su un arco riattaccato a un
4165
+ * segnaposto e' il **nome dell'elemento nascosto**, perche' quella e' l'unica informazione che
4166
+ * chiudere il riquadro ha portato via: «da dove esce» e «dove entra» non si leggono piu' dai capi.
4167
+ */
4168
+ private edgeLabel;
4068
4169
  /**
4069
4170
  * Gli ingombri dei node, per l'appartenenza ai riquadri. Lo Start non c'e': `members` porta i
4070
4171
  * `name` dei node (§3.6) e lo Start nel modello non ha nome.
@@ -4078,6 +4179,27 @@ declare class FlowCanvasComponent {
4078
4179
  * client non puo' sapere meglio del backend; la geometria la conosciamo noi.
4079
4180
  */
4080
4181
  readonly groups: _angular_core.Signal<FlowCanvasGroup[]>;
4182
+ /**
4183
+ * Chi nasconde chi: nome del membro → nome del riquadro chiuso che lo copre.
4184
+ *
4185
+ * Un elemento in **due** riquadri chiusi finisce nel primo in ordine di documento: sarebbe
4186
+ * disegnato due volte, e due pastiglie che si prendono lo stesso arco fanno sparire un arco senza
4187
+ * dire niente. La sovrapposizione e' legittima (i riquadri sono commenti, §3.6), quindi la regola
4188
+ * deve essere deterministica, non impedita.
4189
+ */
4190
+ private readonly foldedByMember;
4191
+ /**
4192
+ * I riquadri chiusi, disegnati come node segnaposto.
4193
+ *
4194
+ * La pastiglia sta nell'angolo in alto a sinistra del rettangolo che la cornice occupava: e' il
4195
+ * punto da cui il riquadro si e' chiuso, quindi riaprendolo il contenuto ricompare dove era. Il
4196
+ * rettangolo lo da' `groupRect`, non `width`/`height` del documento: a 0 significano «calcolala
4197
+ * sui membri» (§3.6), e i membri esistono anche mentre sono nascosti.
4198
+ */
4199
+ readonly folds: _angular_core.Signal<FlowCanvasFold[]>;
4200
+ isFoldSelected(fold: FlowCanvasFold): boolean;
4201
+ /** L'angolo da cui il riquadro e' stato disegnato, aperto o chiuso: e' l'origine dello spostamento. */
4202
+ private drawnOrigin;
4081
4203
  /**
4082
4204
  * Ricalcola l'appartenenza dai rettangoli: e' il gesto «trascino un node dentro o fuori dal
4083
4205
  * riquadro» della §3.6, regola 2 — la geometria non **e'** l'appartenenza, la **calcola**, e
@@ -4092,7 +4214,12 @@ declare class FlowCanvasComponent {
4092
4214
  * un annulla che riporta indietro l'appartenenza ma non la posizione sarebbe incomprensibile.
4093
4215
  */
4094
4216
  private syncGroupMembers;
4095
- /** Apre e chiude il riquadro. Non tocca i membri: chiuso e' un fatto del disegno (§3.6). */
4217
+ /** Apre un riquadro chiuso. Passo di storico normale, come la chiusura a mano: e' la stessa modifica. */
4218
+ private openGroup;
4219
+ /**
4220
+ * Apre e chiude il riquadro. Non tocca i membri: chiuso e aperto sono due **disegni** dello
4221
+ * stesso riquadro (§3.6) — chiuso, i membri non si disegnano e al loro posto c'e' la pastiglia.
4222
+ */
4096
4223
  toggleGroupCollapsed(event: Event, name: string): void;
4097
4224
  onGroupClick(event: Event, name: string): void;
4098
4225
  onGroupRemoveClick(event: Event, name: string): void;
@@ -4123,7 +4250,14 @@ declare class FlowCanvasComponent {
4123
4250
  */
4124
4251
  private readonly _insertionEdgeId;
4125
4252
  readonly insertionEdgeId: _angular_core.Signal<string | null>;
4126
- /** Gli id degli archi disegnati: il hit test accetta solo questi. */
4253
+ /**
4254
+ * Gli id degli archi su cui si puo' innestare: il hit test accetta solo questi.
4255
+ *
4256
+ * Gli archi di un riquadro chiuso restano fuori di proposito. Innestare vuol dire mettersi **in
4257
+ * mezzo** a due elementi, e di quell'arco uno dei due non si vede: il flow si ricollegherebbe
4258
+ * attorno a un elemento che non e' sullo schermo, che non e' una scelta ma una sorpresa. Per
4259
+ * innestare lì si apre il riquadro.
4260
+ */
4127
4261
  private readonly edgeIds;
4128
4262
  /** L'ascoltatore attivo solo durante un trascinamento dalla palette. */
4129
4263
  private pointerListener;
@@ -4232,6 +4366,9 @@ declare class FlowCanvasComponent {
4232
4366
  onDuplicateClick(event: Event, name: string): void;
4233
4367
  connectorIdOf(node: FlowCanvasNode, outletKey: string): string;
4234
4368
  targetIdOf(node: FlowCanvasNode): string;
4369
+ /** I connettori della pastiglia di un riquadro chiuso: gli id li costruisce il modello, non il template. */
4370
+ foldTargetIdOf(fold: FlowCanvasFold): string;
4371
+ foldSourceIdOf(fold: FlowCanvasFold): string;
4235
4372
  /**
4236
4373
  * Selezionato = corrente **oppure** parte del blocco selezionato. Senza il secondo caso, un
4237
4374
  * rettangolo che prende cinque elementi ne evidenziava uno, e i comandi che agiscono su tutti
@@ -4848,7 +4985,7 @@ declare class FormulaEditorComponent {
4848
4985
  * dinamico — e riscriverla a ogni tasto costa. La **verifica** parte comunque durante la
4849
4986
  * digitazione: usa la bozza locale, non cio' che e' arrivato al documento.
4850
4987
  */
4851
- readonly commitOn: _angular_core.InputSignal<"change" | "input">;
4988
+ readonly commitOn: _angular_core.InputSignal<"input" | "change">;
4852
4989
  readonly expressionChange: _angular_core.OutputEmitterRef<string>;
4853
4990
  private readonly area;
4854
4991
  /**
@@ -5015,7 +5152,12 @@ declare class ValueEditorComponent {
5015
5152
  readonly isStructureTarget: _angular_core.Signal<boolean>;
5016
5153
  readonly literalInputType: _angular_core.Signal<string>;
5017
5154
  readonly literalText: _angular_core.Signal<string>;
5018
- readonly booleanValue: _angular_core.Signal<boolean>;
5155
+ /**
5156
+ * Il valore booleano come testo per il `<select>` a tre stati: `''` = nessun valore, altrimenti
5157
+ * `'true'` / `'false'`. `isValued` e non `=== true`: `booleanValue: false` **e'** un valore, e
5158
+ * confonderlo con l'assenza e' esattamente il difetto che il tri-stato risolve.
5159
+ */
5160
+ readonly booleanText: _angular_core.Signal<string>;
5019
5161
  /** Il fuso dichiarato nel valore data: `Z`, un offset, oppure niente = ora locale (§4.2). */
5020
5162
  readonly dateIsUtc: _angular_core.Signal<boolean>;
5021
5163
  private static readonly ZONE_PATTERN;
@@ -5037,7 +5179,8 @@ declare class ValueEditorComponent {
5037
5179
  * scrivere una stringa vuota: un `enumValue: ''` sarebbe un campo valorizzato con niente.
5038
5180
  */
5039
5181
  onEnumChange(name: string | undefined): void;
5040
- onBooleanChange(checked: boolean): void;
5182
+ /** `''` toglie il campo: «non impostato» e' l'assenza, non un terzo valore da scrivere (§2). */
5183
+ onBooleanTextChange(raw: string): void;
5041
5184
  private withDateZone;
5042
5185
  /**
5043
5186
  * Cambia il fuso **dichiarato**, non l'istante: `09:00Z` e `09:00` sono le nove in due fusi
@@ -5109,7 +5252,7 @@ declare class ConditionEditorComponent {
5109
5252
  */
5110
5253
  hasTypeMismatch(condition: FlowCondition): boolean;
5111
5254
  typeMismatchMessage(condition: FlowCondition): string;
5112
- readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
5255
+ readonly logicMode: _angular_core.Signal<"formula" | "and" | "or" | "custom">;
5113
5256
  readonly customLogic: _angular_core.Signal<string>;
5114
5257
  /** Feedback immediato sull'espressione: la verita' resta della validazione backend. */
5115
5258
  readonly customLogicError: _angular_core.Signal<string | null>;
@@ -5214,7 +5357,7 @@ declare class RecordFilterEditorComponent {
5214
5357
  * evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
5215
5358
  */
5216
5359
  readonly identifierNotFilterable: _angular_core.Signal<boolean>;
5217
- readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
5360
+ readonly logicMode: _angular_core.Signal<"formula" | "and" | "or" | "custom">;
5218
5361
  readonly customLogic: _angular_core.Signal<string>;
5219
5362
  readonly showEmptyWarning: _angular_core.Signal<boolean>;
5220
5363
  addFilter(): void;
@@ -5746,7 +5889,7 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
5746
5889
  * opzioni arrivano dallo schema (§5.2). Metterli insieme costringerebbe a scegliere prima
5747
5890
  * `ObjectProvided` e poi il campo, che e' il contrario dell'ordine in cui si pensa.
5748
5891
  */
5749
- readonly paletteTab: _angular_core.WritableSignal<"fields" | "components">;
5892
+ readonly paletteTab: _angular_core.WritableSignal<"components" | "fields">;
5750
5893
  /** L'entita' di cui elencare i campi nella seconda scheda. */
5751
5894
  readonly fieldsObject: _angular_core.WritableSignal<string | undefined>;
5752
5895
  private readonly objectFields;
@@ -6876,5 +7019,5 @@ declare class SelectValueDirective implements AfterViewChecked {
6876
7019
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6877
7020
  }
6878
7021
 
6879
- export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ENUM_CHOICE_SET_DEFAULT_DISPLAY_FIELD, ENUM_CHOICE_SET_DEFAULT_VALUE_FIELD, ENUM_CHOICE_SET_FIELDS, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_CLIPBOARD_KIND, FLOW_CLIPBOARD_VERSION, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_GROUP_COLORS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_REFERENCE_FIELDS, FLOW_RESOURCE_COLLECTIONS, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FieldValuePickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, GROUP_HEADER_HEIGHT, GROUP_MIN_HEIGHT, GROUP_MIN_WIDTH, GROUP_PADDING, GroupPanelComponent, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, PasteDialogComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, RunDialogComponent, 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, applyPaste, areTypesComparable, boundsAround, buildClipboardPayload, canvasGroupId, canvasNodeId, checkConditionLogic, checkFlowName, choiceSetSourceOf, declaredChoiceSetSources, describeFieldPath, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, enumChoiceSetFieldType, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, groupColorClass, groupRect, hasAutoSize, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isUnknownEnumChoiceSetField, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, membersInside, moveCondition, moveField, navigatePath, otherSourceFieldsOf, outletByKey, outletsOf, parseCanvasGroupId, parseCanvasNodeId, parseFieldPath, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, recomputeMembers, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, sameMembers, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
6880
- export type { ChoiceSetSource, FieldAssignmentHolder, FilterFieldOption, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasGroup, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowClipboardNode, FlowClipboardPayload, FlowClipboardResource, 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, FlowFormKind, FlowFormula, FlowFormulaFunction, FlowFormulaFunctionParameter, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, FlowGlobalVariableEntry, FlowGroup, FlowGroupRef, FlowGroupTarget, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineGroup, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowRect, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResourceTarget, FlowResumeRequest, FlowRunOutcome, FlowRunRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenTrigger, FlowScreenTriggerInitBehavior, 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, PathValueSet, StructureMemberUsage, ValueMode };
7022
+ export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ENUM_CHOICE_SET_DEFAULT_DISPLAY_FIELD, ENUM_CHOICE_SET_DEFAULT_VALUE_FIELD, ENUM_CHOICE_SET_FIELDS, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_CLIPBOARD_KIND, FLOW_CLIPBOARD_VERSION, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_FOLD_HEIGHT, FLOW_FOLD_WIDTH, FLOW_GROUP_COLORS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_REFERENCE_FIELDS, FLOW_RESOURCE_COLLECTIONS, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FieldValuePickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, GROUP_HEADER_HEIGHT, GROUP_MIN_HEIGHT, GROUP_MIN_WIDTH, GROUP_PADDING, GroupPanelComponent, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, PasteDialogComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, RunDialogComponent, 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, applyPaste, areTypesComparable, boundsAround, buildClipboardPayload, canvasFoldId, canvasGroupId, canvasNodeId, checkConditionLogic, checkFlowName, choiceSetSourceOf, declaredChoiceSetSources, describeFieldPath, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, enumChoiceSetFieldType, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, foldSourceConnectorId, foldTargetConnectorId, groupColorClass, groupRect, hasAutoSize, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isFoldReference, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isUnknownEnumChoiceSetField, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, membersInside, moveCondition, moveField, navigatePath, otherSourceFieldsOf, outletByKey, outletsOf, parseCanvasFoldId, parseCanvasGroupId, parseCanvasNodeId, parseFieldPath, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, recomputeMembers, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, sameMembers, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
7023
+ export type { ChoiceSetSource, FieldAssignmentHolder, FilterFieldOption, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasFold, FlowCanvasGroup, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowClipboardNode, FlowClipboardPayload, FlowClipboardResource, 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, FlowFormKind, FlowFormula, FlowFormulaFunction, FlowFormulaFunctionParameter, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, FlowGlobalVariableEntry, FlowGroup, FlowGroupRef, FlowGroupTarget, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineGroup, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowRect, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResourceTarget, FlowResumeRequest, FlowRunOutcome, FlowRunRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenTrigger, FlowScreenTriggerInitBehavior, 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, PathValueSet, StructureMemberUsage, ValueMode };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/flow-builder",
3
- "version": "20.3.34",
3
+ "version": "20.3.36",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^20.2.14",
6
6
  "@angular/common": "^20.3.28",
@@ -156,6 +156,15 @@
156
156
  --ff-marker-color: var(--fb-edge-loop, #3f8f5f);
157
157
  }
158
158
 
159
+ /*
160
+ * Un arco con un capo su un riquadro **chiuso** (§3.6): l'elemento vero non e' sullo schermo, e il
161
+ * tratto piu' tenue lo dice. Sta qui e non nel CSS del canvas per la ragione di sempre — i path SVG
162
+ * sono creati a runtime e non portano l'attributo di scope.
163
+ */
164
+ .fb-edge--folded {
165
+ opacity: 0.75;
166
+ }
167
+
159
168
  .fb-edge--creating {
160
169
  --ff-connection-color: var(--fb-accent, #2f6feb);
161
170
  }
@@ -424,7 +433,8 @@ f-flow .fb-edge--goto .f-connection-path {
424
433
  /**
425
434
  * Il controllo segmentato: una scelta **esclusiva** fra poche voci, mostrata come un gruppo con una
426
435
  * cornice sola invece che come bottoni sciolti. Lo usano le modalita' di un valore (§4.2: un solo
427
- * campo valorizzato), la logica di condizioni e filtri e l'esito atteso di un operatore unario
436
+ * campo valorizzato), la logica di condizioni e filtri, l'esito atteso di un operatore unario e
437
+ * l'operazione di una riga di Transform (§5.13) —
428
438
  * cioe' controlli che nello stesso pannello si guardano, e che quindi devono essere uguali.
429
439
  *
430
440
  * Sta qui e non nei tre componenti perche' era già duplicato tre volte e i tre stili avevano
@@ -439,7 +449,8 @@ f-flow .fb-edge--goto .f-connection-path {
439
449
  .fb-value__modes,
440
450
  .fb-filter__modes,
441
451
  .fb-cond__modes,
442
- .fb-cond__unary {
452
+ .fb-cond__unary,
453
+ .fb-tr__modes {
443
454
  display: flex;
444
455
  flex-wrap: wrap;
445
456
  gap: 2px;
@@ -453,7 +464,8 @@ f-flow .fb-edge--goto .f-connection-path {
453
464
 
454
465
  .fb-value__mode,
455
466
  .fb-filter__mode,
456
- .fb-cond__mode {
467
+ .fb-cond__mode,
468
+ .fb-tr__mode {
457
469
  padding: 3px 10px;
458
470
  border: 0;
459
471
  border-radius: var(--fb-radius-xs, 6px);
@@ -470,7 +482,8 @@ f-flow .fb-edge--goto .f-connection-path {
470
482
 
471
483
  .fb-value__mode:hover:not(:disabled),
472
484
  .fb-filter__mode:hover:not(:disabled),
473
- .fb-cond__mode:hover:not(:disabled) {
485
+ .fb-cond__mode:hover:not(:disabled),
486
+ .fb-tr__mode:hover:not(:disabled) {
474
487
  /* Sulla superficie affossata del gruppo un grigio piu' scuro non si vedrebbe: si schiarisce. */
475
488
  background: color-mix(in srgb, var(--fb-surface, #fff) 65%, transparent);
476
489
  color: var(--fb-text, #1a1c23);
@@ -478,7 +491,8 @@ f-flow .fb-edge--goto .f-connection-path {
478
491
 
479
492
  .fb-value__mode:focus-visible,
480
493
  .fb-filter__mode:focus-visible,
481
- .fb-cond__mode:focus-visible {
494
+ .fb-cond__mode:focus-visible,
495
+ .fb-tr__mode:focus-visible {
482
496
  outline: 2px solid var(--fb-accent, #4f6ef7);
483
497
  outline-offset: 1px;
484
498
  }
@@ -486,7 +500,8 @@ f-flow .fb-edge--goto .f-connection-path {
486
500
  /* La voce scelta sale sulla superficie: e' la differenza che si legge anche senza il colore. */
487
501
  .fb-value__mode--active,
488
502
  .fb-filter__mode--active,
489
- .fb-cond__mode--active {
503
+ .fb-cond__mode--active,
504
+ .fb-tr__mode--active {
490
505
  background: var(--fb-surface, #fff);
491
506
  color: var(--fb-accent, #4f6ef7);
492
507
  font-weight: 600;
@@ -495,7 +510,8 @@ f-flow .fb-edge--goto .f-connection-path {
495
510
 
496
511
  .fb-value__mode:disabled,
497
512
  .fb-filter__mode:disabled,
498
- .fb-cond__mode:disabled {
513
+ .fb-cond__mode:disabled,
514
+ .fb-tr__mode:disabled {
499
515
  opacity: 0.5;
500
516
  cursor: not-allowed;
501
517
  }