@esfaenza/flow-builder 20.3.1 → 20.3.3
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 +37 -0
- package/fesm2022/esfaenza-flow-builder.mjs +683 -170
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +230 -37
- package/package.json +1 -1
- package/styles/flow-builder.css +13 -0
package/index.d.ts
CHANGED
|
@@ -1294,10 +1294,45 @@ declare const TYPES_WITH_AUTOMATIC_OUTPUT: ReadonlySet<string>;
|
|
|
1294
1294
|
*/
|
|
1295
1295
|
declare const FLOW_ELEMENT_ICONS: Record<string, string>;
|
|
1296
1296
|
/**
|
|
1297
|
-
* Il glifo
|
|
1298
|
-
*
|
|
1297
|
+
* Il glifo delle varianti (§5.5): due voci di palette dello stesso tipo con lo stesso simbolo
|
|
1298
|
+
* si distinguerebbero solo dall'etichetta, e sulla palette il simbolo e' la prima cosa che si
|
|
1299
|
+
* guarda. La chiave e' `tipo:variante`.
|
|
1299
1300
|
*/
|
|
1300
|
-
declare
|
|
1301
|
+
declare const FLOW_ELEMENT_VARIANT_ICONS: Record<string, string>;
|
|
1302
|
+
/**
|
|
1303
|
+
* Il glifo del tipo, o della sua variante quando c'e'. Per un tipo che il dizionario del
|
|
1304
|
+
* backend aggiunge e questa mappa non conosce, l'iniziale dell'etichetta e' un segnaposto
|
|
1305
|
+
* migliore di un simbolo generico.
|
|
1306
|
+
*/
|
|
1307
|
+
declare function elementIcon(type: string, label?: string, variant?: string): string;
|
|
1308
|
+
|
|
1309
|
+
/**
|
|
1310
|
+
* I tipi che sulla palette valgono per **piu' di una voce** — FRONTEND.md §5.5.
|
|
1311
|
+
*
|
|
1312
|
+
* Il Collection Processor e' un solo tipo di node con un discriminatore
|
|
1313
|
+
* (`collectionProcessorType`: `Sort` o `Filter`), e i campi rilevanti cambiano con esso: un
|
|
1314
|
+
* `Sort` vuole `sortOptions`, un `Filter` vuole condizioni. Sono due gesti diversi, e una
|
|
1315
|
+
* voce sola («ordina o filtra») costringe a scegliere dopo, dentro il form.
|
|
1316
|
+
*
|
|
1317
|
+
* Qui sta **solo** la mappa tipo → campo del discriminatore: i valori ammessi restano nel
|
|
1318
|
+
* dizionario del backend (`collectionProcessorTypes`), come per ogni altro enum (§6.4). Senza
|
|
1319
|
+
* quel dizionario il tipo torna a essere una voce sola, che e' il comportamento giusto quando
|
|
1320
|
+
* non si sa quali varianti esistano.
|
|
1321
|
+
*
|
|
1322
|
+
* Se un tipo nuovo arrivasse con lo stesso schema — un node con un discriminatore che ne
|
|
1323
|
+
* cambia i campi — si aggiunge una riga qui e la palette si divide da se'.
|
|
1324
|
+
*/
|
|
1325
|
+
/** Tipo di elemento → campo del node che porta la variante. */
|
|
1326
|
+
declare const FLOW_ELEMENT_VARIANT_FIELDS: Record<string, string>;
|
|
1327
|
+
/** Il campo del discriminatore, se il tipo ne ha uno. */
|
|
1328
|
+
declare function variantFieldOf(type: string): string | undefined;
|
|
1329
|
+
/** La variante di un node già scritto, letta dal suo discriminatore. */
|
|
1330
|
+
declare function variantOf(type: string, node: Record<string, unknown>): string | undefined;
|
|
1331
|
+
/**
|
|
1332
|
+
* I campi da scrivere su un node appena creato dalla variante scelta. Vuoto per i tipi senza
|
|
1333
|
+
* varianti: chi crea l'elemento non deve sapere quali sono.
|
|
1334
|
+
*/
|
|
1335
|
+
declare function variantPresetOf(type: string, variant: string | undefined): Record<string, unknown>;
|
|
1301
1336
|
|
|
1302
1337
|
/**
|
|
1303
1338
|
* Nomi — FRONTEND.md §3.3, §13.5.
|
|
@@ -1634,6 +1669,15 @@ declare class FlowDictionaryStore {
|
|
|
1634
1669
|
/** Le categorie della palette, nell'ordine di prima apparizione nel dizionario. */
|
|
1635
1670
|
readonly paletteCategories: _angular_core.Signal<string[]>;
|
|
1636
1671
|
elementType(value: string): FlowElementTypeEntry | undefined;
|
|
1672
|
+
/**
|
|
1673
|
+
* Le varianti di un tipo, cioe' i valori del suo discriminatore (§5.5). L'unico oggi e' il
|
|
1674
|
+
* Collection Processor. Elenco vuoto = tipo senza varianti, **oppure** dizionario non
|
|
1675
|
+
* disponibile: in entrambi i casi la palette mostra una voce sola, che e' l'unica cosa
|
|
1676
|
+
* onesta da fare quando non si sa quali varianti esistano.
|
|
1677
|
+
*/
|
|
1678
|
+
variantsOf(type: string): FlowDictionaryEntry[];
|
|
1679
|
+
/** L'etichetta di una variante, con fallback sul valore grezzo. */
|
|
1680
|
+
variantLabelOf(type: string, variant: string | undefined): string;
|
|
1637
1681
|
/** La collection in cui scrivere un node: `metadataProperty`, con fallback locale (§3.2). */
|
|
1638
1682
|
collectionOf(type: string): FlowNodeCollection | undefined;
|
|
1639
1683
|
/** Etichetta di un tipo, con fallback: un tipo sconosciuto mostra il proprio `value`. */
|
|
@@ -2018,6 +2062,8 @@ declare class FlowCanvasComponent {
|
|
|
2018
2062
|
/** Rilascio di un elemento dalla palette: tipo + punto nel sistema del canvas. */
|
|
2019
2063
|
readonly elementDropped: _angular_core.OutputEmitterRef<{
|
|
2020
2064
|
type: FlowElementType;
|
|
2065
|
+
/** La variante scelta sulla palette, dove il tipo ne ha (§5.5). */
|
|
2066
|
+
variant?: string;
|
|
2021
2067
|
x: number;
|
|
2022
2068
|
y: number;
|
|
2023
2069
|
}>;
|
|
@@ -2068,7 +2114,11 @@ declare class FlowCanvasComponent {
|
|
|
2068
2114
|
onDeleteSelected(event: {
|
|
2069
2115
|
nodeIds: string[];
|
|
2070
2116
|
}): void;
|
|
2071
|
-
/**
|
|
2117
|
+
/**
|
|
2118
|
+
* Rilascio di un elemento trascinato dalla palette. Il dato e' `{type, variant}`, ma si
|
|
2119
|
+
* accetta ancora la stringa nuda: un ospite che monta il canvas con una palette propria
|
|
2120
|
+
* potrebbe passare il solo tipo.
|
|
2121
|
+
*/
|
|
2072
2122
|
onCreateNode(event: {
|
|
2073
2123
|
data: unknown;
|
|
2074
2124
|
externalItemRect: {
|
|
@@ -2094,9 +2144,27 @@ declare class FlowCanvasComponent {
|
|
|
2094
2144
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowCanvasComponent, "fb-flow-canvas", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeOpened": "nodeOpened"; "nodeRemoveRequested": "nodeRemoveRequested"; "nodeDuplicateRequested": "nodeDuplicateRequested"; "elementDropped": "elementDropped"; }, never, never, true, never>;
|
|
2095
2145
|
}
|
|
2096
2146
|
|
|
2147
|
+
/** Il gesto scelto sulla palette: un tipo e, dove esiste, la sua variante (§5.5). */
|
|
2148
|
+
interface FlowPalettePick {
|
|
2149
|
+
type: FlowElementType;
|
|
2150
|
+
variant?: string;
|
|
2151
|
+
}
|
|
2152
|
+
/**
|
|
2153
|
+
* Una voce della palette. Non coincide con una voce del dizionario: un tipo con varianti ne
|
|
2154
|
+
* produce una per variante, perche' «ordina» e «filtra» sono due gesti diversi anche se il
|
|
2155
|
+
* modello li scrive nello stesso node.
|
|
2156
|
+
*/
|
|
2157
|
+
interface PaletteItem {
|
|
2158
|
+
/** Chiave stabile della voce: serve al `track` e all'id del trascinamento. */
|
|
2159
|
+
key: string;
|
|
2160
|
+
entry: FlowElementTypeEntry;
|
|
2161
|
+
variant?: string;
|
|
2162
|
+
label: string;
|
|
2163
|
+
data: FlowPalettePick;
|
|
2164
|
+
}
|
|
2097
2165
|
interface PaletteGroup {
|
|
2098
2166
|
category: string;
|
|
2099
|
-
|
|
2167
|
+
items: PaletteItem[];
|
|
2100
2168
|
}
|
|
2101
2169
|
declare class ElementPaletteComponent {
|
|
2102
2170
|
private readonly dictionaries;
|
|
@@ -2106,23 +2174,29 @@ declare class ElementPaletteComponent {
|
|
|
2106
2174
|
* prima che l'utente lo scopra dal pannello dei problemi.
|
|
2107
2175
|
*/
|
|
2108
2176
|
readonly processType: _angular_core.InputSignal<string | undefined>;
|
|
2109
|
-
readonly elementPicked: _angular_core.OutputEmitterRef<
|
|
2177
|
+
readonly elementPicked: _angular_core.OutputEmitterRef<FlowPalettePick>;
|
|
2110
2178
|
private readonly filter;
|
|
2179
|
+
/** Le voci, con i tipi a varianti già divisi: e' l'elenco che l'utente vede. */
|
|
2180
|
+
private readonly items;
|
|
2111
2181
|
readonly groups: _angular_core.Signal<PaletteGroup[]>;
|
|
2112
2182
|
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
2113
2183
|
onFilter(value: string): void;
|
|
2114
|
-
pick(
|
|
2184
|
+
pick(item: PaletteItem): void;
|
|
2115
2185
|
/** Uno screen in un flow che non mostra nulla: si segnala, non si nasconde (§3.1). */
|
|
2116
|
-
isIncompatible(
|
|
2117
|
-
|
|
2186
|
+
isIncompatible(item: PaletteItem): boolean;
|
|
2187
|
+
/**
|
|
2188
|
+
* Il testo del tooltip. Su una voce che nasce da una variante ci va anche il nome del tipo:
|
|
2189
|
+
* e' l'unico posto in cui si vede che «ordina» e «filtra» sono lo stesso elemento.
|
|
2190
|
+
*/
|
|
2191
|
+
hintOf(item: PaletteItem): string;
|
|
2118
2192
|
/** Lo stesso glifo che l'elemento avra' sul canvas, così il trascinamento e' prevedibile. */
|
|
2119
|
-
iconOf(
|
|
2193
|
+
iconOf(item: PaletteItem): string;
|
|
2120
2194
|
/**
|
|
2121
2195
|
* L'etichetta del ramo di fault, presa dalla mappa delle uscite invece di scrivere «ramo di
|
|
2122
2196
|
* errore» per tutti: su uno stage di orchestrazione quel ramo **non** e' un guasto, e' lo step
|
|
2123
2197
|
* rifiutato (§5.13). Un tipo nuovo eredita l'etichetta giusta senza toccare la palette.
|
|
2124
2198
|
*/
|
|
2125
|
-
faultLabel(
|
|
2199
|
+
faultLabel(item: PaletteItem): string | null;
|
|
2126
2200
|
categoryClass(category: string): string;
|
|
2127
2201
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementPaletteComponent, never>;
|
|
2128
2202
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementPaletteComponent, "fb-element-palette", never, { "processType": { "alias": "processType"; "required": false; "isSignal": true; }; }, { "elementPicked": "elementPicked"; }, never, never, true, never>;
|
|
@@ -2192,6 +2266,126 @@ declare class ReferencePickerComponent {
|
|
|
2192
2266
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReferencePickerComponent, "fb-reference-picker", never, { "value": { "alias": "value"; "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; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "writableOnly": { "alias": "writableOnly"; "required": false; "isSignal": true; }; "elementsOnly": { "alias": "elementsOnly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2193
2267
|
}
|
|
2194
2268
|
|
|
2269
|
+
declare class ObjectPickerComponent {
|
|
2270
|
+
private readonly catalog;
|
|
2271
|
+
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
2272
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2273
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2274
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2275
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2276
|
+
private readonly objects;
|
|
2277
|
+
private readonly loadFailed;
|
|
2278
|
+
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2279
|
+
/**
|
|
2280
|
+
* Il testo digitato **mentre** il pannello e' aperto: filtra l'elenco. Chiuso il pannello
|
|
2281
|
+
* torna a null e la casella mostra di nuovo il valore del documento, che e' l'unica
|
|
2282
|
+
* fonte di verita'.
|
|
2283
|
+
*/
|
|
2284
|
+
private readonly query;
|
|
2285
|
+
constructor();
|
|
2286
|
+
/** Quel che si vede nella casella: il filtro se si sta digitando, il valore altrimenti. */
|
|
2287
|
+
readonly text: _angular_core.Signal<string>;
|
|
2288
|
+
readonly options: _angular_core.Signal<FlowObjectSummary[]>;
|
|
2289
|
+
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2290
|
+
/**
|
|
2291
|
+
* Nome fuori catalogo: si avvisa e non si blocca. Senza catalogo non si accusa nessuno —
|
|
2292
|
+
* "non lo so" non e' "non esiste".
|
|
2293
|
+
*/
|
|
2294
|
+
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2295
|
+
readonly labelOfValue: _angular_core.Signal<string | null>;
|
|
2296
|
+
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2297
|
+
open(): void;
|
|
2298
|
+
close(): void;
|
|
2299
|
+
toggle(): void;
|
|
2300
|
+
/** Digitare filtra **e** scrive: il nome puo' non essere in catalogo. */
|
|
2301
|
+
onInput(text: string): void;
|
|
2302
|
+
choose(object: FlowObjectSummary): void;
|
|
2303
|
+
clear(): void;
|
|
2304
|
+
describe(object: FlowObjectSummary): string;
|
|
2305
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ObjectPickerComponent, never>;
|
|
2306
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ObjectPickerComponent, "fb-object-picker", never, { "value": { "alias": "value"; "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>;
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
declare class FieldPickerComponent {
|
|
2310
|
+
private readonly catalog;
|
|
2311
|
+
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
2312
|
+
/** L'entita' di cui elencare i campi: senza oggetto non c'e' catalogo. */
|
|
2313
|
+
readonly object: _angular_core.InputSignal<string | undefined>;
|
|
2314
|
+
readonly usage: _angular_core.InputSignal<FlowFieldUsage>;
|
|
2315
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2316
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2317
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2318
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2319
|
+
private readonly fields;
|
|
2320
|
+
private readonly loadFailed;
|
|
2321
|
+
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2322
|
+
/** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
|
|
2323
|
+
private readonly query;
|
|
2324
|
+
constructor();
|
|
2325
|
+
readonly text: _angular_core.Signal<string>;
|
|
2326
|
+
readonly options: _angular_core.Signal<FlowFieldDescription[]>;
|
|
2327
|
+
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2328
|
+
/** `true` se il valore e' un percorso di relazione: non enumerabile, non verificato (§4.4). */
|
|
2329
|
+
readonly isRelationPath: _angular_core.Signal<boolean>;
|
|
2330
|
+
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2331
|
+
/** L'avviso dipende dall'uso: un campo puo' esistere e non essere filtrabile. */
|
|
2332
|
+
readonly unknownMessage: _angular_core.Signal<"Questo campo non e’ fra quelli filtrabili dell’oggetto." | "Questo campo non e’ fra quelli su cui si puo’ ordinare." | "Questo campo non e’ fra quelli aggiornabili dell’oggetto." | "Questo campo non e’ fra quelli dell’oggetto.">;
|
|
2333
|
+
readonly describeValue: _angular_core.Signal<string | null>;
|
|
2334
|
+
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2335
|
+
open(): void;
|
|
2336
|
+
close(): void;
|
|
2337
|
+
toggle(): void;
|
|
2338
|
+
onInput(text: string): void;
|
|
2339
|
+
choose(field: FlowFieldDescription): void;
|
|
2340
|
+
clear(): void;
|
|
2341
|
+
describe(field: FlowFieldDescription): string;
|
|
2342
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldPickerComponent, never>;
|
|
2343
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldPickerComponent, "fb-field-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "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>;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
interface NamePickerOption {
|
|
2347
|
+
name: string;
|
|
2348
|
+
label?: string | null;
|
|
2349
|
+
description?: string | null;
|
|
2350
|
+
}
|
|
2351
|
+
declare class NamePickerComponent {
|
|
2352
|
+
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
2353
|
+
readonly options: _angular_core.InputSignal<NamePickerOption[]>;
|
|
2354
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2355
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2356
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2357
|
+
/** Il testo dell'avviso sul nome fuori elenco: dipende da cosa si sta scegliendo. */
|
|
2358
|
+
readonly unknownMessage: _angular_core.InputSignal<string>;
|
|
2359
|
+
/**
|
|
2360
|
+
* La gravita' dell'avviso. Non e' cosmetica: un'action o un form che non esistono sono
|
|
2361
|
+
* **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
|
|
2362
|
+
* senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
|
|
2363
|
+
*/
|
|
2364
|
+
readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
|
|
2365
|
+
/** Cosa dire quando l'elenco e' vuoto: e' il caso "non lo so", non un errore. */
|
|
2366
|
+
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
2367
|
+
/** Testo monospazio: i nomi tecnici si leggono meglio, ed e' come li mostra il resto del form. */
|
|
2368
|
+
readonly isMono: _angular_core.InputSignal<boolean>;
|
|
2369
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2370
|
+
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2371
|
+
private readonly query;
|
|
2372
|
+
constructor();
|
|
2373
|
+
readonly text: _angular_core.Signal<string>;
|
|
2374
|
+
readonly visibleOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
2375
|
+
readonly hasOptions: _angular_core.Signal<boolean>;
|
|
2376
|
+
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2377
|
+
readonly labelOfValue: _angular_core.Signal<string | null>;
|
|
2378
|
+
open(): void;
|
|
2379
|
+
close(): void;
|
|
2380
|
+
toggle(): void;
|
|
2381
|
+
onInput(text: string): void;
|
|
2382
|
+
choose(option: NamePickerOption): void;
|
|
2383
|
+
clear(): void;
|
|
2384
|
+
describe(option: NamePickerOption): string;
|
|
2385
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NamePickerComponent, never>;
|
|
2386
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NamePickerComponent, "fb-name-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "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; }; "unknownMessage": { "alias": "unknownMessage"; "required": false; "isSignal": true; }; "unknownSeverity": { "alias": "unknownSeverity"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "isMono": { "alias": "isMono"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2387
|
+
}
|
|
2388
|
+
|
|
2195
2389
|
/** Le modalita' offerte: una per campo del modello. */
|
|
2196
2390
|
type ValueMode = 'reference' | 'literal' | 'formula' | 'globalConstant' | 'empty';
|
|
2197
2391
|
declare class ValueEditorComponent {
|
|
@@ -2367,9 +2561,6 @@ declare class RecordFilterEditorComponent {
|
|
|
2367
2561
|
readonly filters: _angular_core.Signal<FlowRecordFilter[]>;
|
|
2368
2562
|
readonly operators: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
2369
2563
|
constructor();
|
|
2370
|
-
readonly fieldOptions: _angular_core.Signal<FlowFieldDescription[]>;
|
|
2371
|
-
/** Catalogo vuoto = "non lo so": si lascia il campo libero, non si blocca (§7). */
|
|
2372
|
-
readonly hasFieldCatalog: _angular_core.Signal<boolean>;
|
|
2373
2564
|
readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
|
|
2374
2565
|
readonly customLogic: _angular_core.Signal<string>;
|
|
2375
2566
|
readonly showEmptyWarning: _angular_core.Signal<boolean>;
|
|
@@ -2384,10 +2575,11 @@ declare class RecordFilterEditorComponent {
|
|
|
2384
2575
|
setLogicMode(mode: 'and' | 'or' | 'custom' | 'formula'): void;
|
|
2385
2576
|
setCustomLogic(logic: string): void;
|
|
2386
2577
|
setFormula(formula: string): void;
|
|
2387
|
-
/**
|
|
2578
|
+
/**
|
|
2579
|
+
* Il tipo del campo, per proporre il controllo giusto sul valore: e' il motivo per cui il
|
|
2580
|
+
* catalogo resta caricato qui, e non solo dentro il picker.
|
|
2581
|
+
*/
|
|
2388
2582
|
fieldDataType(filter: FlowRecordFilter): string | undefined;
|
|
2389
|
-
/** `true` se il campo referenzia una relazione: la validazione non lo verifica (§4.4). */
|
|
2390
|
-
isRelationPath(filter: FlowRecordFilter): boolean;
|
|
2391
2583
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecordFilterEditorComponent, never>;
|
|
2392
2584
|
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>;
|
|
2393
2585
|
}
|
|
@@ -2413,11 +2605,18 @@ declare class ParameterEditorComponent {
|
|
|
2413
2605
|
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2414
2606
|
readonly inputCatalog: _angular_core.Signal<FlowCatalogParameter[]>;
|
|
2415
2607
|
readonly outputCatalog: _angular_core.Signal<FlowCatalogParameter[]>;
|
|
2608
|
+
/**
|
|
2609
|
+
* I candidati come li vuole il picker. Il tipo e l'obbligatorieta' finiscono nella
|
|
2610
|
+
* descrizione: nel `<select>` erano un asterisco muto, che non diceva quale valore ci sta.
|
|
2611
|
+
*/
|
|
2612
|
+
readonly inputOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
2613
|
+
readonly outputOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
2416
2614
|
/** Parametri obbligatori dichiarati dal catalogo e non ancora presenti. */
|
|
2417
2615
|
readonly missingRequired: _angular_core.Signal<FlowCatalogParameter[]>;
|
|
2418
|
-
/**
|
|
2419
|
-
|
|
2420
|
-
|
|
2616
|
+
/**
|
|
2617
|
+
* Il parametro fuori catalogo (`PARAMETER_UNKNOWN`) lo segnala il picker, che ha in mano sia
|
|
2618
|
+
* l'elenco sia il valore. Qui resta la descrizione, che serve all'editor di valore.
|
|
2619
|
+
*/
|
|
2421
2620
|
describe(name: string | undefined): FlowCatalogParameter | undefined;
|
|
2422
2621
|
addInput(name?: string): void;
|
|
2423
2622
|
addOutput(name?: string): void;
|
|
@@ -2443,7 +2642,6 @@ declare class FieldAssignmentEditorComponent {
|
|
|
2443
2642
|
readonly changed: _angular_core.OutputEmitterRef<(holder: FieldAssignmentHolder) => void>;
|
|
2444
2643
|
private readonly fields;
|
|
2445
2644
|
readonly assignments: _angular_core.Signal<FlowInputFieldAssignment[]>;
|
|
2446
|
-
readonly fieldOptions: _angular_core.Signal<FlowFieldDescription[]>;
|
|
2447
2645
|
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2448
2646
|
/** Campi obbligatori dell'entita' non ancora valorizzati. */
|
|
2449
2647
|
readonly missingRequired: _angular_core.Signal<FlowFieldDescription[]>;
|
|
@@ -2452,9 +2650,11 @@ declare class FieldAssignmentEditorComponent {
|
|
|
2452
2650
|
remove(index: number): void;
|
|
2453
2651
|
setField(index: number, field: string): void;
|
|
2454
2652
|
setValue(index: number, value: FlowValue | undefined): void;
|
|
2653
|
+
/**
|
|
2654
|
+
* Il tipo del campo serve all'editor di valore: e' il motivo per cui il catalogo resta
|
|
2655
|
+
* caricato anche qui, oltre che dentro il picker.
|
|
2656
|
+
*/
|
|
2455
2657
|
describe(name: string | undefined): FlowFieldDescription | undefined;
|
|
2456
|
-
/** Il catalogo e' popolato ma non conosce questo campo: sarebbe `FIELD_UNKNOWN`. */
|
|
2457
|
-
isUnknown(assignment: FlowInputFieldAssignment): boolean;
|
|
2458
2658
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldAssignmentEditorComponent, never>;
|
|
2459
2659
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldAssignmentEditorComponent, "fb-field-assignment-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "disabledReason": { "alias": "disabledReason"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
|
|
2460
2660
|
}
|
|
@@ -2597,7 +2797,6 @@ declare class ElementDialogComponent {
|
|
|
2597
2797
|
declare class StartInspectorComponent {
|
|
2598
2798
|
private readonly store;
|
|
2599
2799
|
private readonly dictionaries;
|
|
2600
|
-
private readonly catalog;
|
|
2601
2800
|
private readonly validation;
|
|
2602
2801
|
readonly start: _angular_core.Signal<FlowStart>;
|
|
2603
2802
|
readonly startNode: _angular_core.Signal<FlowAnyNode>;
|
|
@@ -2606,10 +2805,6 @@ declare class StartInspectorComponent {
|
|
|
2606
2805
|
readonly recordTriggerTypes: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
2607
2806
|
readonly frequencies: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
2608
2807
|
readonly offsetUnits: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
2609
|
-
private readonly objects;
|
|
2610
|
-
constructor();
|
|
2611
|
-
readonly objectOptions: _angular_core.Signal<FlowObjectSummary[]>;
|
|
2612
|
-
readonly hasObjectCatalog: _angular_core.Signal<boolean>;
|
|
2613
2808
|
readonly triggerType: _angular_core.Signal<string>;
|
|
2614
2809
|
readonly isRecordTrigger: _angular_core.Signal<boolean>;
|
|
2615
2810
|
readonly isScheduled: _angular_core.Signal<boolean>;
|
|
@@ -2663,9 +2858,8 @@ declare class OrchestratedStageInspectorComponent extends NodeInspectorBase {
|
|
|
2663
2858
|
*/
|
|
2664
2859
|
private readonly flowCandidates;
|
|
2665
2860
|
constructor();
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
readonly flowListId: _angular_core.Signal<string>;
|
|
2861
|
+
/** I candidati come li vuole il picker: il nome del flow e' il suo `flowName`. */
|
|
2862
|
+
readonly candidateOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
2669
2863
|
/**
|
|
2670
2864
|
* I contenitori di condizioni, uno per step, calcolati **una volta** per documento: costruirli
|
|
2671
2865
|
* nel template creerebbe un oggetto nuovo a ogni ciclo di change detection.
|
|
@@ -2750,14 +2944,12 @@ declare class ResourcePanelComponent {
|
|
|
2750
2944
|
readonly kinds: ResourceKindDescriptor[];
|
|
2751
2945
|
readonly dataTypes: _angular_core.Signal<_esfaenza_flow_builder.FlowDataTypeEntry[]>;
|
|
2752
2946
|
readonly sortOrders: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
2753
|
-
private readonly objects;
|
|
2754
2947
|
private readonly enumTypes;
|
|
2755
2948
|
/** La collection aperta nel pannello. */
|
|
2756
2949
|
readonly activeCollection: _angular_core.WritableSignal<"variables" | "constants" | "formulas" | "textTemplates" | "choices" | "dynamicChoiceSets" | "stages">;
|
|
2757
2950
|
/** L'indice della risorsa in modifica, o `null`. */
|
|
2758
2951
|
readonly editingIndex: _angular_core.WritableSignal<number | null>;
|
|
2759
2952
|
constructor();
|
|
2760
|
-
readonly objectOptions: _angular_core.Signal<FlowObjectSummary[]>;
|
|
2761
2953
|
readonly enumOptions: _angular_core.Signal<FlowCatalogEntry[]>;
|
|
2762
2954
|
readonly activeKind: _angular_core.Signal<ResourceKindDescriptor>;
|
|
2763
2955
|
readonly items: _angular_core.Signal<FlowResourceRef[]>;
|
|
@@ -2948,7 +3140,7 @@ declare class FlowBuilderComponent {
|
|
|
2948
3140
|
* troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
|
|
2949
3141
|
* modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
|
|
2950
3142
|
*/
|
|
2951
|
-
readonly inspectorMode: _angular_core.InputSignal<"
|
|
3143
|
+
readonly inspectorMode: _angular_core.InputSignal<"dialog" | "panel">;
|
|
2952
3144
|
readonly saved: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
2953
3145
|
readonly activated: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
2954
3146
|
readonly closeRequested: _angular_core.OutputEmitterRef<void>;
|
|
@@ -3023,11 +3215,12 @@ declare class FlowBuilderComponent {
|
|
|
3023
3215
|
/** Rilascio dalla palette: il punto di rilascio diventa `locationX`/`locationY` (§11). */
|
|
3024
3216
|
onElementDropped(event: {
|
|
3025
3217
|
type: FlowElementType;
|
|
3218
|
+
variant?: string;
|
|
3026
3219
|
x: number;
|
|
3027
3220
|
y: number;
|
|
3028
3221
|
}): void;
|
|
3029
3222
|
/** Click sulla palette: l'elemento si posiziona in una zona libera. */
|
|
3030
|
-
onElementPicked(
|
|
3223
|
+
onElementPicked(pick: FlowPalettePick): void;
|
|
3031
3224
|
private createElement;
|
|
3032
3225
|
onRemoveNode(name: string): void;
|
|
3033
3226
|
onDuplicateNode(name: string): void;
|
|
@@ -3071,5 +3264,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
3071
3264
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3072
3265
|
}
|
|
3073
3266
|
|
|
3074
|
-
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, moveCondition, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, referenceRoot, remapConditionLogic, removeCondition, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName };
|
|
3075
|
-
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, ParameterHolder, ValueMode };
|
|
3267
|
+
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, moveCondition, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, referenceRoot, remapConditionLogic, removeCondition, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
|
|
3268
|
+
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, ValueMode };
|
package/package.json
CHANGED
package/styles/flow-builder.css
CHANGED
|
@@ -413,6 +413,19 @@ f-flow .fb-edge--goto .f-connection-path {
|
|
|
413
413
|
margin-bottom: 6px;
|
|
414
414
|
}
|
|
415
415
|
|
|
416
|
+
/**
|
|
417
|
+
* I picker sono elementi custom: senza `flex` occuperebbero la larghezza del loro contenuto,
|
|
418
|
+
* e dentro l'intestazione di una voce di elenco resterebbero una casella minuscola accanto al
|
|
419
|
+
* bottone di rimozione. La regola sta qui perche' vale per ogni editor che li mette in fila.
|
|
420
|
+
*/
|
|
421
|
+
.fb-list__header > fb-name-picker,
|
|
422
|
+
.fb-list__header > fb-field-picker,
|
|
423
|
+
.fb-list__header > fb-object-picker,
|
|
424
|
+
.fb-list__header > fb-reference-picker {
|
|
425
|
+
flex: 1;
|
|
426
|
+
min-width: 0;
|
|
427
|
+
}
|
|
428
|
+
|
|
416
429
|
.fb-list__index {
|
|
417
430
|
display: grid;
|
|
418
431
|
place-items: center;
|