@foxeltech/angular-ui 0.3.1 → 0.7.44
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/archivo/archivo-400-latin-ext.woff2 +0 -0
- package/archivo/archivo-400-latin.woff2 +0 -0
- package/archivo/archivo-400-vietnamese.woff2 +0 -0
- package/archivo/archivo-500-latin-ext.woff2 +0 -0
- package/archivo/archivo-500-latin.woff2 +0 -0
- package/archivo/archivo-500-vietnamese.woff2 +0 -0
- package/archivo/archivo-600-latin-ext.woff2 +0 -0
- package/archivo/archivo-600-latin.woff2 +0 -0
- package/archivo/archivo-600-vietnamese.woff2 +0 -0
- package/archivo/archivo-700-latin-ext.woff2 +0 -0
- package/archivo/archivo-700-latin.woff2 +0 -0
- package/archivo/archivo-700-vietnamese.woff2 +0 -0
- package/components.css +12 -12
- package/dialogs.css +2 -2
- package/fesm2022/foxeltech-angular-ui-chart.mjs +560 -0
- package/fesm2022/foxeltech-angular-ui-chart.mjs.map +1 -0
- package/fesm2022/foxeltech-angular-ui-flow.mjs +211 -0
- package/fesm2022/foxeltech-angular-ui-flow.mjs.map +1 -0
- package/fesm2022/foxeltech-angular-ui-rich-text.mjs +156 -0
- package/fesm2022/foxeltech-angular-ui-rich-text.mjs.map +1 -0
- package/fesm2022/foxeltech-angular-ui.mjs +1580 -1409
- package/fesm2022/foxeltech-angular-ui.mjs.map +1 -1
- package/fonts.css +462 -138
- package/fx-icons.svg +97 -0
- package/ibm-plex-mono/ibm-plex-mono-400-cyrillic-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-cyrillic.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-latin-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-latin.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-vietnamese.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-cyrillic-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-cyrillic.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-latin-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-latin.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-vietnamese.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-cyrillic-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-cyrillic.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-latin-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-latin.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-vietnamese.woff2 +0 -0
- package/newsreader/newsreader-400-latin-ext.woff2 +0 -0
- package/newsreader/newsreader-400-latin.woff2 +0 -0
- package/newsreader/newsreader-400-vietnamese.woff2 +0 -0
- package/newsreader/newsreader-500-latin-ext.woff2 +0 -0
- package/newsreader/newsreader-500-latin.woff2 +0 -0
- package/newsreader/newsreader-500-vietnamese.woff2 +0 -0
- package/newsreader/newsreader-600-latin-ext.woff2 +0 -0
- package/newsreader/newsreader-600-latin.woff2 +0 -0
- package/newsreader/newsreader-600-vietnamese.woff2 +0 -0
- package/package.json +18 -9
- package/source-serif-4/source-serif-4-400-cyrillic-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-cyrillic.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-greek.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-latin-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-latin.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-vietnamese.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-cyrillic-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-cyrillic.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-greek.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-latin-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-latin.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-vietnamese.woff2 +0 -0
- package/src/lib/styles/components.css +12 -12
- package/src/lib/styles/dialogs.css +2 -2
- package/src/lib/styles/fonts.css +462 -138
- package/src/lib/styles/tailwind.css +1 -2
- package/src/lib/styles/theme.css +596 -69
- package/src/lib/styles/tokens.css +56 -19
- package/src/lib/styles/utilities.css +4 -1
- package/src/lib/ui/components/bar-list/bar-list.component.html +29 -0
- package/src/lib/ui/components/button/button.component.html +20 -18
- package/src/lib/ui/components/checkbox/checkbox.component.html +3 -3
- package/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.html +2 -2
- package/src/lib/ui/components/code-block/code-block.component.html +8 -0
- package/src/lib/ui/components/datetime-picker/datetime-picker.component.html +49 -27
- package/src/lib/ui/components/datetime-picker/datetime-picker.component.scss +25 -137
- package/src/lib/ui/components/dnd-upload/dnd-upload.component.html +3 -3
- package/src/lib/ui/components/drawer/drawer.component.html +36 -13
- package/src/lib/ui/components/drawer/drawer.component.scss +104 -18
- package/src/lib/ui/components/empty-state/empty-state.component.html +2 -2
- package/src/lib/ui/components/facets-rail/facets-rail.component.html +42 -0
- package/src/lib/ui/components/filter-pills/filter-pills.component.html +16 -0
- package/src/lib/ui/components/hero-icon/hero-icon.component.html +10 -9
- package/src/lib/ui/components/info-field/info-field.component.html +1 -1
- package/src/lib/ui/components/input/input.component.html +6 -6
- package/src/lib/ui/components/kanban-board/kanban-board.component.html +1 -1
- package/src/lib/ui/components/kanban-board/kanban-board.component.scss +9 -9
- package/src/lib/ui/components/list-row/list-row.component.html +20 -0
- package/src/lib/ui/components/loading-panel/loading-panel.component.html +1 -1
- package/src/lib/ui/components/master-detail/master-detail.component.css +22 -0
- package/src/lib/ui/components/master-detail/master-detail.component.html +42 -10
- package/src/lib/ui/components/menu/menu.component.html +27 -0
- package/src/lib/ui/components/pending-badge/pending-badge.component.html +15 -0
- package/src/lib/ui/components/pipeline-stepper/pipeline-stepper.component.html +45 -0
- package/src/lib/ui/components/project-card/project-card.component.html +102 -0
- package/src/lib/ui/components/radio-button/radio-button.component.html +4 -4
- package/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.html +4 -4
- package/src/lib/ui/components/sample-frame/sample-frame.component.html +18 -0
- package/src/lib/ui/components/score-badge/score-badge.component.html +7 -0
- package/src/lib/ui/components/screenshot-frame/screenshot-frame.component.html +40 -0
- package/src/lib/ui/components/search-bar/search-bar.component.html +1 -1
- package/src/lib/ui/components/section-card/section-card.component.html +19 -6
- package/src/lib/ui/components/segmented/segmented.component.html +42 -0
- package/src/lib/ui/components/segmented/segmented.component.scss +12 -0
- package/src/lib/ui/components/select/select.component.html +6 -6
- package/src/lib/ui/components/skeleton-detail/skeleton-detail.component.html +2 -2
- package/src/lib/ui/components/skeleton-list/skeleton-list.component.html +1 -1
- package/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.html +5 -5
- package/src/lib/ui/components/slider/slider.component.html +8 -8
- package/src/lib/ui/components/sparkbar/sparkbar.component.html +14 -0
- package/src/lib/ui/components/stage-dots/stage-dots.component.html +13 -0
- package/src/lib/ui/components/stat-cards/stat-cards.component.html +45 -12
- package/src/lib/ui/components/status-dot/status-dot.component.html +13 -0
- package/src/lib/ui/components/switch/switch.component.html +1 -1
- package/src/lib/ui/components/tab-group/tab-group.component.html +41 -12
- package/src/lib/ui/components/tab-group/tab-group.component.scss +41 -1
- package/src/lib/ui/components/table-cell/table-cell.component.html +2 -2
- package/src/lib/ui/components/tag/tag.component.html +4 -4
- package/src/lib/ui/components/theme-picker/theme-picker.component.html +44 -0
- package/src/lib/ui/components/toast/toast.component.html +7 -7
- package/src/lib/ui/components/toast-container/toast-container.component.html +1 -0
- package/src/lib/ui/components/tree-diagram/tree-diagram.component.html +5 -5
- package/tailwind.css +1 -2
- package/theme.css +596 -69
- package/tokens.css +56 -19
- package/types/foxeltech-angular-ui-chart.d.ts +65 -0
- package/types/foxeltech-angular-ui-flow.d.ts +96 -0
- package/types/foxeltech-angular-ui-rich-text.d.ts +35 -0
- package/types/foxeltech-angular-ui.d.ts +1018 -395
- package/utilities.css +4 -1
- package/BeVietnamPro/BeVietnamPro-Bold.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-ExtraLight.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Light.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Medium.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Regular.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-SemiBold.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Thin.woff2 +0 -0
- package/SpaceMono-Regular.woff2 +0 -0
- package/dm-sans/DMSans-Bold.woff2 +0 -0
- package/dm-sans/DMSans-Light.woff2 +0 -0
- package/dm-sans/DMSans-Medium.woff2 +0 -0
- package/dm-sans/DMSans-Regular.woff2 +0 -0
- package/dm-sans/DMSans-SemiBold.woff2 +0 -0
- package/dm-sans/DMSans-Thin.woff2 +0 -0
- package/orbitron/Orbitron-Bold.woff2 +0 -0
- package/orbitron/Orbitron-Medium.woff2 +0 -0
- package/orbitron/Orbitron-Regular.woff2 +0 -0
- package/orbitron/Orbitron-SemiBold.woff2 +0 -0
- package/roboto/Roboto-Black.woff2 +0 -0
- package/roboto/Roboto-BlackItalic.woff2 +0 -0
- package/roboto/Roboto-Bold.woff2 +0 -0
- package/roboto/Roboto-BoldCondensed.woff2 +0 -0
- package/roboto/Roboto-BoldCondensedItalic.woff2 +0 -0
- package/roboto/Roboto-BoldItalic.woff2 +0 -0
- package/roboto/Roboto-Condensed.woff2 +0 -0
- package/roboto/Roboto-CondensedItalic.woff2 +0 -0
- package/roboto/Roboto-Italic.woff2 +0 -0
- package/roboto/Roboto-Light.woff2 +0 -0
- package/roboto/Roboto-LightItalic.woff2 +0 -0
- package/roboto/Roboto-Medium.woff2 +0 -0
- package/roboto/Roboto-MediumItalic.woff2 +0 -0
- package/roboto/Roboto-Regular.woff2 +0 -0
- package/roboto/Roboto-Thin.woff2 +0 -0
- package/roboto/Roboto-ThinItalic.woff2 +0 -0
- package/src/lib/ui/components/chart/chart.component.html +0 -20
- package/src/lib/ui/components/chart/chart.component.scss +0 -49
- package/src/lib/ui/components/flow-connection/flow-connection.component.html +0 -10
- package/src/lib/ui/components/flow-connection/flow-connection.component.scss +0 -0
- package/src/lib/ui/components/rich-text-area/rich-text-area.component.html +0 -3
- package/src/lib/ui/components/rich-text-area/rich-text-area.component.scss +0 -18
|
@@ -1,46 +1,21 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { OnDestroy, Injector, DestroyRef, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, Provider, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, RendererFactory2, OnChanges, SimpleChanges, AfterContentInit,
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { OnDestroy, Injector, DestroyRef, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, Provider, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, RendererFactory2, OnChanges, SimpleChanges, AfterContentInit, AfterViewChecked, Renderer2, InjectionToken, QueryList, NgZone } from '@angular/core';
|
|
3
3
|
import * as _foxeltech_angular_ui from '@foxeltech/angular-ui';
|
|
4
|
-
import
|
|
5
|
-
import { MatPaginator } from '@angular/material/paginator';
|
|
6
|
-
import * as i54 from '@angular/material/table';
|
|
4
|
+
import { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';
|
|
5
|
+
import { MatPaginator, PageEvent } from '@angular/material/paginator';
|
|
7
6
|
import { MatTableDataSource, MatTable } from '@angular/material/table';
|
|
8
7
|
import { HttpClient, HttpEvent, HttpErrorResponse, HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
|
|
9
8
|
import * as rxjs from 'rxjs';
|
|
10
9
|
import { Observable, Subject } from 'rxjs';
|
|
11
|
-
import * as
|
|
12
|
-
import { NgForm, ValidationErrors,
|
|
13
|
-
import * as
|
|
14
|
-
import { MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
15
|
-
import * as i41 from '@angular/router';
|
|
10
|
+
import * as i1$1 from '@angular/forms';
|
|
11
|
+
import { NgForm, ValidationErrors, ControlValueAccessor, NgControl } from '@angular/forms';
|
|
12
|
+
import * as i2 from '@angular/router';
|
|
16
13
|
import { ActivatedRouteSnapshot, RouterStateSnapshot, ResolveFn, CanActivate, Router } from '@angular/router';
|
|
17
14
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
18
15
|
import * as i1 from '@ngx-translate/core';
|
|
19
16
|
import { TranslateService } from '@ngx-translate/core';
|
|
20
|
-
import {
|
|
21
|
-
import * as i47 from 'ngx-vflow';
|
|
22
|
-
import { Node, Edge, Connection } from 'ngx-vflow';
|
|
23
|
-
import * as i66 from '@angular/cdk/drag-drop';
|
|
17
|
+
import { ComponentType } from '@angular/cdk/portal';
|
|
24
18
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
25
|
-
import * as i39 from '@angular/common';
|
|
26
|
-
import * as i42 from '@danielmoncada/angular-datetime-picker';
|
|
27
|
-
import * as i43 from '@danielmoncada/angular-datetime-picker-moment-adapter';
|
|
28
|
-
import * as i46 from '@dimaslz/ng-heroicons';
|
|
29
|
-
import * as i48 from 'ngx-echarts';
|
|
30
|
-
import * as i49 from '@angular/material/select';
|
|
31
|
-
import * as i50 from '@angular/material/radio';
|
|
32
|
-
import * as i51 from '@angular/material/button';
|
|
33
|
-
import * as i52 from '@angular/material/icon';
|
|
34
|
-
import * as i55 from '@angular/material/snack-bar';
|
|
35
|
-
import * as i57 from '@angular/material/checkbox';
|
|
36
|
-
import * as i58 from '@angular/material/card';
|
|
37
|
-
import * as i59 from '@angular/material/datepicker';
|
|
38
|
-
import * as i60 from '@angular/material/timepicker';
|
|
39
|
-
import * as i61 from '@angular/material/badge';
|
|
40
|
-
import * as i62 from '@angular/material/expansion';
|
|
41
|
-
import * as i63 from '@angular/material/form-field';
|
|
42
|
-
import * as i64 from '@angular/material/menu';
|
|
43
|
-
import * as i65 from '@angular/material/tooltip';
|
|
44
19
|
|
|
45
20
|
declare abstract class BaseComponent implements OnDestroy {
|
|
46
21
|
protected injector: Injector;
|
|
@@ -48,8 +23,8 @@ declare abstract class BaseComponent implements OnDestroy {
|
|
|
48
23
|
protected destroyRef: DestroyRef;
|
|
49
24
|
constructor(injector?: Injector);
|
|
50
25
|
ngOnDestroy(): void;
|
|
51
|
-
static ɵfac:
|
|
52
|
-
static ɵdir:
|
|
26
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent, never>;
|
|
27
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseComponent, never, never, {}, {}, never, never, true, never>;
|
|
53
28
|
}
|
|
54
29
|
|
|
55
30
|
declare class HttpWrapper {
|
|
@@ -103,26 +78,45 @@ declare class FxToastrService {
|
|
|
103
78
|
error(message: string, title?: string): void;
|
|
104
79
|
info(message: string, title?: string): void;
|
|
105
80
|
warning(message: string, title?: string): void;
|
|
106
|
-
static ɵfac:
|
|
107
|
-
static ɵprov:
|
|
81
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxToastrService, never>;
|
|
82
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FxToastrService>;
|
|
108
83
|
}
|
|
109
84
|
|
|
110
85
|
interface TableResult<T> {
|
|
111
86
|
data: T[];
|
|
112
87
|
total: number;
|
|
113
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Filter bag for BaseTable screens. The platform-wide keys are declared so
|
|
91
|
+
* templates keep dot access under noPropertyAccessFromIndexSignature;
|
|
92
|
+
* screen-specific keys ride on the index signature (bracket access).
|
|
93
|
+
*/
|
|
94
|
+
interface FxTableFilters {
|
|
95
|
+
keyword?: string;
|
|
96
|
+
status?: string;
|
|
97
|
+
statuses?: string[];
|
|
98
|
+
severity?: string;
|
|
99
|
+
riskLevel?: string;
|
|
100
|
+
priority?: string;
|
|
101
|
+
category?: string;
|
|
102
|
+
integrityLevel?: string;
|
|
103
|
+
tags?: string[];
|
|
104
|
+
name?: string;
|
|
105
|
+
groupId?: string;
|
|
106
|
+
[key: string]: any;
|
|
107
|
+
}
|
|
114
108
|
declare class BaseTableComponent<T = any> extends BaseComponent implements OnInit, AfterViewInit {
|
|
115
109
|
api: HttpWrapper;
|
|
116
|
-
modal:
|
|
110
|
+
modal: MatDialog;
|
|
117
111
|
ref: ChangeDetectorRef;
|
|
118
112
|
dataSource: MatTableDataSource<T, MatPaginator>;
|
|
119
113
|
cols: string[];
|
|
120
114
|
total: number;
|
|
121
115
|
page: number;
|
|
122
116
|
pageSize: number;
|
|
123
|
-
filters:
|
|
117
|
+
filters: FxTableFilters;
|
|
124
118
|
loading: boolean;
|
|
125
|
-
expandedElement:
|
|
119
|
+
expandedElement: T | null;
|
|
126
120
|
toastr: FxToastrService;
|
|
127
121
|
_lock: boolean;
|
|
128
122
|
keywordChange$: Subject<string>;
|
|
@@ -164,8 +158,8 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
|
|
|
164
158
|
};
|
|
165
159
|
};
|
|
166
160
|
paginator: MatPaginator;
|
|
167
|
-
table: MatTable<
|
|
168
|
-
constructor(injector: Injector, api: HttpWrapper, modal:
|
|
161
|
+
readonly table: _angular_core.Signal<MatTable<any>>;
|
|
162
|
+
constructor(injector: Injector, api: HttpWrapper, modal: MatDialog, ref: ChangeDetectorRef);
|
|
169
163
|
ngOnInit(): void;
|
|
170
164
|
init(): void;
|
|
171
165
|
ngAfterViewInit(): void;
|
|
@@ -186,22 +180,22 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
|
|
|
186
180
|
setDataSource(result: any): void;
|
|
187
181
|
private _fetchSeq;
|
|
188
182
|
fetch(): Promise<void>;
|
|
189
|
-
onPageChange(event:
|
|
183
|
+
onPageChange(event: PageEvent): Promise<void>;
|
|
190
184
|
resolve(): {};
|
|
191
185
|
empty(): {};
|
|
192
186
|
onKeywordChange(keyword: string): void;
|
|
193
187
|
create(): Promise<void>;
|
|
194
|
-
update(model:
|
|
195
|
-
view(model:
|
|
196
|
-
delete(model:
|
|
197
|
-
remove(model:
|
|
188
|
+
update(model: T): Promise<void>;
|
|
189
|
+
view(model: T): Promise<void>;
|
|
190
|
+
delete(model: T): Promise<void>;
|
|
191
|
+
remove(model: T): Promise<any>;
|
|
198
192
|
tagClass(tag: string): _foxeltech_angular_ui.TagType;
|
|
199
193
|
capitalize(label: string): string;
|
|
200
194
|
value(model: any, key: string, defaultValue?: any): any;
|
|
201
195
|
toggleExpand(element: any): void;
|
|
202
196
|
updateStatus(params: any): Promise<void>;
|
|
203
|
-
static ɵfac:
|
|
204
|
-
static ɵdir:
|
|
197
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseTableComponent<any>, never>;
|
|
198
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseTableComponent<any>, never, never, {}, {}, never, never, true, never>;
|
|
205
199
|
}
|
|
206
200
|
|
|
207
201
|
/**
|
|
@@ -221,10 +215,10 @@ declare class BaseMasterDetailComponent<T = any> extends BaseTableComponent<T> {
|
|
|
221
215
|
selected: T | null;
|
|
222
216
|
detailMap: Map<string, any>;
|
|
223
217
|
detailLoading: Set<string>;
|
|
224
|
-
constructor(injector: Injector, api: HttpWrapper, modal:
|
|
218
|
+
constructor(injector: Injector, api: HttpWrapper, modal: MatDialog, ref: ChangeDetectorRef);
|
|
225
219
|
/** Key the row id is read from. Override idOf() instead for composite ids. */
|
|
226
220
|
protected idKey: string;
|
|
227
|
-
idOf(row:
|
|
221
|
+
idOf(row: T): string | null;
|
|
228
222
|
protected detailUrl(id: string): string | null;
|
|
229
223
|
/** What the detail pane shows: the fetched detail when cached, else the row. */
|
|
230
224
|
get detail(): any;
|
|
@@ -234,8 +228,8 @@ declare class BaseMasterDetailComponent<T = any> extends BaseTableComponent<T> {
|
|
|
234
228
|
autoSelectFirst(): void;
|
|
235
229
|
selectItem(row: T): void;
|
|
236
230
|
fetchDetail(id: string): void;
|
|
237
|
-
static ɵfac:
|
|
238
|
-
static ɵdir:
|
|
231
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseMasterDetailComponent<any>, never>;
|
|
232
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseMasterDetailComponent<any>, never, never, {}, {}, never, never, true, never>;
|
|
239
233
|
}
|
|
240
234
|
|
|
241
235
|
declare class BaseDialogComponent<T = any> extends BaseComponent implements AfterViewInit, OnInit {
|
|
@@ -244,7 +238,7 @@ declare class BaseDialogComponent<T = any> extends BaseComponent implements Afte
|
|
|
244
238
|
toastr: FxToastrService;
|
|
245
239
|
api: HttpWrapper;
|
|
246
240
|
dialog: MatDialog;
|
|
247
|
-
ngForm: NgForm
|
|
241
|
+
readonly ngForm: _angular_core.Signal<NgForm | undefined>;
|
|
248
242
|
method: string;
|
|
249
243
|
title: string;
|
|
250
244
|
model: any;
|
|
@@ -263,8 +257,8 @@ declare class BaseDialogComponent<T = any> extends BaseComponent implements Afte
|
|
|
263
257
|
updateInfo(params?: any): Promise<void>;
|
|
264
258
|
cancel(): void;
|
|
265
259
|
validate(): boolean;
|
|
266
|
-
static ɵfac:
|
|
267
|
-
static ɵdir:
|
|
260
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseDialogComponent<any>, never>;
|
|
261
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseDialogComponent<any>, never, never, {}, {}, never, never, true, never>;
|
|
268
262
|
}
|
|
269
263
|
|
|
270
264
|
declare class FxLoadingService {
|
|
@@ -274,8 +268,8 @@ declare class FxLoadingService {
|
|
|
274
268
|
stop(): void;
|
|
275
269
|
startAction(): void;
|
|
276
270
|
stopAction(): void;
|
|
277
|
-
static ɵfac:
|
|
278
|
-
static ɵprov:
|
|
271
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLoadingService, never>;
|
|
272
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FxLoadingService>;
|
|
279
273
|
}
|
|
280
274
|
|
|
281
275
|
declare class BaseResolver {
|
|
@@ -402,8 +396,8 @@ declare class NotificationService {
|
|
|
402
396
|
* Get connection ID
|
|
403
397
|
*/
|
|
404
398
|
getConnectionId(): string | null;
|
|
405
|
-
static ɵfac:
|
|
406
|
-
static ɵprov:
|
|
399
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationService, never>;
|
|
400
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationService>;
|
|
407
401
|
}
|
|
408
402
|
|
|
409
403
|
interface RealtimeTableEvent<T> {
|
|
@@ -482,6 +476,14 @@ declare class RealtimeTableSync<T = any> {
|
|
|
482
476
|
}
|
|
483
477
|
|
|
484
478
|
declare class FxUtils {
|
|
479
|
+
/** Dot-path accessor (lodash _.get replacement — supports 'a.b.c'). */
|
|
480
|
+
static get(obj: any, path: string, defaultValue?: any): any;
|
|
481
|
+
/** Dot-path setter (lodash _.set replacement — creates missing objects). */
|
|
482
|
+
static set(obj: any, path: string, value: any): any;
|
|
483
|
+
/** Structural equality (lodash _.isEqual replacement for plain data). */
|
|
484
|
+
static deepEqual(a: any, b: any): boolean;
|
|
485
|
+
/** Deep clone for plain data (objects/arrays/Date); functions stay by reference. */
|
|
486
|
+
static cloneDeep<T>(v: T): T;
|
|
485
487
|
private static preresolve;
|
|
486
488
|
static resolve(value: object): Promise<{}>;
|
|
487
489
|
static isNotNull(obj: any): boolean;
|
|
@@ -507,6 +509,14 @@ declare class FxUtils {
|
|
|
507
509
|
static convertColorFromVariable(name: string, alpha?: number, options?: {
|
|
508
510
|
legacyCommaSyntax?: boolean;
|
|
509
511
|
}): string;
|
|
512
|
+
/**
|
|
513
|
+
* Status/severity string → tag tone.
|
|
514
|
+
*
|
|
515
|
+
* Coerces instead of trusting the argument: every caller feeds this raw API
|
|
516
|
+
* values, and a numeric or null field used to throw
|
|
517
|
+
* "key.toLowerCase is not a function" and take the whole screen down.
|
|
518
|
+
* Non-string input simply falls through to the default tone.
|
|
519
|
+
*/
|
|
510
520
|
static getTagClass(key: string, isCriticalExist?: boolean): TagType;
|
|
511
521
|
static validateEmail(value: string): boolean;
|
|
512
522
|
/** Safe deep accessor with the org-wide empty placeholder. */
|
|
@@ -578,6 +588,25 @@ declare function toneBadge(tone: Tone | null): string;
|
|
|
578
588
|
*/
|
|
579
589
|
declare function toneColor(tone: Tone | null, alpha?: number): string;
|
|
580
590
|
|
|
591
|
+
/**
|
|
592
|
+
* Feature gating for the V2 rollout.
|
|
593
|
+
*
|
|
594
|
+
* Each app owns its own `environment.features` block, so the flags are passed
|
|
595
|
+
* in rather than read here — the library has no environment of its own.
|
|
596
|
+
*
|
|
597
|
+
* readonly knowledge = featureEnabled(environment.features, 'knowledge');
|
|
598
|
+
*
|
|
599
|
+
* Why a helper instead of `environment.features?.x`: call sites were drifting
|
|
600
|
+
* between truthy checks and `=== true`, some behind an `as any` cast that hides
|
|
601
|
+
* a typo in the flag name. One function keeps the semantics identical
|
|
602
|
+
* everywhere — a flag counts as on only when it is exactly `true`, so a missing
|
|
603
|
+
* block, a missing key or a stale string value all read as off.
|
|
604
|
+
*/
|
|
605
|
+
type FxFeatureFlags = Record<string, boolean | undefined> | undefined | null;
|
|
606
|
+
declare function featureEnabled(flags: FxFeatureFlags, name: string): boolean;
|
|
607
|
+
/** Convenience for templates that gate on several flags at once. */
|
|
608
|
+
declare function anyFeatureEnabled(flags: FxFeatureFlags, ...names: string[]): boolean;
|
|
609
|
+
|
|
581
610
|
declare class FxValidators {
|
|
582
611
|
/**
|
|
583
612
|
* Name fields: firstName, lastName, groupName, projectName, displayName
|
|
@@ -639,9 +668,9 @@ declare function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader;
|
|
|
639
668
|
declare class TranslationModule {
|
|
640
669
|
static forRoot(): ModuleWithProviders<TranslationModule>;
|
|
641
670
|
static forChild(): ModuleWithProviders<TranslationModule>;
|
|
642
|
-
static ɵfac:
|
|
643
|
-
static ɵmod:
|
|
644
|
-
static ɵinj:
|
|
671
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranslationModule, never>;
|
|
672
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<TranslationModule, never, [typeof i1.TranslateModule], [typeof i1.TranslateModule]>;
|
|
673
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<TranslationModule>;
|
|
645
674
|
}
|
|
646
675
|
|
|
647
676
|
declare class TranslationService {
|
|
@@ -655,8 +684,8 @@ declare class TranslationService {
|
|
|
655
684
|
setLanguage(lang: string): void;
|
|
656
685
|
loadTranslations(lang: string, path: string): void;
|
|
657
686
|
onLanguageChange(callback: (lang: string) => void): void;
|
|
658
|
-
static ɵfac:
|
|
659
|
-
static ɵprov:
|
|
687
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranslationService, never>;
|
|
688
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TranslationService>;
|
|
660
689
|
}
|
|
661
690
|
|
|
662
691
|
declare class PermissionService {
|
|
@@ -664,8 +693,8 @@ declare class PermissionService {
|
|
|
664
693
|
setPermissions(perms: string[]): void;
|
|
665
694
|
hasPermission(requiredPermissions: string[]): boolean;
|
|
666
695
|
getPermissions(): string[];
|
|
667
|
-
static ɵfac:
|
|
668
|
-
static ɵprov:
|
|
696
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionService, never>;
|
|
697
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PermissionService>;
|
|
669
698
|
}
|
|
670
699
|
|
|
671
700
|
declare class HasPermissionDirective {
|
|
@@ -674,18 +703,18 @@ declare class HasPermissionDirective {
|
|
|
674
703
|
private permissionService;
|
|
675
704
|
constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, permissionService: PermissionService);
|
|
676
705
|
set hasPermission(required: string | string[]);
|
|
677
|
-
static ɵfac:
|
|
678
|
-
static ɵdir:
|
|
706
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HasPermissionDirective, never>;
|
|
707
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HasPermissionDirective, "[hasPermission]", never, { "hasPermission": { "alias": "hasPermission"; "required": false; }; }, {}, never, never, true, never>;
|
|
679
708
|
}
|
|
680
709
|
|
|
681
710
|
declare class TrimOnBlurDirective {
|
|
682
711
|
private el;
|
|
712
|
+
readonly collapseWhitespace: _angular_core.InputSignal<boolean>;
|
|
683
713
|
private ngControl;
|
|
684
|
-
|
|
685
|
-
constructor(el: ElementRef<HTMLInputElement>, ngControl: NgControl);
|
|
714
|
+
constructor(el: ElementRef<HTMLInputElement>);
|
|
686
715
|
onBlur(): void;
|
|
687
|
-
static ɵfac:
|
|
688
|
-
static ɵdir:
|
|
716
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TrimOnBlurDirective, never>;
|
|
717
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TrimOnBlurDirective, "[appTrimOnBlur]", never, { "collapseWhitespace": { "alias": "appTrimOnBlurCollapse"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
689
718
|
}
|
|
690
719
|
|
|
691
720
|
declare class PermissionGuard implements CanActivate {
|
|
@@ -693,15 +722,15 @@ declare class PermissionGuard implements CanActivate {
|
|
|
693
722
|
private router;
|
|
694
723
|
constructor(permissionService: PermissionService, router: Router);
|
|
695
724
|
canActivate(route: any): boolean;
|
|
696
|
-
static ɵfac:
|
|
697
|
-
static ɵprov:
|
|
725
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionGuard, never>;
|
|
726
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PermissionGuard>;
|
|
698
727
|
}
|
|
699
728
|
|
|
700
729
|
declare class FxStorageService {
|
|
701
730
|
resolve(key: string, value?: any): any;
|
|
702
731
|
remove(key: string): void;
|
|
703
|
-
static ɵfac:
|
|
704
|
-
static ɵprov:
|
|
732
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxStorageService, never>;
|
|
733
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FxStorageService>;
|
|
705
734
|
}
|
|
706
735
|
|
|
707
736
|
declare class AuthStateService {
|
|
@@ -712,8 +741,8 @@ declare class AuthStateService {
|
|
|
712
741
|
setLoggedIn(value: boolean): void;
|
|
713
742
|
get isLoggedIn(): boolean;
|
|
714
743
|
handleUnauthorized(): void;
|
|
715
|
-
static ɵfac:
|
|
716
|
-
static ɵprov:
|
|
744
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthStateService, never>;
|
|
745
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AuthStateService>;
|
|
717
746
|
}
|
|
718
747
|
|
|
719
748
|
declare class AuthInterceptor implements HttpInterceptor {
|
|
@@ -721,8 +750,8 @@ declare class AuthInterceptor implements HttpInterceptor {
|
|
|
721
750
|
private handlingUnauthorized;
|
|
722
751
|
constructor(authState: AuthStateService);
|
|
723
752
|
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
724
|
-
static ɵfac:
|
|
725
|
-
static ɵprov:
|
|
753
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthInterceptor, never>;
|
|
754
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AuthInterceptor>;
|
|
726
755
|
}
|
|
727
756
|
|
|
728
757
|
interface Breadcrumb {
|
|
@@ -735,38 +764,81 @@ declare class BreadcrumbService {
|
|
|
735
764
|
set(breadcrumbs: Breadcrumb[]): void;
|
|
736
765
|
get(): rxjs.Observable<Breadcrumb[]>;
|
|
737
766
|
clear(): void;
|
|
738
|
-
static ɵfac:
|
|
739
|
-
static ɵprov:
|
|
767
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbService, never>;
|
|
768
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<BreadcrumbService>;
|
|
740
769
|
}
|
|
741
770
|
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<QuillStyleLoaderService>;
|
|
771
|
+
/** The six OgeniumDashboards themes. */
|
|
772
|
+
type OgTheme = 'porcelain' | 'charcoal' | 'ivory' | 'studio' | 'blueprint' | 'terminal';
|
|
773
|
+
declare const OG_THEMES: readonly OgTheme[];
|
|
774
|
+
declare const OG_LIGHT_THEMES: readonly OgTheme[];
|
|
775
|
+
/** Display metadata for theme pickers — accent/page swatches are brand constants. */
|
|
776
|
+
interface OgThemeMeta {
|
|
777
|
+
name: OgTheme;
|
|
778
|
+
label: string;
|
|
779
|
+
accent: string;
|
|
780
|
+
pageBg: string;
|
|
781
|
+
dark: boolean;
|
|
754
782
|
}
|
|
755
|
-
|
|
783
|
+
declare const OG_THEME_META: readonly OgThemeMeta[];
|
|
784
|
+
/**
|
|
785
|
+
* Theme NGƯỜI DÙNG được chọn (anh Tú chốt 31/08): chỉ còn một cặp
|
|
786
|
+
* light/dark. Bốn theme còn lại vẫn tồn tại đầy đủ trong theme.css và
|
|
787
|
+
* setTheme() vẫn nhận — chúng dùng cho trang /themes của demo và cho
|
|
788
|
+
* harness screenshot chạy ma trận 6 theme; chỉ **giấu khỏi picker**.
|
|
789
|
+
* Muốn mở lại: thêm tên vào mảng này, không phải dựng lại token.
|
|
790
|
+
*/
|
|
791
|
+
declare const OG_PICKER_THEMES: readonly OgTheme[];
|
|
792
|
+
/** OG_THEME_META đã lọc theo OG_PICKER_THEMES — nguồn duy nhất cho mọi picker. */
|
|
793
|
+
declare const OG_PICKER_THEME_META: readonly OgThemeMeta[];
|
|
794
|
+
/**
|
|
795
|
+
* V2 theme switching: one `data-og-theme` attribute on <html> selects the
|
|
796
|
+
* --og-* token block (theme.css). During the migration window the service
|
|
797
|
+
* also mirrors the legacy `light_theme` class on <body> so remotes built
|
|
798
|
+
* against the pre-V2 stylesheet keep resolving the correct palette
|
|
799
|
+
* (see the SKEW SHIELD note in theme.css).
|
|
800
|
+
*/
|
|
756
801
|
declare class ThemeService {
|
|
757
802
|
private renderer;
|
|
758
803
|
private lightClass;
|
|
759
804
|
private theme$;
|
|
760
805
|
themeStorageKey: string;
|
|
761
806
|
constructor(rendererFactory: RendererFactory2);
|
|
807
|
+
/** Primary API: activate one of the six V2 themes. */
|
|
808
|
+
setTheme(theme: OgTheme): void;
|
|
809
|
+
themeChanges(): Observable<OgTheme>;
|
|
810
|
+
getCurrentTheme(): OgTheme;
|
|
811
|
+
isLight(): boolean;
|
|
812
|
+
/** @deprecated V2: use setTheme(). Maps light→porcelain, dark→charcoal. */
|
|
762
813
|
setLightMode(enable: boolean): void;
|
|
814
|
+
/** @deprecated V2: use setTheme(). Flips between the two default themes. */
|
|
763
815
|
toggleTheme(): void;
|
|
764
|
-
themeChanges(): rxjs.Observable<"light" | "dark">;
|
|
765
|
-
getCurrentTheme(): 'light' | 'dark';
|
|
766
|
-
isLight(): boolean;
|
|
767
816
|
getLogoPath(): string;
|
|
768
|
-
|
|
769
|
-
|
|
817
|
+
private isLightTheme;
|
|
818
|
+
private readSavedTheme;
|
|
819
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
820
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
interface FxConfirmOptions {
|
|
824
|
+
title?: string;
|
|
825
|
+
message?: string;
|
|
826
|
+
confirmLabel?: string;
|
|
827
|
+
cancelLabel?: string;
|
|
828
|
+
}
|
|
829
|
+
/**
|
|
830
|
+
* Thin façade over MatDialog so app code never imports @angular/material
|
|
831
|
+
* directly (behavior-layer rule, Playbook §5.1). Same semantics — the
|
|
832
|
+
* returned ref is the Material one, typed through this service.
|
|
833
|
+
*/
|
|
834
|
+
declare class FxDialogService {
|
|
835
|
+
private dialog;
|
|
836
|
+
open<T, D = any, R = any>(component: ComponentType<T> | TemplateRef<T>, config?: MatDialogConfig<D>): MatDialogRef<T, R>;
|
|
837
|
+
/** Standard confirmation flow — resolves true when the user confirms. */
|
|
838
|
+
confirm(options?: FxConfirmOptions): Promise<boolean>;
|
|
839
|
+
closeAll(): void;
|
|
840
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxDialogService, never>;
|
|
841
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FxDialogService>;
|
|
770
842
|
}
|
|
771
843
|
|
|
772
844
|
type ErrorMessages = Record<string, any>;
|
|
@@ -778,6 +850,9 @@ declare abstract class FxComponent<T> implements ControlValueAccessor {
|
|
|
778
850
|
* bind to an ancestor's NgControl.
|
|
779
851
|
*/
|
|
780
852
|
ngControl: NgControl | null;
|
|
853
|
+
/** With OnPush, programmatic writes (form.setValue / setDisabledState) must
|
|
854
|
+
* mark the view — CVA calls come from outside the component's own events. */
|
|
855
|
+
protected cdr: ChangeDetectorRef;
|
|
781
856
|
disabled: boolean;
|
|
782
857
|
value: T;
|
|
783
858
|
onChange: (value: T) => void;
|
|
@@ -802,8 +877,8 @@ declare abstract class FxComponent<T> implements ControlValueAccessor {
|
|
|
802
877
|
*/
|
|
803
878
|
clearErrors(): void;
|
|
804
879
|
getErrorMessage(label?: string): string | null;
|
|
805
|
-
static ɵfac:
|
|
806
|
-
static ɵdir:
|
|
880
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxComponent<any>, never>;
|
|
881
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxComponent<any>, never, never, { "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
|
|
807
882
|
}
|
|
808
883
|
|
|
809
884
|
declare class InputComponent extends FxComponent<string> implements AfterViewInit {
|
|
@@ -811,18 +886,18 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
|
|
|
811
886
|
label: string;
|
|
812
887
|
tooltip: string;
|
|
813
888
|
type: string;
|
|
814
|
-
placeholder: string
|
|
889
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
815
890
|
errorMessages: Record<string, string>;
|
|
816
|
-
required: string | boolean
|
|
891
|
+
readonly required: _angular_core.InputSignal<string | boolean>;
|
|
817
892
|
suffixIcon?: string;
|
|
818
|
-
class
|
|
819
|
-
maxlength
|
|
820
|
-
validateFn
|
|
821
|
-
blurred:
|
|
822
|
-
focused:
|
|
823
|
-
suffixClick:
|
|
893
|
+
readonly class: _angular_core.InputSignal<any>;
|
|
894
|
+
readonly maxlength: _angular_core.InputSignal<number | undefined>;
|
|
895
|
+
readonly validateFn: _angular_core.InputSignal<((value: string) => ValidationErrors | null) | undefined>;
|
|
896
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
897
|
+
readonly focused: _angular_core.OutputEmitterRef<void>;
|
|
898
|
+
readonly suffixClick: _angular_core.OutputEmitterRef<void>;
|
|
824
899
|
/** Accessible name for the suffix icon button (it renders no text). */
|
|
825
|
-
suffixAriaLabel: string
|
|
900
|
+
readonly suffixAriaLabel: _angular_core.InputSignal<string>;
|
|
826
901
|
readonly fieldId: string;
|
|
827
902
|
showPassword: boolean;
|
|
828
903
|
validateError: ValidationErrors | null;
|
|
@@ -835,30 +910,30 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
|
|
|
835
910
|
togglePassword(): void;
|
|
836
911
|
onSuffixClick(): void;
|
|
837
912
|
get displayType(): string;
|
|
838
|
-
static ɵfac:
|
|
839
|
-
static ɵcmp:
|
|
913
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
|
|
914
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "fx-ui-input", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "validateFn": { "alias": "validateFn"; "required": false; "isSignal": true; }; "suffixAriaLabel": { "alias": "suffixAriaLabel"; "required": false; "isSignal": true; }; }, { "blurred": "blurred"; "focused": "focused"; "suffixClick": "suffixClick"; }, never, never, true, never>;
|
|
840
915
|
}
|
|
841
916
|
|
|
842
917
|
declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit, OnChanges {
|
|
843
918
|
private ref;
|
|
844
919
|
label: string;
|
|
845
920
|
tooltip: string;
|
|
846
|
-
placeholder: string
|
|
847
|
-
options: {
|
|
921
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
922
|
+
readonly options: _angular_core.InputSignal<{
|
|
848
923
|
label: string;
|
|
849
924
|
value: string;
|
|
850
|
-
}[]
|
|
851
|
-
multiple: boolean
|
|
925
|
+
}[]>;
|
|
926
|
+
readonly multiple: _angular_core.InputSignal<boolean>;
|
|
852
927
|
errorMessages: Record<string, string>;
|
|
853
|
-
required: boolean
|
|
854
|
-
class
|
|
855
|
-
enableSearch: boolean
|
|
856
|
-
searchFn
|
|
928
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
929
|
+
readonly class: _angular_core.InputSignal<any>;
|
|
930
|
+
readonly enableSearch: _angular_core.InputSignal<boolean>;
|
|
931
|
+
readonly searchFn: _angular_core.InputSignal<((query: string) => Promise<{
|
|
857
932
|
label: string;
|
|
858
933
|
value: string;
|
|
859
|
-
}[]>;
|
|
934
|
+
}[]>) | undefined>;
|
|
860
935
|
/** Emits the current value when the select panel closes (useful for multiple mode). */
|
|
861
|
-
closed:
|
|
936
|
+
readonly closed: _angular_core.OutputEmitterRef<string | string[]>;
|
|
862
937
|
readonly fieldId: string;
|
|
863
938
|
searchTerm: string;
|
|
864
939
|
filteredOptions: {
|
|
@@ -877,8 +952,8 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
|
|
|
877
952
|
performSearch(term: string): Promise<void>;
|
|
878
953
|
onSelectionChange(value: any): void;
|
|
879
954
|
isSelected(value: string): boolean;
|
|
880
|
-
static ɵfac:
|
|
881
|
-
static ɵcmp:
|
|
955
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
|
|
956
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "fx-ui-select", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "enableSearch": { "alias": "enableSearch"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
882
957
|
}
|
|
883
958
|
|
|
884
959
|
interface IRadioButton {
|
|
@@ -892,34 +967,34 @@ declare class RadioButtonComponent extends FxComponent<IRadioButton> implements
|
|
|
892
967
|
readonly groupId: string;
|
|
893
968
|
label?: string;
|
|
894
969
|
tooltip: string;
|
|
895
|
-
required
|
|
896
|
-
options: {
|
|
970
|
+
readonly required: _angular_core.InputSignal<boolean | undefined>;
|
|
971
|
+
readonly options: _angular_core.InputSignal<{
|
|
897
972
|
label: string;
|
|
898
973
|
value: any;
|
|
899
974
|
icon?: any;
|
|
900
975
|
tooltip?: string;
|
|
901
|
-
}[]
|
|
976
|
+
}[]>;
|
|
902
977
|
errorMessages: ErrorMessages;
|
|
903
|
-
class
|
|
978
|
+
readonly class: _angular_core.InputSignal<any>;
|
|
904
979
|
constructor(ref: ChangeDetectorRef);
|
|
905
980
|
ngAfterViewInit(): void;
|
|
906
981
|
onSelectValue(value: any): void;
|
|
907
|
-
static ɵfac:
|
|
908
|
-
static ɵcmp:
|
|
982
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioButtonComponent, never>;
|
|
983
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioButtonComponent, "fx-ui-radio", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
909
984
|
}
|
|
910
985
|
|
|
911
986
|
declare class CheckboxComponent extends FxComponent<any> implements AfterViewInit {
|
|
912
987
|
private ref;
|
|
913
988
|
label: string;
|
|
914
|
-
rounded: boolean
|
|
915
|
-
valueChange:
|
|
989
|
+
readonly rounded: _angular_core.InputSignal<boolean | undefined>;
|
|
990
|
+
readonly valueChange: _angular_core.OutputEmitterRef<boolean>;
|
|
916
991
|
constructor(ref: ChangeDetectorRef);
|
|
917
992
|
ngAfterViewInit(): void;
|
|
918
993
|
writeValue(value: any): void;
|
|
919
994
|
onInputChange(event: Event): void;
|
|
920
995
|
markTouched(): void;
|
|
921
|
-
static ɵfac:
|
|
922
|
-
static ɵcmp:
|
|
996
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxComponent, never>;
|
|
997
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "fx-ui-checkbox", never, { "label": { "alias": "label"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
923
998
|
}
|
|
924
999
|
|
|
925
1000
|
interface UploadResult {
|
|
@@ -931,18 +1006,19 @@ interface UploadResult {
|
|
|
931
1006
|
}[];
|
|
932
1007
|
}
|
|
933
1008
|
declare class DndUploadComponent {
|
|
934
|
-
|
|
1009
|
+
private cdr;
|
|
1010
|
+
readonly multiple: _angular_core.InputSignal<boolean>;
|
|
935
1011
|
accept: string;
|
|
936
|
-
maxSizeMB: number
|
|
937
|
-
strictSize: boolean
|
|
1012
|
+
readonly maxSizeMB: _angular_core.InputSignal<number>;
|
|
1013
|
+
readonly strictSize: _angular_core.InputSignal<boolean>;
|
|
938
1014
|
/** Icon name from heroicons (outline). Default: 'arrow-up-tray' */
|
|
939
|
-
icon: string
|
|
1015
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
940
1016
|
/** CSS color value for accent (border, icon, link). Default uses --gradient-primary-start */
|
|
941
|
-
accentColor: string
|
|
942
|
-
fileDrop:
|
|
943
|
-
fileClick:
|
|
944
|
-
uploadComplete:
|
|
945
|
-
uploadError:
|
|
1017
|
+
readonly accentColor: _angular_core.InputSignal<string>;
|
|
1018
|
+
readonly fileDrop: _angular_core.OutputEmitterRef<File[]>;
|
|
1019
|
+
readonly fileClick: _angular_core.OutputEmitterRef<void>;
|
|
1020
|
+
readonly uploadComplete: _angular_core.OutputEmitterRef<File[]>;
|
|
1021
|
+
readonly uploadError: _angular_core.OutputEmitterRef<{
|
|
946
1022
|
file: File;
|
|
947
1023
|
reason: string;
|
|
948
1024
|
}>;
|
|
@@ -957,103 +1033,137 @@ declare class DndUploadComponent {
|
|
|
957
1033
|
private processFiles;
|
|
958
1034
|
private onUpload;
|
|
959
1035
|
private isAccepted;
|
|
960
|
-
static ɵfac:
|
|
961
|
-
static ɵcmp:
|
|
1036
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DndUploadComponent, never>;
|
|
1037
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DndUploadComponent, "fx-ui-dnd-upload", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; }; "maxSizeMB": { "alias": "maxSizeMB"; "required": false; "isSignal": true; }; "strictSize": { "alias": "strictSize"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "accentColor": { "alias": "accentColor"; "required": false; "isSignal": true; }; }, { "fileDrop": "fileDrop"; "fileClick": "fileClick"; "uploadComplete": "uploadComplete"; "uploadError": "uploadError"; }, never, never, true, never>;
|
|
962
1038
|
}
|
|
963
1039
|
|
|
964
1040
|
declare class ButtonComponent {
|
|
965
1041
|
label: string;
|
|
966
|
-
disabled: boolean
|
|
967
|
-
buttonVariant:
|
|
1042
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1043
|
+
readonly buttonVariant: _angular_core.InputSignal<"default" | "success" | "primary" | "alternative">;
|
|
968
1044
|
icon?: any;
|
|
969
|
-
class
|
|
970
|
-
loading: boolean
|
|
1045
|
+
readonly class: _angular_core.InputSignal<any>;
|
|
1046
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
971
1047
|
/** Native button type. Defaults to 'button' so it never implicitly submits a form. */
|
|
972
|
-
type:
|
|
1048
|
+
readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
|
|
973
1049
|
/** Accessible name for icon-only usage (icon set, no label). */
|
|
974
|
-
ariaLabel: string
|
|
975
|
-
clicked:
|
|
1050
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1051
|
+
readonly clicked: _angular_core.OutputEmitterRef<void>;
|
|
976
1052
|
onClick(): void;
|
|
977
|
-
static ɵfac:
|
|
978
|
-
static ɵcmp:
|
|
1053
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
|
|
1054
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "fx-ui-button", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "buttonVariant": { "alias": "buttonVariant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
|
|
979
1055
|
}
|
|
980
1056
|
|
|
981
1057
|
declare class RadioButtonToggleComponent extends FxComponent<any> implements AfterViewInit {
|
|
982
1058
|
private ref;
|
|
983
1059
|
readonly groupId: string;
|
|
984
1060
|
label?: string;
|
|
985
|
-
required
|
|
986
|
-
options: {
|
|
1061
|
+
readonly required: _angular_core.InputSignal<boolean | undefined>;
|
|
1062
|
+
readonly options: _angular_core.InputSignal<{
|
|
987
1063
|
label: string;
|
|
988
1064
|
value: any;
|
|
989
1065
|
icon?: any;
|
|
990
|
-
}[]
|
|
1066
|
+
}[]>;
|
|
991
1067
|
errorMessages: ErrorMessages;
|
|
992
|
-
class
|
|
1068
|
+
readonly class: _angular_core.InputSignal<any>;
|
|
993
1069
|
constructor(ref: ChangeDetectorRef);
|
|
994
1070
|
ngAfterViewInit(): void;
|
|
995
1071
|
onSelectValue(value: any): void;
|
|
996
|
-
static ɵfac:
|
|
997
|
-
static ɵcmp:
|
|
1072
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioButtonToggleComponent, never>;
|
|
1073
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioButtonToggleComponent, "fx-ui-radio-toggle, [fx-ui-radio-toggle]", never, { "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
998
1074
|
}
|
|
999
1075
|
|
|
1076
|
+
/**
|
|
1077
|
+
* Date/time field backed by first-party Material pickers (mat-datepicker +
|
|
1078
|
+
* mat-timepicker, the latter first-party since Material 19) — replaces the
|
|
1079
|
+
* former @danielmoncada/angular-datetime-picker + moment adapter stack.
|
|
1080
|
+
*
|
|
1081
|
+
* The public contract is unchanged: the CVA value is a plain string
|
|
1082
|
+
* ('YYYY-MM-DD HH:mm' for type 'both', 'YYYY-MM-DD' for 'calendar',
|
|
1083
|
+
* 'HH:mm' for 'timer'), so existing forms keep working as-is.
|
|
1084
|
+
*/
|
|
1000
1085
|
declare class DatetimePicker extends FxComponent<any> implements AfterViewInit {
|
|
1001
1086
|
private ref;
|
|
1002
1087
|
label?: string;
|
|
1003
|
-
placeholder: string
|
|
1004
|
-
required: boolean
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1088
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1089
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
1090
|
+
/** 'both' | 'calendar' | 'timer' — same values the Owl picker accepted. */
|
|
1091
|
+
readonly type: _angular_core.InputSignal<"both" | "calendar" | "timer">;
|
|
1092
|
+
readonly minDate: _angular_core.InputSignal<any>;
|
|
1093
|
+
readonly maxDate: _angular_core.InputSignal<any>;
|
|
1008
1094
|
errorMessages: ErrorMessages;
|
|
1009
|
-
validateFn: (date: string) => ValidationErrors | null
|
|
1095
|
+
readonly validateFn: _angular_core.InputSignal<((date: string) => ValidationErrors | null) | undefined>;
|
|
1010
1096
|
readonly fieldId: string;
|
|
1011
|
-
|
|
1097
|
+
/** Internal Date the Material pickers operate on; `value` stays a string. */
|
|
1098
|
+
dateValue: Date | null;
|
|
1012
1099
|
constructor(ref: ChangeDetectorRef);
|
|
1013
1100
|
ngAfterViewInit(): void;
|
|
1101
|
+
get showDate(): boolean;
|
|
1102
|
+
get showTime(): boolean;
|
|
1103
|
+
get min(): Date | null;
|
|
1104
|
+
get max(): Date | null;
|
|
1014
1105
|
onBlur(): void;
|
|
1015
1106
|
writeValue(value: any): void;
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1107
|
+
onDateChange(date: Date | null): void;
|
|
1108
|
+
onTimeChange(time: Date | null): void;
|
|
1109
|
+
private commit;
|
|
1110
|
+
private toDate;
|
|
1111
|
+
private format;
|
|
1112
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatetimePicker, never>;
|
|
1113
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatetimePicker, "fx-ui-datetime-picker", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "validateFn": { "alias": "validateFn"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1019
1114
|
}
|
|
1020
1115
|
|
|
1021
1116
|
declare class LoadingPanel {
|
|
1022
|
-
show: boolean
|
|
1117
|
+
readonly show: _angular_core.InputSignal<boolean>;
|
|
1023
1118
|
message?: string;
|
|
1024
|
-
static ɵfac:
|
|
1025
|
-
static ɵcmp:
|
|
1119
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingPanel, never>;
|
|
1120
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingPanel, "fx-ui-loading-panel", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; }; }, {}, never, never, true, never>;
|
|
1026
1121
|
}
|
|
1027
1122
|
|
|
1028
1123
|
declare class SearchBarComponent extends FxComponent<string> implements AfterViewInit {
|
|
1029
1124
|
private ref;
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1125
|
+
/** FxComponent leaves `value` undefined; without ngModel the input would
|
|
1126
|
+
render the literal string "undefined". */
|
|
1127
|
+
value: string;
|
|
1128
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1129
|
+
readonly search: _angular_core.OutputEmitterRef<string>;
|
|
1130
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
1033
1131
|
constructor(ref: ChangeDetectorRef);
|
|
1034
1132
|
ngAfterViewInit(): void;
|
|
1035
1133
|
writeValue(value: string): void;
|
|
1036
1134
|
onValueChange(value: string): void;
|
|
1037
1135
|
onEnterKey(): void;
|
|
1038
1136
|
clear(): void;
|
|
1039
|
-
static ɵfac:
|
|
1040
|
-
static ɵcmp:
|
|
1137
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchBarComponent, never>;
|
|
1138
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchBarComponent, "fx-ui-search-bar", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "search": "search"; "valueChange": "valueChange"; }, never, never, true, never>;
|
|
1041
1139
|
}
|
|
1042
1140
|
|
|
1043
1141
|
declare class TabComponent {
|
|
1044
|
-
label: string
|
|
1142
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1045
1143
|
icon?: string;
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1144
|
+
/** Trailing count badge (V2 'page' variant); null/undefined hides it. */
|
|
1145
|
+
readonly count: _angular_core.InputSignal<number | null>;
|
|
1146
|
+
/** Tints the count badge (e.g. vulnerabilities tab shows a danger count). */
|
|
1147
|
+
readonly tone: _angular_core.InputSignal<Tone | null>;
|
|
1148
|
+
readonly content: _angular_core.Signal<TemplateRef<any>>;
|
|
1149
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
|
|
1150
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "fx-ui-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1049
1151
|
}
|
|
1050
1152
|
|
|
1051
|
-
declare class TabGroupComponent implements AfterContentInit {
|
|
1153
|
+
declare class TabGroupComponent implements AfterContentInit, AfterViewChecked, OnChanges {
|
|
1052
1154
|
private renderer;
|
|
1053
|
-
|
|
1155
|
+
private cdr;
|
|
1156
|
+
readonly tabs: _angular_core.Signal<readonly TabComponent[]>;
|
|
1054
1157
|
activeIndex: number;
|
|
1055
|
-
|
|
1056
|
-
|
|
1158
|
+
/** Emitted on user selection — enables [(activeIndex)] two-way binding. */
|
|
1159
|
+
readonly activeIndexChange: _angular_core.OutputEmitterRef<number>;
|
|
1160
|
+
/** 'page' = the V2 workspace tab strip (larger hit area, count badges). */
|
|
1161
|
+
readonly variant: _angular_core.InputSignal<"default" | "page">;
|
|
1162
|
+
readonly tabListRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
1163
|
+
readonly underlineRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
1164
|
+
readonly pagePillRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
1165
|
+
/** Last applied pill geometry — skip DOM writes when nothing moved. */
|
|
1166
|
+
private pillState;
|
|
1057
1167
|
canScrollLeft: boolean;
|
|
1058
1168
|
canScrollRight: boolean;
|
|
1059
1169
|
private animateDelay;
|
|
@@ -1062,37 +1172,64 @@ declare class TabGroupComponent implements AfterContentInit {
|
|
|
1062
1172
|
constructor(renderer: Renderer2);
|
|
1063
1173
|
ngAfterContentInit(): void;
|
|
1064
1174
|
selectTab(index: number): void;
|
|
1175
|
+
badgeClass(tab: TabComponent): string;
|
|
1065
1176
|
/** Roving tablist keyboard nav: arrows move AND activate (selection follows focus). */
|
|
1066
1177
|
onTabKeydown(event: KeyboardEvent, index: number): void;
|
|
1178
|
+
/** Parent-driven activeIndex (deep-link ?tab=, quick-links) must also move the pill. */
|
|
1179
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
1180
|
+
/**
|
|
1181
|
+
* Re-measure every view check: catches label-width changes (language switch,
|
|
1182
|
+
* count arriving) with cached geometry so the DOM write only happens when
|
|
1183
|
+
* the pill actually moved.
|
|
1184
|
+
*/
|
|
1185
|
+
ngAfterViewChecked(): void;
|
|
1186
|
+
/** Slide the 'page' pill to the active tab (offset* is scroll-content relative). */
|
|
1187
|
+
private updatePagePill;
|
|
1067
1188
|
private updateUnderlinePosition;
|
|
1068
1189
|
private scrollToActiveTab;
|
|
1069
1190
|
scroll(direction: 'left' | 'right'): void;
|
|
1070
1191
|
onScroll(): void;
|
|
1071
1192
|
private updateScrollButtons;
|
|
1072
1193
|
onResize(): void;
|
|
1073
|
-
static ɵfac:
|
|
1074
|
-
static ɵcmp:
|
|
1194
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabGroupComponent, never>;
|
|
1195
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabGroupComponent, "fx-ui-tab-group", never, { "activeIndex": { "alias": "activeIndex"; "required": false; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "activeIndexChange": "activeIndexChange"; }, ["tabs"], never, true, never>;
|
|
1075
1196
|
}
|
|
1076
1197
|
|
|
1198
|
+
/**
|
|
1199
|
+
* Where the generated Heroicons sprite is served from. Defaults to
|
|
1200
|
+
* 'fx-icons.svg' at the app base — consumers copy it from the package via an
|
|
1201
|
+
* angular.json assets glob (same pattern as the lib fonts):
|
|
1202
|
+
* { "input": "node_modules/@foxeltech/angular-ui", "glob": "fx-icons.svg", "output": "." }
|
|
1203
|
+
*/
|
|
1204
|
+
declare const FX_ICON_SPRITE_URL: InjectionToken<string>;
|
|
1205
|
+
/**
|
|
1206
|
+
* Heroicons rendered from the self-hosted sprite (see
|
|
1207
|
+
* scripts/generate-icon-sprite.mjs) — every 24px outline/solid icon is
|
|
1208
|
+
* available by name with no per-icon registration and no runtime icon
|
|
1209
|
+
* library. API kept compatible with the old @dimaslz/ng-heroicons wrapper.
|
|
1210
|
+
*/
|
|
1077
1211
|
declare class HeroIconComponent {
|
|
1078
|
-
stroke: number
|
|
1079
|
-
icon:
|
|
1080
|
-
solid: boolean
|
|
1081
|
-
outline: boolean
|
|
1082
|
-
size: number
|
|
1083
|
-
color:
|
|
1084
|
-
class
|
|
1085
|
-
|
|
1086
|
-
|
|
1212
|
+
readonly stroke: _angular_core.InputSignal<number>;
|
|
1213
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
1214
|
+
readonly solid: _angular_core.InputSignal<boolean | undefined>;
|
|
1215
|
+
readonly outline: _angular_core.InputSignal<boolean | undefined>;
|
|
1216
|
+
readonly size: _angular_core.InputSignal<number | undefined>;
|
|
1217
|
+
readonly color: _angular_core.InputSignal<string | undefined>;
|
|
1218
|
+
readonly class: _angular_core.InputSignal<string | undefined>;
|
|
1219
|
+
readonly spriteUrl: string;
|
|
1220
|
+
constructor();
|
|
1221
|
+
get href(): string;
|
|
1222
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeroIconComponent, never>;
|
|
1223
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeroIconComponent, "fx-ui-hero-icon", never, { "stroke": { "alias": "stroke"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "solid": { "alias": "solid"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1087
1224
|
}
|
|
1088
1225
|
|
|
1089
1226
|
declare class ToastComponent {
|
|
1090
|
-
toastId: number
|
|
1227
|
+
readonly toastId: _angular_core.InputSignal<number>;
|
|
1091
1228
|
title?: string;
|
|
1092
|
-
message: string
|
|
1093
|
-
type:
|
|
1094
|
-
static ɵfac:
|
|
1095
|
-
static ɵcmp:
|
|
1229
|
+
readonly message: _angular_core.InputSignal<string>;
|
|
1230
|
+
readonly type: _angular_core.InputSignal<"error" | "success" | "info" | "warning" | undefined>;
|
|
1231
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
|
|
1232
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "fx-ui-toast", never, { "toastId": { "alias": "toastId"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1096
1233
|
}
|
|
1097
1234
|
|
|
1098
1235
|
declare class ToastContainerComponent {
|
|
@@ -1101,79 +1238,32 @@ declare class ToastContainerComponent {
|
|
|
1101
1238
|
constructor(ref: ChangeDetectorRef);
|
|
1102
1239
|
addToast(toast: any): void;
|
|
1103
1240
|
removeToast(id: number): void;
|
|
1104
|
-
static ɵfac:
|
|
1105
|
-
static ɵcmp:
|
|
1241
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastContainerComponent, never>;
|
|
1242
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastContainerComponent, "fx-ui-toast-container", never, {}, {}, never, never, true, never>;
|
|
1106
1243
|
}
|
|
1107
1244
|
|
|
1108
1245
|
type TagType = 'success' | 'warning' | 'critical' | 'information' | 'discovery' | 'default' | 'danger';
|
|
1109
1246
|
declare class TagComponent {
|
|
1110
|
-
label: string
|
|
1111
|
-
type: TagType
|
|
1112
|
-
rounded: boolean
|
|
1113
|
-
icon?:
|
|
1114
|
-
solid: boolean
|
|
1247
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1248
|
+
readonly type: _angular_core.InputSignal<TagType>;
|
|
1249
|
+
readonly rounded: _angular_core.InputSignal<boolean>;
|
|
1250
|
+
icon?: string;
|
|
1251
|
+
readonly solid: _angular_core.InputSignal<boolean>;
|
|
1115
1252
|
clicked: EventEmitter<void>;
|
|
1116
1253
|
onClick(): void;
|
|
1117
|
-
static ɵfac:
|
|
1118
|
-
static ɵcmp:
|
|
1119
|
-
}
|
|
1120
|
-
|
|
1121
|
-
type IChartType = 'bar' | 'pie' | 'sunburst' | 'auto';
|
|
1122
|
-
declare class ChartComponent implements OnChanges, AfterViewInit, OnDestroy {
|
|
1123
|
-
private ref;
|
|
1124
|
-
private cdr;
|
|
1125
|
-
type: IChartType;
|
|
1126
|
-
data: any;
|
|
1127
|
-
options?: EChartsOption;
|
|
1128
|
-
palette?: string[];
|
|
1129
|
-
height: string;
|
|
1130
|
-
loading: boolean;
|
|
1131
|
-
pieLegendAlign: string | number;
|
|
1132
|
-
pieLegendPosition: string | number;
|
|
1133
|
-
showPieLabel: boolean;
|
|
1134
|
-
mobileWidth: number;
|
|
1135
|
-
labelFontFamily: string;
|
|
1136
|
-
emptyText: string;
|
|
1137
|
-
chartClick: EventEmitter<any>;
|
|
1138
|
-
chartInit: EventEmitter<ECharts>;
|
|
1139
|
-
chartOptions: EChartsOption;
|
|
1140
|
-
isEmpty: boolean;
|
|
1141
|
-
labelFontSize: number;
|
|
1142
|
-
private chartInstance?;
|
|
1143
|
-
private resizeObserver?;
|
|
1144
|
-
private intersectionObserver?;
|
|
1145
|
-
private canInit;
|
|
1146
|
-
private isMobile;
|
|
1147
|
-
private containerWidth;
|
|
1148
|
-
constructor(ref: ElementRef<HTMLElement>, cdr: ChangeDetectorRef);
|
|
1149
|
-
ngAfterViewInit(): void;
|
|
1150
|
-
ngOnChanges(): void;
|
|
1151
|
-
ngOnDestroy(): void;
|
|
1152
|
-
onThemeChange(): void;
|
|
1153
|
-
onChartClick(event: any): void;
|
|
1154
|
-
onChartInit(chart: any): void;
|
|
1155
|
-
private updateResponsiveState;
|
|
1156
|
-
private forceMediaRecalc;
|
|
1157
|
-
private rebuildChart;
|
|
1158
|
-
private checkEmpty;
|
|
1159
|
-
private registry;
|
|
1160
|
-
private calcPieLayout;
|
|
1161
|
-
private detectType;
|
|
1162
|
-
private buildOptions;
|
|
1163
|
-
private resolvePalette;
|
|
1164
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ChartComponent, never>;
|
|
1165
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ChartComponent, "fx-ui-chart", never, { "type": { "alias": "type"; "required": false; }; "data": { "alias": "data"; "required": false; }; "options": { "alias": "options"; "required": false; }; "palette": { "alias": "palette"; "required": false; }; "height": { "alias": "height"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "pieLegendAlign": { "alias": "pieLegendAlign"; "required": false; }; "pieLegendPosition": { "alias": "pieLegendPosition"; "required": false; }; "showPieLabel": { "alias": "showPieLabel"; "required": false; }; "mobileWidth": { "alias": "mobileWidth"; "required": false; }; "labelFontFamily": { "alias": "labelFontFamily"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; }, { "chartClick": "chartClick"; "chartInit": "chartInit"; }, never, never, false, never>;
|
|
1254
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
|
|
1255
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "fx-ui-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; }; "solid": { "alias": "solid"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
|
|
1166
1256
|
}
|
|
1167
1257
|
|
|
1168
1258
|
declare class SliderComponent extends FxComponent<any> implements AfterViewInit {
|
|
1169
1259
|
private ref;
|
|
1170
|
-
trackRef: ElementRef<HTMLElement
|
|
1171
|
-
thumbRef: ElementRef<HTMLElement
|
|
1172
|
-
min: number
|
|
1173
|
-
max: number
|
|
1174
|
-
step: number
|
|
1175
|
-
vertical: boolean
|
|
1176
|
-
valueChange:
|
|
1260
|
+
readonly trackRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
1261
|
+
readonly thumbRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
1262
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
1263
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
1264
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
1265
|
+
readonly vertical: _angular_core.InputSignal<boolean>;
|
|
1266
|
+
readonly valueChange: _angular_core.OutputEmitterRef<number>;
|
|
1177
1267
|
dragging: boolean;
|
|
1178
1268
|
constructor(ref: ChangeDetectorRef);
|
|
1179
1269
|
ngAfterViewInit(): void;
|
|
@@ -1200,68 +1290,39 @@ declare class SliderComponent extends FxComponent<any> implements AfterViewInit
|
|
|
1200
1290
|
transform: string;
|
|
1201
1291
|
bottom?: undefined;
|
|
1202
1292
|
};
|
|
1203
|
-
static ɵfac:
|
|
1204
|
-
static ɵcmp:
|
|
1293
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
|
|
1294
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "fx-ui-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
1205
1295
|
}
|
|
1206
1296
|
|
|
1207
1297
|
declare class SwitchComponent extends FxComponent<any> implements AfterViewInit {
|
|
1208
|
-
|
|
1209
|
-
onSwitch: EventEmitter<boolean>;
|
|
1298
|
+
readonly onSwitch: _angular_core.OutputEmitterRef<boolean>;
|
|
1210
1299
|
/** Accessible name — the switch renders no visible text of its own. */
|
|
1211
|
-
ariaLabel: string
|
|
1300
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1212
1301
|
ngAfterViewInit(): void;
|
|
1213
|
-
constructor(cdr: ChangeDetectorRef);
|
|
1214
1302
|
writeValue(value: any): void;
|
|
1215
1303
|
toggle(): void;
|
|
1216
|
-
static ɵfac:
|
|
1217
|
-
static ɵcmp:
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1220
|
-
declare class RichTextAreaComponent extends FxComponent<any> implements AfterViewInit {
|
|
1221
|
-
private cdr;
|
|
1222
|
-
private styleLoader;
|
|
1223
|
-
private platformId;
|
|
1224
|
-
editorContainer: ElementRef<HTMLDivElement>;
|
|
1225
|
-
placeholder: string;
|
|
1226
|
-
toolbarOptions: any;
|
|
1227
|
-
contentChange: EventEmitter<string>;
|
|
1228
|
-
private quillInstance;
|
|
1229
|
-
constructor(cdr: ChangeDetectorRef, styleLoader: QuillStyleLoaderService, platformId: object);
|
|
1230
|
-
ngAfterViewInit(): Promise<void>;
|
|
1231
|
-
writeValue(value: any): void;
|
|
1232
|
-
setDisabledState(isDisabled: boolean): void;
|
|
1233
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<RichTextAreaComponent, never>;
|
|
1234
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RichTextAreaComponent, "fx-ui-rich-text-area", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "toolbarOptions": { "alias": "toolbarOptions"; "required": false; }; }, { "contentChange": "contentChange"; }, never, never, false, never>;
|
|
1304
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchComponent, never>;
|
|
1305
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "fx-ui-switch", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "onSwitch": "onSwitch"; }, never, never, true, never>;
|
|
1235
1306
|
}
|
|
1236
1307
|
|
|
1237
1308
|
declare class SkeletonTableLoadingComponent {
|
|
1238
|
-
columns: number
|
|
1239
|
-
rows: number
|
|
1240
|
-
static ɵfac:
|
|
1241
|
-
static ɵcmp:
|
|
1242
|
-
}
|
|
1243
|
-
|
|
1244
|
-
declare class FlowConnection {
|
|
1245
|
-
nodes: Node[];
|
|
1246
|
-
edges: Edge[];
|
|
1247
|
-
backgroundColor: any;
|
|
1248
|
-
view: any;
|
|
1249
|
-
handleConnection(connection: Connection): void;
|
|
1250
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FlowConnection, never>;
|
|
1251
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FlowConnection, "fx-ui-flow-connection", never, { "nodes": { "alias": "nodes"; "required": false; }; "edges": { "alias": "edges"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "view": { "alias": "view"; "required": false; }; }, {}, never, never, false, never>;
|
|
1309
|
+
readonly columns: _angular_core.InputSignal<number>;
|
|
1310
|
+
readonly rows: _angular_core.InputSignal<number>;
|
|
1311
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonTableLoadingComponent, never>;
|
|
1312
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonTableLoadingComponent, "fx-ui-skeleton-table-loading", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1252
1313
|
}
|
|
1253
1314
|
|
|
1254
1315
|
declare class CircleProgressBar {
|
|
1255
|
-
percent: number
|
|
1256
|
-
showPercent: boolean
|
|
1316
|
+
readonly percent: _angular_core.InputSignal<number>;
|
|
1317
|
+
readonly showPercent: _angular_core.InputSignal<boolean>;
|
|
1257
1318
|
readonly radius = 35;
|
|
1258
1319
|
readonly stroke = 10;
|
|
1259
1320
|
readonly normalizedRadius: number;
|
|
1260
1321
|
readonly circumference: number;
|
|
1261
1322
|
get dashOffset(): number;
|
|
1262
1323
|
get ariaLabel(): string;
|
|
1263
|
-
static ɵfac:
|
|
1264
|
-
static ɵcmp:
|
|
1324
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CircleProgressBar, never>;
|
|
1325
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CircleProgressBar, "fx-ui-circle-progress-bar", never, { "percent": { "alias": "percent"; "required": false; "isSignal": true; }; "showPercent": { "alias": "showPercent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1265
1326
|
}
|
|
1266
1327
|
|
|
1267
1328
|
interface TreeNode {
|
|
@@ -1273,9 +1334,9 @@ interface TreeNode {
|
|
|
1273
1334
|
declare class TreeDiagram implements AfterViewInit, OnDestroy {
|
|
1274
1335
|
private zone;
|
|
1275
1336
|
private cdr;
|
|
1276
|
-
data: any
|
|
1277
|
-
container: ElementRef
|
|
1278
|
-
root: ElementRef
|
|
1337
|
+
readonly data: _angular_core.InputSignal<any>;
|
|
1338
|
+
readonly container: _angular_core.Signal<ElementRef<any>>;
|
|
1339
|
+
readonly root: _angular_core.Signal<ElementRef<any>>;
|
|
1279
1340
|
children: QueryList<ElementRef>;
|
|
1280
1341
|
lines: any[];
|
|
1281
1342
|
svgWidth: number;
|
|
@@ -1287,15 +1348,15 @@ declare class TreeDiagram implements AfterViewInit, OnDestroy {
|
|
|
1287
1348
|
ngOnDestroy(): void;
|
|
1288
1349
|
private scheduleDraw;
|
|
1289
1350
|
private drawLines;
|
|
1290
|
-
static ɵfac:
|
|
1291
|
-
static ɵcmp:
|
|
1351
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeDiagram, never>;
|
|
1352
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeDiagram, "fx-ui-tree-diagram", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1292
1353
|
}
|
|
1293
1354
|
|
|
1294
1355
|
declare class TableCell {
|
|
1295
|
-
loading: boolean
|
|
1296
|
-
skeletonClass: string
|
|
1297
|
-
static ɵfac:
|
|
1298
|
-
static ɵcmp:
|
|
1356
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
1357
|
+
readonly skeletonClass: _angular_core.InputSignal<string>;
|
|
1358
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCell, never>;
|
|
1359
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCell, "fx-ui-table-cell", never, { "loading": { "alias": "loading"; "required": true; "isSignal": true; }; "skeletonClass": { "alias": "skeletonClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1299
1360
|
}
|
|
1300
1361
|
|
|
1301
1362
|
interface KanbanColumn<T = any> {
|
|
@@ -1312,9 +1373,9 @@ interface ColumnChangedEvent<T = any> {
|
|
|
1312
1373
|
}
|
|
1313
1374
|
|
|
1314
1375
|
declare class KanbanBoardComponent<T = any> {
|
|
1315
|
-
columns: KanbanColumn<T>[]
|
|
1376
|
+
readonly columns: _angular_core.InputSignal<KanbanColumn<T>[]>;
|
|
1316
1377
|
itemTemplate?: TemplateRef<any>;
|
|
1317
|
-
columnChanged:
|
|
1378
|
+
readonly columnChanged: _angular_core.OutputEmitterRef<ColumnChangedEvent<T>>;
|
|
1318
1379
|
/**
|
|
1319
1380
|
* Get all column IDs for connecting drop lists
|
|
1320
1381
|
*/
|
|
@@ -1323,14 +1384,16 @@ declare class KanbanBoardComponent<T = any> {
|
|
|
1323
1384
|
* Handle drop event when item is moved
|
|
1324
1385
|
*/
|
|
1325
1386
|
onDrop(event: CdkDragDrop<T[]>, columnId: string): void;
|
|
1326
|
-
static ɵfac:
|
|
1327
|
-
static ɵcmp:
|
|
1387
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KanbanBoardComponent<any>, never>;
|
|
1388
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KanbanBoardComponent<any>, "fx-ui-kanban-board", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; }, { "columnChanged": "columnChanged"; }, never, never, true, never>;
|
|
1328
1389
|
}
|
|
1329
1390
|
|
|
1330
1391
|
interface DrawerItem {
|
|
1331
1392
|
id: string;
|
|
1332
1393
|
label: string;
|
|
1333
1394
|
icon: string;
|
|
1395
|
+
/** V2: renders as a non-interactive section caption (flat nav, no accordion). */
|
|
1396
|
+
heading?: boolean;
|
|
1334
1397
|
route?: string;
|
|
1335
1398
|
children?: DrawerItem[];
|
|
1336
1399
|
action?: () => void;
|
|
@@ -1338,12 +1401,20 @@ interface DrawerItem {
|
|
|
1338
1401
|
|
|
1339
1402
|
declare class DrawerComponent implements OnInit, OnDestroy {
|
|
1340
1403
|
private router;
|
|
1341
|
-
|
|
1404
|
+
private cdr;
|
|
1405
|
+
readonly items: _angular_core.InputSignal<DrawerItem[]>;
|
|
1406
|
+
/** V2: bottom-pinned section (Administration group) — same item rendering,
|
|
1407
|
+
separated by a rule, above the [drawerFooter] slot and version. */
|
|
1408
|
+
readonly footerItems: _angular_core.InputSignal<DrawerItem[]>;
|
|
1342
1409
|
isExpanded: boolean;
|
|
1343
1410
|
logo?: string;
|
|
1411
|
+
/** Wordmark cạnh logo, chỉ hiện khi drawer mở. Bỏ trống = chỉ có mark. */
|
|
1412
|
+
logoText?: string;
|
|
1413
|
+
/** Dòng phụ dưới logoText (tagline/workspace). Chỉ hiện khi drawer mở. */
|
|
1414
|
+
logoSubtext?: string;
|
|
1344
1415
|
version?: string;
|
|
1345
|
-
toggleExpanded:
|
|
1346
|
-
itemClicked:
|
|
1416
|
+
readonly toggleExpanded: _angular_core.OutputEmitterRef<boolean>;
|
|
1417
|
+
readonly itemClicked: _angular_core.OutputEmitterRef<DrawerItem>;
|
|
1347
1418
|
expandedItems: Set<string>;
|
|
1348
1419
|
currentRoute: string;
|
|
1349
1420
|
private destroy$;
|
|
@@ -1359,60 +1430,83 @@ declare class DrawerComponent implements OnInit, OnDestroy {
|
|
|
1359
1430
|
private autoExpandActiveParents;
|
|
1360
1431
|
getAccordionState(itemId: string): string;
|
|
1361
1432
|
getDrawerState(): string;
|
|
1362
|
-
static ɵfac:
|
|
1363
|
-
static ɵcmp:
|
|
1433
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerComponent, never>;
|
|
1434
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "fx-ui-drawer", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "footerItems": { "alias": "footerItems"; "required": false; "isSignal": true; }; "isExpanded": { "alias": "isExpanded"; "required": false; }; "logo": { "alias": "logo"; "required": false; }; "logoText": { "alias": "logoText"; "required": false; }; "logoSubtext": { "alias": "logoSubtext"; "required": false; }; "version": { "alias": "version"; "required": false; }; }, { "toggleExpanded": "toggleExpanded"; "itemClicked": "itemClicked"; }, never, ["[drawerFooter]"], true, never>;
|
|
1364
1435
|
}
|
|
1365
1436
|
|
|
1366
1437
|
/** Row-card skeleton placeholder for master-detail list panes. */
|
|
1367
1438
|
declare class SkeletonListComponent {
|
|
1368
|
-
rows: number
|
|
1439
|
+
readonly rows: _angular_core.InputSignal<number>;
|
|
1369
1440
|
range(n: number): number[];
|
|
1370
|
-
static ɵfac:
|
|
1371
|
-
static ɵcmp:
|
|
1441
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonListComponent, never>;
|
|
1442
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonListComponent, "fx-ui-skeleton-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1372
1443
|
}
|
|
1373
1444
|
|
|
1374
1445
|
/** Card-shaped skeleton placeholder for detail panels. */
|
|
1375
1446
|
declare class SkeletonDetailComponent {
|
|
1376
1447
|
/** Number of content cards rendered below the header card. */
|
|
1377
|
-
cards: number
|
|
1448
|
+
readonly cards: _angular_core.InputSignal<number>;
|
|
1378
1449
|
/** Rows per content card. */
|
|
1379
|
-
rows: number
|
|
1450
|
+
readonly rows: _angular_core.InputSignal<number>;
|
|
1380
1451
|
range(n: number): number[];
|
|
1381
1452
|
rowWidth(i: number): number;
|
|
1382
|
-
static ɵfac:
|
|
1383
|
-
static ɵcmp:
|
|
1453
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonDetailComponent, never>;
|
|
1454
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonDetailComponent, "fx-ui-skeleton-detail", never, { "cards": { "alias": "cards"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1384
1455
|
}
|
|
1385
1456
|
|
|
1457
|
+
interface FxStatCardDelta {
|
|
1458
|
+
/** Caller-formatted delta text (e.g. "+12%", "-3"). */
|
|
1459
|
+
value: string;
|
|
1460
|
+
direction: 'up' | 'down';
|
|
1461
|
+
/** Delta colour — up is not always good (findings up = danger). */
|
|
1462
|
+
tone?: Tone | null;
|
|
1463
|
+
}
|
|
1386
1464
|
interface FxStatCard {
|
|
1387
1465
|
/** Caller-translated caption. */
|
|
1388
1466
|
label: string;
|
|
1389
1467
|
value: string | number;
|
|
1390
1468
|
/** hero-icon name shown in the tinted box. */
|
|
1391
|
-
icon?:
|
|
1469
|
+
icon?: string;
|
|
1392
1470
|
/** Colours the number and the icon box; null/undefined renders neutral. */
|
|
1393
1471
|
tone?: Tone | null;
|
|
1472
|
+
/** V2 StatGrid: trend chip beside the number. */
|
|
1473
|
+
delta?: FxStatCardDelta;
|
|
1474
|
+
/** V2 StatGrid: mini bar-trend under the caption. */
|
|
1475
|
+
spark?: number[];
|
|
1476
|
+
/** variant 'figure': caller-formatted sub-caption under the number ("+1 since 4.8.0"). */
|
|
1477
|
+
sub?: string;
|
|
1478
|
+
/** Colours the sub-caption; null/undefined renders muted. */
|
|
1479
|
+
subTone?: Tone | null;
|
|
1394
1480
|
}
|
|
1395
1481
|
/** KPI tile row: big number + tinted icon box + caption, in a responsive grid. */
|
|
1396
1482
|
declare class StatCardsComponent {
|
|
1397
|
-
cards: FxStatCard[]
|
|
1483
|
+
readonly cards: _angular_core.InputSignal<FxStatCard[]>;
|
|
1484
|
+
/**
|
|
1485
|
+
* 'tile' (default): tinted icon box + number + caption — the pre-V2 look.
|
|
1486
|
+
* 'figure': the V2 design's KPI column — caption on top, large figure-font
|
|
1487
|
+
* number, toned sub-caption underneath (no icon box).
|
|
1488
|
+
*/
|
|
1489
|
+
readonly variant: _angular_core.InputSignal<"figure" | "tile">;
|
|
1398
1490
|
/** Grid columns; defaults to one column per card. */
|
|
1399
1491
|
cols?: number;
|
|
1400
1492
|
get gridColumns(): string;
|
|
1401
1493
|
numClass(card: FxStatCard): string;
|
|
1402
1494
|
boxClass(card: FxStatCard): string;
|
|
1403
|
-
|
|
1404
|
-
|
|
1495
|
+
deltaClass(card: FxStatCard): string;
|
|
1496
|
+
subClass(card: FxStatCard): string;
|
|
1497
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatCardsComponent, never>;
|
|
1498
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatCardsComponent, "fx-ui-stat-cards", never, { "cards": { "alias": "cards"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "cols": { "alias": "cols"; "required": false; }; }, {}, never, never, true, never>;
|
|
1405
1499
|
}
|
|
1406
1500
|
|
|
1407
1501
|
/** Centered "no data" block. The message is caller-translated (no i18n in lib). */
|
|
1408
1502
|
declare class EmptyStateComponent {
|
|
1409
|
-
message: string
|
|
1503
|
+
readonly message: _angular_core.InputSignal<string>;
|
|
1410
1504
|
/** Optional icon (hero-icon name). */
|
|
1411
1505
|
icon?: any;
|
|
1412
1506
|
/** Min height of the block, CSS length. */
|
|
1413
|
-
height: string
|
|
1414
|
-
static ɵfac:
|
|
1415
|
-
static ɵcmp:
|
|
1507
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
1508
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
|
|
1509
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "fx-ui-empty-state", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1416
1510
|
}
|
|
1417
1511
|
|
|
1418
1512
|
interface FxFilterChipOption {
|
|
@@ -1428,40 +1522,142 @@ interface FxFilterChipOption {
|
|
|
1428
1522
|
*/
|
|
1429
1523
|
declare class FilterChipsComponent {
|
|
1430
1524
|
options: FxFilterChipOption[];
|
|
1431
|
-
value: string;
|
|
1432
|
-
valueChange:
|
|
1525
|
+
value: string | undefined;
|
|
1526
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
1433
1527
|
/** Per-value tone overrides (e.g. { Safe: 'information', Protected: 'discovery' as any }). */
|
|
1434
1528
|
toneOverrides: Record<string, Tone | null>;
|
|
1435
1529
|
select(option: FxFilterChipOption): void;
|
|
1436
1530
|
chipClass(option: FxFilterChipOption): string;
|
|
1437
|
-
static ɵfac:
|
|
1438
|
-
static ɵcmp:
|
|
1531
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterChipsComponent, never>;
|
|
1532
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterChipsComponent, "fx-ui-filter-chips", never, { "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "toneOverrides": { "alias": "toneOverrides"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
interface FxFilterPillOption {
|
|
1536
|
+
/** '' (empty) is the conventional "All" pill. */
|
|
1537
|
+
value: string;
|
|
1538
|
+
/** Caller-translated label. */
|
|
1539
|
+
label: string;
|
|
1540
|
+
/** Shown muted beside the label; null/undefined renders no count. */
|
|
1541
|
+
count?: number | null;
|
|
1542
|
+
}
|
|
1543
|
+
/**
|
|
1544
|
+
* V2 filter pills — the quick-filter row above ranked lists (design refs 02,
|
|
1545
|
+
* 03, 11): outlined capsules with a muted count, the active one filled with
|
|
1546
|
+
* the primary text colour.
|
|
1547
|
+
*
|
|
1548
|
+
* Distinct from `fx-ui-filter-chips`, which tints each chip by its severity
|
|
1549
|
+
* tone and carries no count. Presentational: the caller owns the filter state.
|
|
1550
|
+
*
|
|
1551
|
+
* <fx-ui-filter-pills [options]="pills" [value]="filters.status"
|
|
1552
|
+
* (valueChange)="filters.status = $event; refresh()" />
|
|
1553
|
+
*/
|
|
1554
|
+
declare class FilterPillsComponent {
|
|
1555
|
+
readonly options: _angular_core.InputSignal<FxFilterPillOption[]>;
|
|
1556
|
+
/** Accepts undefined so screens can bind an optional filter-bag key. */
|
|
1557
|
+
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
1558
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
1559
|
+
isActive(option: FxFilterPillOption): boolean;
|
|
1560
|
+
pillClass(option: FxFilterPillOption): string;
|
|
1561
|
+
countClass(option: FxFilterPillOption): string;
|
|
1562
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterPillsComponent, never>;
|
|
1563
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterPillsComponent, "fx-ui-filter-pills", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
/**
|
|
1567
|
+
* V2 stage progress dots — the walkthrough position indicator on the attack
|
|
1568
|
+
* chain toolbar (design refs 04, 07): one dot per stage, the current one drawn
|
|
1569
|
+
* as a wider accent bar, visited ones solid, the rest faint.
|
|
1570
|
+
*
|
|
1571
|
+
* <fx-ui-stage-dots [count]="8" [current]="stageIndex()"
|
|
1572
|
+
* (dotClick)="goToStage($event)" />
|
|
1573
|
+
*/
|
|
1574
|
+
declare class StageDotsComponent {
|
|
1575
|
+
readonly count: _angular_core.InputSignal<number>;
|
|
1576
|
+
/** 0-based current stage; -1 (default) means none selected yet. */
|
|
1577
|
+
readonly current: _angular_core.InputSignal<number>;
|
|
1578
|
+
/** Emit the clicked stage index; wire it to make the dots navigable. */
|
|
1579
|
+
readonly dotClick: _angular_core.OutputEmitterRef<number>;
|
|
1580
|
+
readonly dots: _angular_core.Signal<number[]>;
|
|
1581
|
+
dotClass(index: number): string;
|
|
1582
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StageDotsComponent, never>;
|
|
1583
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StageDotsComponent, "fx-ui-stage-dots", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; }, { "dotClick": "dotClick"; }, never, never, true, never>;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
/**
|
|
1587
|
+
* V2 evidence code block — the mono panel that carries a process tree, a
|
|
1588
|
+
* command line or any captured text (design ref 05, "Process tree").
|
|
1589
|
+
*
|
|
1590
|
+
* Whitespace is preserved and the box scrolls on its own rather than pushing
|
|
1591
|
+
* the page wide, so ASCII trees survive narrow viewports.
|
|
1592
|
+
*
|
|
1593
|
+
* <fx-ui-code-block [label]="'analyze.processTree' | translate" [code]="tree" />
|
|
1594
|
+
*/
|
|
1595
|
+
declare class CodeBlockComponent {
|
|
1596
|
+
readonly code: _angular_core.InputSignal<string>;
|
|
1597
|
+
/** Caller-translated caption above the box; omit for a bare block. */
|
|
1598
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1599
|
+
/** Scroll cap; empty grows with the content. */
|
|
1600
|
+
readonly maxHeight: _angular_core.InputSignal<string>;
|
|
1601
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeBlockComponent, never>;
|
|
1602
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeBlockComponent, "fx-ui-code-block", never, { "code": { "alias": "code"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
/**
|
|
1606
|
+
* V2 captured-evidence frame — a faux window chrome (traffic lights + mono file
|
|
1607
|
+
* name + timestamp) around a screenshot, with a placeholder when the image is
|
|
1608
|
+
* missing (design ref 05, "Screenshot").
|
|
1609
|
+
*
|
|
1610
|
+
* <fx-ui-screenshot-frame [label]="'analyze.screenshot' | translate"
|
|
1611
|
+
* fileName="chain-05.png" timestamp="09:42:18"
|
|
1612
|
+
* [src]="url" [caption]="caption" />
|
|
1613
|
+
*/
|
|
1614
|
+
declare class ScreenshotFrameComponent {
|
|
1615
|
+
/** Caller-translated caption above the frame; omit for a bare frame. */
|
|
1616
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1617
|
+
readonly fileName: _angular_core.InputSignal<string>;
|
|
1618
|
+
readonly timestamp: _angular_core.InputSignal<string>;
|
|
1619
|
+
/** Image URL; empty renders the placeholder body. */
|
|
1620
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
1621
|
+
/** Caller-translated line under (or inside) the frame. */
|
|
1622
|
+
readonly caption: _angular_core.InputSignal<string>;
|
|
1623
|
+
readonly alt: _angular_core.InputSignal<string>;
|
|
1624
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
1625
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScreenshotFrameComponent, never>;
|
|
1626
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScreenshotFrameComponent, "fx-ui-screenshot-frame", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1439
1627
|
}
|
|
1440
1628
|
|
|
1441
1629
|
/** Thin tone-coloured progress/score bar with optional label and caption. */
|
|
1442
1630
|
declare class MeterComponent {
|
|
1443
1631
|
value: number;
|
|
1444
1632
|
max: number;
|
|
1445
|
-
tone: Tone | null
|
|
1633
|
+
readonly tone: _angular_core.InputSignal<Tone | null>;
|
|
1446
1634
|
/** Caller-translated texts; omitted → bar only. */
|
|
1447
1635
|
label?: string;
|
|
1448
1636
|
caption?: string;
|
|
1449
1637
|
get percent(): number;
|
|
1450
1638
|
get fillClass(): string;
|
|
1451
|
-
static ɵfac:
|
|
1452
|
-
static ɵcmp:
|
|
1639
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MeterComponent, never>;
|
|
1640
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MeterComponent, "fx-ui-meter", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; }, {}, never, never, true, never>;
|
|
1453
1641
|
}
|
|
1454
1642
|
|
|
1455
|
-
/**
|
|
1643
|
+
/**
|
|
1644
|
+
* Panel section: card with a header and projected body.
|
|
1645
|
+
* - titleStyle 'heading' (default): icon + heading, the pre-V2 look
|
|
1646
|
+
* - titleStyle 'eyebrow': the V2 design's panel header — small tracked
|
|
1647
|
+
* caption on the left, muted [aside] text on the right
|
|
1648
|
+
*/
|
|
1456
1649
|
declare class SectionCardComponent {
|
|
1457
1650
|
/** Caller-translated heading. */
|
|
1458
|
-
title: string
|
|
1651
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
1459
1652
|
/** hero-icon name; omitted → text-only header. */
|
|
1460
1653
|
icon?: any;
|
|
1461
|
-
iconTone: Tone | null
|
|
1654
|
+
readonly iconTone: _angular_core.InputSignal<Tone | null>;
|
|
1655
|
+
readonly titleStyle: _angular_core.InputSignal<"heading" | "eyebrow">;
|
|
1656
|
+
/** Caller-translated right-aligned hint (eyebrow style). */
|
|
1657
|
+
readonly aside: _angular_core.InputSignal<string>;
|
|
1462
1658
|
get iconClass(): string;
|
|
1463
|
-
static ɵfac:
|
|
1464
|
-
static ɵcmp:
|
|
1659
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SectionCardComponent, never>;
|
|
1660
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SectionCardComponent, "fx-ui-section-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; }; "iconTone": { "alias": "iconTone"; "required": false; "isSignal": true; }; "titleStyle": { "alias": "titleStyle"; "required": false; "isSignal": true; }; "aside": { "alias": "aside"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1465
1661
|
}
|
|
1466
1662
|
|
|
1467
1663
|
/**
|
|
@@ -1471,18 +1667,18 @@ declare class SectionCardComponent {
|
|
|
1471
1667
|
*/
|
|
1472
1668
|
declare class InfoFieldComponent {
|
|
1473
1669
|
/** Caller-translated label. */
|
|
1474
|
-
label: string
|
|
1670
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1475
1671
|
value: string | number | null | undefined;
|
|
1476
1672
|
/** Colours the value; null/undefined renders the primary text colour. */
|
|
1477
1673
|
tone: Tone | null;
|
|
1478
1674
|
/** Monospace value (hashes, paths). */
|
|
1479
1675
|
mono: boolean;
|
|
1480
1676
|
/** Placeholder when value is empty. */
|
|
1481
|
-
placeholder: string
|
|
1677
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1482
1678
|
get displayValue(): string;
|
|
1483
1679
|
get valueClass(): string;
|
|
1484
|
-
static ɵfac:
|
|
1485
|
-
static ɵcmp:
|
|
1680
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfoFieldComponent, never>;
|
|
1681
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InfoFieldComponent, "fx-ui-info-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "mono": { "alias": "mono"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1486
1682
|
}
|
|
1487
1683
|
|
|
1488
1684
|
interface FxSeverityBadge {
|
|
@@ -1507,20 +1703,22 @@ declare class SeverityBadgesComponent {
|
|
|
1507
1703
|
showZero: boolean;
|
|
1508
1704
|
/** Append the severity letter to counts ("3C", "5H", "2M") per the report design. */
|
|
1509
1705
|
suffixed: boolean;
|
|
1510
|
-
badgeClick:
|
|
1706
|
+
readonly badgeClick: _angular_core.OutputEmitterRef<string>;
|
|
1511
1707
|
private static readonly TONES;
|
|
1512
1708
|
get badges(): FxSeverityBadge[];
|
|
1513
1709
|
badgeClass(badge: FxSeverityBadge): string;
|
|
1514
|
-
static ɵfac:
|
|
1515
|
-
static ɵcmp:
|
|
1710
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SeverityBadgesComponent, never>;
|
|
1711
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SeverityBadgesComponent, "fx-ui-severity-badges", never, { "stats": { "alias": "stats"; "required": false; }; "showZero": { "alias": "showZero"; "required": false; }; "suffixed": { "alias": "suffixed"; "required": false; }; }, { "badgeClick": "badgeClick"; }, never, never, true, never>;
|
|
1516
1712
|
}
|
|
1517
1713
|
|
|
1518
1714
|
/**
|
|
1519
|
-
*
|
|
1520
|
-
*
|
|
1521
|
-
* the
|
|
1715
|
+
* Master-detail shell driven by a BaseMasterDetailComponent. Two-column by
|
|
1716
|
+
* default; projecting a [mdFacets] block (V2 lookup screens) adds a third
|
|
1717
|
+
* facets-rail column before the list. The host page projects its own
|
|
1718
|
+
* header/filters and supplies templates for the parts that vary per entity:
|
|
1522
1719
|
*
|
|
1523
1720
|
* <fx-ui-master-detail [table]="this" [emptyMessage]="'noData' | translate">
|
|
1721
|
+
* <div mdFacets>…<fx-ui-facets-rail …/>…</div> <!-- optional, V2 -->
|
|
1524
1722
|
* <div mdHeader>…title / stat cards…</div>
|
|
1525
1723
|
* <div mdFilters>…search bar / filter chips…</div>
|
|
1526
1724
|
* <ng-template #row let-item let-selected="selected">…row body…</ng-template>
|
|
@@ -1530,26 +1728,449 @@ declare class SeverityBadgesComponent {
|
|
|
1530
1728
|
* The list behaves as a single-select listbox: the selected option is the
|
|
1531
1729
|
* tab stop, ArrowUp/Down/Home/End move the selection.
|
|
1532
1730
|
*/
|
|
1533
|
-
declare class MasterDetailComponent implements AfterViewInit {
|
|
1731
|
+
declare class MasterDetailComponent implements AfterViewInit, AfterContentInit {
|
|
1732
|
+
private hostEl;
|
|
1733
|
+
/** True when the host projected a [mdFacets] block — switches to 3 columns. */
|
|
1734
|
+
hasFacets: boolean;
|
|
1534
1735
|
table: BaseMasterDetailComponent<any>;
|
|
1535
1736
|
/** Fixed list-pane width on lg+ viewports (stacked full-width below). */
|
|
1536
|
-
listWidth: string
|
|
1537
|
-
maxListHeight: string
|
|
1538
|
-
pageSizeOptions: number[]
|
|
1737
|
+
readonly listWidth: _angular_core.InputSignal<string>;
|
|
1738
|
+
readonly maxListHeight: _angular_core.InputSignal<string>;
|
|
1739
|
+
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
1539
1740
|
/** Labels come in via inputs — the lib carries no i18n. */
|
|
1540
|
-
emptyMessage: string
|
|
1541
|
-
listLabel: string
|
|
1542
|
-
skeletonCards: number
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1741
|
+
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
1742
|
+
readonly listLabel: _angular_core.InputSignal<string>;
|
|
1743
|
+
readonly skeletonCards: _angular_core.InputSignal<number>;
|
|
1744
|
+
/** 'prevnext' renders the V2 "X of Y" + Prev/Next controls instead of the
|
|
1745
|
+
Material paginator (which stays in the DOM, hidden — it is the paging
|
|
1746
|
+
engine BaseTable subscribes to). */
|
|
1747
|
+
readonly paginationStyle: _angular_core.InputSignal<"paginator" | "prevnext">;
|
|
1748
|
+
/** Caller-translated Prev/Next labels ("X of Y" is numeric). */
|
|
1749
|
+
readonly prevLabel: _angular_core.InputSignal<string>;
|
|
1750
|
+
readonly nextLabel: _angular_core.InputSignal<string>;
|
|
1751
|
+
readonly rowTemplate: _angular_core.Signal<TemplateRef<any>>;
|
|
1752
|
+
readonly detailTemplate: _angular_core.Signal<TemplateRef<any>>;
|
|
1753
|
+
readonly paginator: _angular_core.Signal<MatPaginator>;
|
|
1546
1754
|
readonly uid: string;
|
|
1755
|
+
ngAfterContentInit(): void;
|
|
1547
1756
|
ngAfterViewInit(): void;
|
|
1757
|
+
/** "X of Y" range text for the prevnext pagination style. */
|
|
1758
|
+
rangeText(): string;
|
|
1548
1759
|
isSelected(row: any): boolean;
|
|
1549
1760
|
optionId(index: number): string;
|
|
1550
1761
|
onKeydown(event: KeyboardEvent, index: number): void;
|
|
1551
|
-
static ɵfac:
|
|
1552
|
-
static ɵcmp:
|
|
1762
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MasterDetailComponent, never>;
|
|
1763
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MasterDetailComponent, "fx-ui-master-detail", never, { "table": { "alias": "table"; "required": false; }; "listWidth": { "alias": "listWidth"; "required": false; "isSignal": true; }; "maxListHeight": { "alias": "maxListHeight"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "listLabel": { "alias": "listLabel"; "required": false; "isSignal": true; }; "skeletonCards": { "alias": "skeletonCards"; "required": false; "isSignal": true; }; "paginationStyle": { "alias": "paginationStyle"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, {}, ["rowTemplate", "detailTemplate"], ["[mdFacets]", "[mdHeader]", "[mdFilters]"], true, never>;
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
interface FxMenuItem {
|
|
1767
|
+
/** Caller-translated label. */
|
|
1768
|
+
label: string;
|
|
1769
|
+
/** Optional hero-icon name shown before the label. */
|
|
1770
|
+
icon?: string;
|
|
1771
|
+
/** Danger/warning items get the matching text tone. */
|
|
1772
|
+
tone?: Tone | null;
|
|
1773
|
+
disabled?: boolean;
|
|
1774
|
+
/** Free-form identifier handed back on (select). */
|
|
1775
|
+
value?: any;
|
|
1776
|
+
}
|
|
1777
|
+
/**
|
|
1778
|
+
* Row-action dropdown wrapper over mat-menu (behavior-layer rule, Playbook
|
|
1779
|
+
* §5.1 — apps never import @angular/material directly). Project the trigger
|
|
1780
|
+
* content; items render from [items] and come back through (select).
|
|
1781
|
+
*
|
|
1782
|
+
* <fx-ui-menu [items]="actions" (select)="onAction($event)">
|
|
1783
|
+
* <fx-ui-hero-icon icon="ellipsis-vertical" [size]="20" />
|
|
1784
|
+
* </fx-ui-menu>
|
|
1785
|
+
*/
|
|
1786
|
+
declare class MenuComponent {
|
|
1787
|
+
readonly items: _angular_core.InputSignal<FxMenuItem[]>;
|
|
1788
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1789
|
+
/** Accessible name for the trigger button. */
|
|
1790
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1791
|
+
readonly select: _angular_core.OutputEmitterRef<FxMenuItem>;
|
|
1792
|
+
toneClass(item: FxMenuItem): string;
|
|
1793
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
1794
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "fx-ui-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, ["*"], true, never>;
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
/**
|
|
1798
|
+
* V2 theme picker — dropdown các theme OgeniumDashboards cho chọn
|
|
1799
|
+
* (OG_PICKER_THEME_META: porcelain/charcoal), mỗi dòng có swatch accent +
|
|
1800
|
+
* page. Drives ThemeService.setTheme(); replaces the pre-V2 sun/moon toggle
|
|
1801
|
+
* (behavior-layer rule: mat-menu stays inside the lib, apps never import
|
|
1802
|
+
* @angular/material directly).
|
|
1803
|
+
*
|
|
1804
|
+
* <fx-ui-theme-picker />
|
|
1805
|
+
*/
|
|
1806
|
+
declare class ThemePickerComponent {
|
|
1807
|
+
private themeService;
|
|
1808
|
+
readonly themes: readonly OgThemeMeta[];
|
|
1809
|
+
readonly current: _angular_core.Signal<OgTheme>;
|
|
1810
|
+
/** Tra trên bộ ĐẦY ĐỦ: theme đang active có thể là một trong 4 theme đã ẩn
|
|
1811
|
+
khỏi picker (deep-link /themes, localStorage cũ) — nhãn vẫn phải đúng. */
|
|
1812
|
+
currentMeta(): OgThemeMeta;
|
|
1813
|
+
select(theme: OgTheme): void;
|
|
1814
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemePickerComponent, never>;
|
|
1815
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemePickerComponent, "fx-ui-theme-picker", never, {}, {}, never, never, true, never>;
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
/**
|
|
1819
|
+
* "Waiting on the backend" marker (anh Tú 29/08).
|
|
1820
|
+
*
|
|
1821
|
+
* Put this on any UI the V2 design calls for but no endpoint feeds yet, so the
|
|
1822
|
+
* gap is visible in the product instead of living only in a backlog file.
|
|
1823
|
+
* `grep -r "fx-ui-pending-badge"` then lists every outstanding field.
|
|
1824
|
+
*
|
|
1825
|
+
* <fx-ui-pending-badge [field]="'confirmed-chains weekly series'" />
|
|
1826
|
+
*
|
|
1827
|
+
* Keep the copy factual: it states that data is missing, never fakes a value.
|
|
1828
|
+
*/
|
|
1829
|
+
declare class PendingBadgeComponent {
|
|
1830
|
+
/** Caller-translated chip text. */
|
|
1831
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1832
|
+
/**
|
|
1833
|
+
* What exactly is missing — shown as the title tooltip so a reviewer can read
|
|
1834
|
+
* the required field without opening the code.
|
|
1835
|
+
*/
|
|
1836
|
+
readonly field: _angular_core.InputSignal<string>;
|
|
1837
|
+
/** 'chip' (default) sits inline; 'dot' is a bare marker for dense rows. */
|
|
1838
|
+
readonly variant: _angular_core.InputSignal<"chip" | "dot">;
|
|
1839
|
+
get tooltip(): string;
|
|
1840
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PendingBadgeComponent, never>;
|
|
1841
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PendingBadgeComponent, "fx-ui-pending-badge", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
/**
|
|
1845
|
+
* Wraps UI that is rendered from PLACEHOLDER data so the layout can be
|
|
1846
|
+
* reviewed before its endpoint exists (anh Tú 29/08: "muốn có full giao diện
|
|
1847
|
+
* trước để review").
|
|
1848
|
+
*
|
|
1849
|
+
* The frame makes the status unmistakable — dashed outline, a corner label and
|
|
1850
|
+
* the pending marker naming the missing field — so sample shapes can never be
|
|
1851
|
+
* mistaken for measured values. Drop the wrapper (and the sample input) the
|
|
1852
|
+
* moment the API lands.
|
|
1853
|
+
*
|
|
1854
|
+
* The pending chip is inlined rather than composed from fx-ui-pending-badge:
|
|
1855
|
+
* one lib component importing another inside the same barrel tripped NG0919
|
|
1856
|
+
* (metadata read before definition) in consuming apps.
|
|
1857
|
+
*
|
|
1858
|
+
* <fx-ui-sample-frame [field]="'weekly activity'" [label]="'Sample layout'">
|
|
1859
|
+
* …chart rendered from sample series…
|
|
1860
|
+
* </fx-ui-sample-frame>
|
|
1861
|
+
*/
|
|
1862
|
+
declare class SampleFrameComponent {
|
|
1863
|
+
/** Caller-translated corner label. */
|
|
1864
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1865
|
+
/** Field the backend still owes — shown on the pending badge tooltip. */
|
|
1866
|
+
readonly field: _angular_core.InputSignal<string>;
|
|
1867
|
+
/** Caller-translated pending-chip text. */
|
|
1868
|
+
readonly pendingLabel: _angular_core.InputSignal<string>;
|
|
1869
|
+
get tooltip(): string;
|
|
1870
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SampleFrameComponent, never>;
|
|
1871
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SampleFrameComponent, "fx-ui-sample-frame", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": false; "isSignal": true; }; "pendingLabel": { "alias": "pendingLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
/**
|
|
1875
|
+
* V2 score badge — the risk/score chip used on attack-path rows, dashboard
|
|
1876
|
+
* panels and project tiles. Colour comes from the 0–100 risk band unless an
|
|
1877
|
+
* explicit tone is given (bands: ≥90 critical, ≥70 danger, ≥40 warning, else
|
|
1878
|
+
* success — same thresholds as value-tone's scoreTone on a 0–100 scale).
|
|
1879
|
+
*/
|
|
1880
|
+
declare class ScoreBadgeComponent {
|
|
1881
|
+
readonly score: _angular_core.InputSignal<string | number>;
|
|
1882
|
+
/** Denominator shown as "98 / 100"; omit for a bare score. */
|
|
1883
|
+
readonly outOf: _angular_core.InputSignal<number | null>;
|
|
1884
|
+
/** Overrides the band-derived tone. */
|
|
1885
|
+
readonly tone: _angular_core.InputSignal<Tone | null>;
|
|
1886
|
+
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
|
|
1887
|
+
readonly resolvedTone: _angular_core.Signal<Tone | null>;
|
|
1888
|
+
badgeClass(): string;
|
|
1889
|
+
sizeClass(): string;
|
|
1890
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScoreBadgeComponent, never>;
|
|
1891
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScoreBadgeComponent, "fx-ui-score-badge", never, { "score": { "alias": "score"; "required": true; "isSignal": true; }; "outOf": { "alias": "outOf"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1892
|
+
}
|
|
1893
|
+
|
|
1894
|
+
/**
|
|
1895
|
+
* V2 StatusDot — tiny tone-coloured indicator used in list rows, project
|
|
1896
|
+
* cards and stat grids. Optional pulse for "live" states (running scans).
|
|
1897
|
+
*
|
|
1898
|
+
* <fx-ui-status-dot tone="success" />
|
|
1899
|
+
* <fx-ui-status-dot tone="warning" [pulse]="true" />
|
|
1900
|
+
*/
|
|
1901
|
+
declare class StatusDotComponent {
|
|
1902
|
+
readonly tone: _angular_core.InputSignal<Tone | null>;
|
|
1903
|
+
/** Diameter in px. */
|
|
1904
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
1905
|
+
readonly pulse: _angular_core.InputSignal<boolean>;
|
|
1906
|
+
dotClass(): string;
|
|
1907
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusDotComponent, never>;
|
|
1908
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusDotComponent, "fx-ui-status-dot", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "pulse": { "alias": "pulse"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1909
|
+
}
|
|
1910
|
+
|
|
1911
|
+
/**
|
|
1912
|
+
* V2 sparkbar — inline mini bar-trend (risk trend on project cards, deltas in
|
|
1913
|
+
* stat grids). Pure DOM, token-coloured; no chart engine.
|
|
1914
|
+
*
|
|
1915
|
+
* <fx-ui-sparkbar [values]="[3, 5, 2, 8, 6]" />
|
|
1916
|
+
*/
|
|
1917
|
+
declare class SparkbarComponent {
|
|
1918
|
+
readonly values: _angular_core.InputSignal<number[]>;
|
|
1919
|
+
/** Bar colour; null renders the accent. */
|
|
1920
|
+
readonly tone: _angular_core.InputSignal<Tone | null>;
|
|
1921
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
1922
|
+
readonly bars: _angular_core.Signal<number[]>;
|
|
1923
|
+
barClass(): string;
|
|
1924
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SparkbarComponent, never>;
|
|
1925
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SparkbarComponent, "fx-ui-sparkbar", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
interface FxSegmentedOption {
|
|
1929
|
+
value: string | number;
|
|
1930
|
+
/** Caller-translated label. */
|
|
1931
|
+
label: string;
|
|
1932
|
+
/** Optional hero-icon before the label. */
|
|
1933
|
+
icon?: string;
|
|
1934
|
+
/** Optional trailing count chip. */
|
|
1935
|
+
count?: number;
|
|
1936
|
+
disabled?: boolean;
|
|
1937
|
+
}
|
|
1938
|
+
/**
|
|
1939
|
+
* V2 segmented control — mode toggles (Essentials/Advanced), Catalog/Table
|
|
1940
|
+
* view switches, sub-navigation inside a tab. Generic n-option control; the
|
|
1941
|
+
* semantics live with the caller.
|
|
1942
|
+
*
|
|
1943
|
+
* Rendered as a compact pill group (anh Tú 29/08): equal-width options inside
|
|
1944
|
+
* a rounded-full track, with a single "thumb" that SLIDES to the active
|
|
1945
|
+
* option (transform transition — no per-button background repaint).
|
|
1946
|
+
*
|
|
1947
|
+
* <fx-ui-segmented [options]="modes" [(value)]="mode" />
|
|
1948
|
+
*/
|
|
1949
|
+
declare class SegmentedComponent {
|
|
1950
|
+
readonly options: _angular_core.InputSignal<FxSegmentedOption[]>;
|
|
1951
|
+
readonly value: _angular_core.ModelSignal<string | number | null>;
|
|
1952
|
+
/** Accessible name for the group. */
|
|
1953
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1954
|
+
/**
|
|
1955
|
+
* Both variants share the pill shape; they differ in the thumb fill:
|
|
1956
|
+
* 'default': raised surface thumb — view switches (Catalog/Table, ref 10).
|
|
1957
|
+
* 'pill': accent-filled thumb — the Essential/Advanced depth toggle
|
|
1958
|
+
* (design refs 04/05).
|
|
1959
|
+
*/
|
|
1960
|
+
readonly variant: _angular_core.InputSignal<"default" | "pill">;
|
|
1961
|
+
/** Index the sliding thumb sits on; -1 hides it (no/unknown selection). */
|
|
1962
|
+
readonly activeIndex: _angular_core.Signal<number>;
|
|
1963
|
+
/** Equal-width tracks → the thumb is 1/n of the inner width and slides by
|
|
1964
|
+
* multiples of its own width. Pure CSS transform, nothing to measure. */
|
|
1965
|
+
readonly thumbWidth: _angular_core.Signal<string>;
|
|
1966
|
+
readonly thumbTransform: _angular_core.Signal<string>;
|
|
1967
|
+
select(option: FxSegmentedOption): void;
|
|
1968
|
+
thumbClass(): string;
|
|
1969
|
+
optionClass(option: FxSegmentedOption): string;
|
|
1970
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedComponent, never>;
|
|
1971
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedComponent, "fx-ui-segmented", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1972
|
+
}
|
|
1973
|
+
|
|
1974
|
+
interface FxListRowBadge {
|
|
1975
|
+
/** Caller-translated label. */
|
|
1976
|
+
label: string;
|
|
1977
|
+
tone?: Tone | null;
|
|
1978
|
+
}
|
|
1979
|
+
/**
|
|
1980
|
+
* V2 ListRow — presentational body for master-detail #row templates and other
|
|
1981
|
+
* selectable lists: status dot + title, trailing badges, meta line. Extra
|
|
1982
|
+
* content projects below the meta line.
|
|
1983
|
+
*
|
|
1984
|
+
* <ng-template #row let-item>
|
|
1985
|
+
* <fx-ui-list-row
|
|
1986
|
+
* [title]="item.name"
|
|
1987
|
+
* [meta]="item.version + ' · ' + item.date"
|
|
1988
|
+
* [dotTone]="statusTone(item)"
|
|
1989
|
+
* [badges]="[{ label: item.severity, tone: severityTone(item.severity) }]"
|
|
1990
|
+
* />
|
|
1991
|
+
* </ng-template>
|
|
1992
|
+
*/
|
|
1993
|
+
declare class ListRowComponent {
|
|
1994
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
1995
|
+
readonly meta: _angular_core.InputSignal<string>;
|
|
1996
|
+
readonly badges: _angular_core.InputSignal<FxListRowBadge[]>;
|
|
1997
|
+
readonly dotTone: _angular_core.InputSignal<Tone | null | undefined>;
|
|
1998
|
+
readonly dotPulse: _angular_core.InputSignal<boolean>;
|
|
1999
|
+
badgeClass(badge: FxListRowBadge): string;
|
|
2000
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListRowComponent, never>;
|
|
2001
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListRowComponent, "fx-ui-list-row", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; "dotTone": { "alias": "dotTone"; "required": false; "isSignal": true; }; "dotPulse": { "alias": "dotPulse"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
interface FxBarListItem {
|
|
2005
|
+
/** Caller-translated label. */
|
|
2006
|
+
label: string;
|
|
2007
|
+
value: number;
|
|
2008
|
+
/** Shown instead of the raw value (e.g. "9.8", "82%"). */
|
|
2009
|
+
valueLabel?: string;
|
|
2010
|
+
/** Bar colour; null/undefined renders the accent. */
|
|
2011
|
+
tone?: Tone | null;
|
|
2012
|
+
/** Secondary line under the label. */
|
|
2013
|
+
meta?: string;
|
|
2014
|
+
/** Free-form identifier handed back on (select). */
|
|
2015
|
+
data?: any;
|
|
2016
|
+
}
|
|
2017
|
+
/**
|
|
2018
|
+
* V2 BarList — ranked horizontal bars ("Top projects by risk", "Top critical
|
|
2019
|
+
* attack paths"). Pure DOM (accessible, token-native, clickable) — charts via
|
|
2020
|
+
* ECharts are for time series, not rankings.
|
|
2021
|
+
*
|
|
2022
|
+
* <fx-ui-bar-list [items]="topRisk" (select)="open($event)" />
|
|
2023
|
+
*/
|
|
2024
|
+
declare class BarListComponent {
|
|
2025
|
+
readonly items: _angular_core.InputSignal<FxBarListItem[]>;
|
|
2026
|
+
/** Rows render as buttons only when true (a (select) listener exists). */
|
|
2027
|
+
readonly interactive: _angular_core.InputSignal<boolean>;
|
|
2028
|
+
readonly select: _angular_core.OutputEmitterRef<FxBarListItem>;
|
|
2029
|
+
readonly max: _angular_core.Signal<number>;
|
|
2030
|
+
widthOf(item: FxBarListItem): number;
|
|
2031
|
+
barClass(item: FxBarListItem): string;
|
|
2032
|
+
onSelect(item: FxBarListItem): void;
|
|
2033
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarListComponent, never>;
|
|
2034
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarListComponent, "fx-ui-bar-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
interface FxFacetOption {
|
|
2038
|
+
value: string | number;
|
|
2039
|
+
/** Caller-translated label. */
|
|
2040
|
+
label: string;
|
|
2041
|
+
count?: number;
|
|
2042
|
+
/** Optional tone dot before the label (severity facets). */
|
|
2043
|
+
tone?: Tone | null;
|
|
2044
|
+
}
|
|
2045
|
+
interface FxFacetGroup {
|
|
2046
|
+
id: string;
|
|
2047
|
+
/** Caller-translated group heading. */
|
|
2048
|
+
label: string;
|
|
2049
|
+
/** Multi-select (checkbox semantics); default single-select toggle. */
|
|
2050
|
+
multi?: boolean;
|
|
2051
|
+
options: FxFacetOption[];
|
|
2052
|
+
}
|
|
2053
|
+
type FxFacetSelection = Record<string, (string | number)[]>;
|
|
2054
|
+
/**
|
|
2055
|
+
* V2 facets rail — the first column of 3-column lookup screens: filter groups
|
|
2056
|
+
* with counts + a Reset link. Presentational: filtering itself stays in the
|
|
2057
|
+
* page (feed the emitted selection into BaseMasterDetail filters).
|
|
2058
|
+
*
|
|
2059
|
+
* <div mdFacets>
|
|
2060
|
+
* <fx-ui-facets-rail [groups]="facetGroups" [selection]="facets"
|
|
2061
|
+
* (selectionChange)="onFacets($event)" />
|
|
2062
|
+
* </div>
|
|
2063
|
+
*/
|
|
2064
|
+
declare class FacetsRailComponent {
|
|
2065
|
+
readonly groups: _angular_core.InputSignal<FxFacetGroup[]>;
|
|
2066
|
+
readonly selection: _angular_core.InputSignal<FxFacetSelection>;
|
|
2067
|
+
/** Caller-translated label for the reset affordance. */
|
|
2068
|
+
readonly resetLabel: _angular_core.InputSignal<string>;
|
|
2069
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<FxFacetSelection>;
|
|
2070
|
+
readonly hasSelection: _angular_core.Signal<boolean>;
|
|
2071
|
+
isSelected(group: FxFacetGroup, option: FxFacetOption): boolean;
|
|
2072
|
+
toggle(group: FxFacetGroup, option: FxFacetOption): void;
|
|
2073
|
+
reset(): void;
|
|
2074
|
+
toneClass(option: FxFacetOption): string;
|
|
2075
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FacetsRailComponent, never>;
|
|
2076
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FacetsRailComponent, "fx-ui-facets-rail", never, { "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
interface FxProjectCardChip {
|
|
2080
|
+
/** Caller-translated label. */
|
|
2081
|
+
label: string;
|
|
2082
|
+
tone?: Tone | null;
|
|
2083
|
+
}
|
|
2084
|
+
interface FxProjectCardMetric {
|
|
2085
|
+
/** Caller-formatted figure ("128", "--"). */
|
|
2086
|
+
value: string | number;
|
|
2087
|
+
/** Caller-translated caption under the figure. */
|
|
2088
|
+
label: string;
|
|
2089
|
+
}
|
|
2090
|
+
interface FxProjectCard {
|
|
2091
|
+
name: string;
|
|
2092
|
+
description?: string;
|
|
2093
|
+
/** 1–2 char initials rendered in an accent-soft square (design 12). */
|
|
2094
|
+
avatar?: string;
|
|
2095
|
+
/** Small line under the name (schedule / scope) with an optional hero-icon. */
|
|
2096
|
+
sub?: {
|
|
2097
|
+
icon?: string;
|
|
2098
|
+
label: string;
|
|
2099
|
+
};
|
|
2100
|
+
/** Score chip top-right ("High · 82"); rendered as a toned pill. */
|
|
2101
|
+
score?: string | number;
|
|
2102
|
+
scoreTone?: Tone | null;
|
|
2103
|
+
/** Caption under the score chip (kept for pre-V2 callers). */
|
|
2104
|
+
scoreLabel?: string;
|
|
2105
|
+
/** Risk-trend sparkbar values (pre-V2 look; prefer `trend`). */
|
|
2106
|
+
spark?: number[];
|
|
2107
|
+
/**
|
|
2108
|
+
* Design-12 risk trend: one toned block per period, oldest first, with a
|
|
2109
|
+
* caption line underneath ("risk trend" · "128 analyses").
|
|
2110
|
+
*/
|
|
2111
|
+
trend?: {
|
|
2112
|
+
tones: (Tone | null)[];
|
|
2113
|
+
caption?: string;
|
|
2114
|
+
aside?: string;
|
|
2115
|
+
};
|
|
2116
|
+
chips?: FxProjectCardChip[];
|
|
2117
|
+
/** Metric columns (Binaries · Findings · …): figure + caption. */
|
|
2118
|
+
metrics?: FxProjectCardMetric[];
|
|
2119
|
+
/** Footer meta line (e.g. "Last analysis · 2d ago"). */
|
|
2120
|
+
meta?: string;
|
|
2121
|
+
/** Footer link label right of the meta ("Open ›"); the whole card emits (open). */
|
|
2122
|
+
openLabel?: string;
|
|
2123
|
+
/** Free-form identifier handed back on (open). */
|
|
2124
|
+
data?: any;
|
|
2125
|
+
}
|
|
2126
|
+
/**
|
|
2127
|
+
* V2 project card — the Project Management catalog tile (design 12): initials
|
|
2128
|
+
* avatar + name + schedule line, toned score chip, risk-trend blocks, metric
|
|
2129
|
+
* columns and a "Last analysis · … / Open ›" footer.
|
|
2130
|
+
*
|
|
2131
|
+
* <fx-ui-project-card [card]="project" (open)="goTo(project)" />
|
|
2132
|
+
*/
|
|
2133
|
+
declare class ProjectCardComponent {
|
|
2134
|
+
readonly card: _angular_core.InputSignal<FxProjectCard>;
|
|
2135
|
+
readonly open: _angular_core.OutputEmitterRef<FxProjectCard>;
|
|
2136
|
+
scoreChipClass(): string;
|
|
2137
|
+
chipClass(chip: FxProjectCardChip): string;
|
|
2138
|
+
blockClass(tone: Tone | null): string;
|
|
2139
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProjectCardComponent, never>;
|
|
2140
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProjectCardComponent, "fx-ui-project-card", never, { "card": { "alias": "card"; "required": true; "isSignal": true; }; }, { "open": "open"; }, never, never, true, never>;
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2143
|
+
type FxPipelineStageState = 'pending' | 'active' | 'done' | 'error';
|
|
2144
|
+
interface FxPipelineStage {
|
|
2145
|
+
id: string;
|
|
2146
|
+
/** Caller-translated label. */
|
|
2147
|
+
label: string;
|
|
2148
|
+
state?: FxPipelineStageState;
|
|
2149
|
+
/** Small line under the label (e.g. "optional", a duration). */
|
|
2150
|
+
description?: string;
|
|
2151
|
+
}
|
|
2152
|
+
/**
|
|
2153
|
+
* V2 pipeline stepper — the New Analysis 7-stage pipeline header. Renders the
|
|
2154
|
+
* stage strip only; the page owns the stage bodies (project the current one
|
|
2155
|
+
* below). Stage states are data — the parent decides what is done/active.
|
|
2156
|
+
*
|
|
2157
|
+
* <fx-ui-pipeline-stepper [stages]="stages" (stageClick)="goTo($event)">
|
|
2158
|
+
* …current stage body…
|
|
2159
|
+
* </fx-ui-pipeline-stepper>
|
|
2160
|
+
*/
|
|
2161
|
+
declare class PipelineStepperComponent {
|
|
2162
|
+
readonly stages: _angular_core.InputSignal<FxPipelineStage[]>;
|
|
2163
|
+
/** Only done stages are click-navigable (review a completed step). */
|
|
2164
|
+
readonly clickable: _angular_core.InputSignal<boolean>;
|
|
2165
|
+
readonly stageClick: _angular_core.OutputEmitterRef<number>;
|
|
2166
|
+
stateOf(stage: FxPipelineStage): FxPipelineStageState;
|
|
2167
|
+
circleClass(stage: FxPipelineStage): string;
|
|
2168
|
+
labelClass(stage: FxPipelineStage): string;
|
|
2169
|
+
connectorClass(stage: FxPipelineStage): string;
|
|
2170
|
+
canClick(stage: FxPipelineStage): boolean;
|
|
2171
|
+
onStageClick(stage: FxPipelineStage, index: number): void;
|
|
2172
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipelineStepperComponent, never>;
|
|
2173
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PipelineStepperComponent, "fx-ui-pipeline-stepper", never, { "stages": { "alias": "stages"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, { "stageClick": "stageClick"; }, never, ["*"], true, never>;
|
|
1553
2174
|
}
|
|
1554
2175
|
|
|
1555
2176
|
declare class ConfirmationDialogComponent {
|
|
@@ -1563,24 +2184,26 @@ declare class ConfirmationDialogComponent {
|
|
|
1563
2184
|
constructor(ref: MatDialogRef<ConfirmationDialogComponent>, bindings: any);
|
|
1564
2185
|
accept(): Promise<void>;
|
|
1565
2186
|
cancel(): void;
|
|
1566
|
-
static ɵfac:
|
|
1567
|
-
static ɵcmp:
|
|
1568
|
-
}
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
2187
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationDialogComponent, never>;
|
|
2188
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationDialogComponent, "fx-ui-confirmation-dialog", never, {}, {}, never, never, true, never>;
|
|
2189
|
+
}
|
|
2190
|
+
|
|
2191
|
+
/**
|
|
2192
|
+
* Compatibility barrel over the (now standalone) core components.
|
|
2193
|
+
*
|
|
2194
|
+
* Deliberately NOT re-exported anymore: Angular Material —
|
|
2195
|
+
* Material is a behavior layer that stays an
|
|
2196
|
+
* implementation detail of this lib (Playbook §5.1); each standalone
|
|
2197
|
+
* component imports what it needs itself. Apps consume fx-ui-* only.
|
|
2198
|
+
*
|
|
2199
|
+
* Heavy components live in secondary entry points and are not part of this
|
|
2200
|
+
* barrel: @foxeltech/angular-ui/chart, /flow, /rich-text.
|
|
2201
|
+
*/
|
|
1579
2202
|
declare class UiModule {
|
|
1580
|
-
static ɵfac:
|
|
1581
|
-
static ɵmod:
|
|
1582
|
-
static ɵinj:
|
|
2203
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiModule, never>;
|
|
2204
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<UiModule, never, [typeof i1$1.FormsModule, typeof i1$1.ReactiveFormsModule, typeof i2.RouterModule, typeof HasPermissionDirective, typeof TrimOnBlurDirective, typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof SliderComponent, typeof SwitchComponent, typeof SkeletonTableLoadingComponent, typeof CircleProgressBar, typeof TreeDiagram, typeof TableCell, typeof KanbanBoardComponent, typeof DrawerComponent, typeof SkeletonListComponent, typeof SkeletonDetailComponent, typeof StatCardsComponent, typeof EmptyStateComponent, typeof FilterChipsComponent, typeof FilterPillsComponent, typeof StageDotsComponent, typeof CodeBlockComponent, typeof ScreenshotFrameComponent, typeof MeterComponent, typeof SectionCardComponent, typeof InfoFieldComponent, typeof SeverityBadgesComponent, typeof MasterDetailComponent, typeof MenuComponent, typeof ThemePickerComponent, typeof PendingBadgeComponent, typeof SampleFrameComponent, typeof ScoreBadgeComponent, typeof StatusDotComponent, typeof SparkbarComponent, typeof SegmentedComponent, typeof ListRowComponent, typeof BarListComponent, typeof FacetsRailComponent, typeof ProjectCardComponent, typeof PipelineStepperComponent, typeof ConfirmationDialogComponent], [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof SliderComponent, typeof SwitchComponent, typeof SkeletonTableLoadingComponent, typeof CircleProgressBar, typeof TreeDiagram, typeof TableCell, typeof KanbanBoardComponent, typeof DrawerComponent, typeof SkeletonListComponent, typeof SkeletonDetailComponent, typeof StatCardsComponent, typeof EmptyStateComponent, typeof FilterChipsComponent, typeof FilterPillsComponent, typeof StageDotsComponent, typeof CodeBlockComponent, typeof ScreenshotFrameComponent, typeof MeterComponent, typeof SectionCardComponent, typeof InfoFieldComponent, typeof SeverityBadgesComponent, typeof MasterDetailComponent, typeof MenuComponent, typeof ThemePickerComponent, typeof PendingBadgeComponent, typeof SampleFrameComponent, typeof ScoreBadgeComponent, typeof StatusDotComponent, typeof SparkbarComponent, typeof SegmentedComponent, typeof ListRowComponent, typeof BarListComponent, typeof FacetsRailComponent, typeof ProjectCardComponent, typeof PipelineStepperComponent, typeof ConfirmationDialogComponent, typeof i1$1.FormsModule, typeof i1$1.ReactiveFormsModule, typeof i2.RouterModule, typeof HasPermissionDirective, typeof TrimOnBlurDirective]>;
|
|
2205
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<UiModule>;
|
|
1583
2206
|
}
|
|
1584
2207
|
|
|
1585
|
-
export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseMasterDetailComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent,
|
|
1586
|
-
export type { Breadcrumb, ColumnChangedEvent, FxApiClass, FxFilterChipOption, FxListRequest, FxListResolverContext, FxSeverityBadge, FxStatCard,
|
|
2208
|
+
export { AuthInterceptor, AuthStateService, BarListComponent, BaseComponent, BaseDialogComponent, BaseMasterDetailComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, CheckboxComponent, CircleProgressBar, CodeBlockComponent, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, DrawerComponent, EmptyStateComponent, FX_ICON_SPRITE_URL, FacetsRailComponent, FilterChipsComponent, FilterPillsComponent, FxComponent, FxDialogService, FxLoadingService, FxStorageService, FxToastrService, FxUtils, FxValidators, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InfoFieldComponent, InputComponent, KanbanBoardComponent, ListRowComponent, LoadingPanel, MasterDetailComponent, MenuComponent, MeterComponent, NotificationService, OG_LIGHT_THEMES, OG_PICKER_THEMES, OG_PICKER_THEME_META, OG_THEMES, OG_THEME_META, PendingBadgeComponent, PermissionGuard, PermissionService, PipelineStepperComponent, ProjectCardComponent, RadioButtonComponent, RadioButtonToggleComponent, RealtimeTableSync, SampleFrameComponent, ScoreBadgeComponent, ScreenshotFrameComponent, SearchBarComponent, SectionCardComponent, SegmentedComponent, SelectComponent, SeverityBadgesComponent, SkeletonDetailComponent, SkeletonListComponent, SkeletonTableLoadingComponent, SliderComponent, SparkbarComponent, StageDotsComponent, StatCardsComponent, StatusDotComponent, SwitchComponent, TabComponent, TabGroupComponent, TableCell, TagComponent, ThemePickerComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule, anyFeatureEnabled, countTone, createApi, featureEnabled, fxListResolver, scoreTone, severityTone, toneBadge, toneBg, toneColor, toneText };
|
|
2209
|
+
export type { Breadcrumb, ColumnChangedEvent, DrawerItem, ErrorMessages, FxApiClass, FxBarListItem, FxConfirmOptions, FxFacetGroup, FxFacetOption, FxFacetSelection, FxFeatureFlags, FxFilterChipOption, FxFilterPillOption, FxListRequest, FxListResolverContext, FxListRowBadge, FxMenuItem, FxPipelineStage, FxPipelineStageState, FxProjectCard, FxProjectCardChip, FxProjectCardMetric, FxSegmentedOption, FxSeverityBadge, FxStatCard, FxStatCardDelta, FxTableFilters, IRadioButton, KanbanColumn, NotificationCallback, NotificationConnectOptions, OgTheme, OgThemeMeta, RealtimeTableEvent, RealtimeTableSyncOptions, TableResult, TagType, ToastData, Tone, TreeNode, UploadResult };
|