@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/README.md +14 -1
- package/fesm2022/esfaenza-flow-builder.mjs +176 -18
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +69 -7
- package/package.json +4 -4
- package/styles/flow-builder.css +96 -0
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<"
|
|
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" | "
|
|
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<"
|
|
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" | "
|
|
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.
|
|
3
|
+
"version": "20.3.26",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "^20.2.14",
|
|
6
|
-
"@angular/common": "^20.3.
|
|
7
|
-
"@angular/core": "^20.3.
|
|
6
|
+
"@angular/common": "^20.3.28",
|
|
7
|
+
"@angular/core": "^20.3.28",
|
|
8
8
|
"@foblex/flow": ">=19.0.0",
|
|
9
|
-
"dagre": "
|
|
9
|
+
"dagre": "0.8.5"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"tslib": "^2.3.0"
|
package/styles/flow-builder.css
CHANGED
|
@@ -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;
|