@esfaenza/flow-builder 20.3.24 → 20.3.26

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
@@ -2536,6 +2536,18 @@ interface PathContainer {
2536
2536
  /** Nome dell'entita' o della classe. */
2537
2537
  name: string;
2538
2538
  }
2539
+ /**
2540
+ * Dove chiedere i valori ammessi di un campo a scelta chiusa (§6.4):
2541
+ * `GET /schema/{object}/fields/{field}/values`.
2542
+ *
2543
+ * Sono i valori del **campo**, non di un tipo: `Ordine.Stato` e `Attivita.Stato` sono due insiemi
2544
+ * diversi anche a parita' di `dataType`, e per questo serve la coppia e non il solo nome. È
2545
+ * l'altra meta' della §4.6 — lì l'insieme e' del tipo di enumerazione, qui della colonna.
2546
+ */
2547
+ interface PathValueSet {
2548
+ object: string;
2549
+ field: string;
2550
+ }
2539
2551
  /**
2540
2552
  * Un segmento proponibile in una tappa — campo o membro ridotti al minimo comune, perche' chi
2541
2553
  * naviga non deve sapere quale dei due sta guardando.
@@ -2551,6 +2563,12 @@ interface PathEntry {
2551
2563
  isWritable: boolean;
2552
2564
  /** Dove il percorso continua dopo questo segmento; assente = qui finisce cio' che si sa. */
2553
2565
  next?: PathContainer;
2566
+ /**
2567
+ * Presente solo sui campi che dichiarano `hasClosedValueSet`: dice dove chiedere i valori
2568
+ * ammessi, così un insieme chiuso non finisce in una casella di testo libero. Un membro di
2569
+ * classe non lo ha — lì l'insieme chiuso e' un `Enum` col suo tipo (§4.6, §4.7.1).
2570
+ */
2571
+ valueSet?: PathValueSet;
2554
2572
  }
2555
2573
  /**
2556
2574
  * Esito della descrizione di una tappa. Sono quattro come per le classi (§4.7.1) e vanno tenuti
@@ -3991,7 +4009,7 @@ declare class NamePickerComponent {
3991
4009
  * **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
3992
4010
  * senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
3993
4011
  */
