wuic-framework-lib 1.0.19 → 1.0.20
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/fesm2022/{wuic-framework-lib-chart-list.component-C0OYuZoM.mjs → wuic-framework-lib-chart-list.component-B44k_wZe.mjs} +73 -13
- package/fesm2022/{wuic-framework-lib-code-editor.component-B8OQ3Z0k.mjs → wuic-framework-lib-code-editor.component-D1dy4Dl9.mjs} +5 -5
- package/fesm2022/{wuic-framework-lib-designer.component-DsWgWtFj.mjs → wuic-framework-lib-designer.component-CnOQbvEH.mjs} +82 -49
- package/fesm2022/{wuic-framework-lib-first-run-wizard.component-wR_LrvPK.mjs → wuic-framework-lib-first-run-wizard.component-C9lswoxG.mjs} +8 -8
- package/fesm2022/{wuic-framework-lib-framework-docs.component-eyzu9tdV.mjs → wuic-framework-lib-framework-docs.component-B6qNTs5H.mjs} +803 -110
- package/fesm2022/{wuic-framework-lib-pivot-builder.component-BFdZW5Ch.mjs → wuic-framework-lib-pivot-builder.component-DMk26H0M.mjs} +264 -16
- package/fesm2022/{wuic-framework-lib-prompt-dialog-fallback-host.component-B583WbYe.mjs → wuic-framework-lib-prompt-dialog-fallback-host.component-y3shST6g.mjs} +5 -5
- package/fesm2022/{wuic-framework-lib-report-designer.component-HJUpslLX.mjs → wuic-framework-lib-report-designer.component-BnngR2eL.mjs} +5 -5
- package/fesm2022/{wuic-framework-lib-report-viewer.component-El32zpzi.mjs → wuic-framework-lib-report-viewer.component-LGNRIQh2.mjs} +5 -5
- package/fesm2022/{wuic-framework-lib-scheduler-list.component-E8s_e533.mjs → wuic-framework-lib-scheduler-list.component-DbcFMwx5.mjs} +28 -5
- package/fesm2022/{wuic-framework-lib-spreadsheet-list-sf.component-CDn0qi_C.mjs → wuic-framework-lib-spreadsheet-list-sf.component-DXyRX0YK.mjs} +9 -9
- package/fesm2022/{wuic-framework-lib-workflow-designer.component-hL7oKqYO.mjs → wuic-framework-lib-workflow-designer.component-Bm719AWV.mjs} +9 -9
- package/fesm2022/{wuic-framework-lib-wuic-framework-lib-ABS_G7lO.mjs → wuic-framework-lib-wuic-framework-lib-CGCZvtKK.mjs} +1680 -411
- package/fesm2022/wuic-framework-lib.mjs +1 -1
- package/package.json +1 -1
- package/types/wuic-framework-lib.d.ts +340 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { s as AUTH_REDIRECT_REASON_KEY, t as AppSettingsEditorComponent, n as AuthSessionService, B as BooleanEditorComponent, u as BoundedRepeaterComponent, v as ButtonEditorComponent, C as CallbackPipe, w as CallbackPipe2, x as CarouselListComponent, y as CodeAreaEditorComponent, z as ColorEditorComponent, E as CrashReporterService, H as CustomException, J as DataActionButtonComponent, K as DataProviderOdataService, c as DataRepeaterComponent, b as DataSourceComponent, N as DateEditorComponent, O as DesignerRouteComponent, Q as DictionaryEditorComponent, a as DynamicCompilerService, R as DynamicRowTemplateComponent, i as FieldEditorComponent, F as FilterBarComponent, o as FilterInfo, S as FormatGridViewValuePipe, V as GetSrcUploadPreviewPipe, G as GlobalHandler, X as HtmlEditorComponent, Y as ImageWrapperComponent, I as ImportExportButtonComponent, Z as IsSelectedRowPipe, _ as KanbanListComponent, $ as KanbanOptions, a0 as KanbanStatusColumnItem, a1 as LazyChartListComponent, a2 as LazyCodeEditorComponent, a3 as LazyDataActionButtonComponent, a4 as LazyDataSourceComponent, a5 as LazyFieldEditorComponent, a6 as LazyFirstRunWizardComponent, a7 as LazyImageWrapperComponent, a8 as LazyKanbanListComponent, a9 as LazyMetaMenuComponent, aa as LazyPivotBuilderComponent, ab as LazyReportDesignerComponent, ac as LazyReportViewerComponent, ad as LazySchedulerListComponent, ae as LazySpreadsheetListSfComponent, p as LicenseFeatureService, af as ListGridComponent, ag as LookupEditorComponent, ah as MapListComponent, m as MetaInfo, ai as MetaMenuComponent, g as MetadataEditorService, M as MetadataProviderService, e as MetadatiColonna, aj as MetadatiTabella, ak as NotificationBellComponent, al as NotificationRealtimeService, am as NumberEditorComponent, an as PRIMARY_PALETTES, P as PagerComponent, d as ParametricDialogComponent, ao as PropertyArrayEditorComponent, ap as PropertyObjectEditorComponent, aq as THEME_OPTIONS, ar as TextAreaEditorComponent, as as TextEditorComponent, T as TranslationManagerService, at as TreeListComponent, au as TreeViewSelectorComponent, av as UploadDialogComponent, aw as UploadEditorComponent, U as UserInfoService, ax as ValidationRule, ay as ValueChangedPayload, az as VisibleFieldListPipe, aA as WidgetDefinition, aB as WorkflowDesignerRouteComponent, aC as WorkflowRunnerComponent, h as WorkflowRuntimeMetadataService, W as WtoolboxService, aD as WuicErrorDialogComponent, aE as WuicErrorInterceptor, aF as WuicFeatureDirective, aG as WuicFrozenColumnDirective, aH as WuicRagChatbotComponent, aI as WuicRagChatbotFabComponent, aJ as WuicRagService, aK as WuicRowTogglerDirective, aL as _PRIMENG_TABLE_DIRECTIVES_NAMES, aM as authExpiredInterceptor, aN as boundedRepeaterPendingChangesGuard, aO as featureRouteCanActivateGuard, aP as featureRouteCanMatchGuard, r as getThemeOptions, aQ as getThemePrimaryHex, aR as inferTemplateFieldFromBaseClass, aS as loadBooleanEditorComponent, aT as loadButtonEditorComponent, aU as loadCodeAreaEditorComponent, aV as loadColorEditorComponent, aW as loadDateEditorComponent, aX as loadDictionaryEditorComponent, aY as loadHtmlEditorComponent, aZ as loadLookupEditorComponent, a_ as loadNumberEditorComponent, a$ as loadPropertyArrayEditorComponent, b0 as loadPropertyObjectEditorComponent, b1 as loadTextAreaEditorComponent, b2 as loadTextEditorComponent, b3 as loadTreeViewSelectorComponent, b4 as loadUploadEditorComponent, b5 as menuRouteAccessCanActivateGuard, b6 as menuRouteAccessCanMatchGuard, b7 as routes, b8 as wuicErrorInterceptor } from './wuic-framework-lib-wuic-framework-lib-
|
|
1
|
+
export { s as AUTH_REDIRECT_REASON_KEY, t as AppSettingsEditorComponent, n as AuthSessionService, B as BooleanEditorComponent, u as BoundedRepeaterComponent, v as ButtonEditorComponent, C as CallbackPipe, w as CallbackPipe2, x as CarouselListComponent, y as CodeAreaEditorComponent, z as ColorEditorComponent, E as CrashReporterService, H as CustomException, J as DataActionButtonComponent, K as DataProviderOdataService, c as DataRepeaterComponent, b as DataSourceComponent, N as DateEditorComponent, O as DesignerRouteComponent, Q as DictionaryEditorComponent, a as DynamicCompilerService, R as DynamicRowTemplateComponent, i as FieldEditorComponent, F as FilterBarComponent, o as FilterInfo, S as FormatGridViewValuePipe, V as GetSrcUploadPreviewPipe, G as GlobalHandler, X as HtmlEditorComponent, Y as ImageWrapperComponent, I as ImportExportButtonComponent, Z as IsSelectedRowPipe, _ as KanbanListComponent, $ as KanbanOptions, a0 as KanbanStatusColumnItem, a1 as LazyChartListComponent, a2 as LazyCodeEditorComponent, a3 as LazyDataActionButtonComponent, a4 as LazyDataSourceComponent, a5 as LazyFieldEditorComponent, a6 as LazyFirstRunWizardComponent, a7 as LazyImageWrapperComponent, a8 as LazyKanbanListComponent, a9 as LazyMetaMenuComponent, aa as LazyPivotBuilderComponent, ab as LazyReportDesignerComponent, ac as LazyReportViewerComponent, ad as LazySchedulerListComponent, ae as LazySpreadsheetListSfComponent, p as LicenseFeatureService, af as ListGridComponent, ag as LookupEditorComponent, ah as MapListComponent, m as MetaInfo, ai as MetaMenuComponent, g as MetadataEditorService, M as MetadataProviderService, e as MetadatiColonna, aj as MetadatiTabella, ak as NotificationBellComponent, al as NotificationRealtimeService, am as NumberEditorComponent, an as PRIMARY_PALETTES, P as PagerComponent, d as ParametricDialogComponent, ao as PropertyArrayEditorComponent, ap as PropertyObjectEditorComponent, aq as THEME_OPTIONS, ar as TextAreaEditorComponent, as as TextEditorComponent, T as TranslationManagerService, at as TreeListComponent, au as TreeViewSelectorComponent, av as UploadDialogComponent, aw as UploadEditorComponent, U as UserInfoService, ax as ValidationRule, ay as ValueChangedPayload, az as VisibleFieldListPipe, aA as WidgetDefinition, aB as WorkflowDesignerRouteComponent, aC as WorkflowRunnerComponent, h as WorkflowRuntimeMetadataService, W as WtoolboxService, aD as WuicErrorDialogComponent, aE as WuicErrorInterceptor, aF as WuicFeatureDirective, aG as WuicFrozenColumnDirective, aH as WuicRagChatbotComponent, aI as WuicRagChatbotFabComponent, aJ as WuicRagService, aK as WuicRowTogglerDirective, aL as _PRIMENG_TABLE_DIRECTIVES_NAMES, aM as authExpiredInterceptor, aN as boundedRepeaterPendingChangesGuard, aO as featureRouteCanActivateGuard, aP as featureRouteCanMatchGuard, r as getThemeOptions, aQ as getThemePrimaryHex, aR as inferTemplateFieldFromBaseClass, aS as loadBooleanEditorComponent, aT as loadButtonEditorComponent, aU as loadCodeAreaEditorComponent, aV as loadColorEditorComponent, aW as loadDateEditorComponent, aX as loadDictionaryEditorComponent, aY as loadHtmlEditorComponent, aZ as loadLookupEditorComponent, a_ as loadNumberEditorComponent, a$ as loadPropertyArrayEditorComponent, b0 as loadPropertyObjectEditorComponent, b1 as loadTextAreaEditorComponent, b2 as loadTextEditorComponent, b3 as loadTreeViewSelectorComponent, b4 as loadUploadEditorComponent, b5 as menuRouteAccessCanActivateGuard, b6 as menuRouteAccessCanMatchGuard, b7 as routes, b8 as wuicErrorInterceptor } from './wuic-framework-lib-wuic-framework-lib-CGCZvtKK.mjs';
|
|
2
2
|
//# sourceMappingURL=wuic-framework-lib.mjs.map
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@ import { GoogleMap, MapInfoWindow, MapPolygon } from '@angular/google-maps';
|
|
|
18
18
|
import { MarkerClusterer } from '@googlemaps/markerclusterer';
|
|
19
19
|
import { SplitButton } from 'primeng/splitbutton';
|
|
20
20
|
import { Menubar } from 'primeng/menubar';
|
|
21
|
-
import { AutoCompleteCompleteEvent } from 'primeng/autocomplete';
|
|
21
|
+
import { AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';
|
|
22
22
|
import { Select } from 'primeng/select';
|
|
23
23
|
import { PrimeNG } from 'primeng/config';
|
|
24
24
|
import { Popover } from 'primeng/popover';
|
|
@@ -1834,6 +1834,19 @@ declare class DataSourceComponent implements OnInit, OnDestroy {
|
|
|
1834
1834
|
*/
|
|
1835
1835
|
private refreshPristineFromCurrent;
|
|
1836
1836
|
/**
|
|
1837
|
+
* Rebase: sposta la pristine baseline al record corrente e azzera il tracker
|
|
1838
|
+
* dei pending changes. Usato dai custom edit-form component dopo aver
|
|
1839
|
+
* applicato `mc_default_value_callback` async (es. progressivo da stored)
|
|
1840
|
+
* sul record gia' BS-wrappato — senza questo refresh il record `__new=true`
|
|
1841
|
+
* risulterebbe `hasPendingChanges()=true` al primo open del dialog Insert
|
|
1842
|
+
* (i BS.next dei default callback vengono tracciati come edit utente).
|
|
1843
|
+
*
|
|
1844
|
+
* NB: usare SOLO se il record e' `__new=true` (modalita' Insert) e i valori
|
|
1845
|
+
* applicati sono default-set, non user-edit. Su record gia' persistente
|
|
1846
|
+
* questo metodo cancella i changes pendenti -> rischio data loss.
|
|
1847
|
+
*/
|
|
1848
|
+
rebasePristineAfterDefaults(): void;
|
|
1849
|
+
/**
|
|
1837
1850
|
* Pubblica uno stato locale aggiornato su `fetchInfo$` per riallineare i consumer del datasource.
|
|
1838
1851
|
*/
|
|
1839
1852
|
private publishLocalStateUpdate;
|
|
@@ -1965,18 +1978,103 @@ declare class MapOptions implements IDesignerProperties {
|
|
|
1965
1978
|
useCurrentLocation: boolean;
|
|
1966
1979
|
useClusterer: boolean;
|
|
1967
1980
|
filterByBoundaries: boolean;
|
|
1981
|
+
/**
|
|
1982
|
+
* Pass-through al `google.maps.MapOptions.clickableIcons`. Quando `false`,
|
|
1983
|
+
* Google Maps NON apre la propria info window built-in sui POI cliccati
|
|
1984
|
+
* (negozi, fermate, indirizzi, ecc.) — utile quando l'app deve gestire
|
|
1985
|
+
* solo i click dei marker custom (l'info window del POI di Google
|
|
1986
|
+
* intercetta i click che dovrebbero arrivare al marker e copre l'info
|
|
1987
|
+
* window del framework). Default `undefined` (= comportamento Google,
|
|
1988
|
+
* `true`).
|
|
1989
|
+
*/
|
|
1990
|
+
clickableIcons?: boolean;
|
|
1968
1991
|
customMarkerImageSrc: string;
|
|
1969
1992
|
customMarkerImageSrcField: string;
|
|
1970
1993
|
markerContentCallback: string;
|
|
1994
|
+
/**
|
|
1995
|
+
* Campo del record che contiene il colore (CSS string `#rrggbb`) da usare
|
|
1996
|
+
* sul `PinElement` del marker. Ignorato se il record ha
|
|
1997
|
+
* `customMarkerImageSrcField` valorizzato (immagine/SVG ha precedenza).
|
|
1998
|
+
*/
|
|
1999
|
+
markerColorField?: string;
|
|
1971
2000
|
titleField: string;
|
|
1972
2001
|
infoField: string;
|
|
1973
2002
|
infoFunction: string;
|
|
1974
2003
|
itemTemplateString: string;
|
|
2004
|
+
/**
|
|
2005
|
+
* Polyline overlay configurabile via `mdpropsbag.archetypes.map.polyline`.
|
|
2006
|
+
* Quando `enabled=true`, il componente raggruppa i record per `groupByField`,
|
|
2007
|
+
* li ordina per `orderByField` e disegna una `<map-polyline>` per ogni gruppo
|
|
2008
|
+
* unendo i punti `{lat: record[latField], lng: record[lngField]}`.
|
|
2009
|
+
* Caso d'uso: tracciamento percorsi GPS (mezzi, persone, asset) dove ogni
|
|
2010
|
+
* record e' una posizione storicizzata.
|
|
2011
|
+
*/
|
|
2012
|
+
polyline?: PolylineOverlayOptions;
|
|
1975
2013
|
constructor();
|
|
1976
2014
|
init(metaInfo: MetaInfo): void;
|
|
1977
2015
|
archetypePropName: string;
|
|
1978
2016
|
getDesignerProps(metaInfo: MetaInfo, action: BehaviorSubject<any>): MetaInfo;
|
|
1979
2017
|
}
|
|
2018
|
+
/**
|
|
2019
|
+
* Configurazione overlay polyline per archetype map. Permette di trasformare un
|
|
2020
|
+
* elenco di record (es. posizioni GPS storicizzate) in una o piu' polyline,
|
|
2021
|
+
* raggruppate per un campo (es. mezzo_id) e ordinate per un campo (es. timestamp).
|
|
2022
|
+
*
|
|
2023
|
+
* Le coordinate vengono lette dalla colonna `point` esistente sulla tabella/view
|
|
2024
|
+
* (auto-detect: la stessa colonna che il map-list usa per i marker). Per usarla,
|
|
2025
|
+
* la tabella DEVE avere una colonna con `mc_ui_column_type='point'` contenente
|
|
2026
|
+
* JSON `{"lat":..,"lng":..}`.
|
|
2027
|
+
*
|
|
2028
|
+
* Quando `snapToRoads=true` il componente usa Google DirectionsService per
|
|
2029
|
+
* snappare i waypoint alle strade reali (max 25 waypoint per chiamata; se ci
|
|
2030
|
+
* sono piu' punti viene fatto batching automatico).
|
|
2031
|
+
*/
|
|
2032
|
+
interface PolylineOverlayOptions {
|
|
2033
|
+
enabled: boolean;
|
|
2034
|
+
/** Campo record per raggruppare (es. 'mezzo_id'). Se omesso → 1 sola polyline globale. */
|
|
2035
|
+
groupByField?: string;
|
|
2036
|
+
/** Campo record per ordinare i punti dentro ogni gruppo (es. 'timestamp_pos'). */
|
|
2037
|
+
orderByField?: string;
|
|
2038
|
+
/**
|
|
2039
|
+
* Campo record alternativo per leggere le coordinate (auto-detect via
|
|
2040
|
+
* colonna `point` se omesso). Utile se la tabella/view ha piu' colonne
|
|
2041
|
+
* point e vuoi specificare quale usare per la polyline.
|
|
2042
|
+
*/
|
|
2043
|
+
pointField?: string;
|
|
2044
|
+
/**
|
|
2045
|
+
* Campo record che contiene il colore della polyline (CSS string `#rrggbb`).
|
|
2046
|
+
* Quando valorizzato, il colore viene letto dal primo record del gruppo
|
|
2047
|
+
* (assume omogeneita' per gruppo) e sovrascrive `strokeColor` /
|
|
2048
|
+
* `strokeColorByGroup`. Tipico use-case: colore configurato sul mezzo
|
|
2049
|
+
* (FK lookup) e portato nella view sorgente.
|
|
2050
|
+
*/
|
|
2051
|
+
colorField?: string;
|
|
2052
|
+
/** Colore tratto polyline (default `#1d4ed8`). */
|
|
2053
|
+
strokeColor?: string;
|
|
2054
|
+
/** Se true, ogni gruppo riceve un colore distinto (palette interna). */
|
|
2055
|
+
strokeColorByGroup?: boolean;
|
|
2056
|
+
/** Spessore tratto in pixel (default 4). */
|
|
2057
|
+
strokeWeight?: number;
|
|
2058
|
+
/** Opacita 0..1 (default 0.85). */
|
|
2059
|
+
strokeOpacity?: number;
|
|
2060
|
+
/** Se true, snappa la polyline alle strade reali via Google DirectionsService. */
|
|
2061
|
+
snapToRoads?: boolean;
|
|
2062
|
+
/** Se false, nasconde i marker (mostra solo la polyline). Default true. */
|
|
2063
|
+
showMarkers?: boolean;
|
|
2064
|
+
/** Modalita di viaggio per snapToRoads (`DRIVING` default, `WALKING`, `BICYCLING`). */
|
|
2065
|
+
travelMode?: 'DRIVING' | 'WALKING' | 'BICYCLING';
|
|
2066
|
+
/**
|
|
2067
|
+
* Se true, oltre alla polyline disegna un dot (`<map-circle>`) sulle
|
|
2068
|
+
* coordinate originali di ciascun record. Utile per distinguere visivamente
|
|
2069
|
+
* i punti GPS realmente storicizzati dal path interpolato/snapped.
|
|
2070
|
+
* Default false.
|
|
2071
|
+
*/
|
|
2072
|
+
showWaypointDots?: boolean;
|
|
2073
|
+
/**
|
|
2074
|
+
* Raggio in metri del dot (cerchio reale, scala con lo zoom). Default 8.
|
|
2075
|
+
*/
|
|
2076
|
+
waypointDotRadius?: number;
|
|
2077
|
+
}
|
|
1980
2078
|
declare class Point {
|
|
1981
2079
|
lat: number;
|
|
1982
2080
|
lng: number;
|
|
@@ -2378,7 +2476,7 @@ declare class MetadatiTabella {
|
|
|
2378
2476
|
* Flag toolbar-level controllati da `md_props_bag.toolbar.*` (JSON).
|
|
2379
2477
|
* Cambiabili per-route senza toccare lo schema SQL di
|
|
2380
2478
|
* `_metadati__tabelle`. Esempio in `md_props_bag`:
|
|
2381
|
-
* { "toolbar": { "hideManageState": true } }
|
|
2479
|
+
* { "toolbar": { "hideManageState": true, "hideBatchActions": true } }
|
|
2382
2480
|
*
|
|
2383
2481
|
* - `hideManageState`: nasconde il bottone "Gestione stato"
|
|
2384
2482
|
* (icona bookmark) + la select degli stati salvati nella
|
|
@@ -2386,9 +2484,18 @@ declare class MetadatiTabella {
|
|
|
2386
2484
|
* demo dove il saved-state feature (persistenza user_id +
|
|
2387
2485
|
* route via MetaService) non ha senso — es. Pattern 3 puro
|
|
2388
2486
|
* OData senza route metadata registrata.
|
|
2487
|
+
* - `hideBatchActions`: nasconde dalla caption-left i pulsanti
|
|
2488
|
+
* "Salva modifiche" / "Annulla modifiche" + l'indicatore
|
|
2489
|
+
* conteggio changes (badge pencil + count) generati quando
|
|
2490
|
+
* `md_inline_cell_editing` + `md_batch_save` sono attivi.
|
|
2491
|
+
* Utile per nested grid (es. righe documento dentro un
|
|
2492
|
+
* parametric-dialog) dove il save/cancel del padre persiste
|
|
2493
|
+
* master + righe in un colpo via batch save framework e i
|
|
2494
|
+
* duplicati toolbar sulla nested confondono l'UX.
|
|
2389
2495
|
*/
|
|
2390
2496
|
toolbar?: {
|
|
2391
2497
|
hideManageState?: boolean;
|
|
2498
|
+
hideBatchActions?: boolean;
|
|
2392
2499
|
};
|
|
2393
2500
|
/**
|
|
2394
2501
|
* Tuning server-side letto da `DataProviderMetaService.select`
|
|
@@ -3354,6 +3461,18 @@ declare class DataProviderMetaService {
|
|
|
3354
3461
|
* additional columns alongside the text field).
|
|
3355
3462
|
*/
|
|
3356
3463
|
static buildSlimComboRestriction(field: MetadatiColonna | null | undefined): string[];
|
|
3464
|
+
/**
|
|
3465
|
+
* Sanitize di un body HTTP rimuovendo qualunque BehaviorSubject (e
|
|
3466
|
+
* BS-of-BS) che potrebbe essere finito dentro `filterInfo`,
|
|
3467
|
+
* `currentRecord`, slot di un record BS-wrapped, ecc. Pre-serializza
|
|
3468
|
+
* con replacer BS-aware e parse back: il risultato e' un body plain
|
|
3469
|
+
* che Angular `HttpRequest.serializeBody` puo' stringificare senza
|
|
3470
|
+
* "Converting circular structure to JSON" (SafeSubscriber →
|
|
3471
|
+
* Subscription._finalizers → _parentage). Da usare in tutti i
|
|
3472
|
+
* `http.post`/`http.put` che possono ricevere payload provenienti da
|
|
3473
|
+
* datasource reattive.
|
|
3474
|
+
*/
|
|
3475
|
+
static sanitizeBodyForHttp(body: any): any;
|
|
3357
3476
|
/**
|
|
3358
3477
|
* Carica i dati della route corrente chiamando `MetaService.getFlatRecordData` (`MetadataProviderService.readUri`).
|
|
3359
3478
|
* Invia paginazione/ordinamenti/gruppi/filtri/aggregazioni e `has_server_operation`, poi mappa la risposta
|
|
@@ -4409,6 +4528,36 @@ declare class WtoolboxService {
|
|
|
4409
4528
|
suggestColumnMD(record: {
|
|
4410
4529
|
[key: string]: BehaviorSubject<any>;
|
|
4411
4530
|
}, field: MetadatiColonna, type: string, routeRef?: string): Promise<void>;
|
|
4531
|
+
/**
|
|
4532
|
+
* Suggest del campo `mc_ui_lookup_computed_dataTextField` (Lookup
|
|
4533
|
+
* Computed Data Text Field — formula display nella grid del parent):
|
|
4534
|
+
* apre albero da `MetaService.getLookupListByIDLevelUP` (root = tabella
|
|
4535
|
+
* proprietaria di mc_id, con i lookup edges per navigare alle target)
|
|
4536
|
+
* e genera il select con `appendOnly=2` (JOIN alias `<colFK>_<target>`
|
|
4537
|
+
* coerente con quello costruito da JoinBuilder a runtime nella query
|
|
4538
|
+
* della grid). Vedi anche `suggestLookupComputedEdit` per il caso
|
|
4539
|
+
* speculare nel field-editor.
|
|
4540
|
+
* @param record Record metadata corrente (`mc_id` usato dal backend).
|
|
4541
|
+
* @param field Campo formula da aggiornare.
|
|
4542
|
+
*/
|
|
4543
|
+
suggestLookupComputed(record: {
|
|
4544
|
+
[key: string]: BehaviorSubject<any>;
|
|
4545
|
+
}, field: MetadatiColonna): Promise<void>;
|
|
4546
|
+
/**
|
|
4547
|
+
* Suggest del campo `mc_ui_lookup_combo_text_edit_computed_dataTextField`
|
|
4548
|
+
* (Lookup Edit Text Computed Formula — testo del lookup nel field-editor):
|
|
4549
|
+
* apre albero da `MetaService.getLookupListFromLookupTarget` con root
|
|
4550
|
+
* spostata sulla TABELLA TARGET del lookup (es. mc_id=`prodotto_id` -> root
|
|
4551
|
+
* `prodotti` con i suoi campi `codice`/`descrizione`/...). Genera il
|
|
4552
|
+
* select con `appendOnly=3` -> qualifier `[<targetTable>].[<col>]`
|
|
4553
|
+
* (es. `[prodotti].[codice]`), perche' la formula gira in un SELECT
|
|
4554
|
+
* diretto sulla target nel field-editor, senza JOIN alias.
|
|
4555
|
+
* @param record Record metadata corrente (`mc_id` usato dal backend).
|
|
4556
|
+
* @param field Campo formula da aggiornare.
|
|
4557
|
+
*/
|
|
4558
|
+
suggestLookupComputedEdit(record: {
|
|
4559
|
+
[key: string]: BehaviorSubject<any>;
|
|
4560
|
+
}, field: MetadatiColonna): Promise<void>;
|
|
4412
4561
|
/**
|
|
4413
4562
|
* Costruisce formula computed partendo da gerarchia lookup: apre albero da
|
|
4414
4563
|
* `MetaService.getLookupListByIDLevelUP` e invia la selezione a `getClauseByLookupHierarchy`
|
|
@@ -7454,6 +7603,34 @@ declare class MapListComponent implements OnInit, AfterViewInit, OnDestroy, IBin
|
|
|
7454
7603
|
* Collezione dati per data, consumata dal rendering e dalle operazioni del componente.
|
|
7455
7604
|
*/
|
|
7456
7605
|
data: any[];
|
|
7606
|
+
/**
|
|
7607
|
+
* Polyline overlay calcolate da `parseData` quando
|
|
7608
|
+
* `archetypeOptions.polyline.enabled=true`. Una polyline per gruppo
|
|
7609
|
+
* (`groupByField`), ordinate per `orderByField`. Renderizzate via
|
|
7610
|
+
* `<map-polyline>` nel template.
|
|
7611
|
+
*/
|
|
7612
|
+
polylines: {
|
|
7613
|
+
path: {
|
|
7614
|
+
lat: number;
|
|
7615
|
+
lng: number;
|
|
7616
|
+
}[];
|
|
7617
|
+
options: any;
|
|
7618
|
+
group: any;
|
|
7619
|
+
}[];
|
|
7620
|
+
/**
|
|
7621
|
+
* Dot sui waypoint originali (coordinate reali dei record) renderizzati
|
|
7622
|
+
* via `<map-circle>` quando `archetypeOptions.polyline.showWaypointDots=true`.
|
|
7623
|
+
* Utile per distinguere i punti GPS storicizzati dal path interpolato/snapped.
|
|
7624
|
+
*/
|
|
7625
|
+
polylineDots: {
|
|
7626
|
+
center: {
|
|
7627
|
+
lat: number;
|
|
7628
|
+
lng: number;
|
|
7629
|
+
};
|
|
7630
|
+
options: any;
|
|
7631
|
+
group: any;
|
|
7632
|
+
record: any;
|
|
7633
|
+
}[];
|
|
7457
7634
|
/**
|
|
7458
7635
|
* Configurazione di presentazione per item template string, usata nel rendering del componente.
|
|
7459
7636
|
*/
|
|
@@ -7654,11 +7831,54 @@ declare class MapListComponent implements OnInit, AfterViewInit, OnDestroy, IBin
|
|
|
7654
7831
|
*/
|
|
7655
7832
|
parseData(data: any): any;
|
|
7656
7833
|
/**
|
|
7834
|
+
* Costruisce le polyline overlay dai record applicando
|
|
7835
|
+
* `archetypeOptions.polyline`. Ogni gruppo (`groupByField`) → 1 polyline
|
|
7836
|
+
* con path ordinato per `orderByField`. Estende `bounds` cosi' fitBounds
|
|
7837
|
+
* include i punti del percorso.
|
|
7838
|
+
*
|
|
7839
|
+
* Se `snapToRoads=true`, dopo il render iniziale (path = punti raw) viene
|
|
7840
|
+
* lanciato `snapPolylinesToRoads()` async che chiama Google DirectionsService
|
|
7841
|
+
* e sostituisce ogni `path` con `overview_path` della rotta calcolata.
|
|
7842
|
+
*/
|
|
7843
|
+
buildPolylines(data: any[], bounds: google.maps.LatLngBounds): {
|
|
7844
|
+
path: {
|
|
7845
|
+
lat: number;
|
|
7846
|
+
lng: number;
|
|
7847
|
+
}[];
|
|
7848
|
+
options: any;
|
|
7849
|
+
group: any;
|
|
7850
|
+
}[];
|
|
7851
|
+
/**
|
|
7852
|
+
* Snap async delle polyline alle strade reali. Usa la nuova
|
|
7853
|
+
* **Routes API** (`google.maps.routes.Route.computeRoutes`) che sostituisce
|
|
7854
|
+
* `DirectionsService` deprecato dal 2026-02-25. Fallback automatico a
|
|
7855
|
+
* `DirectionsService` legacy se la libreria `routes` non e' disponibile
|
|
7856
|
+
* o la chiamata fallisce (key senza "Routes API" abilitata, ecc.).
|
|
7857
|
+
*
|
|
7858
|
+
* Migration guide: https://developers.google.com/maps/documentation/javascript/routes/routes-js-migration
|
|
7859
|
+
*
|
|
7860
|
+
* Limite waypoint per chiamata = 25 (origin + 23 intermediates + destination):
|
|
7861
|
+
* polyline piu' lunghe vengono chunkate.
|
|
7862
|
+
*
|
|
7863
|
+
* Travel mode legacy → routes mapping: DRIVING→DRIVE, WALKING→WALK,
|
|
7864
|
+
* BICYCLING→BICYCLE.
|
|
7865
|
+
*/
|
|
7866
|
+
private snapPolylinesToRoads;
|
|
7867
|
+
/**
|
|
7657
7868
|
* Recupera i dati/valori richiesti da `getMarkerContent`.
|
|
7658
7869
|
* @param record Dato/record su cui il metodo applica elaborazioni o aggiornamenti.
|
|
7659
7870
|
* @returns Valore risolto da `getMarkerContent` in base ai criteri implementati.
|
|
7660
7871
|
*/
|
|
7661
7872
|
getMarkerContent(record: any): any;
|
|
7873
|
+
/**
|
|
7874
|
+
* Costruisce un HTMLElement marker-content da una stringa che puo' essere:
|
|
7875
|
+
* - SVG inline (`<svg ...>...</svg>`) → wrappato in un `<div>` per renderlo
|
|
7876
|
+
* un AdvancedMarker content valido (deve essere un Element, non un
|
|
7877
|
+
* DocumentFragment). Dimensioni controllate dal viewBox dell'SVG.
|
|
7878
|
+
* - URL immagine (http/https/data:image/...) → `<img src>`.
|
|
7879
|
+
* - Stringa vuota / null → null (caller usa il fallback successivo).
|
|
7880
|
+
*/
|
|
7881
|
+
private buildMarkerVisualFromValue;
|
|
7662
7882
|
/**
|
|
7663
7883
|
* Restituisce una Promise che wrappa `navigator.geolocation.getCurrentPosition`.
|
|
7664
7884
|
* @returns Posizione geolocalizzata del browser oppure errore se non disponibile/negata.
|
|
@@ -7818,6 +8038,15 @@ declare class MapListComponent implements OnInit, AfterViewInit, OnDestroy, IBin
|
|
|
7818
8038
|
* Apre l'info window del marker selezionato valorizzando `infoContent` con il template record.
|
|
7819
8039
|
*/
|
|
7820
8040
|
openInfo(markerElem: any, marker: any): void;
|
|
8041
|
+
/**
|
|
8042
|
+
* Apre l'info window su un waypoint (`<map-circle>`) della polyline overlay.
|
|
8043
|
+
* Riusa lo stesso `itemTemplate` del marker principale: il record del
|
|
8044
|
+
* waypoint contiene tutti i campi (incluso `timestamp_pos`, `velocita_kmh`,
|
|
8045
|
+
* `note`, ecc.) che il template puo' leggere via `rowData.record?.<field>`.
|
|
8046
|
+
* L'anchor non e' un marker — passiamo la posizione esplicita via
|
|
8047
|
+
* `infoWindowOptions.position`.
|
|
8048
|
+
*/
|
|
8049
|
+
openWaypointInfo(dot: any, $event?: any): void;
|
|
7821
8050
|
/**
|
|
7822
8051
|
* Apre la stessa info window usata dai marker quando l'utente clicca un poligono.
|
|
7823
8052
|
* Se non e disponibile un anchor marker, usa la posizione click o il centro geometrico del poligono.
|
|
@@ -10412,7 +10641,7 @@ declare class NumberEditorComponent implements IFieldEditor, AfterViewInit {
|
|
|
10412
10641
|
static ɵcmp: i0.ɵɵComponentDeclaration<NumberEditorComponent, "wuic-number-editor", never, { "record": { "alias": "record"; "required": false; }; "field": { "alias": "field"; "required": false; }; "metaInfo": { "alias": "metaInfo"; "required": false; }; "isFilter": { "alias": "isFilter"; "required": false; }; "nestedIndex": { "alias": "nestedIndex"; "required": false; }; "triggerProp": { "alias": "triggerProp"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, {}, never, never, true, never>;
|
|
10413
10642
|
}
|
|
10414
10643
|
|
|
10415
|
-
declare class LookupEditorComponent implements IFieldEditor, AfterViewInit, AfterViewChecked, OnChanges {
|
|
10644
|
+
declare class LookupEditorComponent implements IFieldEditor, AfterViewInit, AfterViewChecked, OnChanges, OnDestroy {
|
|
10416
10645
|
private trslSrv;
|
|
10417
10646
|
private cd;
|
|
10418
10647
|
private hostElementRef;
|
|
@@ -10459,6 +10688,14 @@ declare class LookupEditorComponent implements IFieldEditor, AfterViewInit, Afte
|
|
|
10459
10688
|
* Riferimento a elementi o componenti figli usato dalla logica UI per nested source.
|
|
10460
10689
|
*/
|
|
10461
10690
|
nestedSource: DataSourceComponent;
|
|
10691
|
+
/**
|
|
10692
|
+
* Riferimento al p-autoComplete PrimeNG, usato per re-triggerare l'apertura
|
|
10693
|
+
* della dropdown dopo che il layout di focus-expand inline-cell-editing ha
|
|
10694
|
+
* riposizionato l'input (cell -> 360px). Senza re-show, la prima onDropdownClick
|
|
10695
|
+
* calcola la posizione overlay sulla larghezza vecchia e l'overlay puo' restare
|
|
10696
|
+
* chiuso o ancorato male.
|
|
10697
|
+
*/
|
|
10698
|
+
autoCompleteRef: AutoComplete;
|
|
10462
10699
|
/**
|
|
10463
10700
|
* Collezione dati per items, consumata dal rendering e dalle operazioni del componente.
|
|
10464
10701
|
*/
|
|
@@ -10487,6 +10724,7 @@ declare class LookupEditorComponent implements IFieldEditor, AfterViewInit, Afte
|
|
|
10487
10724
|
*/
|
|
10488
10725
|
constructor(trslSrv: TranslationManagerService, cd: ChangeDetectorRef, hostElementRef: ElementRef<HTMLElement>);
|
|
10489
10726
|
ngOnChanges(_changes: SimpleChanges): void;
|
|
10727
|
+
ngOnDestroy(): void;
|
|
10490
10728
|
/**
|
|
10491
10729
|
* Legge `mc_props_bag.lookup.virtualize` e determina se abilitare il virtual scroll del p-autocomplete.
|
|
10492
10730
|
* Supporta boolean/number/string oppure object con `enabled`.
|
|
@@ -10501,6 +10739,52 @@ declare class LookupEditorComponent implements IFieldEditor, AfterViewInit, Afte
|
|
|
10501
10739
|
* Completa inizializzazione dopo il rendering della view e collega riferimenti UI.
|
|
10502
10740
|
*/
|
|
10503
10741
|
ngAfterViewInit(): void;
|
|
10742
|
+
/**
|
|
10743
|
+
* Subscribe a `record[mc_nome_colonna]` BehaviorSubject: quando un FK viene
|
|
10744
|
+
* settato programmaticamente (es. importazione documento sorgente, CAI
|
|
10745
|
+
* setRecordValue, custom callback) e il valore NON e' presente in `items`
|
|
10746
|
+
* — perche' la prima fetch e' avvenuta prima che il setRecordValue propagasse,
|
|
10747
|
+
* o il valore e' fuori dalla pagina corrente del combo — avviare una
|
|
10748
|
+
* second-stage fetch filtrata sul valore per recuperare il record correlato e
|
|
10749
|
+
* popolare `__lookup_obj` (cosi' il dropdown mostra il display text).
|
|
10750
|
+
*
|
|
10751
|
+
* Skip cases:
|
|
10752
|
+
* - lookupByID multi-value (isFilter operatore=eqor, multiple_check)
|
|
10753
|
+
* - prima emit del BS (init flow gia' coperto sopra)
|
|
10754
|
+
* - valore null/undefined (utente ha clearato)
|
|
10755
|
+
* - valore gia' nei items
|
|
10756
|
+
* - hasActiveLookupQuery true (utente sta typing una query manuale)
|
|
10757
|
+
*/
|
|
10758
|
+
private installProgrammaticValueAutoFetch;
|
|
10759
|
+
/**
|
|
10760
|
+
* Workaround per inline-cell-editing + focus-expand:
|
|
10761
|
+
*
|
|
10762
|
+
* Quando la lookup vive dentro una <wuic-list-grid> con `md_inline_cell_editing=1`,
|
|
10763
|
+
* il primo click sul chevron (button.p-autocomplete-dropdown) genera questa sequenza:
|
|
10764
|
+
* 1. mousedown sul chevron alla posizione X
|
|
10765
|
+
* 2. PrimeNG sposta il focus sull'input
|
|
10766
|
+
* 3. il selector CSS `:focus-within` sul TD espande l'input da cell-width a 360px
|
|
10767
|
+
* 4. il chevron, che e' inline-flex accanto all'input, si sposta verso destra
|
|
10768
|
+
* 5. mouseup avviene alla posizione X originale, che ora e' DENTRO l'input
|
|
10769
|
+
* espanso (non piu' sul chevron)
|
|
10770
|
+
* 6. il browser NON emette `click` perche' mouseup-target != mousedown-target
|
|
10771
|
+
* 7. di conseguenza ne il PrimeNG handler interno ne il nostro
|
|
10772
|
+
* `(onDropdownClick)` ricevono mai l'evento -> overlay mai aperto
|
|
10773
|
+
*
|
|
10774
|
+
* Soluzione: ascoltare `mousedown` sul chevron (che PARTE prima di qualunque
|
|
10775
|
+
* reflow e si triggera regolarmente) e schedulare `show()` con un delay che
|
|
10776
|
+
* lascia stabilizzare il focus-expand. Cosi' l'overlay si aggancia al chevron
|
|
10777
|
+
* nella sua posizione finale, esattamente come ci si aspetta.
|
|
10778
|
+
*/
|
|
10779
|
+
/**
|
|
10780
|
+
* Handler delegato dal template (`<p-autoComplete (mousedown)="onLookupHostMousedown($event)">`).
|
|
10781
|
+
* Si triggera al mousedown su qualunque punto dell'autoComplete, e in particolare
|
|
10782
|
+
* cattura il mousedown sul chevron PRIMA del reflow del focus-expand.
|
|
10783
|
+
*
|
|
10784
|
+
* Solo dentro inline-cell-editing: in normale edit form il click funziona gia'
|
|
10785
|
+
* nativamente (nessun focus-expand che muove il chevron) e qui ritorniamo NOOP.
|
|
10786
|
+
*/
|
|
10787
|
+
onLookupHostMousedown(event: MouseEvent): void;
|
|
10504
10788
|
ngAfterViewChecked(): void;
|
|
10505
10789
|
private applyAriaLabelledByToInput;
|
|
10506
10790
|
/**
|
|
@@ -10531,6 +10815,22 @@ declare class LookupEditorComponent implements IFieldEditor, AfterViewInit, Afte
|
|
|
10531
10815
|
private restoreLookupInputFocusIfNeeded;
|
|
10532
10816
|
onLookupOverlayShow(): void;
|
|
10533
10817
|
onLookupOverlayHide(): void;
|
|
10818
|
+
/**
|
|
10819
|
+
* Re-triggera l'apertura della dropdown dopo un breve delay.
|
|
10820
|
+
*
|
|
10821
|
+
* Use case: quando la lookup vive dentro una <wuic-list-grid> con
|
|
10822
|
+
* `md_inline_cell_editing=1`, il click sul chevron mette il focus sull'input
|
|
10823
|
+
* e attiva la regola CSS `:focus-within` che espande l'input da cell-width a
|
|
10824
|
+
* 360px (Excel-like). PrimeNG calcola la posizione dell'overlay e fa il
|
|
10825
|
+
* primo `show()` PRIMA che il reflow CSS sia stato applicato, quindi
|
|
10826
|
+
* l'overlay puo' risultare chiuso, mal posizionato o riagganciato a
|
|
10827
|
+
* un'ancora di larghezza vecchia.
|
|
10828
|
+
*
|
|
10829
|
+
* Il delay di 120ms lascia che il reflow del focus-expand si stabilizzi,
|
|
10830
|
+
* poi forziamo un secondo `show()` che ricalcola posizione/larghezza
|
|
10831
|
+
* coerenti con l'input gia' espanso.
|
|
10832
|
+
*/
|
|
10833
|
+
onDropdownClickHandler(_event: any): void;
|
|
10534
10834
|
static ɵfac: i0.ɵɵFactoryDeclaration<LookupEditorComponent, never>;
|
|
10535
10835
|
static ɵcmp: i0.ɵɵComponentDeclaration<LookupEditorComponent, "wuic-lookup-editor", never, { "record": { "alias": "record"; "required": false; }; "field": { "alias": "field"; "required": false; }; "metaInfo": { "alias": "metaInfo"; "required": false; }; "isFilter": { "alias": "isFilter"; "required": false; }; "nestedIndex": { "alias": "nestedIndex"; "required": false; }; "triggerProp": { "alias": "triggerProp"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; }, {}, never, never, true, never>;
|
|
10536
10836
|
}
|
|
@@ -11125,6 +11425,23 @@ declare class FieldEditorComponent implements OnInit, OnChanges, OnDestroy, DoCh
|
|
|
11125
11425
|
* @returns Valore calcolato dinamicamente a partire dallo stato corrente del componente.
|
|
11126
11426
|
*/
|
|
11127
11427
|
get classes(): string | null;
|
|
11428
|
+
/**
|
|
11429
|
+
* True quando il field-editor e' renderizzato dentro una cella di una
|
|
11430
|
+
* list-grid in `md_inline_cell_editing` mode. In quel contesto la
|
|
11431
|
+
* larghezza della cella e' governata dalla colonna del p-table (e da
|
|
11432
|
+
* `mc_ui_grid_size_width`), non dalla form-default `mc_ui_size_width`
|
|
11433
|
+
* — applicare 300px sull'editor o sul span readonly inflerebbe le
|
|
11434
|
+
* colonne. Il caller (list-grid row template) NON passa un input
|
|
11435
|
+
* dedicato: identifichiamo l'inline mode dal flag tableMetadata.
|
|
11436
|
+
*/
|
|
11437
|
+
get isInlineCellHost(): boolean;
|
|
11438
|
+
/**
|
|
11439
|
+
* Width da applicare all'editor / span readonly. In inline cell host
|
|
11440
|
+
* usa `100%` (la cella ha gia' la sua larghezza dalla colonna). Fuori
|
|
11441
|
+
* inline-grid (form/dialog) usa la logica storica:
|
|
11442
|
+
* `mc_ui_size_width || widgetMap[type].width || undefined`.
|
|
11443
|
+
*/
|
|
11444
|
+
get widgetWidth(): string | undefined;
|
|
11128
11445
|
private syncDomAttrs;
|
|
11129
11446
|
/**
|
|
11130
11447
|
* function Object() { [native code] }
|
|
@@ -11145,6 +11462,16 @@ declare class FieldEditorComponent implements OnInit, OnChanges, OnDestroy, DoCh
|
|
|
11145
11462
|
*/
|
|
11146
11463
|
ngOnChanges(_changes: SimpleChanges): void;
|
|
11147
11464
|
ngOnDestroy(): void;
|
|
11465
|
+
/**
|
|
11466
|
+
* Valore formattato per il readonly span (template: `{{readonlySpanValue}}`).
|
|
11467
|
+
* Aggiornato reattivamente in setupReadonlySpanBinding subscribendo alla
|
|
11468
|
+
* BehaviorSubject del campo: quando un setRecordValue programmatico (es.
|
|
11469
|
+
* default async di sp_next_progressivo) chiama BS.next, lo span si
|
|
11470
|
+
* aggiorna senza dover rendere `formatGridViewValue` impure.
|
|
11471
|
+
*/
|
|
11472
|
+
readonlySpanValue: unknown;
|
|
11473
|
+
private readonlySpanSub?;
|
|
11474
|
+
private setupReadonlySpanBinding;
|
|
11148
11475
|
/**
|
|
11149
11476
|
* Rileva mutazioni in-place del tipo widget (es. da text a dictionary nel designer)
|
|
11150
11477
|
* e riallinea il componente editor visualizzato.
|
|
@@ -13929,8 +14256,18 @@ declare class WuicErrorDialogComponent implements OnInit, OnDestroy {
|
|
|
13929
14256
|
private cdr;
|
|
13930
14257
|
visible: boolean;
|
|
13931
14258
|
currentException: CustomException | null;
|
|
14259
|
+
/**
|
|
14260
|
+
* Set di firme errori che l'utente ha gia' chiuso esplicitamente in
|
|
14261
|
+
* questa sessione (dismissedSignatures). Il dialog NON si riapre per
|
|
14262
|
+
* eventi successivi con stessa firma -> evita il loop "fetch fallisce
|
|
14263
|
+
* -> dialog si riapre" che impedisce all'utente di intervenire sulla
|
|
14264
|
+
* pagina sotto (es. aprire metadata-editor per riparare la causa).
|
|
14265
|
+
* Firma = `<traceId>` se presente, altrimenti `<title>::<body>`.
|
|
14266
|
+
*/
|
|
14267
|
+
private dismissedSignatures;
|
|
13932
14268
|
private sub?;
|
|
13933
14269
|
constructor(cdr: ChangeDetectorRef);
|
|
14270
|
+
private signatureOf;
|
|
13934
14271
|
ngOnInit(): void;
|
|
13935
14272
|
ngOnDestroy(): void;
|
|
13936
14273
|
formatParameters(params: Record<string, unknown> | undefined | null): string;
|