@esfaenza/flow-builder 20.3.23 → 20.3.25
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 +30 -4
- package/fesm2022/esfaenza-flow-builder.mjs +357 -24
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +194 -9
- package/package.json +1 -1
- package/styles/flow-builder.css +96 -0
package/index.d.ts
CHANGED
|
@@ -152,17 +152,34 @@ interface FlowChoice {
|
|
|
152
152
|
choiceText?: string;
|
|
153
153
|
value?: FlowValue;
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* §5.2 — le opzioni generate. Le sorgenti sono **tre e si escludono a vicenda**: una collection
|
|
157
|
+
* già nel flow, una query su un'entita', i valori di un tipo di enumerazione. Dichiararne due
|
|
158
|
+
* insieme non blocca l'attivazione ma e' `CHOICE_SET_SOURCE_AMBIGUOUS`, e quale il runtime usi
|
|
159
|
+
* non e' una cosa da lasciare decidere al caso: `core/enum-choice-set.util.ts` le riconosce.
|
|
160
|
+
*/
|
|
155
161
|
interface FlowDynamicChoiceSet {
|
|
156
162
|
name?: string;
|
|
157
163
|
description?: string;
|
|
158
164
|
dataType?: FlowDataType;
|
|
165
|
+
/** Sorgente: una collection del flow, tipicamente il risultato di un Get Records. */
|
|
166
|
+
collectionReference?: string;
|
|
167
|
+
/** Sorgente: l'entita' da interrogare. */
|
|
159
168
|
object?: string;
|
|
169
|
+
/**
|
|
170
|
+
* Sorgente: il tipo di enumerazione, lo stesso nome che una risorsa `Enum` scrive in
|
|
171
|
+
* `objectType`. I campi citabili non sono campi di un'entita' ma le tre proprieta' di un
|
|
172
|
+
* valore di enum — `Name`, `Label`, `NumericValue` — e le porta `enumChoiceSetFields` (§7.1).
|
|
173
|
+
*/
|
|
174
|
+
enumType?: string;
|
|
175
|
+
/** Assente: l'etichetta e' `Label` su un enum, e va dichiarato altrove. */
|
|
160
176
|
displayField?: string;
|
|
177
|
+
/** Assente: il valore memorizzato e' `Name` su un enum, e va dichiarato altrove. */
|
|
161
178
|
valueField?: string;
|
|
162
179
|
sortField?: string;
|
|
163
180
|
sortOrder?: FlowSortOrder;
|
|
164
181
|
limit?: number;
|
|
165
|
-
/** Sempre in AND: nessun `filterLogic` qui (§4.4). */
|
|
182
|
+
/** Sempre in AND: nessun `filterLogic` qui (§4.4). Su un enum sono valutati in memoria. */
|
|
166
183
|
filters?: FlowRecordFilter[];
|
|
167
184
|
}
|
|
168
185
|
interface FlowStage {
|
|
@@ -837,6 +854,12 @@ interface FlowDictionaries {
|
|
|
837
854
|
regionContainerTypes?: FlowDictionaryEntry[];
|
|
838
855
|
/** §5.2 — `UseStoredValues` | `ResetValues` (`inputsOnNextNavToAssocScrn`). */
|
|
839
856
|
screenFieldInputsRevisited?: FlowDictionaryEntry[];
|
|
857
|
+
/**
|
|
858
|
+
* §5.2 — le proprieta' citabili di un valore di enum in un dynamic choice set con `enumType`:
|
|
859
|
+
* `Name`, `Label`, `NumericValue`. Non sono campi di un'entita', quindi l'elenco arriva da qui
|
|
860
|
+
* e non da `GET /catalog/objects/{name}/fields`.
|
|
861
|
+
*/
|
|
862
|
+
enumChoiceSetFields?: FlowDictionaryEntry[];
|
|
840
863
|
}
|
|
841
864
|
interface FlowObjectSummary {
|
|
842
865
|
name: string;
|
|
@@ -2171,6 +2194,48 @@ declare function moveField(screen: FlowDynamicScreen, from: FlowScreenFieldPath,
|
|
|
2171
2194
|
/** Duplica un campo accanto all'originale, rinominandolo: i nomi restano unici (§3.3). */
|
|
2172
2195
|
declare function duplicateField(screen: FlowDynamicScreen, path: FlowScreenFieldPath, newName: string): FlowScreenFieldPath | undefined;
|
|
2173
2196
|
|
|
2197
|
+
/**
|
|
2198
|
+
* I dynamic choice set — FRONTEND.md §5.2.
|
|
2199
|
+
*
|
|
2200
|
+
* Due cose che il resto del codice non deve indovinare.
|
|
2201
|
+
*
|
|
2202
|
+
* La prima: le sorgenti sono **tre e si escludono a vicenda** (`collectionReference`, `object`,
|
|
2203
|
+
* `enumType`). Dichiararne due insieme non blocca l'attivazione ma e' `CHOICE_SET_SOURCE_AMBIGUOUS`:
|
|
2204
|
+
* l'editor deve saperlo dire, e per dirlo serve un solo posto che sappia quali campi sono una
|
|
2205
|
+
* sorgente — aggiungerne una quarta domani e' una riga qui, non una condizione in tre template.
|
|
2206
|
+
*
|
|
2207
|
+
* La seconda: su un choice set da enum i **campi citabili non sono campi di un'entita'**. Non c'e'
|
|
2208
|
+
* nessuna entita' da interrogare: sono le tre proprieta' di un valore di enum, e valgono per
|
|
2209
|
+
* `displayField`, `valueField`, `sortField` e per il campo di un filtro. Le etichette da mostrare
|
|
2210
|
+
* arrivano dal dizionario (`enumChoiceSetFields`, §7.1); il **tipo** di ciascuna no, e senza il tipo
|
|
2211
|
+
* l'editor del valore di un filtro proporrebbe una casella di testo dove il contratto scrive un
|
|
2212
|
+
* numero (`NumericValue`, §5.2). Per questo la mappa sta qui e non nel dizionario.
|
|
2213
|
+
*/
|
|
2214
|
+
|
|
2215
|
+
/** La sorgente delle opzioni, o `null` se non ne e' dichiarata nessuna. */
|
|
2216
|
+
type ChoiceSetSource = 'collection' | 'object' | 'enum';
|
|
2217
|
+
/** Le sorgenti **dichiarate**: piu' di una e' `CHOICE_SET_SOURCE_AMBIGUOUS`. */
|
|
2218
|
+
declare function declaredChoiceSetSources(set: FlowDynamicChoiceSet): ChoiceSetSource[];
|
|
2219
|
+
/** La prima sorgente dichiarata, che e' anche quella su cui il form si apre. */
|
|
2220
|
+
declare function choiceSetSourceOf(set: FlowDynamicChoiceSet): ChoiceSetSource | null;
|
|
2221
|
+
/** I campi da cancellare passando a `source`: due sorgenti insieme sono un avviso. */
|
|
2222
|
+
declare function otherSourceFieldsOf(source: ChoiceSetSource): (keyof FlowDynamicChoiceSet)[];
|
|
2223
|
+
/**
|
|
2224
|
+
* §5.2 — le proprieta' di un valore di enum, col tipo con cui si confrontano in un filtro.
|
|
2225
|
+
* Qualunque altro nome e' `FIELD_UNKNOWN`.
|
|
2226
|
+
*/
|
|
2227
|
+
declare const ENUM_CHOICE_SET_FIELDS: {
|
|
2228
|
+
readonly name: string;
|
|
2229
|
+
readonly label: string;
|
|
2230
|
+
readonly dataType: FlowDataType;
|
|
2231
|
+
}[];
|
|
2232
|
+
/** Senza `displayField` l'etichetta e' `Label`, senza `valueField` il valore memorizzato e' `Name`. */
|
|
2233
|
+
declare const ENUM_CHOICE_SET_DEFAULT_DISPLAY_FIELD = "Label";
|
|
2234
|
+
declare const ENUM_CHOICE_SET_DEFAULT_VALUE_FIELD = "Name";
|
|
2235
|
+
declare function enumChoiceSetFieldType(name: string | undefined | null): FlowDataType | undefined;
|
|
2236
|
+
/** Il nome non e' una delle tre proprieta': vuoto non si accusa, e' semplicemente il default. */
|
|
2237
|
+
declare function isUnknownEnumChoiceSetField(name: string | undefined | null): boolean;
|
|
2238
|
+
|
|
2174
2239
|
/**
|
|
2175
2240
|
* La gravita' di un rilievo, ridotta a tre secchi — FRONTEND.md §7.
|
|
2176
2241
|
*
|
|
@@ -2247,6 +2312,12 @@ declare class FlowDictionaryStore {
|
|
|
2247
2312
|
readonly conditionLogicModes: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2248
2313
|
readonly regionContainerTypes: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2249
2314
|
readonly screenFieldInputsRevisited: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2315
|
+
/**
|
|
2316
|
+
* §5.2 — le proprieta' citabili in un choice set da enum. Elenco vuoto: il dizionario non le
|
|
2317
|
+
* dichiara, e il form ripiega sui tre nomi del contratto invece di lasciare la tendina vuota —
|
|
2318
|
+
* qui il contratto li nomina uno per uno, quindi non e' cablare un dizionario aperto.
|
|
2319
|
+
*/
|
|
2320
|
+
readonly enumChoiceSetFields: _angular_core.Signal<FlowDictionaryEntry[]>;
|
|
2250
2321
|
/** §5.2 — i tipi di campo di uno screen dinamico, con i flag che guidano il form. */
|
|
2251
2322
|
readonly screenFieldTypes: _angular_core.Signal<FlowScreenFieldTypeEntry[]>;
|
|
2252
2323
|
/**
|
|
@@ -2465,6 +2536,18 @@ interface PathContainer {
|
|
|
2465
2536
|
/** Nome dell'entita' o della classe. */
|
|
2466
2537
|
name: string;
|
|
2467
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
|
+
}
|
|
2468
2551
|
/**
|
|
2469
2552
|
* Un segmento proponibile in una tappa — campo o membro ridotti al minimo comune, perche' chi
|
|
2470
2553
|
* naviga non deve sapere quale dei due sta guardando.
|
|
@@ -2480,6 +2563,12 @@ interface PathEntry {
|
|
|
2480
2563
|
isWritable: boolean;
|
|
2481
2564
|
/** Dove il percorso continua dopo questo segmento; assente = qui finisce cio' che si sa. */
|
|
2482
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;
|
|
2483
2572
|
}
|
|
2484
2573
|
/**
|
|
2485
2574
|
* Esito della descrizione di una tappa. Sono quattro come per le classi (§4.7.1) e vanno tenuti
|
|
@@ -3920,7 +4009,7 @@ declare class NamePickerComponent {
|
|
|
3920
4009
|
* **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
|
|
3921
4010
|
* senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
|
|
3922
4011
|
*/
|
|
3923
|
-
readonly unknownSeverity: _angular_core.InputSignal<"
|
|
4012
|
+
readonly unknownSeverity: _angular_core.InputSignal<"warn" | "error">;
|
|
3924
4013
|
/**
|
|
3925
4014
|
* Nomi che **esistono** ma non sono utilizzabili qui. Il caso vero e' il catalogo dei form,
|
|
3926
4015
|
* dove una schermata intera e un componente vivono nello stesso elenco e si distinguono per
|
|
@@ -4081,6 +4170,27 @@ declare class EnumValuePickerComponent {
|
|
|
4081
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>;
|
|
4082
4171
|
}
|
|
4083
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
|
+
|
|
4084
4194
|
declare class FormulaEditorComponent {
|
|
4085
4195
|
private readonly store;
|
|
4086
4196
|
private readonly api;
|
|
@@ -4199,6 +4309,12 @@ declare class ValueEditorComponent {
|
|
|
4199
4309
|
readonly dataType: _angular_core.InputSignal<string | undefined>;
|
|
4200
4310
|
readonly objectType: _angular_core.InputSignal<string | undefined>;
|
|
4201
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>;
|
|
4202
4318
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
4203
4319
|
/** Nasconde la modalita' formula dove il modello non la prevede. */
|
|
4204
4320
|
readonly allowFormula: _angular_core.InputSignal<boolean>;
|
|
@@ -4223,6 +4339,11 @@ declare class ValueEditorComponent {
|
|
|
4223
4339
|
* non lo avra': un'istanza nasce dal runtime e nel metadata si cita per riferimento (§4.7).
|
|
4224
4340
|
*/
|
|
4225
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>;
|
|
4226
4347
|
/** §4.7 — la destinazione e' un'istanza di classe: si passa per riferimento e basta. */
|
|
4227
4348
|
readonly isStructureTarget: _angular_core.Signal<boolean>;
|
|
4228
4349
|
readonly literalInputType: _angular_core.Signal<string>;
|
|
@@ -4238,6 +4359,12 @@ declare class ValueEditorComponent {
|
|
|
4238
4359
|
setMode(mode: ValueMode): void;
|
|
4239
4360
|
onReferenceChange(reference: string | undefined): void;
|
|
4240
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;
|
|
4241
4368
|
/**
|
|
4242
4369
|
* §4.2 — l'`enumValue` e' il **nome** del valore. Svuotare il picker toglie il valore invece di
|
|
4243
4370
|
* scrivere una stringa vuota: un `enumValue: ''` sarebbe un campo valorizzato con niente.
|
|
@@ -4259,7 +4386,7 @@ declare class ValueEditorComponent {
|
|
|
4259
4386
|
private emit;
|
|
4260
4387
|
readonly dataTypeOptions: _angular_core.Signal<_esfaenza_flow_builder.FlowDataTypeEntry[]>;
|
|
4261
4388
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ValueEditorComponent, never>;
|
|
4262
|
-
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>;
|
|
4263
4390
|
}
|
|
4264
4391
|
|
|
4265
4392
|
declare class ConditionEditorComponent {
|
|
@@ -4315,7 +4442,7 @@ declare class ConditionEditorComponent {
|
|
|
4315
4442
|
*/
|
|
4316
4443
|
hasTypeMismatch(condition: FlowCondition): boolean;
|
|
4317
4444
|
typeMismatchMessage(condition: FlowCondition): string;
|
|
4318
|
-
readonly logicMode: _angular_core.Signal<"
|
|
4445
|
+
readonly logicMode: _angular_core.Signal<"formula" | "and" | "or" | "custom">;
|
|
4319
4446
|
readonly customLogic: _angular_core.Signal<string>;
|
|
4320
4447
|
/** Feedback immediato sull'espressione: la verita' resta della validazione backend. */
|
|
4321
4448
|
readonly customLogicError: _angular_core.Signal<string | null>;
|
|
@@ -4359,6 +4486,15 @@ declare class ConditionEditorComponent {
|
|
|
4359
4486
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConditionEditorComponent, "fb-condition-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; "allowLogic": { "alias": "allowLogic"; "required": false; "isSignal": true; }; "issuePath": { "alias": "issuePath"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
|
|
4360
4487
|
}
|
|
4361
4488
|
|
|
4489
|
+
/**
|
|
4490
|
+
* Un campo filtrabile che **non** viene da un catalogo di campi: nome, etichetta e tipo con cui
|
|
4491
|
+
* confrontarlo. Oggi lo usano i choice set da enum (§5.2).
|
|
4492
|
+
*/
|
|
4493
|
+
interface FilterFieldOption {
|
|
4494
|
+
value: string;
|
|
4495
|
+
label: string;
|
|
4496
|
+
dataType?: FlowDataType;
|
|
4497
|
+
}
|
|
4362
4498
|
/** Il contenitore dei filtri, qualunque elemento sia. */
|
|
4363
4499
|
interface FilterHolder {
|
|
4364
4500
|
filters?: FlowRecordFilter[];
|
|
@@ -4373,6 +4509,11 @@ declare class RecordFilterEditorComponent {
|
|
|
4373
4509
|
readonly title: _angular_core.InputSignal<string>;
|
|
4374
4510
|
/** L'uso con cui chiedere i campi: `filterable` per i filtri, `updateable` altrove. */
|
|
4375
4511
|
readonly usage: _angular_core.InputSignal<FlowFieldUsage>;
|
|
4512
|
+
/**
|
|
4513
|
+
* Elenco chiuso di campi, al posto del catalogo dell'entita'. Valorizzato, `object` non serve:
|
|
4514
|
+
* non c'e' nessuna entita' da interrogare (§5.2, choice set da `enumType`).
|
|
4515
|
+
*/
|
|
4516
|
+
readonly fieldOptions: _angular_core.InputSignal<FilterFieldOption[]>;
|
|
4376
4517
|
/** `false` dove il modello non ha `filterLogic`: i filtri sono sempre in AND (§4.4). */
|
|
4377
4518
|
readonly supportsLogic: _angular_core.InputSignal<boolean>;
|
|
4378
4519
|
/** `true` dove esiste `filterFormula` come alternativa ai filtri. */
|
|
@@ -4383,7 +4524,7 @@ declare class RecordFilterEditorComponent {
|
|
|
4383
4524
|
* (§5.8, §13.10).
|
|
4384
4525
|
*/
|
|
4385
4526
|
readonly emptyWarning: _angular_core.InputSignal<string | null>;
|
|
4386
|
-
readonly emptyWarningSeverity: _angular_core.InputSignal<"
|
|
4527
|
+
readonly emptyWarningSeverity: _angular_core.InputSignal<"warn" | "error">;
|
|
4387
4528
|
readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
|
|
4388
4529
|
/** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.8). */
|
|
4389
4530
|
private readonly allFields;
|
|
@@ -4406,7 +4547,7 @@ declare class RecordFilterEditorComponent {
|
|
|
4406
4547
|
* evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
|
|
4407
4548
|
*/
|
|
4408
4549
|
readonly identifierNotFilterable: _angular_core.Signal<boolean>;
|
|
4409
|
-
readonly logicMode: _angular_core.Signal<"
|
|
4550
|
+
readonly logicMode: _angular_core.Signal<"formula" | "and" | "or" | "custom">;
|
|
4410
4551
|
readonly customLogic: _angular_core.Signal<string>;
|
|
4411
4552
|
readonly showEmptyWarning: _angular_core.Signal<boolean>;
|
|
4412
4553
|
addFilter(): void;
|
|
@@ -4425,13 +4566,24 @@ declare class RecordFilterEditorComponent {
|
|
|
4425
4566
|
* catalogo resta interrogato qui, e non solo dentro il picker.
|
|
4426
4567
|
*/
|
|
4427
4568
|
fieldDataType(filter: FlowRecordFilter): FlowDataType | undefined;
|
|
4569
|
+
/**
|
|
4570
|
+
* Fuori dall'elenco chiuso: e' `FIELD_UNKNOWN`, e va detto qui perche' il `<select>` mostrerebbe
|
|
4571
|
+
* solo una casella vuota — cioe' un documento scritto altrove sembrerebbe senza campo.
|
|
4572
|
+
*/
|
|
4573
|
+
unknownFixedField(filter: FlowRecordFilter): boolean;
|
|
4428
4574
|
/**
|
|
4429
4575
|
* Il tipo concreto del campo: su un campo `Enum` e' cio' che permette di proporre i valori
|
|
4430
4576
|
* ammessi invece di farli digitare (§4.6).
|
|
4431
4577
|
*/
|
|
4432
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;
|
|
4433
4585
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecordFilterEditorComponent, never>;
|
|
4434
|
-
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; }; "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>;
|
|
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>;
|
|
4435
4587
|
}
|
|
4436
4588
|
|
|
4437
4589
|
/** Contenitore generico: gli input hanno `value`, gli output `assignToReference`. */
|
|
@@ -5230,6 +5382,39 @@ declare class ResourcePanelComponent {
|
|
|
5230
5382
|
* e la mutazione va dentro `updateResource` perche' e' lì che il documento viene rimpiazzato.
|
|
5231
5383
|
*/
|
|
5232
5384
|
onFiltersChanged(reference: FlowResourceRef, mutate: (holder: FilterHolder) => void): void;
|
|
5385
|
+
/** La sorgente scelta per un set che ancora non ne dichiara nessuna. */
|
|
5386
|
+
private readonly pendingSource;
|
|
5387
|
+
/**
|
|
5388
|
+
* La sorgente dichiarata vince sempre: e' cio' che c'e' nel documento. Finche' non c'e' niente
|
|
5389
|
+
* conta la scelta fatta nel pannello, e in mancanza si apre sulla query — la sorgente storica.
|
|
5390
|
+
*/
|
|
5391
|
+
choiceSetSource(reference: FlowResourceRef): ChoiceSetSource;
|
|
5392
|
+
/**
|
|
5393
|
+
* Cambiare sorgente cancella le altre — dichiararne due e' `CHOICE_SET_SOURCE_AMBIGUOUS` — e
|
|
5394
|
+
* anche i **campi citati**: `Label` non e' un campo di un'entita' e `Ragione_Sociale` non e' una
|
|
5395
|
+
* proprieta' di un valore di enum, quindi lasciarli lì trasformerebbe un cambio di sorgente in
|
|
5396
|
+
* tre `FIELD_UNKNOWN` che l'utente non ha scritto.
|
|
5397
|
+
*/
|
|
5398
|
+
setChoiceSetSource(reference: FlowResourceRef, source: ChoiceSetSource): void;
|
|
5399
|
+
/** Su un choice set da enum il tipo e' `enumType`: il campo generico sarebbe un doppione. */
|
|
5400
|
+
hidesObjectType(reference: FlowResourceRef): boolean;
|
|
5401
|
+
isChoiceSetSource(reference: FlowResourceRef, source: ChoiceSetSource): boolean;
|
|
5402
|
+
/** Piu' di una sorgente nel documento: il runtime ne usa una sola (§5.2). */
|
|
5403
|
+
ambiguousChoiceSetSource(reference: FlowResourceRef): boolean;
|
|
5404
|
+
/**
|
|
5405
|
+
* §5.2 — i campi citabili di un choice set da enum. Le etichette le dice il dizionario; il
|
|
5406
|
+
* **tipo** no, e senza tipo il valore di un filtro su `NumericValue` sarebbe una casella di testo.
|
|
5407
|
+
*/
|
|
5408
|
+
readonly enumChoiceSetFields: _angular_core.Signal<FilterFieldOption[]>;
|
|
5409
|
+
/** Fuori dalle tre proprieta' di un valore di enum: `FIELD_UNKNOWN`. */
|
|
5410
|
+
unknownEnumChoiceSetField(reference: FlowResourceRef, field: string): boolean;
|
|
5411
|
+
/**
|
|
5412
|
+
* §5.2 — qui l'elenco dei tipi e' **autorevole** quando non e' vuoto: un `enumType` che il
|
|
5413
|
+
* catalogo non conosce e' un errore, non l'avviso che si darebbe su un catalogo di campi.
|
|
5414
|
+
*/
|
|
5415
|
+
unknownEnumType(reference: FlowResourceRef): boolean;
|
|
5416
|
+
readonly defaultDisplayField = "Label";
|
|
5417
|
+
readonly defaultValueField = "Name";
|
|
5233
5418
|
setValue(reference: FlowResourceRef, value: FlowValue | undefined): void;
|
|
5234
5419
|
setDataType(reference: FlowResourceRef, dataType: string): void;
|
|
5235
5420
|
requiresObjectType(reference: FlowResourceRef): boolean;
|
|
@@ -5688,5 +5873,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
5688
5873
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5689
5874
|
}
|
|
5690
5875
|
|
|
5691
|
-
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, 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, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, 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 };
|
|
5692
|
-
export type { FieldAssignmentHolder, 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
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;
|