3994
- readonly unknownSeverity: _angular_core.InputSignal<"warn" | "error">;
4012
+ readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
3995
4013
  /**
3996
4014
  * Nomi che **esistono** ma non sono utilizzabili qui. Il caso vero e' il catalogo dei form,
3997
4015
  * dove una schermata intera e un componente vivono nello stesso elenco e si distinguono per
@@ -4152,6 +4170,27 @@ declare class EnumValuePickerComponent {
4152
4170
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EnumValuePickerComponent, "fb-enum-value-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "enumType": { "alias": "enumType"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
4153
4171
  }
4154
4172
 
4173
+ declare class FieldValuePickerComponent {
4174
+ private readonly catalog;
4175
+ readonly value: _angular_core.InputSignal<string | undefined>;
4176
+ /** Entita' e campo di cui chiedere i valori: la coppia, non il solo nome del campo. */
4177
+ readonly valueSet: _angular_core.InputSignal<PathValueSet | undefined>;
4178
+ readonly label: _angular_core.InputSignal<string>;
4179
+ readonly placeholder: _angular_core.InputSignal<string>;
4180
+ readonly disabled: _angular_core.InputSignal<boolean>;
4181
+ readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
4182
+ private readonly values;
4183
+ /** Cresce a ogni caricamento: scarta la risposta di un campo che non e' piu' quello scelto. */
4184
+ private sequence;
4185
+ constructor();
4186
+ readonly options: _angular_core.Signal<NamePickerOption[]>;
4187
+ private readonly fieldLabel;
4188
+ readonly emptyMessage: _angular_core.Signal<string>;
4189
+ readonly unknownMessage: _angular_core.Signal<string>;
4190
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldValuePickerComponent, never>;
4191
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldValuePickerComponent, "fb-field-value-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueSet": { "alias": "valueSet"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
4192
+ }
4193
+
4155
4194
  declare class FormulaEditorComponent {
4156
4195
  private readonly store;
4157
4196
  private readonly api;
@@ -4270,6 +4309,12 @@ declare class ValueEditorComponent {
4270
4309
  readonly dataType: _angular_core.InputSignal<string | undefined>;
4271
4310
  readonly objectType: _angular_core.InputSignal<string | undefined>;
4272
4311
  readonly isCollection: _angular_core.InputSignal<boolean | undefined>;
4312
+ /**
4313
+ * L'insieme chiuso della destinazione, quando e' un campo dello schema che lo dichiara: senza,
4314
+ * un valore fra quattro possibili si digita a memoria (§4.4, §6.4). Lo passa chi conosce entita'
4315
+ * e campo — i filtri, le assegnazioni di campo — perche' qui il tipo non basta a dedurlo.
4316
+ */
4317
+ readonly valueSet: _angular_core.InputSignal<PathValueSet | undefined>;
4273
4318
  readonly disabled: _angular_core.InputSignal<boolean>;
4274
4319
  /** Nasconde la modalita' formula dove il modello non la prevede. */
4275
4320
  readonly allowFormula: _angular_core.InputSignal<boolean>;
@@ -4294,6 +4339,11 @@ declare class ValueEditorComponent {
4294
4339
  * non lo avra': un'istanza nasce dal runtime e nel metadata si cita per riferimento (§4.7).
4295
4340
  */
4296
4341
  readonly literalAllowed: _angular_core.Signal<boolean>;
4342
+ /**
4343
+ * L'insieme chiuso c'e' e si puo' chiedere. `Enum` resta fuori di proposito: lì i valori sono del
4344
+ * **tipo** e li propone `fb-enum-value-picker` (§4.6), e `Boolean` ha già la sua casella.
4345
+ */
4346
+ readonly hasValueSet: _angular_core.Signal<boolean>;
4297
4347
  /** §4.7 — la destinazione e' un'istanza di classe: si passa per riferimento e basta. */
4298
4348
  readonly isStructureTarget: _angular_core.Signal<boolean>;
4299
4349
  readonly literalInputType: _angular_core.Signal<string>;
@@ -4309,6 +4359,12 @@ declare class ValueEditorComponent {
4309
4359
  setMode(mode: ValueMode): void;
4310
4360
  onReferenceChange(reference: string | undefined): void;
4311
4361
  onLiteralChange(raw: string): void;
4362
+ /**
4363
+ * Un valore scelto da un insieme chiuso non e' un tipo a parte: finisce nello stesso campo del
4364
+ * letterale, quindi passa dalla stessa conversione (interi in cultura invariante compresi).
4365
+ * Svuotare il picker toglie il valore invece di scrivere una stringa vuota.
4366
+ */
4367
+ onClosedValueChange(raw: string | undefined): void;
4312
4368
  /**
4313
4369
  * §4.2 — l'`enumValue` e' il **nome** del valore. Svuotare il picker toglie il valore invece di
4314
4370
  * scrivere una stringa vuota: un `enumValue: ''` sarebbe un campo valorizzato con niente.
@@ -4330,7 +4386,7 @@ declare class ValueEditorComponent {
4330
4386
  private emit;
4331
4387
  readonly dataTypeOptions: _angular_core.Signal<_esfaenza_flow_builder.FlowDataTypeEntry[]>;
4332
4388
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ValueEditorComponent, never>;
4333
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ValueEditorComponent, "fb-value-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
4389
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ValueEditorComponent, "fb-value-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "valueSet": { "alias": "valueSet"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
4334
4390
  }
4335
4391
 
4336
4392
  declare class ConditionEditorComponent {
@@ -4386,7 +4442,7 @@ declare class ConditionEditorComponent {
4386
4442
  */
4387
4443
  hasTypeMismatch(condition: FlowCondition): boolean;
4388
4444
  typeMismatchMessage(condition: FlowCondition): string;
4389
- readonly logicMode: _angular_core.Signal<"and" | "or" | "custom" | "formula">;
4445
+ readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
4390
4446
  readonly customLogic: _angular_core.Signal<string>;
4391
4447
  /** Feedback immediato sull'espressione: la verita' resta della validazione backend. */
4392
4448
  readonly customLogicError: _angular_core.Signal<string | null>;
@@ -4468,7 +4524,7 @@ declare class RecordFilterEditorComponent {
4468
4524
  * (§5.8, §13.10).
4469
4525
  */
4470
4526
  readonly emptyWarning: _angular_core.InputSignal<string | null>;
4471
- readonly emptyWarningSeverity: _angular_core.InputSignal<"warn" | "error">;
4527
+ readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
4472
4528
  readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
4473
4529
  /** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.8). */
4474
4530
  private readonly allFields;
@@ -4491,7 +4547,7 @@ declare class RecordFilterEditorComponent {
4491
4547
  * evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
4492
4548
  */
4493
4549
  readonly identifierNotFilterable: _angular_core.Signal<boolean>;
4494
- readonly logicMode: _angular_core.Signal<"and" | "or" | "custom" | "formula">;
4550
+ readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
4495
4551
  readonly customLogic: _angular_core.Signal<string>;
4496
4552
  readonly showEmptyWarning: _angular_core.Signal<boolean>;
4497
4553
  addFilter(): void;
@@ -4520,6 +4576,12 @@ declare class RecordFilterEditorComponent {
4520
4576
  * ammessi invece di farli digitare (§4.6).
4521
4577
  */
4522
4578
  fieldObjectType(filter: FlowRecordFilter): string | undefined;
4579
+ /**
4580
+ * L'insieme chiuso del campo, dove lo schema lo dichiara (`hasClosedValueSet`, §6.4): e' cio' che
4581
+ * fa comparire i valori ammessi al posto della casella di testo. Vale anche in fondo a un percorso
4582
+ * di relazione, e lì l'entita' non e' quella di partenza — la porta con se' il segmento risolto.
4583
+ */
4584
+ fieldValueSet(filter: FlowRecordFilter): PathValueSet | undefined;
4523
4585
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecordFilterEditorComponent, never>;
4524
4586
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RecordFilterEditorComponent, "fb-record-filter-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "fieldOptions": { "alias": "fieldOptions"; "required": false; "isSignal": true; }; "supportsLogic": { "alias": "supportsLogic"; "required": false; "isSignal": true; }; "supportsFormula": { "alias": "supportsFormula"; "required": false; "isSignal": true; }; "emptyWarning": { "alias": "emptyWarning"; "required": false; "isSignal": true; }; "emptyWarningSeverity": { "alias": "emptyWarningSeverity"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
4525
4587
  }
@@ -5811,5 +5873,5 @@ declare class SelectValueDirective implements AfterViewChecked {
5811
5873
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5812
5874
  }
5813
5875
 
5814
- 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_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, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, 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, buildClipboardPayload, canvasNodeId, checkConditionLogic, checkFlowName, choiceSetSourceOf, declaredChoiceSetSources, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, enumChoiceSetFieldType, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isUnknownEnumChoiceSetField, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, otherSourceFieldsOf, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
5815
- export type { ChoiceSetSource, FieldAssignmentHolder, FilterFieldOption, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, 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, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, 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, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, 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, StructureMemberUsage, ValueMode };
5876
+ 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_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, 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, buildClipboardPayload, canvasNodeId, checkConditionLogic, checkFlowName, choiceSetSourceOf, declaredChoiceSetSources, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, enumChoiceSetFieldType, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isUnknownEnumChoiceSetField, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, otherSourceFieldsOf, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
5877
+ export type { ChoiceSetSource, FieldAssignmentHolder, FilterFieldOption, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, 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, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, 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, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, 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,12 +1,12 @@
1
1
  {
2
2
  "name": "@esfaenza/flow-builder",
3
- "version": "20.3.24",
3
+ "version": "20.3.26",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^20.2.14",
6
- "@angular/common": "^20.3.24",
7
- "@angular/core": "^20.3.24",
6
+ "@angular/common": "^20.3.28",
7
+ "@angular/core": "^20.3.28",
8
8
  "@foblex/flow": ">=19.0.0",
9
- "dagre": "^0.8.5"
9
+ "dagre": "0.8.5"
10
10
  },
11
11
  "dependencies": {
12
12
  "tslib": "^2.3.0"
@@ -402,6 +402,102 @@ f-flow .fb-edge--goto .f-connection-path {
402
402
  line-height: 1;
403
403
  }
404
404
 
405
+ /**
406
+ * Il controllo segmentato: una scelta **esclusiva** fra poche voci, mostrata come un gruppo con una
407
+ * cornice sola invece che come bottoni sciolti. Lo usano le modalita' di un valore (§4.2: un solo
408
+ * campo valorizzato), la logica di condizioni e filtri e l'esito atteso di un operatore unario —
409
+ * cioe' controlli che nello stesso pannello si guardano, e che quindi devono essere uguali.
410
+ *
411
+ * Sta qui e non nei tre componenti perche' era già duplicato tre volte e i tre stili avevano
412
+ * cominciato a divergere. Vale l'avvertenza dei CSS con scope: queste regole sono globali, quindi
413
+ * un componente non deve ridefinirle — le variabili `--fb-*` sono la leva per ritemizzarle.
414
+ *
415
+ * `width: fit-content` con `max-width: 100%`: la cornice si stringe sul contenuto — nella dialog,
416
+ * larga il doppio, una barra da bordo a bordo sarebbe mezza vuota — ma nella colonna
417
+ * dell'inspector, dove le quattro voci di un valore non ci stanno in riga, va a capo invece di
418
+ * sfondare. `inline-flex` non servirebbe: dentro una colonna `flex` viene comunque blockificato.
419
+ */
420
+ .fb-value__modes,
421
+ .fb-filter__modes,
422
+ .fb-cond__modes,
423
+ .fb-cond__unary {
424
+ display: flex;
425
+ flex-wrap: wrap;
426
+ gap: 2px;
427
+ width: fit-content;
428
+ max-width: 100%;
429
+ padding: 2px;
430
+ border: 1px solid var(--fb-border-subtle, #eef0f4);
431
+ border-radius: var(--fb-radius-sm, 8px);
432
+ background: var(--fb-surface-sunken, #eef0f4);
433
+ }
434
+
435
+ .fb-value__mode,
436
+ .fb-filter__mode,
437
+ .fb-cond__mode {
438
+ padding: 3px 10px;
439
+ border: 0;
440
+ border-radius: var(--fb-radius-xs, 6px);
441
+ background: transparent;
442
+ color: var(--fb-text-muted, #6b7086);
443
+ font: inherit;
444
+ font-size: 11px;
445
+ font-weight: 500;
446
+ line-height: 1.5;
447
+ white-space: nowrap;
448
+ cursor: pointer;
449
+ transition: background 0.12s ease, color 0.12s ease, box-shadow 0.12s ease;
450
+ }
451
+
452
+ .fb-value__mode:hover:not(:disabled),
453
+ .fb-filter__mode:hover:not(:disabled),
454
+ .fb-cond__mode:hover:not(:disabled) {
455
+ /* Sulla superficie affossata del gruppo un grigio piu' scuro non si vedrebbe: si schiarisce. */
456
+ background: color-mix(in srgb, var(--fb-surface, #fff) 65%, transparent);
457
+ color: var(--fb-text, #1a1c23);
458
+ }
459
+
460
+ .fb-value__mode:focus-visible,
461
+ .fb-filter__mode:focus-visible,
462
+ .fb-cond__mode:focus-visible {
463
+ outline: 2px solid var(--fb-accent, #4f6ef7);
464
+ outline-offset: 1px;
465
+ }
466
+
467
+ /* La voce scelta sale sulla superficie: e' la differenza che si legge anche senza il colore. */
468
+ .fb-value__mode--active,
469
+ .fb-filter__mode--active,
470
+ .fb-cond__mode--active {
471
+ background: var(--fb-surface, #fff);
472
+ color: var(--fb-accent, #4f6ef7);
473
+ font-weight: 600;
474
+ box-shadow: var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));
475
+ }
476
+
477
+ .fb-value__mode:disabled,
478
+ .fb-filter__mode:disabled,
479
+ .fb-cond__mode:disabled {
480
+ opacity: 0.5;
481
+ cursor: not-allowed;
482
+ }
483
+
484
+ /**
485
+ * «Nessun valore» non e' una modalita' alla pari delle altre: e' l'uscita, e non prende mai lo
486
+ * stato attivo — quando lo sarebbe, il bottone non c'e'.
487
+ */
488
+ .fb-value__mode--clear {
489
+ margin-left: 4px;
490
+ padding: 3px 7px;
491
+ color: var(--fb-text-subtle, #98a2b3);
492
+ font-size: 12px;
493
+ line-height: 1.25;
494
+ }
495
+
496
+ .fb-value__mode--clear:hover:not(:disabled) {
497
+ background: color-mix(in srgb, var(--fb-error, #dc2626) 12%, transparent);
498
+ color: var(--fb-error, #dc2626);
499
+ }
500
+
405
501
  .fb-section {
406
502
  margin: 0 0 14px;
407
503
  padding: 0;