@esfaenza/flow-builder 20.3.12 → 20.3.14

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
@@ -1673,6 +1673,43 @@ declare function areTypesComparable(left: FlowDataType | undefined | null, right
1673
1673
  */
1674
1674
  declare function parseInvariantNumber(raw: string): number | undefined;
1675
1675
 
1676
+ /**
1677
+ * Quale campo di un `FlowElementReferenceOrValue` porta davvero il valore — FRONTEND.md §4.2.
1678
+ *
1679
+ * La regola del contratto e' "uno e un solo campo valorizzato", e la §2 dice che cio' che non c'e'
1680
+ * si **omette**. Un backend che serializza tutte le proprieta' — `System.Text.Json` senza
1681
+ * `IgnoreNullValues` lo fa di default — rispetta il contratto nella sostanza e lo viola nella forma:
1682
+ * arriva `{"enumValue": "InIstruttoria", "formulaExpression": null, ...}`, cioe' un solo valore e
1683
+ * sette caselle piene di niente.
1684
+ *
1685
+ * Il campo si sceglieva con `!== undefined`, e un `null` passava: la prima casella letta —
1686
+ * `formulaExpression` — vinceva, l'editor apriva la formula (vuota) e il valore, pur presente nel
1687
+ * documento, spariva dalla vista. Da qui questa funzione sola: **`null` e' assente quanto
1688
+ * `undefined`**, e chi interpreta un valore la usa invece di confrontare con `undefined`.
1689
+ *
1690
+ * Sta in `core/` perche' i chiamanti sono piu' d'uno — l'editor del valore, l'editor delle
1691
+ * condizioni — e la regola non deve divergere fra loro.
1692
+ */
1693
+
1694
+ /**
1695
+ * I campi che possono portare il valore, **nell'ordine in cui si interpretano**: `formulaExpression`
1696
+ * per primo perche' e' l'unico a due campi, poi il riferimento, poi i letterali. `formulaDataType`
1697
+ * non c'e': accompagna l'espressione, non e' un valore da solo.
1698
+ */
1699
+ declare const FLOW_VALUE_FIELDS: readonly (keyof FlowValue)[];
1700
+ /** I soli campi letterali: quelli che l'editor mostra sotto la modalita' «Valore». */
1701
+ declare const FLOW_VALUE_LITERAL_FIELDS: readonly (keyof FlowValue)[];
1702
+ /**
1703
+ * `true` se il campo porta un valore. Attenzione ai falsi legittimi: `booleanValue: false`,
1704
+ * `numberValue: 0` e `stringValue: ''` sono valori, quindi il confronto e' con `null`/`undefined`
1705
+ * e non una verifica di verita'.
1706
+ */
1707
+ declare function isValued(field: unknown): boolean;
1708
+ /** I campi valorizzati, nell'ordine di interpretazione: piu' di uno e' `VALUE_AMBIGUOUS` (§4.2). */
1709
+ declare function valuedFieldsOf(value: FlowValue | undefined | null): (keyof FlowValue)[];
1710
+ /** Il campo che l'editor considera **il** valore, cioe' il primo valorizzato nell'ordine sopra. */
1711
+ declare function valuedFieldOf(value: FlowValue | undefined | null): keyof FlowValue | undefined;
1712
+
1676
1713
  /**
1677
1714
  * Gli step di uno stage di orchestrazione — FRONTEND.md §5.13.
1678
1715
  *
@@ -2827,22 +2864,15 @@ declare class ReferencePickerComponent {
2827
2864
  readonly query: _angular_core.WritableSignal<string>;
2828
2865
  constructor();
2829
2866
  /**
2830
- * Il riferimento dichiarato piu' **lungo** che sia un prefisso del valore, sui confini del punto.
2867
+ * Il riferimento dichiarato piu' **lungo** che sia un prefisso del valore, e la tappa da cui
2868
+ * navigare il resto. La regola sta in `core/reference-path` perche' non e' solo del picker: gli
2869
+ * inspector ne ricavano il **tipo** dell'ultimo segmento con la stessa catena, e due copie di
2870
+ * «prefisso piu' lungo» divergerebbero (§4.1, §4.7.1).
2831
2871
  *
2832
- * Non basta il primo segmento: un nome dichiarato puo' contenere il punto. Le globali sono il caso
2833
- * per cui la regola esiste — di `$User.Anagrafica.Citta` il dizionario dichiara `$User.Anagrafica`,
2834
- * e cercare la corrispondenza esatta di tutto cio' che segue lo scope segnalerebbe come rotto un
2835
- * percorso giusto (§4.1: vince il prefisso dichiarato piu' lungo).
2872
+ * Fra **tutte** le radici, non fra quelle filtrate: la radice di `Richiesta.Ragione` in un campo
2873
+ * `String` sta solo nell'elenco non filtrato.
2836
2874
  */
2837
2875
  private readonly declaredPrefix;
2838
- /**
2839
- * La risorsa da cui il valore corrente sta navigando, quando la sua forma e' **dichiarata**: una
2840
- * `Structure` con la classe, un record con l'entita'. È cio' che rende il percorso verificabile.
2841
- *
2842
- * Un output automatico e' escluso di proposito: la primitiva ne dichiara il tipo, ma la
2843
- * specifica tiene i percorsi che ne partono fuori dalla validazione (§7, ultimo capoverso), e
2844
- * l'editor non deve accusare cio' che il backend non verifica.
2845
- */
2846
2876
  private readonly navigableRoot;
2847
2877
  /** Il percorso dopo la radice: `Cliente.Email` di `Richiesta.Cliente.Email`. */
2848
2878
  private readonly navigatedPath;
@@ -2905,7 +2935,7 @@ declare class ReferencePickerComponent {
2905
2935
  * percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
2906
2936
  * risponderebbe `GLOBAL_UNKNOWN`.
2907
2937
  */
2908
- readonly valueState: _angular_core.Signal<"empty" | "member" | "unknown" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
2938
+ readonly valueState: _angular_core.Signal<"member" | "empty" | "unknown" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
2909
2939
  /** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
2910
2940
  private readonly tailIsObject;
2911
2941
  private readonly tailContainer;
@@ -3057,7 +3087,7 @@ declare class NamePickerComponent {
3057
3087
  * **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
3058
3088
  * senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
3059
3089
  */
3060
- readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
3090
+ readonly unknownSeverity: _angular_core.InputSignal<"warn" | "error">;
3061
3091
  /** Cosa dire quando l'elenco e' vuoto: e' il caso "non lo so", non un errore. */
3062
3092
  readonly emptyMessage: _angular_core.InputSignal<string>;
3063
3093
  /** Testo monospazio: i nomi tecnici si leggono meglio, ed e' come li mostra il resto del form. */
@@ -3282,6 +3312,7 @@ declare class ValueEditorComponent {
3282
3312
 
3283
3313
  declare class ConditionEditorComponent {
3284
3314
  private readonly dictionaries;
3315
+ private readonly catalog;
3285
3316
  private readonly api;
3286
3317
  private readonly store;
3287
3318
  /** Il contenitore: porta `conditions`, `conditionLogic` e, se serve, `formula`. */
@@ -3306,15 +3337,22 @@ declare class ConditionEditorComponent {
3306
3337
  * fra testo e numero prima che lo dica la validazione (§4.3).
3307
3338
  */
3308
3339
  private readonly references;
3340
+ /**
3341
+ * Il tipo dei due lati, risorsa o **percorso**. L'elenco porta le radici e non i percorsi (§6.4):
3342
+ * su `Richiesta.Stato` la corrispondenza esatta non trova niente, e il tipo si ricava navigando la
3343
+ * classe (§4.7.1). È cio' che fa comparire l'elenco dei valori su un membro `Enum` (§4.6) e che
3344
+ * rende visibile un confronto fra tipi incompatibili anche dentro un'istanza (§4.3).
3345
+ */
3346
+ private readonly types;
3309
3347
  constructor();
3310
- /** Il tipo di un riferimento, `undefined` se navigato o ignoto: lì non si segnala (§4.3). */
3348
+ /** Il tipo di un riferimento, `undefined` dove non si sa: lì non si segnala (§4.3). */
3311
3349
  private typeOfReference;
3312
3350
  /** Il tipo del lato sinistro: guida il secondo operando. */
3313
3351
  leftDataType(condition: FlowCondition): FlowDataType | undefined;
3314
3352
  /**
3315
3353
  * Il tipo concreto del lato sinistro quando e' un `Enum`: senza di questo il valore di confronto
3316
- * resterebbe una casella di testo su un insieme chiuso (§4.6). Su un percorso navigato
3317
- * (`Cliente.Stato`) il riferimento non e' in elenco e resta `undefined`: si digita, come prima.
3354
+ * resterebbe una casella di testo su un insieme chiuso (§4.6). Vale anche su un percorso navigato
3355
+ * (`Richiesta.Stato`, `$Record.Stato`): il tipo del membro o del campo lo ricava {@link types}.
3318
3356
  */
3319
3357
  leftObjectType(condition: FlowCondition): string | undefined;
3320
3358
  /** Il tipo del lato destro, dedotto dal campo valorizzato o dal riferimento scelto. */
@@ -3393,13 +3431,22 @@ declare class RecordFilterEditorComponent {
3393
3431
  * (§5.7, §13.10).
3394
3432
  */
3395
3433
  readonly emptyWarning: _angular_core.InputSignal<string | null>;
3396
- readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
3434
+ readonly emptyWarningSeverity: _angular_core.InputSignal<"warn" | "error">;
3397
3435
  readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
3398
- private readonly fields;
3399
3436
  /** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.7). */
3400
3437
  private readonly allFields;
3401
3438
  readonly filters: _angular_core.Signal<FlowRecordFilter[]>;
3402
3439
  readonly operators: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
3440
+ /**
3441
+ * Il tipo del campo filtrato, **compresi i percorsi di relazione**: `Cliente.Citta` non e' nella
3442
+ * lista piatta dei campi dell'entita' e il suo tipo si ricava navigando la catena (§4.4). Senza,
3443
+ * un campo `Enum` raggiunto per relazione tornava una casella di testo su un insieme chiuso (§4.6).
3444
+ *
3445
+ * L'`usage` e' quello del campo — `filterable` fra i filtri — e vale per l'**ultimo** segmento: i
3446
+ * segmenti intermedi li chiede `resolvePath` con `any`, perche' l'uso riguarda il campo confrontato
3447
+ * e non la relazione che porta a lui.
3448
+ */
3449
+ private readonly types;
3403
3450
  constructor();
3404
3451
  /**
3405
3452
  * §5.7 — l'identificativo esiste ma **non e' filtrabile**: e' il caso di una chiave composta,
@@ -3423,13 +3470,12 @@ declare class RecordFilterEditorComponent {
3423
3470
  setFormula(formula: string): void;
3424
3471
  /**
3425
3472
  * Il tipo del campo, per proporre il controllo giusto sul valore: e' il motivo per cui il
3426
- * catalogo resta caricato qui, e non solo dentro il picker.
3473
+ * catalogo resta interrogato qui, e non solo dentro il picker.
3427
3474
  */
3428
- fieldDataType(filter: FlowRecordFilter): string | undefined;
3475
+ fieldDataType(filter: FlowRecordFilter): FlowDataType | undefined;
3429
3476
  /**
3430
3477
  * Il tipo concreto del campo: su un campo `Enum` e' cio' che permette di proporre i valori
3431
- * ammessi invece di farli digitare (§4.6). Su un percorso di relazione il campo non e' in elenco
3432
- * e resta `undefined`, come per il tipo.
3478
+ * ammessi invece di farli digitare (§4.6).
3433
3479
  */
3434
3480
  fieldObjectType(filter: FlowRecordFilter): string | undefined;
3435
3481
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecordFilterEditorComponent, never>;
@@ -4174,5 +4220,5 @@ declare class SelectValueDirective implements AfterViewChecked {
4174
4220
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4175
4221
  }
4176
4222
 
4177
- 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, 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, 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, variantFieldOf, variantOf, variantPresetOf };
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 };
4178
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/flow-builder",
3
- "version": "20.3.12",
3
+ "version": "20.3.14",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.25",
6
6
  "@angular/core": "^20.3.25",