@sinequa/atomic-angular 2.15.0 → 2.16.0
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/document-workspaces/i18n/de.json +2 -0
- package/document-workspaces/i18n/en.json +2 -0
- package/document-workspaces/i18n/fr.json +2 -0
- package/document-workspaces/i18n/ja.json +2 -0
- package/features/auth/i18n/de.json +1 -0
- package/features/auth/i18n/en.json +1 -0
- package/features/auth/i18n/fr.json +1 -0
- package/features/collections/i18n/de.json +39 -1
- package/features/collections/i18n/en.json +39 -1
- package/features/collections/i18n/fr.json +39 -1
- package/features/user-profile/i18n/de.json +12 -3
- package/features/user-profile/i18n/en.json +12 -3
- package/features/user-profile/i18n/fr.json +12 -3
- package/fesm2022/sinequa-atomic-angular-charts.mjs.map +1 -1
- package/fesm2022/sinequa-atomic-angular-document-workspaces.mjs +263 -54
- package/fesm2022/sinequa-atomic-angular-document-workspaces.mjs.map +1 -1
- package/fesm2022/sinequa-atomic-angular.mjs +6350 -1241
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/package.json +2 -2
- package/types/sinequa-atomic-angular-document-workspaces.d.ts +68 -18
- package/types/sinequa-atomic-angular.d.ts +868 -257
|
@@ -2,7 +2,7 @@ import * as i0 from "@angular/core";
|
|
|
2
2
|
import { ApplicationRef, ChangeDetectorRef, DestroyRef, ElementRef, EnvironmentProviders, InjectionToken, Injector, OnDestroy, OnInit, PipeTransform, Provider, ResourceRef, Signal, TemplateRef, Type, WritableSignal } from "@angular/core";
|
|
3
3
|
import { TranslocoService } from "@jsverse/transloco";
|
|
4
4
|
import { Aggregation, AggregationItem, Article, AtomicClient, AtomicClientConfig, AuditEventType, AuditEventTypeValues, AuditEvents, CCApp, CCColumn, CCQuery, CCSortingChoice, CCWebService, Conversion, Credentials, CustomHighlights, DidYouMeanAction, ExportOutputFormat, ExportQueryModel, Filter as Filter$1, FilterOperator, KeyOf, LegacyFilter, LinkResult, PreviewData, Principal, Query, QueryParams, RequestOptions, Result, SpellingCorrectionMode, Suggestion, TextChunk, TextLocation, TreeAggregation, TreeAggregationNode, UserProfile } from "@sinequa/atomic";
|
|
5
|
-
import { CanActivateFn, NavigationEnd, Params, ResolveFn, Route, Router } from "@angular/router";
|
|
5
|
+
import { CanActivateFn, CanMatchFn, NavigationEnd, Params, ResolveFn, Route, Router } from "@angular/router";
|
|
6
6
|
import { VariantProps } from "class-variance-authority";
|
|
7
7
|
import { BreakpointObserverService, DialogComponent, DialogEvent, DialogResult, DropdownDirective, PopoverDirective, SheetComponent, SwitchComponent, TooltipDirective } from "@sinequa/galactik";
|
|
8
8
|
import { DomSanitizer, SafeHtml, Title } from "@angular/platform-browser";
|
|
@@ -246,7 +246,7 @@ export type CJ = {
|
|
|
246
246
|
};
|
|
247
247
|
};
|
|
248
248
|
/**
|
|
249
|
-
* An entry of `features.userProfile.customData`: a property name (`"nickname"`) or an object whose
|
|
249
|
+
* An entry of `features.userProfile.customData` or `features.userProfile.privateCustomData`: a property name (`"nickname"`) or an object whose
|
|
250
250
|
* keys are property names and whose values are their default (`{ "nickname": "none" }`). A default can
|
|
251
251
|
* be any JSON value, an object included (`{ "theme": { "mode": "dark" } }`).
|
|
252
252
|
*/
|
|
@@ -274,6 +274,7 @@ type CFeatures = {
|
|
|
274
274
|
enabled?: boolean;
|
|
275
275
|
data?: string[];
|
|
276
276
|
customData?: CustomDataEntry[];
|
|
277
|
+
privateCustomData?: CustomDataEntry[];
|
|
277
278
|
};
|
|
278
279
|
previewMultiConversion?: boolean;
|
|
279
280
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -492,6 +493,7 @@ export declare class ConverterSelectComponent {
|
|
|
492
493
|
enabled?: boolean;
|
|
493
494
|
data?: string[];
|
|
494
495
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
496
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
495
497
|
};
|
|
496
498
|
previewMultiConversion?: boolean;
|
|
497
499
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -534,6 +536,7 @@ export declare class ConverterSelectComponent {
|
|
|
534
536
|
enabled?: boolean;
|
|
535
537
|
data?: string[];
|
|
536
538
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
539
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
537
540
|
};
|
|
538
541
|
previewMultiConversion?: boolean;
|
|
539
542
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -598,6 +601,7 @@ export declare class ConverterSelectComponent {
|
|
|
598
601
|
enabled?: boolean;
|
|
599
602
|
data?: string[];
|
|
600
603
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
604
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
601
605
|
};
|
|
602
606
|
previewMultiConversion?: boolean;
|
|
603
607
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -692,6 +696,7 @@ export declare class ConverterSelectComponent {
|
|
|
692
696
|
enabled?: boolean;
|
|
693
697
|
data?: string[];
|
|
694
698
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
699
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
695
700
|
};
|
|
696
701
|
previewMultiConversion?: boolean;
|
|
697
702
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -734,6 +739,7 @@ export declare class ConverterSelectComponent {
|
|
|
734
739
|
enabled?: boolean;
|
|
735
740
|
data?: string[];
|
|
736
741
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
742
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
737
743
|
};
|
|
738
744
|
previewMultiConversion?: boolean;
|
|
739
745
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -891,7 +897,7 @@ export declare class DocumentLocatorComponent implements OnDestroy {
|
|
|
891
897
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
892
898
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
893
899
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
894
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
900
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
895
901
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
896
902
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
897
903
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -1074,9 +1080,9 @@ export declare class MetadataComponent {
|
|
|
1074
1080
|
event: Event;
|
|
1075
1081
|
}>;
|
|
1076
1082
|
class: import("@angular/core").InputSignal<string | undefined>;
|
|
1077
|
-
variant: import("@angular/core").InputSignal<"
|
|
1078
|
-
size: import("@angular/core").InputSignal<"
|
|
1079
|
-
scheme: import("@angular/core").InputSignal<"error" | "sage" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "
|
|
1083
|
+
variant: import("@angular/core").InputSignal<"primary" | "secondary" | null | undefined>;
|
|
1084
|
+
size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | null | undefined>;
|
|
1085
|
+
scheme: import("@angular/core").InputSignal<"error" | "sage" | "success" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "warning" | "info" | null | undefined>;
|
|
1080
1086
|
metadata: import("@angular/core").InputSignal<(string & Record<never, never>) | KeyOf<Article>>;
|
|
1081
1087
|
article: import("@angular/core").InputSignal<(string & Record<never, never>) | Partial<Article>>;
|
|
1082
1088
|
limit: import("@angular/core").InputSignalWithTransform<number | undefined, string | number | undefined>;
|
|
@@ -1152,7 +1158,7 @@ export declare class MissingTermsComponent {
|
|
|
1152
1158
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
1153
1159
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
1154
1160
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
1155
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
1161
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
1156
1162
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
1157
1163
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
1158
1164
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -1252,7 +1258,7 @@ export declare class MissingTermsComponent {
|
|
|
1252
1258
|
}, {}, never, never, true, never>;
|
|
1253
1259
|
}
|
|
1254
1260
|
export declare const multiSelectionToolbarVariants: (props?: ({
|
|
1255
|
-
variant?: "
|
|
1261
|
+
variant?: "dark" | "light" | "glassy" | "floating" | null | undefined;
|
|
1256
1262
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
1257
1263
|
export type MultiSelectionToolbarVariants = VariantProps<typeof multiSelectionToolbarVariants>;
|
|
1258
1264
|
export declare class MultiSelectionToolbarComponent {
|
|
@@ -1307,6 +1313,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1307
1313
|
enabled?: boolean;
|
|
1308
1314
|
data?: string[];
|
|
1309
1315
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1316
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1310
1317
|
};
|
|
1311
1318
|
previewMultiConversion?: boolean;
|
|
1312
1319
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1349,6 +1356,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1349
1356
|
enabled?: boolean;
|
|
1350
1357
|
data?: string[];
|
|
1351
1358
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1359
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1352
1360
|
};
|
|
1353
1361
|
previewMultiConversion?: boolean;
|
|
1354
1362
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1413,6 +1421,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1413
1421
|
enabled?: boolean;
|
|
1414
1422
|
data?: string[];
|
|
1415
1423
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1424
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1416
1425
|
};
|
|
1417
1426
|
previewMultiConversion?: boolean;
|
|
1418
1427
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1507,6 +1516,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1507
1516
|
enabled?: boolean;
|
|
1508
1517
|
data?: string[];
|
|
1509
1518
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1519
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1510
1520
|
};
|
|
1511
1521
|
previewMultiConversion?: boolean;
|
|
1512
1522
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1549,6 +1559,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1549
1559
|
enabled?: boolean;
|
|
1550
1560
|
data?: string[];
|
|
1551
1561
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1562
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1552
1563
|
};
|
|
1553
1564
|
previewMultiConversion?: boolean;
|
|
1554
1565
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1575,7 +1586,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1575
1586
|
columnMap?: Record<string, import("@sinequa/atomic").CCColumn> | undefined;
|
|
1576
1587
|
}>;
|
|
1577
1588
|
readonly selection: {
|
|
1578
|
-
article?: import("@
|
|
1589
|
+
article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
|
|
1579
1590
|
id?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
1580
1591
|
queryText?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
1581
1592
|
queryName?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
@@ -1635,6 +1646,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1635
1646
|
enabled?: boolean;
|
|
1636
1647
|
data?: string[];
|
|
1637
1648
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1649
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1638
1650
|
};
|
|
1639
1651
|
previewMultiConversion?: boolean;
|
|
1640
1652
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1647,7 +1659,7 @@ export declare class MultiSelectionToolbarComponent {
|
|
|
1647
1659
|
* `dark`, `light`, `glassy`: one bar at the bottom centre of the window. `floating`: detached buttons
|
|
1648
1660
|
* in the bottom-right corner of the window, as in lexiQ.
|
|
1649
1661
|
*/
|
|
1650
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
1662
|
+
readonly variant: import("@angular/core").InputSignal<"dark" | "light" | "glassy" | "floating" | null | undefined>;
|
|
1651
1663
|
/**
|
|
1652
1664
|
* Texte ajouté à l'annonce lecteur d'écran lors de la **première** sélection (ex. « F6 pour accéder
|
|
1653
1665
|
* aux actions »). Il est fourni par l'application : seule elle sait par quel raccourci elle rend la
|
|
@@ -1807,6 +1819,7 @@ export declare class NavbarTabsComponent {
|
|
|
1807
1819
|
enabled?: boolean;
|
|
1808
1820
|
data?: string[];
|
|
1809
1821
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1822
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1810
1823
|
};
|
|
1811
1824
|
previewMultiConversion?: boolean;
|
|
1812
1825
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1849,6 +1862,7 @@ export declare class NavbarTabsComponent {
|
|
|
1849
1862
|
enabled?: boolean;
|
|
1850
1863
|
data?: string[];
|
|
1851
1864
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1865
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1852
1866
|
};
|
|
1853
1867
|
previewMultiConversion?: boolean;
|
|
1854
1868
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -1913,6 +1927,7 @@ export declare class NavbarTabsComponent {
|
|
|
1913
1927
|
enabled?: boolean;
|
|
1914
1928
|
data?: string[];
|
|
1915
1929
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1930
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
1916
1931
|
};
|
|
1917
1932
|
previewMultiConversion?: boolean;
|
|
1918
1933
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2007,6 +2022,7 @@ export declare class NavbarTabsComponent {
|
|
|
2007
2022
|
enabled?: boolean;
|
|
2008
2023
|
data?: string[];
|
|
2009
2024
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2025
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2010
2026
|
};
|
|
2011
2027
|
previewMultiConversion?: boolean;
|
|
2012
2028
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2049,6 +2065,7 @@ export declare class NavbarTabsComponent {
|
|
|
2049
2065
|
enabled?: boolean;
|
|
2050
2066
|
data?: string[];
|
|
2051
2067
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2068
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2052
2069
|
};
|
|
2053
2070
|
previewMultiConversion?: boolean;
|
|
2054
2071
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2094,7 +2111,7 @@ export declare class NavbarTabsComponent {
|
|
|
2094
2111
|
*
|
|
2095
2112
|
* @default "primary"
|
|
2096
2113
|
*/
|
|
2097
|
-
variant: import("@angular/core").InputSignal<"
|
|
2114
|
+
variant: import("@angular/core").InputSignal<"primary" | "secondary" | "inner">;
|
|
2098
2115
|
/** The pill strip is the only variant whose tabs keep galactik's own, smaller size. */
|
|
2099
2116
|
protected readonly isPill: import("@angular/core").Signal<boolean>;
|
|
2100
2117
|
showCount: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -2261,6 +2278,11 @@ export declare class OverflowActionsComponent {
|
|
|
2261
2278
|
private readonly appConfig;
|
|
2262
2279
|
/** The document the actions are about. Without one there is no bookmark and no link to copy. */
|
|
2263
2280
|
readonly article: import("@angular/core").InputSignal<Article | undefined>;
|
|
2281
|
+
/**
|
|
2282
|
+
* Where the bookmark button files the document: `bookmarks` (default, the historical behaviour) or `collections`,
|
|
2283
|
+
* where a click opens the "add to collection" panel. Same input as `<bookmark-button [target]>`.
|
|
2284
|
+
*/
|
|
2285
|
+
readonly bookmarkTarget: import("@angular/core").InputSignal<"bookmarks" | "collections">;
|
|
2264
2286
|
/** Which built-in buttons to bring, merged over `OVERFLOW_ACTIONS_CONFIG` and the defaults (all on). */
|
|
2265
2287
|
readonly config: import("@angular/core").InputSignal<Partial<OverflowActionsConfig>>;
|
|
2266
2288
|
/** `false` where there is no bigger container to grow into (a full-screen sheet): the expand button goes. */
|
|
@@ -2309,6 +2331,11 @@ export declare class OverflowActionsComponent {
|
|
|
2309
2331
|
"required": false;
|
|
2310
2332
|
"isSignal": true;
|
|
2311
2333
|
};
|
|
2334
|
+
"bookmarkTarget": {
|
|
2335
|
+
"alias": "bookmarkTarget";
|
|
2336
|
+
"required": false;
|
|
2337
|
+
"isSignal": true;
|
|
2338
|
+
};
|
|
2312
2339
|
"config": {
|
|
2313
2340
|
"alias": "config";
|
|
2314
2341
|
"required": false;
|
|
@@ -2706,6 +2733,7 @@ export declare const AppStore: import("@angular/core").Type<{
|
|
|
2706
2733
|
enabled?: boolean;
|
|
2707
2734
|
data?: string[];
|
|
2708
2735
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2736
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2709
2737
|
};
|
|
2710
2738
|
previewMultiConversion?: boolean;
|
|
2711
2739
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2748,6 +2776,7 @@ export declare const AppStore: import("@angular/core").Type<{
|
|
|
2748
2776
|
enabled?: boolean;
|
|
2749
2777
|
data?: string[];
|
|
2750
2778
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2779
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2751
2780
|
};
|
|
2752
2781
|
previewMultiConversion?: boolean;
|
|
2753
2782
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2812,6 +2841,7 @@ export declare const AppStore: import("@angular/core").Type<{
|
|
|
2812
2841
|
enabled?: boolean;
|
|
2813
2842
|
data?: string[];
|
|
2814
2843
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2844
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2815
2845
|
};
|
|
2816
2846
|
previewMultiConversion?: boolean;
|
|
2817
2847
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2900,6 +2930,7 @@ export declare const AppStore: import("@angular/core").Type<{
|
|
|
2900
2930
|
enabled?: boolean;
|
|
2901
2931
|
data?: string[];
|
|
2902
2932
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2933
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2903
2934
|
};
|
|
2904
2935
|
previewMultiConversion?: boolean;
|
|
2905
2936
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -2942,6 +2973,7 @@ export declare const AppStore: import("@angular/core").Type<{
|
|
|
2942
2973
|
enabled?: boolean;
|
|
2943
2974
|
data?: string[];
|
|
2944
2975
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2976
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
2945
2977
|
};
|
|
2946
2978
|
previewMultiConversion?: boolean;
|
|
2947
2979
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -3021,6 +3053,7 @@ export declare function withAppFeatures(): import("@ngrx/signals").SignalStoreFe
|
|
|
3021
3053
|
enabled?: boolean;
|
|
3022
3054
|
data?: string[];
|
|
3023
3055
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3056
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3024
3057
|
};
|
|
3025
3058
|
previewMultiConversion?: boolean;
|
|
3026
3059
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -3063,6 +3096,7 @@ export declare function withAppFeatures(): import("@ngrx/signals").SignalStoreFe
|
|
|
3063
3096
|
enabled?: boolean;
|
|
3064
3097
|
data?: string[];
|
|
3065
3098
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3099
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3066
3100
|
};
|
|
3067
3101
|
previewMultiConversion?: boolean;
|
|
3068
3102
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -3129,6 +3163,7 @@ export declare function withAppFeatures(): import("@ngrx/signals").SignalStoreFe
|
|
|
3129
3163
|
enabled?: boolean;
|
|
3130
3164
|
data?: string[];
|
|
3131
3165
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3166
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3132
3167
|
};
|
|
3133
3168
|
previewMultiConversion?: boolean;
|
|
3134
3169
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -3273,7 +3308,7 @@ export declare const PrincipalStore: import("@angular/core").Type<{
|
|
|
3273
3308
|
param9: import("@angular/core").Signal<string>;
|
|
3274
3309
|
param10: import("@angular/core").Signal<string>;
|
|
3275
3310
|
userOverrideActive: import("@angular/core").Signal<boolean>;
|
|
3276
|
-
state: import("@angular/core").Signal<"error" | "
|
|
3311
|
+
state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
|
|
3277
3312
|
allowUserOverride: import("@angular/core").Signal<boolean>;
|
|
3278
3313
|
isOverridingUser: import("@angular/core").Signal<boolean>;
|
|
3279
3314
|
initials: import("@angular/core").Signal<string>;
|
|
@@ -3355,7 +3390,7 @@ export declare const QueryParamsStore: import("@angular/core").Type<{
|
|
|
3355
3390
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3356
3391
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
3357
3392
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3358
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
3393
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
3359
3394
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3360
3395
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3361
3396
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -3500,7 +3535,7 @@ export type SelectionState = {
|
|
|
3500
3535
|
* - `clear()`: Clears the selection state, setting `article`, `id`, and `queryText` to `undefined`.
|
|
3501
3536
|
*/
|
|
3502
3537
|
export declare const SelectionStore: import("@angular/core").Type<{
|
|
3503
|
-
article?: import("@
|
|
3538
|
+
article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
|
|
3504
3539
|
id?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3505
3540
|
queryText?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3506
3541
|
queryName?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
@@ -3671,14 +3706,15 @@ export declare const UserSettingsStore: import("@angular/core").Type<{
|
|
|
3671
3706
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
3672
3707
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
3673
3708
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
3674
|
-
userTheme: import("@angular/core").Signal<"
|
|
3675
|
-
agents: import("@
|
|
3709
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
3710
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
3676
3711
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
3677
3712
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
3678
3713
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
3679
3714
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
3680
3715
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
3681
3716
|
unbookmark: (id: string) => Promise<void>;
|
|
3717
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
3682
3718
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
3683
3719
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
3684
3720
|
isFavoriteSearch: (search: Pick<import("@sinequa/atomic-angular").SearchItem, "label" | "display">) => boolean;
|
|
@@ -3777,6 +3813,7 @@ export declare function withBookmarkFeatures(): import("@ngrx/signals").SignalSt
|
|
|
3777
3813
|
updateBookmarks: (bookmarks: UserSettingsState["bookmarks"], auditEvents?: AuditEvents) => Promise<void>;
|
|
3778
3814
|
bookmark: (article: Article, queryName?: string) => Promise<void>;
|
|
3779
3815
|
unbookmark: (id: string) => Promise<void>;
|
|
3816
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
3780
3817
|
isBookmarked: (article: Partial<Article>) => boolean;
|
|
3781
3818
|
toggleBookmark: (article: Article) => Promise<void>;
|
|
3782
3819
|
};
|
|
@@ -3895,6 +3932,12 @@ export declare class PreviewContentComponent {
|
|
|
3895
3932
|
#private;
|
|
3896
3933
|
cn: import("cn").CnFunction;
|
|
3897
3934
|
iframe: import("@angular/core").Signal<ElementRef<HTMLIFrameElement> | undefined>;
|
|
3935
|
+
/**
|
|
3936
|
+
* The box that holds the rendered Markdown (there is no iframe, hence no `ready` message, in that branch). It is
|
|
3937
|
+
* not necessarily the element that scrolls: depending on the host layout it can be an ancestor, so scrolling
|
|
3938
|
+
* and scroll tracking never assume it.
|
|
3939
|
+
*/
|
|
3940
|
+
private readonly markdownScroller;
|
|
3898
3941
|
private readonly findPanelTemplate;
|
|
3899
3942
|
breakpointService: BreakpointObserverService;
|
|
3900
3943
|
protected readonly appStore: {
|
|
@@ -3947,6 +3990,7 @@ export declare class PreviewContentComponent {
|
|
|
3947
3990
|
enabled?: boolean;
|
|
3948
3991
|
data?: string[];
|
|
3949
3992
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3993
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3950
3994
|
};
|
|
3951
3995
|
previewMultiConversion?: boolean;
|
|
3952
3996
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -3989,6 +4033,7 @@ export declare class PreviewContentComponent {
|
|
|
3989
4033
|
enabled?: boolean;
|
|
3990
4034
|
data?: string[];
|
|
3991
4035
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4036
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
3992
4037
|
};
|
|
3993
4038
|
previewMultiConversion?: boolean;
|
|
3994
4039
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -4053,6 +4098,7 @@ export declare class PreviewContentComponent {
|
|
|
4053
4098
|
enabled?: boolean;
|
|
4054
4099
|
data?: string[];
|
|
4055
4100
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4101
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4056
4102
|
};
|
|
4057
4103
|
previewMultiConversion?: boolean;
|
|
4058
4104
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -4147,6 +4193,7 @@ export declare class PreviewContentComponent {
|
|
|
4147
4193
|
enabled?: boolean;
|
|
4148
4194
|
data?: string[];
|
|
4149
4195
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4196
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4150
4197
|
};
|
|
4151
4198
|
previewMultiConversion?: boolean;
|
|
4152
4199
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -4189,6 +4236,7 @@ export declare class PreviewContentComponent {
|
|
|
4189
4236
|
enabled?: boolean;
|
|
4190
4237
|
data?: string[];
|
|
4191
4238
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4239
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4192
4240
|
};
|
|
4193
4241
|
previewMultiConversion?: boolean;
|
|
4194
4242
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -4282,6 +4330,12 @@ export declare class PreviewContentComponent {
|
|
|
4282
4330
|
/** `false` hides `<preview-actions>`'s search-in-document trigger/popover (e.g. a narrower host
|
|
4283
4331
|
* with no room for it, like `/chat`'s ResizablePanel). Zoom/highlights stay unaffected. */
|
|
4284
4332
|
showSearchActions: import("@angular/core").InputSignal<boolean>;
|
|
4333
|
+
/**
|
|
4334
|
+
* `false` hides the whole action bar above the document (search, converter, highlights, zoom, page navigation), for a
|
|
4335
|
+
* host that only wants to show the document — a shortlist's preview, a narrow side panel. The document itself, and the
|
|
4336
|
+
* page navigation the iframe content offers, are unaffected.
|
|
4337
|
+
*/
|
|
4338
|
+
showActions: import("@angular/core").InputSignal<boolean>;
|
|
4285
4339
|
/**
|
|
4286
4340
|
* Where the results of the find field show: `"popover"` (the default) under the field, as it takes the focus;
|
|
4287
4341
|
* `"pinned"` in a panel beside the document, for a preview that has room for it (the expanded one). The panel is
|
|
@@ -4401,6 +4455,15 @@ export declare class PreviewContentComponent {
|
|
|
4401
4455
|
* reveal it anyway after a short delay so the spinner overlay cannot stay stuck.
|
|
4402
4456
|
*/
|
|
4403
4457
|
onLoaded(): void;
|
|
4458
|
+
/** Scrolls so that the page anchor `anchorId` sits at the top edge of whichever ancestor scrolls the Markdown. */
|
|
4459
|
+
private scrollMarkdownTo;
|
|
4460
|
+
private markdownScrollFrame;
|
|
4461
|
+
/**
|
|
4462
|
+
* Keeps `currentPage` in sync with the page the reader is on in the Markdown branch (the iframe branch gets it
|
|
4463
|
+
* from preview.js's `current-page` message), so that switching to another conversion lands on the same page.
|
|
4464
|
+
* Throttled to one measure per frame.
|
|
4465
|
+
*/
|
|
4466
|
+
private onMarkdownScroll;
|
|
4404
4467
|
protected zoomInMarkdown(): void;
|
|
4405
4468
|
protected zoomOutMarkdown(): void;
|
|
4406
4469
|
protected zoomFitMarkdown(): void;
|
|
@@ -4450,6 +4513,11 @@ export declare class PreviewContentComponent {
|
|
|
4450
4513
|
"required": false;
|
|
4451
4514
|
"isSignal": true;
|
|
4452
4515
|
};
|
|
4516
|
+
"showActions": {
|
|
4517
|
+
"alias": "showActions";
|
|
4518
|
+
"required": false;
|
|
4519
|
+
"isSignal": true;
|
|
4520
|
+
};
|
|
4453
4521
|
"findPanel": {
|
|
4454
4522
|
"alias": "findPanel";
|
|
4455
4523
|
"required": false;
|
|
@@ -4656,13 +4724,6 @@ export declare function getCurrentQueryName(): string | undefined;
|
|
|
4656
4724
|
* `gap-4` (CardContent) → `--spacing-md` (16px) · `shadow-sm` → `--shadow-2`, avec un liseré `--layer-page-edge`
|
|
4657
4725
|
*/
|
|
4658
4726
|
export declare const FORM_SURFACE_CLASS = "flex w-full flex-col gap-(--spacing-md) rounded-(--radius-md) border border-solid border-(--layer-page-edge) bg-(--layer-page-layer) p-(--spacing-md) shadow-(--shadow-2)";
|
|
4659
|
-
/**
|
|
4660
|
-
* Same layout, no card: no background, no padding, no shadow.
|
|
4661
|
-
*
|
|
4662
|
-
* Used when the form is embedded in a container that already provides the surface — a dialog body,
|
|
4663
|
-
* a settings panel — where the card would otherwise nest inside another card.
|
|
4664
|
-
*/
|
|
4665
|
-
export declare const FORM_BARE_CLASS = "flex w-full flex-col gap-(--spacing-md)";
|
|
4666
4727
|
/** Groupe « label + contrôle + message d'erreur » — ex-`<div class="grid gap-2">`. */
|
|
4667
4728
|
export declare const FORM_FIELD_CLASS = "flex flex-col gap-(--spacing-2xs)";
|
|
4668
4729
|
/**
|
|
@@ -4674,6 +4735,11 @@ export declare const FORM_FIELD_CLASS = "flex flex-col gap-(--spacing-2xs)";
|
|
|
4674
4735
|
* reprend son rayon.
|
|
4675
4736
|
*/
|
|
4676
4737
|
export declare const FORM_FOOTER_CLASS = "flex justify-end gap-(--spacing-2xs) -mx-(--spacing-md) -mb-(--spacing-md) rounded-b-(--radius-md) bg-(--layer-page-on-layer) px-(--spacing-md) py-(--spacing-sm)";
|
|
4738
|
+
/**
|
|
4739
|
+
* Rangée de boutons d'un formulaire affiché hors dialogue (inline, carte). Rien de plus qu'une ligne
|
|
4740
|
+
* alignée à droite : dans un dialogue, ce sont les boutons du `DialogFooter` standard qui s'en chargent.
|
|
4741
|
+
*/
|
|
4742
|
+
export declare const FORM_ACTIONS_CLASS = "flex justify-end gap-(--spacing-2xs)";
|
|
4677
4743
|
/**
|
|
4678
4744
|
* Libellé d'un champ — ex-`text-sm font-medium`.
|
|
4679
4745
|
*
|
|
@@ -4871,6 +4937,7 @@ export declare class AuditService {
|
|
|
4871
4937
|
enabled?: boolean;
|
|
4872
4938
|
data?: string[];
|
|
4873
4939
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4940
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4874
4941
|
};
|
|
4875
4942
|
previewMultiConversion?: boolean;
|
|
4876
4943
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -4913,6 +4980,7 @@ export declare class AuditService {
|
|
|
4913
4980
|
enabled?: boolean;
|
|
4914
4981
|
data?: string[];
|
|
4915
4982
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4983
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4916
4984
|
};
|
|
4917
4985
|
previewMultiConversion?: boolean;
|
|
4918
4986
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -4977,6 +5045,7 @@ export declare class AuditService {
|
|
|
4977
5045
|
enabled?: boolean;
|
|
4978
5046
|
data?: string[];
|
|
4979
5047
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5048
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
4980
5049
|
};
|
|
4981
5050
|
previewMultiConversion?: boolean;
|
|
4982
5051
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5071,6 +5140,7 @@ export declare class AuditService {
|
|
|
5071
5140
|
enabled?: boolean;
|
|
5072
5141
|
data?: string[];
|
|
5073
5142
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5143
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5074
5144
|
};
|
|
5075
5145
|
previewMultiConversion?: boolean;
|
|
5076
5146
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5113,6 +5183,7 @@ export declare class AuditService {
|
|
|
5113
5183
|
enabled?: boolean;
|
|
5114
5184
|
data?: string[];
|
|
5115
5185
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5186
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5116
5187
|
};
|
|
5117
5188
|
previewMultiConversion?: boolean;
|
|
5118
5189
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5280,7 +5351,7 @@ export declare class PreviewService {
|
|
|
5280
5351
|
extracts: Map<string, Extract[]>;
|
|
5281
5352
|
}>;
|
|
5282
5353
|
protected readonly selectionStore: {
|
|
5283
|
-
article?: import("@
|
|
5354
|
+
article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
|
|
5284
5355
|
id?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
5285
5356
|
queryText?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
5286
5357
|
queryName?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
@@ -5329,7 +5400,7 @@ export declare class PreviewService {
|
|
|
5329
5400
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
5330
5401
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
5331
5402
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
5332
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
5403
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
5333
5404
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
5334
5405
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
5335
5406
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -5462,6 +5533,7 @@ export declare class PreviewService {
|
|
|
5462
5533
|
enabled?: boolean;
|
|
5463
5534
|
data?: string[];
|
|
5464
5535
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5536
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5465
5537
|
};
|
|
5466
5538
|
previewMultiConversion?: boolean;
|
|
5467
5539
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5504,6 +5576,7 @@ export declare class PreviewService {
|
|
|
5504
5576
|
enabled?: boolean;
|
|
5505
5577
|
data?: string[];
|
|
5506
5578
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5579
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5507
5580
|
};
|
|
5508
5581
|
previewMultiConversion?: boolean;
|
|
5509
5582
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5568,6 +5641,7 @@ export declare class PreviewService {
|
|
|
5568
5641
|
enabled?: boolean;
|
|
5569
5642
|
data?: string[];
|
|
5570
5643
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5644
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5571
5645
|
};
|
|
5572
5646
|
previewMultiConversion?: boolean;
|
|
5573
5647
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5662,6 +5736,7 @@ export declare class PreviewService {
|
|
|
5662
5736
|
enabled?: boolean;
|
|
5663
5737
|
data?: string[];
|
|
5664
5738
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5739
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5665
5740
|
};
|
|
5666
5741
|
previewMultiConversion?: boolean;
|
|
5667
5742
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -5704,6 +5779,7 @@ export declare class PreviewService {
|
|
|
5704
5779
|
enabled?: boolean;
|
|
5705
5780
|
data?: string[];
|
|
5706
5781
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5782
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
5707
5783
|
};
|
|
5708
5784
|
previewMultiConversion?: boolean;
|
|
5709
5785
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6076,6 +6152,7 @@ export declare class AggregationsService {
|
|
|
6076
6152
|
enabled?: boolean;
|
|
6077
6153
|
data?: string[];
|
|
6078
6154
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6155
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6079
6156
|
};
|
|
6080
6157
|
previewMultiConversion?: boolean;
|
|
6081
6158
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6118,6 +6195,7 @@ export declare class AggregationsService {
|
|
|
6118
6195
|
enabled?: boolean;
|
|
6119
6196
|
data?: string[];
|
|
6120
6197
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6198
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6121
6199
|
};
|
|
6122
6200
|
previewMultiConversion?: boolean;
|
|
6123
6201
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6182,6 +6260,7 @@ export declare class AggregationsService {
|
|
|
6182
6260
|
enabled?: boolean;
|
|
6183
6261
|
data?: string[];
|
|
6184
6262
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6263
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6185
6264
|
};
|
|
6186
6265
|
previewMultiConversion?: boolean;
|
|
6187
6266
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6276,6 +6355,7 @@ export declare class AggregationsService {
|
|
|
6276
6355
|
enabled?: boolean;
|
|
6277
6356
|
data?: string[];
|
|
6278
6357
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6358
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6279
6359
|
};
|
|
6280
6360
|
previewMultiConversion?: boolean;
|
|
6281
6361
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6318,6 +6398,7 @@ export declare class AggregationsService {
|
|
|
6318
6398
|
enabled?: boolean;
|
|
6319
6399
|
data?: string[];
|
|
6320
6400
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6401
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6321
6402
|
};
|
|
6322
6403
|
previewMultiConversion?: boolean;
|
|
6323
6404
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6379,7 +6460,7 @@ export declare class AggregationsService {
|
|
|
6379
6460
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
6380
6461
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
6381
6462
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
6382
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
6463
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
6383
6464
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
6384
6465
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
6385
6466
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -6627,14 +6708,15 @@ export declare class ApplicationService {
|
|
|
6627
6708
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
6628
6709
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
6629
6710
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
6630
|
-
userTheme: import("@angular/core").Signal<"
|
|
6631
|
-
agents: import("@
|
|
6711
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
6712
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
6632
6713
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
6633
6714
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
6634
6715
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
6635
6716
|
updateBookmarks: (bookmarks: UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
6636
6717
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
6637
6718
|
unbookmark: (id: string) => Promise<void>;
|
|
6719
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
6638
6720
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
6639
6721
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
6640
6722
|
isFavoriteSearch: (search: Pick<import("@sinequa/atomic-angular").SearchItem, "label" | "display">) => boolean;
|
|
@@ -6714,7 +6796,7 @@ export declare class ApplicationService {
|
|
|
6714
6796
|
param9: import("@angular/core").Signal<string>;
|
|
6715
6797
|
param10: import("@angular/core").Signal<string>;
|
|
6716
6798
|
userOverrideActive: import("@angular/core").Signal<boolean>;
|
|
6717
|
-
state: import("@angular/core").Signal<"error" | "
|
|
6799
|
+
state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
|
|
6718
6800
|
allowUserOverride: import("@angular/core").Signal<boolean>;
|
|
6719
6801
|
isOverridingUser: import("@angular/core").Signal<boolean>;
|
|
6720
6802
|
initials: import("@angular/core").Signal<string>;
|
|
@@ -6801,6 +6883,7 @@ export declare class ApplicationService {
|
|
|
6801
6883
|
enabled?: boolean;
|
|
6802
6884
|
data?: string[];
|
|
6803
6885
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6886
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6804
6887
|
};
|
|
6805
6888
|
previewMultiConversion?: boolean;
|
|
6806
6889
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6843,6 +6926,7 @@ export declare class ApplicationService {
|
|
|
6843
6926
|
enabled?: boolean;
|
|
6844
6927
|
data?: string[];
|
|
6845
6928
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6929
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6846
6930
|
};
|
|
6847
6931
|
previewMultiConversion?: boolean;
|
|
6848
6932
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -6907,6 +6991,7 @@ export declare class ApplicationService {
|
|
|
6907
6991
|
enabled?: boolean;
|
|
6908
6992
|
data?: string[];
|
|
6909
6993
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6994
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
6910
6995
|
};
|
|
6911
6996
|
previewMultiConversion?: boolean;
|
|
6912
6997
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7001,6 +7086,7 @@ export declare class ApplicationService {
|
|
|
7001
7086
|
enabled?: boolean;
|
|
7002
7087
|
data?: string[];
|
|
7003
7088
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7089
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7004
7090
|
};
|
|
7005
7091
|
previewMultiConversion?: boolean;
|
|
7006
7092
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7043,6 +7129,7 @@ export declare class ApplicationService {
|
|
|
7043
7129
|
enabled?: boolean;
|
|
7044
7130
|
data?: string[];
|
|
7045
7131
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7132
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7046
7133
|
};
|
|
7047
7134
|
previewMultiConversion?: boolean;
|
|
7048
7135
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7095,7 +7182,7 @@ export declare class ApplicationService {
|
|
|
7095
7182
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
7096
7183
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
7097
7184
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
7098
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
7185
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
7099
7186
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
7100
7187
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
7101
7188
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -7321,14 +7408,15 @@ export declare class AutocompleteService {
|
|
|
7321
7408
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
7322
7409
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
7323
7410
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
7324
|
-
userTheme: import("@angular/core").Signal<"
|
|
7325
|
-
agents: import("@
|
|
7411
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
7412
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
7326
7413
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
7327
7414
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
7328
7415
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
7329
7416
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
7330
7417
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
7331
7418
|
unbookmark: (id: string) => Promise<void>;
|
|
7419
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
7332
7420
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
7333
7421
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
7334
7422
|
isFavoriteSearch: (search: Pick<import("@sinequa/atomic-angular").SearchItem, "label" | "display">) => boolean;
|
|
@@ -7431,6 +7519,7 @@ export declare class AutocompleteService {
|
|
|
7431
7519
|
enabled?: boolean;
|
|
7432
7520
|
data?: string[];
|
|
7433
7521
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7522
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7434
7523
|
};
|
|
7435
7524
|
previewMultiConversion?: boolean;
|
|
7436
7525
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7473,6 +7562,7 @@ export declare class AutocompleteService {
|
|
|
7473
7562
|
enabled?: boolean;
|
|
7474
7563
|
data?: string[];
|
|
7475
7564
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7565
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7476
7566
|
};
|
|
7477
7567
|
previewMultiConversion?: boolean;
|
|
7478
7568
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7537,6 +7627,7 @@ export declare class AutocompleteService {
|
|
|
7537
7627
|
enabled?: boolean;
|
|
7538
7628
|
data?: string[];
|
|
7539
7629
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7630
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7540
7631
|
};
|
|
7541
7632
|
previewMultiConversion?: boolean;
|
|
7542
7633
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7631,6 +7722,7 @@ export declare class AutocompleteService {
|
|
|
7631
7722
|
enabled?: boolean;
|
|
7632
7723
|
data?: string[];
|
|
7633
7724
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7725
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7634
7726
|
};
|
|
7635
7727
|
previewMultiConversion?: boolean;
|
|
7636
7728
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7673,6 +7765,7 @@ export declare class AutocompleteService {
|
|
|
7673
7765
|
enabled?: boolean;
|
|
7674
7766
|
data?: string[];
|
|
7675
7767
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7768
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
7676
7769
|
};
|
|
7677
7770
|
previewMultiConversion?: boolean;
|
|
7678
7771
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -7864,6 +7957,43 @@ export declare class KeyboardShortcutsService {
|
|
|
7864
7957
|
static ɵfac: i0.ɵɵFactoryDeclaration<KeyboardShortcutsService, never>;
|
|
7865
7958
|
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
7866
7959
|
}
|
|
7960
|
+
/**
|
|
7961
|
+
* The license-driven capabilities of the grid, as reported by `GET /api/v2/version`.
|
|
7962
|
+
*
|
|
7963
|
+
* Only the capabilities in `features.isAvailable` are read — neither the raw `license.featureFlags`
|
|
7964
|
+
* nor `features.beta`: the server already combines the flags with the Beta option, and says so in one
|
|
7965
|
+
* place. A capability is `true` only when the server says exactly `true`.
|
|
7966
|
+
*
|
|
7967
|
+
* The Agent Builder has no capability of its own: it relies on `agentStore`, which is `true` when the
|
|
7968
|
+
* license grants `FeatureFlag_AgentHub` or `FeatureFlag_AgentBuilder` and the Beta option is on.
|
|
7969
|
+
*
|
|
7970
|
+
* Every failure reads as "not available" — an older server without `features.isAvailable`, a missing
|
|
7971
|
+
* field, a failing request — so that what depends on a capability is hidden instead of the application
|
|
7972
|
+
* being blocked.
|
|
7973
|
+
*
|
|
7974
|
+
* Call {@link load} once the application is bootstrapped (the request needs the `backendUrl` and the
|
|
7975
|
+
* sign-in), typically from the same application initializer as `bootstrapApp`. Until then every
|
|
7976
|
+
* capability is `false`.
|
|
7977
|
+
*/
|
|
7978
|
+
export declare class LicenseCapabilitiesService {
|
|
7979
|
+
private readonly client;
|
|
7980
|
+
private readonly _agentStoreAvailable;
|
|
7981
|
+
/**
|
|
7982
|
+
* Whether the Agent store is available (`features.isAvailable.agentStore === true`): the license
|
|
7983
|
+
* grants `FeatureFlag_AgentHub` or `FeatureFlag_AgentBuilder` and the Beta option is on.
|
|
7984
|
+
* Use it to show or hide the Agent Builder.
|
|
7985
|
+
*/
|
|
7986
|
+
readonly agentStoreAvailable: import("@angular/core").Signal<boolean>;
|
|
7987
|
+
/**
|
|
7988
|
+
* Reads the capabilities from `GET /api/v2/version`.
|
|
7989
|
+
*
|
|
7990
|
+
* Never rejects: it is meant to run inside an application initializer, where a rejection would stop
|
|
7991
|
+
* the application from starting. On failure the capabilities are reset to `false`.
|
|
7992
|
+
*/
|
|
7993
|
+
load(): Promise<void>;
|
|
7994
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LicenseCapabilitiesService, never>;
|
|
7995
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
7996
|
+
}
|
|
7867
7997
|
export declare class NavigationService {
|
|
7868
7998
|
private readonly router;
|
|
7869
7999
|
private readonly auditService;
|
|
@@ -7965,14 +8095,15 @@ export declare class SavedSearchesService {
|
|
|
7965
8095
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
7966
8096
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
7967
8097
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
7968
|
-
userTheme: import("@angular/core").Signal<"
|
|
7969
|
-
agents: import("@
|
|
8098
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
8099
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
7970
8100
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
7971
8101
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
7972
8102
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
7973
8103
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
7974
8104
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
7975
8105
|
unbookmark: (id: string) => Promise<void>;
|
|
8106
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
7976
8107
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
7977
8108
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
7978
8109
|
isFavoriteSearch: (search: Pick<SearchItem, "label" | "display">) => boolean;
|
|
@@ -8052,7 +8183,7 @@ export declare class SavedSearchesService {
|
|
|
8052
8183
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8053
8184
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
8054
8185
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8055
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
8186
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
8056
8187
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8057
8188
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8058
8189
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -8237,7 +8368,7 @@ export declare class SearchService {
|
|
|
8237
8368
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8238
8369
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
8239
8370
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8240
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
8371
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
8241
8372
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8242
8373
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8243
8374
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -8331,14 +8462,15 @@ export declare class SearchService {
|
|
|
8331
8462
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
8332
8463
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
8333
8464
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8334
|
-
userTheme: import("@angular/core").Signal<"
|
|
8335
|
-
agents: import("@
|
|
8465
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
8466
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
8336
8467
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
8337
8468
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
8338
8469
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
8339
8470
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: AuditEvents) => Promise<void>;
|
|
8340
8471
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
8341
8472
|
unbookmark: (id: string) => Promise<void>;
|
|
8473
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
8342
8474
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
8343
8475
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
8344
8476
|
isFavoriteSearch: (search: Pick<import("@sinequa/atomic-angular").SearchItem, "label" | "display">) => boolean;
|
|
@@ -8466,7 +8598,7 @@ export declare class SelectionService {
|
|
|
8466
8598
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8467
8599
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
8468
8600
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8469
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
8601
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
8470
8602
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8471
8603
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
8472
8604
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -8611,6 +8743,8 @@ export declare class TextChunkService {
|
|
|
8611
8743
|
export declare class UserProfileService {
|
|
8612
8744
|
private readonly client;
|
|
8613
8745
|
private readonly injector;
|
|
8746
|
+
private readonly appStore;
|
|
8747
|
+
private readonly principal;
|
|
8614
8748
|
private readonly resources;
|
|
8615
8749
|
/**
|
|
8616
8750
|
* Retrieves the user profile by user ID.
|
|
@@ -8624,6 +8758,24 @@ export declare class UserProfileService {
|
|
|
8624
8758
|
* @returns A resource exposing the UserProfile.
|
|
8625
8759
|
*/
|
|
8626
8760
|
getUserProfile(userId: Signal<string | undefined>): ResourceRef<UserProfile | undefined>;
|
|
8761
|
+
/**
|
|
8762
|
+
* The id of the signed-in user, once known, and only when the `userProfile` feature is on; `undefined` otherwise,
|
|
8763
|
+
* which leaves the profile resource idle (no request).
|
|
8764
|
+
*/
|
|
8765
|
+
readonly currentUserId: Signal<string | undefined>;
|
|
8766
|
+
/**
|
|
8767
|
+
* The profile of the signed-in user, fetched once for the whole application: the sidebar (avatar), the home page
|
|
8768
|
+
* (greeting) and the profile form all read this same resource, so a value set by one shows up in the others.
|
|
8769
|
+
*/
|
|
8770
|
+
readonly current: ResourceRef<UserProfile | undefined>;
|
|
8771
|
+
/** The loaded profile of the signed-in user, `undefined` while it loads, when it failed to load, or when the feature is off. */
|
|
8772
|
+
readonly profile: Signal<UserProfile | undefined>;
|
|
8773
|
+
/**
|
|
8774
|
+
* The profile of the signed-in user is about to be, or is being, fetched. `idle` with an id to fetch is the instant
|
|
8775
|
+
* between the id being known and the resource starting: still pending. A failed fetch is not pending: it gives way
|
|
8776
|
+
* to the next source of a name.
|
|
8777
|
+
*/
|
|
8778
|
+
readonly pending: Signal<boolean>;
|
|
8627
8779
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserProfileService, never>;
|
|
8628
8780
|
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
8629
8781
|
}
|
|
@@ -8758,6 +8910,7 @@ export declare class SortSelectorComponent {
|
|
|
8758
8910
|
enabled?: boolean;
|
|
8759
8911
|
data?: string[];
|
|
8760
8912
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
8913
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
8761
8914
|
};
|
|
8762
8915
|
previewMultiConversion?: boolean;
|
|
8763
8916
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -8800,6 +8953,7 @@ export declare class SortSelectorComponent {
|
|
|
8800
8953
|
enabled?: boolean;
|
|
8801
8954
|
data?: string[];
|
|
8802
8955
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
8956
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
8803
8957
|
};
|
|
8804
8958
|
previewMultiConversion?: boolean;
|
|
8805
8959
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -8864,6 +9018,7 @@ export declare class SortSelectorComponent {
|
|
|
8864
9018
|
enabled?: boolean;
|
|
8865
9019
|
data?: string[];
|
|
8866
9020
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9021
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
8867
9022
|
};
|
|
8868
9023
|
previewMultiConversion?: boolean;
|
|
8869
9024
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -8958,6 +9113,7 @@ export declare class SortSelectorComponent {
|
|
|
8958
9113
|
enabled?: boolean;
|
|
8959
9114
|
data?: string[];
|
|
8960
9115
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9116
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
8961
9117
|
};
|
|
8962
9118
|
previewMultiConversion?: boolean;
|
|
8963
9119
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -9000,6 +9156,7 @@ export declare class SortSelectorComponent {
|
|
|
9000
9156
|
enabled?: boolean;
|
|
9001
9157
|
data?: string[];
|
|
9002
9158
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9159
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9003
9160
|
};
|
|
9004
9161
|
previewMultiConversion?: boolean;
|
|
9005
9162
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -9211,14 +9368,15 @@ export declare class ShowBookmarkDirective {
|
|
|
9211
9368
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
9212
9369
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
9213
9370
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
9214
|
-
userTheme: import("@angular/core").Signal<"
|
|
9215
|
-
agents: import("@
|
|
9371
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
9372
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
9216
9373
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
9217
9374
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
9218
9375
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
9219
9376
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
9220
9377
|
bookmark: (article: Article, queryName?: string) => Promise<void>;
|
|
9221
9378
|
unbookmark: (id: string) => Promise<void>;
|
|
9379
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
9222
9380
|
isBookmarked: (article: Partial<Article>) => boolean;
|
|
9223
9381
|
toggleBookmark: (article: Article) => Promise<void>;
|
|
9224
9382
|
isFavoriteSearch: (search: Pick<import("@sinequa/atomic-angular").SearchItem, "label" | "display">) => boolean;
|
|
@@ -9720,6 +9878,7 @@ export declare class SponsoredResultsComponent {
|
|
|
9720
9878
|
enabled?: boolean;
|
|
9721
9879
|
data?: string[];
|
|
9722
9880
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9881
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9723
9882
|
};
|
|
9724
9883
|
previewMultiConversion?: boolean;
|
|
9725
9884
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -9762,6 +9921,7 @@ export declare class SponsoredResultsComponent {
|
|
|
9762
9921
|
enabled?: boolean;
|
|
9763
9922
|
data?: string[];
|
|
9764
9923
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9924
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9765
9925
|
};
|
|
9766
9926
|
previewMultiConversion?: boolean;
|
|
9767
9927
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -9826,6 +9986,7 @@ export declare class SponsoredResultsComponent {
|
|
|
9826
9986
|
enabled?: boolean;
|
|
9827
9987
|
data?: string[];
|
|
9828
9988
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9989
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9829
9990
|
};
|
|
9830
9991
|
previewMultiConversion?: boolean;
|
|
9831
9992
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -9920,6 +10081,7 @@ export declare class SponsoredResultsComponent {
|
|
|
9920
10081
|
enabled?: boolean;
|
|
9921
10082
|
data?: string[];
|
|
9922
10083
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
10084
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9923
10085
|
};
|
|
9924
10086
|
previewMultiConversion?: boolean;
|
|
9925
10087
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -9962,6 +10124,7 @@ export declare class SponsoredResultsComponent {
|
|
|
9962
10124
|
enabled?: boolean;
|
|
9963
10125
|
data?: string[];
|
|
9964
10126
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
10127
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
9965
10128
|
};
|
|
9966
10129
|
previewMultiConversion?: boolean;
|
|
9967
10130
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -10014,7 +10177,7 @@ export declare class SponsoredResultsComponent {
|
|
|
10014
10177
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
10015
10178
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
10016
10179
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
10017
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
10180
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
10018
10181
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
10019
10182
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
10020
10183
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -11053,7 +11216,7 @@ export declare class AdvancedSearch {
|
|
|
11053
11216
|
readonly similarDocuments: import("@angular/core").InputSignal<Article[] | undefined>;
|
|
11054
11217
|
readonly selected: import("@angular/core").OutputEmitterRef<Article>;
|
|
11055
11218
|
protected readonly selectionStore: {
|
|
11056
|
-
article?: import("@
|
|
11219
|
+
article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
|
|
11057
11220
|
id?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11058
11221
|
queryText?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11059
11222
|
queryName?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
@@ -11102,7 +11265,7 @@ export declare class AdvancedSearch {
|
|
|
11102
11265
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11103
11266
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
11104
11267
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11105
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
11268
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
11106
11269
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11107
11270
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11108
11271
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -11272,7 +11435,7 @@ export declare class AdvancedSearchTabs {
|
|
|
11272
11435
|
readonly similarDocuments: import("@angular/core").InputSignal<Article[] | undefined>;
|
|
11273
11436
|
readonly selected: import("@angular/core").OutputEmitterRef<Article>;
|
|
11274
11437
|
protected readonly selectionStore: {
|
|
11275
|
-
article?: import("@
|
|
11438
|
+
article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
|
|
11276
11439
|
id?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11277
11440
|
queryText?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
11278
11441
|
queryName?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
@@ -12145,25 +12308,75 @@ export declare class AuthPageComponent {
|
|
|
12145
12308
|
};
|
|
12146
12309
|
}, {}, never, never, true, never>;
|
|
12147
12310
|
}
|
|
12311
|
+
/**
|
|
12312
|
+
* The change-password form dressed as an auth page block: the product logo above the form, inside a card.
|
|
12313
|
+
*
|
|
12314
|
+
* It only adds the dressing — every behaviour lives in {@link ChangePasswordFormComponent}, which is
|
|
12315
|
+
* what to use anywhere the logo has no place (a settings panel, a dialog body).
|
|
12316
|
+
*/
|
|
12317
|
+
export declare class ChangePasswordComponent {
|
|
12318
|
+
readonly success: import("@angular/core").OutputEmitterRef<void>;
|
|
12319
|
+
readonly cancel: import("@angular/core").OutputEmitterRef<void>;
|
|
12320
|
+
readonly username: import("@angular/core").InputSignal<string | null>;
|
|
12321
|
+
readonly alert: import("@angular/core").InputSignal<string | undefined>;
|
|
12322
|
+
readonly redirectAfterSuccess: import("@angular/core").InputSignal<boolean>;
|
|
12323
|
+
readonly redirectAfterCancel: import("@angular/core").InputSignal<boolean>;
|
|
12324
|
+
protected readonly surfaceClass = "flex w-full flex-col gap-(--spacing-md) rounded-(--radius-md) border border-solid border-(--layer-page-edge) bg-(--layer-page-layer) p-(--spacing-md) shadow-(--shadow-2)";
|
|
12325
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChangePasswordComponent, never>;
|
|
12326
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordComponent, "change-password, ChangePassword, changepassword", never, {
|
|
12327
|
+
"username": {
|
|
12328
|
+
"alias": "username";
|
|
12329
|
+
"required": false;
|
|
12330
|
+
"isSignal": true;
|
|
12331
|
+
};
|
|
12332
|
+
"alert": {
|
|
12333
|
+
"alias": "alert";
|
|
12334
|
+
"required": false;
|
|
12335
|
+
"isSignal": true;
|
|
12336
|
+
};
|
|
12337
|
+
"redirectAfterSuccess": {
|
|
12338
|
+
"alias": "redirectAfterSuccess";
|
|
12339
|
+
"required": false;
|
|
12340
|
+
"isSignal": true;
|
|
12341
|
+
};
|
|
12342
|
+
"redirectAfterCancel": {
|
|
12343
|
+
"alias": "redirectAfterCancel";
|
|
12344
|
+
"required": false;
|
|
12345
|
+
"isSignal": true;
|
|
12346
|
+
};
|
|
12347
|
+
}, {
|
|
12348
|
+
"success": "success";
|
|
12349
|
+
"cancel": "cancel";
|
|
12350
|
+
}, never, never, true, never>;
|
|
12351
|
+
}
|
|
12148
12352
|
/** Model of the change-password form. */
|
|
12149
12353
|
export interface PasswordChange {
|
|
12150
12354
|
currentPassword: string;
|
|
12151
12355
|
newPassword: string;
|
|
12152
12356
|
confirmPassword: string;
|
|
12153
12357
|
}
|
|
12154
|
-
|
|
12155
|
-
|
|
12358
|
+
/**
|
|
12359
|
+
* The change-password form, and nothing else: no logo, no card, no surface of its own.
|
|
12360
|
+
*
|
|
12361
|
+
* It lays out like any block of content, so it can be dropped anywhere — inline in a settings panel,
|
|
12362
|
+
* in the body of a dialog, or inside the card of an auth page (`<change-password>`).
|
|
12363
|
+
*
|
|
12364
|
+
* Buttons: by default the form renders its own Cancel / Confirm row. A container that already owns
|
|
12365
|
+
* the buttons (a dialog's footer) sets `[showActions]="false"` and drives the form through
|
|
12366
|
+
* {@link changePassword}, {@link canSubmit} and {@link pending}.
|
|
12367
|
+
*/
|
|
12368
|
+
export declare class ChangePasswordFormComponent {
|
|
12156
12369
|
readonly success: import("@angular/core").OutputEmitterRef<void>;
|
|
12157
12370
|
readonly cancel: import("@angular/core").OutputEmitterRef<void>;
|
|
12158
|
-
username: import("@angular/core").InputSignal<string | null>;
|
|
12159
|
-
alert: import("@angular/core").InputSignal<string | undefined>;
|
|
12160
|
-
redirectAfterSuccess: import("@angular/core").InputSignal<boolean>;
|
|
12161
|
-
redirectAfterCancel: import("@angular/core").InputSignal<boolean>;
|
|
12371
|
+
readonly username: import("@angular/core").InputSignal<string | null>;
|
|
12372
|
+
readonly alert: import("@angular/core").InputSignal<string | undefined>;
|
|
12373
|
+
readonly redirectAfterSuccess: import("@angular/core").InputSignal<boolean>;
|
|
12374
|
+
readonly redirectAfterCancel: import("@angular/core").InputSignal<boolean>;
|
|
12162
12375
|
/**
|
|
12163
|
-
* Renders the
|
|
12164
|
-
*
|
|
12376
|
+
* Renders the Cancel / Confirm row. Set `false` when the container owns the buttons — a dialog
|
|
12377
|
+
* footer — and drive the form through `changePassword()` / `canSubmit()`.
|
|
12165
12378
|
*/
|
|
12166
|
-
|
|
12379
|
+
readonly showActions: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12167
12380
|
private readonly client;
|
|
12168
12381
|
private readonly transloco;
|
|
12169
12382
|
private readonly router;
|
|
@@ -12171,41 +12384,57 @@ export declare class ChangePasswordComponent {
|
|
|
12171
12384
|
private readonly applicationService;
|
|
12172
12385
|
private readonly location;
|
|
12173
12386
|
private readonly auditService;
|
|
12174
|
-
protected readonly
|
|
12175
|
-
|
|
12176
|
-
|
|
12177
|
-
|
|
12178
|
-
|
|
12179
|
-
|
|
12180
|
-
|
|
12181
|
-
|
|
12182
|
-
|
|
12387
|
+
protected readonly css: {
|
|
12388
|
+
form: string;
|
|
12389
|
+
field: string;
|
|
12390
|
+
label: string;
|
|
12391
|
+
error: string;
|
|
12392
|
+
alert: string;
|
|
12393
|
+
actions: string;
|
|
12394
|
+
};
|
|
12395
|
+
protected readonly fields: readonly [{
|
|
12396
|
+
readonly name: "currentPassword";
|
|
12397
|
+
readonly id: "change-current-password";
|
|
12398
|
+
readonly label: "login.currentPassword";
|
|
12399
|
+
readonly autocomplete: "current-password";
|
|
12400
|
+
}, {
|
|
12401
|
+
readonly name: "newPassword";
|
|
12402
|
+
readonly id: "change-new-password";
|
|
12403
|
+
readonly label: "login.newPassword";
|
|
12404
|
+
readonly autocomplete: "new-password";
|
|
12405
|
+
}, {
|
|
12406
|
+
readonly name: "confirmPassword";
|
|
12407
|
+
readonly id: "change-confirm-password";
|
|
12408
|
+
readonly label: "login.confirmPassword";
|
|
12409
|
+
readonly autocomplete: "new-password";
|
|
12410
|
+
}];
|
|
12411
|
+
protected readonly showError: typeof fieldShowsError;
|
|
12412
|
+
protected readonly errorKey: (field: FieldTree<string>) => string;
|
|
12413
|
+
readonly passwords: import("@angular/core").WritableSignal<PasswordChange>;
|
|
12183
12414
|
protected readonly passwordForm: FieldTree<PasswordChange, string | number, "writable">;
|
|
12184
|
-
pending: WritableSignal<boolean>;
|
|
12185
|
-
errorMsg: WritableSignal<string | null>;
|
|
12186
|
-
|
|
12187
|
-
readonly
|
|
12188
|
-
|
|
12189
|
-
|
|
12190
|
-
|
|
12415
|
+
readonly pending: import("@angular/core").WritableSignal<boolean>;
|
|
12416
|
+
readonly errorMsg: import("@angular/core").WritableSignal<string | null>;
|
|
12417
|
+
/** The server rejects a password change made while acting as another user (HTTP 400). */
|
|
12418
|
+
protected readonly overridingUser: import("@angular/core").Signal<boolean>;
|
|
12419
|
+
/** Whether a submission would run: valid form, nothing in flight, not impersonating. */
|
|
12420
|
+
readonly canSubmit: import("@angular/core").Signal<boolean>;
|
|
12421
|
+
/** Names of the fields currently shown in clear text. */
|
|
12422
|
+
private readonly revealed;
|
|
12191
12423
|
readonly effectiveUsername: import("@angular/core").Signal<string | null>;
|
|
12192
|
-
|
|
12193
|
-
|
|
12194
|
-
protected
|
|
12195
|
-
/** Maps the first validation error to its translation key (`login.errors.passwordMismatch`, …). */
|
|
12196
|
-
protected errorKey<T>(field: FieldTree<T>): string;
|
|
12424
|
+
constructor();
|
|
12425
|
+
protected isRevealed(name: keyof PasswordChange): boolean;
|
|
12426
|
+
protected toggleReveal(name: keyof PasswordChange): void;
|
|
12197
12427
|
private clearLocalAuthState;
|
|
12198
12428
|
/**
|
|
12199
12429
|
* Submits the form. `submit()` marks every field as touched — revealing the validation
|
|
12200
|
-
* messages — and only runs the action when the form is valid
|
|
12201
|
-
* `if (!this.valid()) return;` guard.
|
|
12430
|
+
* messages — and only runs the action when the form is valid.
|
|
12202
12431
|
*/
|
|
12203
12432
|
changePassword(): Promise<boolean>;
|
|
12204
12433
|
/** The submission itself. Only ever reached with a valid form. */
|
|
12205
12434
|
private performChange;
|
|
12206
12435
|
onCancel(): void;
|
|
12207
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
12208
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
12436
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChangePasswordFormComponent, never>;
|
|
12437
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordFormComponent, "change-password-form, ChangePasswordForm, changepasswordform", never, {
|
|
12209
12438
|
"username": {
|
|
12210
12439
|
"alias": "username";
|
|
12211
12440
|
"required": false;
|
|
@@ -12226,25 +12455,22 @@ export declare class ChangePasswordComponent {
|
|
|
12226
12455
|
"required": false;
|
|
12227
12456
|
"isSignal": true;
|
|
12228
12457
|
};
|
|
12229
|
-
"
|
|
12230
|
-
"alias": "
|
|
12231
|
-
"required": false;
|
|
12232
|
-
"isSignal": true;
|
|
12233
|
-
};
|
|
12234
|
-
"passwords": {
|
|
12235
|
-
"alias": "passwords";
|
|
12458
|
+
"showActions": {
|
|
12459
|
+
"alias": "showActions";
|
|
12236
12460
|
"required": false;
|
|
12237
12461
|
"isSignal": true;
|
|
12238
12462
|
};
|
|
12239
12463
|
}, {
|
|
12240
12464
|
"success": "success";
|
|
12241
12465
|
"cancel": "cancel";
|
|
12242
|
-
"passwords": "passwordsChange";
|
|
12243
12466
|
}, never, never, true, never>;
|
|
12244
12467
|
}
|
|
12245
12468
|
/**
|
|
12246
|
-
*
|
|
12247
|
-
*
|
|
12469
|
+
* The sign-in screen: the credentials form (`<sign-in-form>`) dressed as an auth page block — logo and
|
|
12470
|
+
* card — plus everything around the form: the SSO / OAuth / SAML / bearer handshake, the loader shown
|
|
12471
|
+
* while it runs, and the password-expiry notice.
|
|
12472
|
+
*
|
|
12473
|
+
* Use `<sign-in-form>` directly anywhere the logo, the card and the handshake have no place.
|
|
12248
12474
|
*/
|
|
12249
12475
|
export declare class SignInComponent implements OnInit {
|
|
12250
12476
|
cn: import("cn").CnFunction;
|
|
@@ -12252,6 +12478,7 @@ export declare class SignInComponent implements OnInit {
|
|
|
12252
12478
|
config: Readonly<Partial<{
|
|
12253
12479
|
app: string;
|
|
12254
12480
|
backendUrl: string;
|
|
12481
|
+
apiPrefix: string;
|
|
12255
12482
|
autoOAuthProvider: string;
|
|
12256
12483
|
autoSAMLProvider: string;
|
|
12257
12484
|
bearerToken: string;
|
|
@@ -12271,10 +12498,9 @@ export declare class SignInComponent implements OnInit {
|
|
|
12271
12498
|
loginPath: string;
|
|
12272
12499
|
createRoutes: boolean;
|
|
12273
12500
|
}> & Record<string, unknown>>;
|
|
12274
|
-
protected readonly
|
|
12275
|
-
|
|
12276
|
-
|
|
12277
|
-
protected readonly errorClass = "text-(length:--size-base) text-(--font-error-base)";
|
|
12501
|
+
protected readonly surfaceClass = "flex w-full flex-col gap-(--spacing-md) rounded-(--radius-md) border border-solid border-(--layer-page-edge) bg-(--layer-page-layer) p-(--spacing-md) shadow-(--shadow-2)";
|
|
12502
|
+
/** The credentials form, once rendered: its username feeds the password-expiry notice. */
|
|
12503
|
+
private readonly signInForm;
|
|
12278
12504
|
/**
|
|
12279
12505
|
* True when authentication is handled outside the credentials form — the browser or a proxy
|
|
12280
12506
|
* (`sso`), an auto-configured OAuth/SAML provider, or a configured token (`bearer`). In those modes
|
|
@@ -12291,11 +12517,6 @@ export declare class SignInComponent implements OnInit {
|
|
|
12291
12517
|
* step, a wizard — where `h-dvh` would blow the container out.
|
|
12292
12518
|
*/
|
|
12293
12519
|
fullscreen: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12294
|
-
/**
|
|
12295
|
-
* Renders the form as a card (background, padding, shadow). Set `false` when the container
|
|
12296
|
-
* already provides the surface — a dialog body, a settings panel — to avoid nesting cards.
|
|
12297
|
-
*/
|
|
12298
|
-
surface: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12299
12520
|
/**
|
|
12300
12521
|
* Navigate to the `returnUrl` once authenticated. Opt-out when the host owns what comes next
|
|
12301
12522
|
* (same contract as `ChangePasswordComponent`): the component then only emits `success`.
|
|
@@ -12311,17 +12532,6 @@ export declare class SignInComponent implements OnInit {
|
|
|
12311
12532
|
readonly changePassword: import("@angular/core").OutputEmitterRef<string>;
|
|
12312
12533
|
/** Emitted once authenticated and the application is initialized — before any navigation. */
|
|
12313
12534
|
readonly success: import("@angular/core").OutputEmitterRef<void>;
|
|
12314
|
-
/**
|
|
12315
|
-
* Form model. Keeps the exact shape of the `credentials` computed it replaces, so reading
|
|
12316
|
-
* `credentials()` is unchanged for consumers — only `.set()` is new.
|
|
12317
|
-
*/
|
|
12318
|
-
readonly credentials: import("@angular/core").ModelSignal<Credentials>;
|
|
12319
|
-
/**
|
|
12320
|
-
* The sign-in form itself. `protected` and not `private`: extending this component is documented
|
|
12321
|
-
* publicly, and a subclass template must be able to bind `[formField]="signInForm.username"`.
|
|
12322
|
-
*/
|
|
12323
|
-
protected readonly signInForm: FieldTree<Credentials, string | number, "writable">;
|
|
12324
|
-
isValid: import("@angular/core").Signal<boolean>;
|
|
12325
12535
|
private readonly router;
|
|
12326
12536
|
private readonly route;
|
|
12327
12537
|
private readonly applicationService;
|
|
@@ -12367,10 +12577,6 @@ export declare class SignInComponent implements OnInit {
|
|
|
12367
12577
|
* instead of routing to /error.
|
|
12368
12578
|
*/
|
|
12369
12579
|
readonly showCredentialsFallback: import("@angular/core").WritableSignal<boolean>;
|
|
12370
|
-
/** A field shows its error only once the user has left it — never while typing the first time. */
|
|
12371
|
-
protected showError<T>(field: FieldTree<T>): boolean;
|
|
12372
|
-
/** Maps the first validation error to its translation key (`login.errors.required`, …). */
|
|
12373
|
-
protected errorKey<T>(field: FieldTree<T>): string;
|
|
12374
12580
|
private readonly destroyRef;
|
|
12375
12581
|
constructor();
|
|
12376
12582
|
/**
|
|
@@ -12406,14 +12612,8 @@ export declare class SignInComponent implements OnInit {
|
|
|
12406
12612
|
private checkPasswordExpiresSoon;
|
|
12407
12613
|
handleLogout(): Promise<void>;
|
|
12408
12614
|
handleLogin(): Promise<boolean>;
|
|
12409
|
-
/**
|
|
12410
|
-
|
|
12411
|
-
* validation messages — and only runs the action when the form is valid, replacing the former
|
|
12412
|
-
* `if (!this.isValid()) return;` guard.
|
|
12413
|
-
*/
|
|
12414
|
-
handleLoginWithCredentials(): Promise<boolean>;
|
|
12415
|
-
/** The submission itself. Only ever reached with a valid form (see `handleLoginWithCredentials`). */
|
|
12416
|
-
private performLogin;
|
|
12615
|
+
/** The form authenticated and initialized the app — before any navigation. */
|
|
12616
|
+
protected onSuccess(): void;
|
|
12417
12617
|
handleBack(): void;
|
|
12418
12618
|
static ɵfac: i0.ɵɵFactoryDeclaration<SignInComponent, never>;
|
|
12419
12619
|
static ɵcmp: i0.ɵɵComponentDeclaration<SignInComponent, "signIn, signin, sign-in", never, {
|
|
@@ -12427,18 +12627,84 @@ export declare class SignInComponent implements OnInit {
|
|
|
12427
12627
|
"required": false;
|
|
12428
12628
|
"isSignal": true;
|
|
12429
12629
|
};
|
|
12430
|
-
"
|
|
12431
|
-
"alias": "
|
|
12630
|
+
"redirectAfterSuccess": {
|
|
12631
|
+
"alias": "redirectAfterSuccess";
|
|
12632
|
+
"required": false;
|
|
12633
|
+
"isSignal": true;
|
|
12634
|
+
};
|
|
12635
|
+
"autoStart": {
|
|
12636
|
+
"alias": "autoStart";
|
|
12432
12637
|
"required": false;
|
|
12433
12638
|
"isSignal": true;
|
|
12434
12639
|
};
|
|
12640
|
+
}, {
|
|
12641
|
+
"forgotPassword": "forgotPassword";
|
|
12642
|
+
"changePassword": "changePassword";
|
|
12643
|
+
"success": "success";
|
|
12644
|
+
}, never, never, true, never>;
|
|
12645
|
+
}
|
|
12646
|
+
/**
|
|
12647
|
+
* The credentials form, and nothing else: no logo, no card, no loader, no external handshake.
|
|
12648
|
+
*
|
|
12649
|
+
* It lays out like any block of content, so it can be dropped anywhere — inline in a page, in the
|
|
12650
|
+
* body of a dialog, or inside the card of an auth page (`<sign-in>`, which also drives the SSO / OAuth /
|
|
12651
|
+
* SAML handshake). A container that owns the submit button sets `[showActions]="false"` and drives the
|
|
12652
|
+
* form through {@link handleLoginWithCredentials} and {@link canSubmit}.
|
|
12653
|
+
*/
|
|
12654
|
+
export declare class SignInFormComponent {
|
|
12655
|
+
private readonly client;
|
|
12656
|
+
private readonly router;
|
|
12657
|
+
private readonly route;
|
|
12658
|
+
private readonly applicationService;
|
|
12659
|
+
private readonly auditService;
|
|
12660
|
+
/**
|
|
12661
|
+
* Navigate to the `returnUrl` once authenticated. Opt-out when the host owns what comes next
|
|
12662
|
+
* (same contract as `ChangePasswordFormComponent`): the component then only emits `success` — and, on an
|
|
12663
|
+
* expired password, `changePassword` without navigating to the change-password page.
|
|
12664
|
+
*/
|
|
12665
|
+
readonly redirectAfterSuccess: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12666
|
+
/**
|
|
12667
|
+
* Renders the submit button. Set `false` when the container owns it — a dialog footer — and drive
|
|
12668
|
+
* the form through `handleLoginWithCredentials()` / `canSubmit()`.
|
|
12669
|
+
*/
|
|
12670
|
+
readonly showActions: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12671
|
+
readonly forgotPassword: import("@angular/core").OutputEmitterRef<void>;
|
|
12672
|
+
/** Emitted when the server requires a password change (401 « password expired »). Payload: username. */
|
|
12673
|
+
readonly changePassword: import("@angular/core").OutputEmitterRef<string>;
|
|
12674
|
+
/** Emitted once authenticated and the application is initialized — before any navigation. */
|
|
12675
|
+
readonly success: import("@angular/core").OutputEmitterRef<void>;
|
|
12676
|
+
protected readonly css: {
|
|
12677
|
+
form: string;
|
|
12678
|
+
field: string;
|
|
12679
|
+
label: string;
|
|
12680
|
+
error: string;
|
|
12681
|
+
};
|
|
12682
|
+
protected readonly showError: typeof fieldShowsError;
|
|
12683
|
+
protected readonly errorKey: (field: FieldTree<string>) => string;
|
|
12684
|
+
/** Form model. */
|
|
12685
|
+
readonly credentials: import("@angular/core").ModelSignal<Credentials>;
|
|
12686
|
+
protected readonly signInForm: FieldTree<Credentials, string | number, "writable">;
|
|
12687
|
+
/** Whether a submission would run: both fields filled, nothing in flight. */
|
|
12688
|
+
readonly canSubmit: import("@angular/core").Signal<boolean>;
|
|
12689
|
+
protected onForgotPassword(event: Event): void;
|
|
12690
|
+
constructor();
|
|
12691
|
+
/**
|
|
12692
|
+
* Submits the credentials form. `submit()` marks every field as touched — which reveals the
|
|
12693
|
+
* validation messages — and only runs the action when the form is valid, replacing the former
|
|
12694
|
+
* `if (!this.isValid()) return;` guard.
|
|
12695
|
+
*/
|
|
12696
|
+
handleLoginWithCredentials(): Promise<boolean>;
|
|
12697
|
+
/** The submission itself. Only ever reached with a valid form (see `handleLoginWithCredentials`). */
|
|
12698
|
+
private performLogin;
|
|
12699
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SignInFormComponent, never>;
|
|
12700
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SignInFormComponent, "sign-in-form, SignInForm, signinform", never, {
|
|
12435
12701
|
"redirectAfterSuccess": {
|
|
12436
12702
|
"alias": "redirectAfterSuccess";
|
|
12437
12703
|
"required": false;
|
|
12438
12704
|
"isSignal": true;
|
|
12439
12705
|
};
|
|
12440
|
-
"
|
|
12441
|
-
"alias": "
|
|
12706
|
+
"showActions": {
|
|
12707
|
+
"alias": "showActions";
|
|
12442
12708
|
"required": false;
|
|
12443
12709
|
"isSignal": true;
|
|
12444
12710
|
};
|
|
@@ -12454,37 +12720,64 @@ export declare class SignInComponent implements OnInit {
|
|
|
12454
12720
|
"credentials": "credentialsChange";
|
|
12455
12721
|
}, never, never, true, never>;
|
|
12456
12722
|
}
|
|
12723
|
+
/**
|
|
12724
|
+
* The password-reset form dressed as an auth page block: the product logo above the form, inside a card.
|
|
12725
|
+
*
|
|
12726
|
+
* It only adds the dressing — every behaviour lives in {@link ForgotPasswordFormComponent}, which is
|
|
12727
|
+
* what to use anywhere the logo has no place.
|
|
12728
|
+
*/
|
|
12729
|
+
export declare class ForgotPasswordComponent {
|
|
12730
|
+
readonly cancel: import("@angular/core").OutputEmitterRef<void>;
|
|
12731
|
+
readonly success: import("@angular/core").OutputEmitterRef<void>;
|
|
12732
|
+
protected readonly surfaceClass = "flex w-full flex-col gap-(--spacing-md) rounded-(--radius-md) border border-solid border-(--layer-page-edge) bg-(--layer-page-layer) p-(--spacing-md) shadow-(--shadow-2)";
|
|
12733
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ForgotPasswordComponent, never>;
|
|
12734
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ForgotPasswordComponent, "forgot-password, ForgotPassword, forgotpassword", never, {}, {
|
|
12735
|
+
"cancel": "cancel";
|
|
12736
|
+
"success": "success";
|
|
12737
|
+
}, never, never, true, never>;
|
|
12738
|
+
}
|
|
12457
12739
|
/** Model of the password-reset request. `username` matches `Credentials.username` and the `login.username` key. */
|
|
12458
12740
|
export interface PasswordResetRequest {
|
|
12459
12741
|
username: string;
|
|
12460
12742
|
}
|
|
12461
|
-
|
|
12743
|
+
/**
|
|
12744
|
+
* The password-reset request form, and nothing else: no logo, no card, no surface of its own.
|
|
12745
|
+
*
|
|
12746
|
+
* It lays out like any block of content, so it can be dropped anywhere — inline in a page, in the
|
|
12747
|
+
* body of a dialog, or inside the card of an auth page (`<forgot-password>`). A container that owns
|
|
12748
|
+
* the buttons sets `[showActions]="false"` and drives it through {@link submit} and {@link canSubmit}.
|
|
12749
|
+
*/
|
|
12750
|
+
export declare class ForgotPasswordFormComponent {
|
|
12462
12751
|
readonly cancel: import("@angular/core").OutputEmitterRef<void>;
|
|
12463
12752
|
readonly success: import("@angular/core").OutputEmitterRef<void>;
|
|
12464
12753
|
/**
|
|
12465
|
-
* Renders the
|
|
12466
|
-
*
|
|
12754
|
+
* Renders the Cancel / Send row. Set `false` when the container owns the buttons — a dialog
|
|
12755
|
+
* footer — and drive the form through `submit()` / `canSubmit()`.
|
|
12467
12756
|
*/
|
|
12468
|
-
|
|
12757
|
+
readonly showActions: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12758
|
+
/** Renders the title above the description. Set `false` when the container already shows it — a dialog header. */
|
|
12759
|
+
readonly showTitle: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12469
12760
|
private readonly client;
|
|
12470
12761
|
private readonly transloco;
|
|
12471
12762
|
private readonly auditService;
|
|
12472
|
-
protected readonly
|
|
12473
|
-
|
|
12474
|
-
|
|
12475
|
-
|
|
12476
|
-
|
|
12477
|
-
|
|
12478
|
-
|
|
12763
|
+
protected readonly css: {
|
|
12764
|
+
form: string;
|
|
12765
|
+
field: string;
|
|
12766
|
+
label: string;
|
|
12767
|
+
error: string;
|
|
12768
|
+
alert: string;
|
|
12769
|
+
actions: string;
|
|
12770
|
+
};
|
|
12771
|
+
protected readonly showError: typeof fieldShowsError;
|
|
12772
|
+
protected readonly errorKey: (field: FieldTree<string>) => string;
|
|
12773
|
+
/** Form model. Two-way bindable, so a wizard can carry the username over from a previous step. */
|
|
12479
12774
|
readonly resetRequest: import("@angular/core").ModelSignal<PasswordResetRequest>;
|
|
12480
|
-
/** `protected` and not `private`: a subclass template must be able to bind its own controls. */
|
|
12481
12775
|
protected readonly resetForm: FieldTree<PasswordResetRequest, string | number, "writable">;
|
|
12482
|
-
pending: import("@angular/core").WritableSignal<boolean>;
|
|
12483
|
-
errorMsg: import("@angular/core").WritableSignal<string | null>;
|
|
12484
|
-
/**
|
|
12485
|
-
|
|
12486
|
-
|
|
12487
|
-
protected errorKey<T>(field: FieldTree<T>): string;
|
|
12776
|
+
readonly pending: import("@angular/core").WritableSignal<boolean>;
|
|
12777
|
+
readonly errorMsg: import("@angular/core").WritableSignal<string | null>;
|
|
12778
|
+
/** Whether a submission would run: valid form, nothing in flight. */
|
|
12779
|
+
readonly canSubmit: import("@angular/core").Signal<boolean>;
|
|
12780
|
+
constructor();
|
|
12488
12781
|
/**
|
|
12489
12782
|
* Submits the form. `submit()` marks every field as touched — revealing the validation
|
|
12490
12783
|
* messages — and only runs the action when the form is valid.
|
|
@@ -12492,10 +12785,15 @@ export declare class ForgotPasswordComponent {
|
|
|
12492
12785
|
submit(): Promise<boolean>;
|
|
12493
12786
|
/** The submission itself. Only ever reached with a valid form. */
|
|
12494
12787
|
private sendResetLink;
|
|
12495
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
12496
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
12497
|
-
"
|
|
12498
|
-
"alias": "
|
|
12788
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ForgotPasswordFormComponent, never>;
|
|
12789
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ForgotPasswordFormComponent, "forgot-password-form, ForgotPasswordForm, forgotpasswordform", never, {
|
|
12790
|
+
"showActions": {
|
|
12791
|
+
"alias": "showActions";
|
|
12792
|
+
"required": false;
|
|
12793
|
+
"isSignal": true;
|
|
12794
|
+
};
|
|
12795
|
+
"showTitle": {
|
|
12796
|
+
"alias": "showTitle";
|
|
12499
12797
|
"required": false;
|
|
12500
12798
|
"isSignal": true;
|
|
12501
12799
|
};
|
|
@@ -12535,10 +12833,10 @@ export declare class SignedOutComponent {
|
|
|
12535
12833
|
static ɵcmp: i0.ɵɵComponentDeclaration<SignedOutComponent, "signed-out, SignedOut, signedout", never, {}, {}, never, never, true, never>;
|
|
12536
12834
|
}
|
|
12537
12835
|
export declare class BookmarkButtonComponent {
|
|
12538
|
-
variant: import("@angular/core").InputSignal<"
|
|
12836
|
+
variant: import("@angular/core").InputSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
|
|
12539
12837
|
/** `neutral` gives a tertiary button the dark icon of the other neutral icon buttons of a toolbar. */
|
|
12540
12838
|
scheme: import("@angular/core").InputSignal<"default" | "neutral" | null | undefined>;
|
|
12541
|
-
size: import("@angular/core").InputSignal<"
|
|
12839
|
+
size: import("@angular/core").InputSignal<"small" | "large" | "sm" | "md" | "lg" | "xs" | "xsmall" | "medium" | null | undefined>;
|
|
12542
12840
|
/**
|
|
12543
12841
|
* Tab index applied to the inner button.
|
|
12544
12842
|
*
|
|
@@ -12548,10 +12846,25 @@ export declare class BookmarkButtonComponent {
|
|
|
12548
12846
|
*/
|
|
12549
12847
|
tabIndex: import("@angular/core").InputSignal<number | undefined>;
|
|
12550
12848
|
readonly article: import("@angular/core").InputSignal<Partial<Article>>;
|
|
12849
|
+
/**
|
|
12850
|
+
* Where the button files the document. `bookmarks` (default) is the historical behaviour: a click toggles
|
|
12851
|
+
* the bookmark. `collections` opts in to the collections: a click opens the "add to collection" panel, and the
|
|
12852
|
+
* button reads as pressed when the document is in at least one collection. Bookmarks are then left alone.
|
|
12853
|
+
*/
|
|
12854
|
+
readonly target: import("@angular/core").InputSignal<"bookmarks" | "collections">;
|
|
12551
12855
|
private readonly userSettingsStore;
|
|
12552
12856
|
private readonly route;
|
|
12553
12857
|
private readonly transloco;
|
|
12858
|
+
protected readonly panelId: string;
|
|
12859
|
+
protected readonly panelOpen: import("@angular/core").WritableSignal<boolean>;
|
|
12860
|
+
/** The panel only reads the id: a partial article is all it needs. */
|
|
12861
|
+
protected readonly panelArticles: import("@angular/core").Signal<Article[]>;
|
|
12862
|
+
private readonly trigger;
|
|
12863
|
+
private readonly panel;
|
|
12554
12864
|
protected isBookmarked: import("@angular/core").Signal<boolean>;
|
|
12865
|
+
constructor();
|
|
12866
|
+
protected closePanel(): void;
|
|
12867
|
+
protected onPanelToggle(event: Event): void;
|
|
12555
12868
|
bookmark(e: Event): Promise<void>;
|
|
12556
12869
|
static ɵfac: i0.ɵɵFactoryDeclaration<BookmarkButtonComponent, never>;
|
|
12557
12870
|
static ɵcmp: i0.ɵɵComponentDeclaration<BookmarkButtonComponent, "bookmark-button, bookmarkbutton, BookmarkButton", never, {
|
|
@@ -12580,6 +12893,11 @@ export declare class BookmarkButtonComponent {
|
|
|
12580
12893
|
"required": true;
|
|
12581
12894
|
"isSignal": true;
|
|
12582
12895
|
};
|
|
12896
|
+
"target": {
|
|
12897
|
+
"alias": "target";
|
|
12898
|
+
"required": false;
|
|
12899
|
+
"isSignal": true;
|
|
12900
|
+
};
|
|
12583
12901
|
}, {}, never, never, true, never>;
|
|
12584
12902
|
}
|
|
12585
12903
|
interface ListPanelDeleteEvent<T> {
|
|
@@ -12717,12 +13035,8 @@ export declare const BOOKMARKS_OPTIONS: BookmarksConfig;
|
|
|
12717
13035
|
export declare const BOOKMARKS_CONFIG: InjectionToken<ListPanelConfig>;
|
|
12718
13036
|
export declare class BookmarksComponent {
|
|
12719
13037
|
floating: PopoverDirective | null;
|
|
12720
|
-
private readonly selection;
|
|
12721
|
-
private readonly queryService;
|
|
12722
13038
|
private readonly userSettingsStore;
|
|
12723
|
-
private readonly appStore;
|
|
12724
13039
|
private readonly transloco;
|
|
12725
|
-
private destroyRef;
|
|
12726
13040
|
options: import("@angular/core").InputSignal<ListPanelConfig | undefined>;
|
|
12727
13041
|
config: ListPanelConfig;
|
|
12728
13042
|
protected idOf: (bookmark: Bookmark) => string;
|
|
@@ -12732,8 +13046,8 @@ export declare class BookmarksComponent {
|
|
|
12732
13046
|
paginatedBookmarks: import("@angular/core").Signal<Bookmark[]>;
|
|
12733
13047
|
hasMore: import("@angular/core").Signal<boolean>;
|
|
12734
13048
|
constructor();
|
|
13049
|
+
private readonly openBookmark;
|
|
12735
13050
|
onClick(bookmark: Bookmark): void;
|
|
12736
|
-
private performSecondSearch;
|
|
12737
13051
|
onDelete(event: ListPanelDeleteEvent<Bookmark>): void;
|
|
12738
13052
|
loadMore(): void;
|
|
12739
13053
|
static ɵfac: i0.ɵɵFactoryDeclaration<BookmarksComponent, never>;
|
|
@@ -12745,14 +13059,20 @@ export declare class BookmarksComponent {
|
|
|
12745
13059
|
};
|
|
12746
13060
|
}, {}, never, never, true, never>;
|
|
12747
13061
|
}
|
|
13062
|
+
/**
|
|
13063
|
+
* Returns a function that opens a bookmark: it looks the document up by id (in the query the bookmark was made
|
|
13064
|
+
* from, then in the default query) and makes it the current article, or warns that it is outdated.
|
|
13065
|
+
*
|
|
13066
|
+
* Call it in an injection context. Shared by the bookmarks list and the collections manager.
|
|
13067
|
+
*/
|
|
13068
|
+
export declare function injectOpenBookmark(): (bookmark: Pick<Bookmark, "id" | "queryName">) => void;
|
|
12748
13069
|
export type CollectionsConfig = ListPanelConfig;
|
|
12749
13070
|
export declare const COLLECTIONS_OPTIONS: CollectionsConfig;
|
|
12750
13071
|
export declare const COLLECTIONS_CONFIG: InjectionToken<ListPanelConfig>;
|
|
12751
13072
|
export declare class CollectionsComponent {
|
|
12752
13073
|
floating: PopoverDirective | null;
|
|
12753
13074
|
private readonly userSettingsStore;
|
|
12754
|
-
private readonly
|
|
12755
|
-
private readonly router;
|
|
13075
|
+
private readonly applyCollection;
|
|
12756
13076
|
private readonly injector;
|
|
12757
13077
|
options: import("@angular/core").InputSignal<ListPanelConfig | undefined>;
|
|
12758
13078
|
config: ListPanelConfig;
|
|
@@ -12774,6 +13094,78 @@ export declare class CollectionsComponent {
|
|
|
12774
13094
|
};
|
|
12775
13095
|
}, {}, never, never, true, never>;
|
|
12776
13096
|
}
|
|
13097
|
+
/**
|
|
13098
|
+
* Returns a function that applies a collection as a filter: it opens `/search` scoped to it (`?b=<name>`).
|
|
13099
|
+
*
|
|
13100
|
+
* The basket is written into `QueryParamsStore` **before** navigating: `patchState` is synchronous while
|
|
13101
|
+
* `router.navigate` is not, so the destination page must already see the basket when it fires its first query.
|
|
13102
|
+
* `syncUrl: false` because the navigation below already writes the URL, and `patch()` must not race it.
|
|
13103
|
+
*
|
|
13104
|
+
* Call it from an injection context.
|
|
13105
|
+
*/
|
|
13106
|
+
export declare function injectApplyCollection(): (collection: Pick<Basket, "name">) => Promise<boolean>;
|
|
13107
|
+
type ViewMode = "grid" | "list";
|
|
13108
|
+
type ManagerTab = "collections" | "bookmarks";
|
|
13109
|
+
/**
|
|
13110
|
+
* Manages the user's collections. Two views, one component:
|
|
13111
|
+
*
|
|
13112
|
+
* - **the list**: every collection as a grid or a list, filtered by name; it can create one, delete one,
|
|
13113
|
+
* open one (a click) or apply one to the filters. Its content is centered and stops at `max-w-4xl`, however wide the
|
|
13114
|
+
* host is;
|
|
13115
|
+
* - **the detail** of a collection: its name (which can be changed), its documents (each can be previewed,
|
|
13116
|
+
* beside the list, or taken out of the collection), and the same "apply to the filters" action.
|
|
13117
|
+
*
|
|
13118
|
+
* "Apply to the filters" opens `/search` scoped to the collection (`?b=<name>`), see `injectApplyCollection`.
|
|
13119
|
+
* An application that wants to do it itself sets `navigateOnApply` to `false` and listens to `applied`.
|
|
13120
|
+
*
|
|
13121
|
+
* It reads `UserSettingsStore.baskets`; nothing needs to be passed in.
|
|
13122
|
+
*/
|
|
13123
|
+
export declare class CollectionsManager {
|
|
13124
|
+
/**
|
|
13125
|
+
* Apply a collection by opening `/search` scoped to it. Set to `false` when the host does it itself
|
|
13126
|
+
* from `applied`.
|
|
13127
|
+
*/
|
|
13128
|
+
readonly navigateOnApply: import("@angular/core").InputSignal<boolean>;
|
|
13129
|
+
/** The user asked to apply this collection to the filters (from the list or from its detail). */
|
|
13130
|
+
readonly applied: import("@angular/core").OutputEmitterRef<Basket>;
|
|
13131
|
+
private readonly userSettingsStore;
|
|
13132
|
+
private readonly applyCollection;
|
|
13133
|
+
private readonly injector;
|
|
13134
|
+
private readonly host;
|
|
13135
|
+
protected readonly collections: import("@angular/core").Signal<Basket[]>;
|
|
13136
|
+
protected readonly viewMode: import("@angular/core").WritableSignal<ViewMode>;
|
|
13137
|
+
private readonly activeTab;
|
|
13138
|
+
protected readonly bookmarkCount: import("@angular/core").Signal<number>;
|
|
13139
|
+
protected readonly hasBookmarks: import("@angular/core").Signal<boolean>;
|
|
13140
|
+
/** The tab shown: with no bookmark left the tab bar is gone, and the list of collections is all there is. */
|
|
13141
|
+
protected readonly tab: import("@angular/core").Signal<ManagerTab>;
|
|
13142
|
+
protected onTabChange(value: string | undefined): void;
|
|
13143
|
+
/** The filter box, bound to its own query signal. */
|
|
13144
|
+
protected readonly query: import("@angular/core").WritableSignal<string>;
|
|
13145
|
+
protected readonly searchForm: import("@angular/forms/signals").FieldTree<string, string | number, "writable">;
|
|
13146
|
+
protected readonly filtered: import("@angular/core").Signal<Basket[]>;
|
|
13147
|
+
/**
|
|
13148
|
+
* The collection whose detail is shown, by name: if it disappears (deleted elsewhere) the list comes back.
|
|
13149
|
+
* The detail reports a rename (`renamed`), which is how this follows the collection to its new name.
|
|
13150
|
+
*/
|
|
13151
|
+
protected readonly openedName: import("@angular/core").WritableSignal<string | null>;
|
|
13152
|
+
protected readonly opened: import("@angular/core").Signal<Basket | undefined>;
|
|
13153
|
+
protected open(collection: Basket): void;
|
|
13154
|
+
protected closeDetail(): void;
|
|
13155
|
+
protected apply(collection: Basket): void;
|
|
13156
|
+
protected create(): void;
|
|
13157
|
+
protected remove(collection: Basket): void;
|
|
13158
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CollectionsManager, never>;
|
|
13159
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CollectionsManager, "CollectionsManager, collections-manager", never, {
|
|
13160
|
+
"navigateOnApply": {
|
|
13161
|
+
"alias": "navigateOnApply";
|
|
13162
|
+
"required": false;
|
|
13163
|
+
"isSignal": true;
|
|
13164
|
+
};
|
|
13165
|
+
}, {
|
|
13166
|
+
"applied": "applied";
|
|
13167
|
+
}, never, never, true, never>;
|
|
13168
|
+
}
|
|
12777
13169
|
export declare class CollectionsDialog {
|
|
12778
13170
|
protected readonly call: import("@sinequa/galactik").CallRef<Article | Article[], DialogResult>;
|
|
12779
13171
|
readonly createInputElement: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
@@ -12795,7 +13187,7 @@ export declare class CollectionsDialog {
|
|
|
12795
13187
|
readonly showSearch: import("@angular/core").Signal<boolean>;
|
|
12796
13188
|
/** Collections matching the search text (case-insensitive, by name). */
|
|
12797
13189
|
readonly filteredCollections: import("@angular/core").Signal<Basket[]>;
|
|
12798
|
-
readonly collectionsMap: import("@angular/core").WritableSignal<Record<string, "some" | "
|
|
13190
|
+
readonly collectionsMap: import("@angular/core").WritableSignal<Record<string, "some" | "none" | "all">>;
|
|
12799
13191
|
/** Windowing over the filtered list — renders only the visible rows. */
|
|
12800
13192
|
readonly virtualizer: import("@tanstack/angular-virtual").AngularVirtualizer<HTMLDivElement, Element>;
|
|
12801
13193
|
constructor();
|
|
@@ -12819,6 +13211,37 @@ export declare class CollectionsDialog {
|
|
|
12819
13211
|
}
|
|
12820
13212
|
/** Imperative entry point: `await AddToCollection.call(articles)` → "dialog-yes"/"dialog-no"/event. */
|
|
12821
13213
|
export declare const AddToCollection: import("@sinequa/galactik").Callable<Article | Article[], DialogResult>;
|
|
13214
|
+
/**
|
|
13215
|
+
* Names a new, empty collection. The name is checked as it is typed (a taken name shows at once),
|
|
13216
|
+
* an empty one only once a submission was attempted. Closes with `dialog-yes` once the collection exists.
|
|
13217
|
+
*/
|
|
13218
|
+
export declare class CreateCollectionDialog {
|
|
13219
|
+
protected readonly call: import("@sinequa/galactik").CallRef<Record<string, never>, DialogResult>;
|
|
13220
|
+
private readonly dialog;
|
|
13221
|
+
private readonly nameInput;
|
|
13222
|
+
private readonly injector;
|
|
13223
|
+
private readonly userSettingsStore;
|
|
13224
|
+
private readonly transloco;
|
|
13225
|
+
protected readonly formId: string;
|
|
13226
|
+
protected readonly nameId: string;
|
|
13227
|
+
protected readonly errorId: string;
|
|
13228
|
+
private readonly model;
|
|
13229
|
+
protected readonly createForm: import("@angular/forms/signals").FieldTree<{
|
|
13230
|
+
name: string;
|
|
13231
|
+
}, string | number, "writable">;
|
|
13232
|
+
/**
|
|
13233
|
+
* Set when "Create" is pressed. An empty name is only reported then, not when the field loses the focus:
|
|
13234
|
+
* leaving it for "Cancel" or the close button is not an error. (A taken name shows as it is typed.)
|
|
13235
|
+
*/
|
|
13236
|
+
protected readonly attempted: import("@angular/core").WritableSignal<boolean>;
|
|
13237
|
+
protected readonly nameError: import("@angular/core").Signal<"nameExists" | "nameRequired" | null>;
|
|
13238
|
+
constructor();
|
|
13239
|
+
private create;
|
|
13240
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CreateCollectionDialog, never>;
|
|
13241
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CreateCollectionDialog, "create-collection-dialog", never, {}, {}, never, never, true, never>;
|
|
13242
|
+
}
|
|
13243
|
+
/** Imperative entry point: `await CreateCollection.call({})` — resolves `dialog-yes` once created. */
|
|
13244
|
+
export declare const CreateCollection: import("@sinequa/galactik").Callable<Record<string, never>, DialogResult>;
|
|
12822
13245
|
export interface DeleteCollectionArgs {
|
|
12823
13246
|
collection: Basket;
|
|
12824
13247
|
index: number;
|
|
@@ -12862,6 +13285,16 @@ type PanelStatus = {
|
|
|
12862
13285
|
export declare class AddToCollectionPanelComponent {
|
|
12863
13286
|
/** The documents to file. */
|
|
12864
13287
|
readonly articles: import("@angular/core").InputSignal<Article[]>;
|
|
13288
|
+
/**
|
|
13289
|
+
* `add` (default): each collection offers `+` / `✓`, the documents stay where they are.
|
|
13290
|
+
* `move`: each collection offers a single "move here" button; the panel only adds the documents to the
|
|
13291
|
+
* chosen collection and reports `moved`. Taking them out of their source is the host's job.
|
|
13292
|
+
*/
|
|
13293
|
+
readonly mode: import("@angular/core").InputSignal<"add" | "move">;
|
|
13294
|
+
/** `move` only: a collection left out of the list, the one the documents come from. */
|
|
13295
|
+
readonly exclude: import("@angular/core").InputSignal<string | undefined>;
|
|
13296
|
+
/** `move` only: the documents were added to this collection (its name). The host removes them from the source. */
|
|
13297
|
+
readonly moved: import("@angular/core").OutputEmitterRef<string>;
|
|
12865
13298
|
/** An addition was saved and confirmed: the host closes the panel. Carries the collection's name. */
|
|
12866
13299
|
readonly done: import("@angular/core").OutputEmitterRef<string>;
|
|
12867
13300
|
/** A collection was saved (added to, removed from, created). */
|
|
@@ -12892,9 +13325,12 @@ export declare class AddToCollectionPanelComponent {
|
|
|
12892
13325
|
protected readonly createForm: import("@angular/forms/signals").FieldTree<{
|
|
12893
13326
|
name: string;
|
|
12894
13327
|
}, string | number, "writable">;
|
|
13328
|
+
/** Whether a submission was refused since the form was opened: a blur alone must not report an empty name. */
|
|
13329
|
+
private readonly submitAttempted;
|
|
12895
13330
|
/**
|
|
12896
13331
|
* The message under the name field. A taken name shows as it is typed — the user should not have
|
|
12897
|
-
* to try first — an empty one only once a submission was attempted
|
|
13332
|
+
* to try first — an empty one only once a submission was attempted, never on a mere blur (leaving
|
|
13333
|
+
* the field to cancel would otherwise flash it and shift the row under the pointer).
|
|
12898
13334
|
*/
|
|
12899
13335
|
protected readonly nameError: import("@angular/core").Signal<"nameExists" | "nameRequired" | null>;
|
|
12900
13336
|
/** A collection holding part of the documents says so on a second line: its row is taller. */
|
|
@@ -12906,6 +13342,8 @@ export declare class AddToCollectionPanelComponent {
|
|
|
12906
13342
|
heldIn(collection: Basket): number;
|
|
12907
13343
|
/** `+` adds every document the collection lacks; `✓` takes them all out. */
|
|
12908
13344
|
toggle(collection: Basket): Promise<void>;
|
|
13345
|
+
/** `move` mode: files every document in the collection, then tells the host, which empties the source. */
|
|
13346
|
+
protected move(collection: Basket): Promise<void>;
|
|
12909
13347
|
protected startCreation(): void;
|
|
12910
13348
|
/**
|
|
12911
13349
|
* Leaves the name field for the list. On Escape, the key is kept from the popover around the panel,
|
|
@@ -12929,12 +13367,91 @@ export declare class AddToCollectionPanelComponent {
|
|
|
12929
13367
|
"required": true;
|
|
12930
13368
|
"isSignal": true;
|
|
12931
13369
|
};
|
|
13370
|
+
"mode": {
|
|
13371
|
+
"alias": "mode";
|
|
13372
|
+
"required": false;
|
|
13373
|
+
"isSignal": true;
|
|
13374
|
+
};
|
|
13375
|
+
"exclude": {
|
|
13376
|
+
"alias": "exclude";
|
|
13377
|
+
"required": false;
|
|
13378
|
+
"isSignal": true;
|
|
13379
|
+
};
|
|
12932
13380
|
}, {
|
|
13381
|
+
"moved": "moved";
|
|
12933
13382
|
"done": "done";
|
|
12934
13383
|
"changed": "changed";
|
|
12935
13384
|
"closeRequested": "closeRequested";
|
|
12936
13385
|
}, never, never, true, never>;
|
|
12937
13386
|
}
|
|
13387
|
+
/** What `ChangePassword.call()` takes. */
|
|
13388
|
+
export interface ChangePasswordDialogProps {
|
|
13389
|
+
/** Account to log back in with after the change. Defaults to the signed-in user. */
|
|
13390
|
+
username?: string | null;
|
|
13391
|
+
}
|
|
13392
|
+
/**
|
|
13393
|
+
* The change-password form in a standard dialog. The form owns no button here (`[showActions]="false"`):
|
|
13394
|
+
* Cancel and Confirm live in the `DialogFooter`, and drive the form through its public API.
|
|
13395
|
+
*/
|
|
13396
|
+
export declare class ChangePasswordDialogComponent {
|
|
13397
|
+
protected readonly call: import("@sinequa/galactik").CallRef<ChangePasswordDialogProps | undefined, DialogResult>;
|
|
13398
|
+
readonly dialog: import("@angular/core").Signal<DialogComponent | undefined>;
|
|
13399
|
+
private readonly focusFirstInput;
|
|
13400
|
+
constructor();
|
|
13401
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChangePasswordDialogComponent, never>;
|
|
13402
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordDialogComponent, "change-password-dialog", never, {}, {}, never, never, true, never>;
|
|
13403
|
+
}
|
|
13404
|
+
/** Imperative entry point: `await ChangePassword.call({ username })`. */
|
|
13405
|
+
export declare const ChangePassword: import("@sinequa/galactik").Callable<ChangePasswordDialogProps | undefined, DialogResult>;
|
|
13406
|
+
/**
|
|
13407
|
+
* The password-reset request form in a standard dialog. The form owns no button here
|
|
13408
|
+
* (`[showActions]="false"`): Cancel and Send live in the `DialogFooter`, and drive the form through its
|
|
13409
|
+
* public API. The promise resolves with `"dialog-confirm"` once the reset email was requested.
|
|
13410
|
+
*/
|
|
13411
|
+
export declare class ForgotPasswordDialogComponent {
|
|
13412
|
+
protected readonly call: import("@sinequa/galactik").CallRef<void, DialogResult>;
|
|
13413
|
+
readonly dialog: import("@angular/core").Signal<DialogComponent | undefined>;
|
|
13414
|
+
private readonly focusFirstInput;
|
|
13415
|
+
constructor();
|
|
13416
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ForgotPasswordDialogComponent, never>;
|
|
13417
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ForgotPasswordDialogComponent, "forgot-password-dialog", never, {}, {}, never, never, true, never>;
|
|
13418
|
+
}
|
|
13419
|
+
/** Imperative entry point: `await ForgotPassword.call()`. */
|
|
13420
|
+
export declare const ForgotPassword: import("@sinequa/galactik").Callable<void, DialogResult>;
|
|
13421
|
+
/** The steps of the dialog. */
|
|
13422
|
+
type SignInStep = "sign-in" | "forgot-password" | "change-password";
|
|
13423
|
+
/**
|
|
13424
|
+
* The credentials form in a standard dialog, as a wizard: one dialog, whose content switches in place.
|
|
13425
|
+
*
|
|
13426
|
+
* - `sign-in` — the credentials form. "Forgot password" moves to `forgot-password`; an expired password
|
|
13427
|
+
* reported by the server moves to `change-password`.
|
|
13428
|
+
* - `forgot-password` — requests the reset email, then goes back to `sign-in`.
|
|
13429
|
+
* - `change-password` — changes the expired password, which also signs the user in with the new one.
|
|
13430
|
+
*
|
|
13431
|
+
* No form owns a button here (`[showActions]="false"`): the `DialogFooter` has the buttons of the current
|
|
13432
|
+
* step, and drives its form through the public API. Only the credentials form is shown: no external
|
|
13433
|
+
* handshake is ever started from here.
|
|
13434
|
+
*
|
|
13435
|
+
* Resolves with `"dialog-confirm"` once signed in (the application is initialized) and `"dialog-cancel"`
|
|
13436
|
+
* when dismissed.
|
|
13437
|
+
*/
|
|
13438
|
+
export declare class SignInDialogComponent {
|
|
13439
|
+
protected readonly call: import("@sinequa/galactik").CallRef<void, DialogResult>;
|
|
13440
|
+
readonly dialog: import("@angular/core").Signal<DialogComponent | undefined>;
|
|
13441
|
+
protected readonly step: import("@angular/core").WritableSignal<SignInStep>;
|
|
13442
|
+
/** The account whose password expired, carried over to the change-password step. */
|
|
13443
|
+
protected readonly expiredUsername: import("@angular/core").WritableSignal<string | null>;
|
|
13444
|
+
protected readonly signInForm: import("@angular/core").Signal<SignInFormComponent | undefined>;
|
|
13445
|
+
protected readonly resetForm: import("@angular/core").Signal<ForgotPasswordFormComponent | undefined>;
|
|
13446
|
+
protected readonly passwordForm: import("@angular/core").Signal<ChangePasswordFormComponent | undefined>;
|
|
13447
|
+
private readonly focusFirstInput;
|
|
13448
|
+
constructor();
|
|
13449
|
+
protected onPasswordExpired(username: string): void;
|
|
13450
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SignInDialogComponent, never>;
|
|
13451
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SignInDialogComponent, "sign-in-dialog", never, {}, {}, never, never, true, never>;
|
|
13452
|
+
}
|
|
13453
|
+
/** Imperative entry point: `await SignIn.call()`. */
|
|
13454
|
+
export declare const SignIn: import("@sinequa/galactik").Callable<void, DialogResult>;
|
|
12938
13455
|
/** Editable text/boolean fields of a converter (the app-filled `conversion` is excluded). */
|
|
12939
13456
|
type ConverterField = "name" | "converter" | "format" | "primary" | "display" | "default";
|
|
12940
13457
|
/** Groups the toggles are bucketed into, in display order. */
|
|
@@ -13250,7 +13767,7 @@ export declare class ExportDialog {
|
|
|
13250
13767
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13251
13768
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
13252
13769
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13253
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
13770
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
13254
13771
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13255
13772
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13256
13773
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -13440,6 +13957,7 @@ export declare class FeedbackDialogComponent {
|
|
|
13440
13957
|
enabled?: boolean;
|
|
13441
13958
|
data?: string[];
|
|
13442
13959
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
13960
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
13443
13961
|
};
|
|
13444
13962
|
previewMultiConversion?: boolean;
|
|
13445
13963
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -13482,6 +14000,7 @@ export declare class FeedbackDialogComponent {
|
|
|
13482
14000
|
enabled?: boolean;
|
|
13483
14001
|
data?: string[];
|
|
13484
14002
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14003
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
13485
14004
|
};
|
|
13486
14005
|
previewMultiConversion?: boolean;
|
|
13487
14006
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -13546,6 +14065,7 @@ export declare class FeedbackDialogComponent {
|
|
|
13546
14065
|
enabled?: boolean;
|
|
13547
14066
|
data?: string[];
|
|
13548
14067
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14068
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
13549
14069
|
};
|
|
13550
14070
|
previewMultiConversion?: boolean;
|
|
13551
14071
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -13640,6 +14160,7 @@ export declare class FeedbackDialogComponent {
|
|
|
13640
14160
|
enabled?: boolean;
|
|
13641
14161
|
data?: string[];
|
|
13642
14162
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14163
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
13643
14164
|
};
|
|
13644
14165
|
previewMultiConversion?: boolean;
|
|
13645
14166
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -13682,6 +14203,7 @@ export declare class FeedbackDialogComponent {
|
|
|
13682
14203
|
enabled?: boolean;
|
|
13683
14204
|
data?: string[];
|
|
13684
14205
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14206
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
13685
14207
|
};
|
|
13686
14208
|
previewMultiConversion?: boolean;
|
|
13687
14209
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -13734,9 +14256,9 @@ export declare class SearchFeedbackComponent {
|
|
|
13734
14256
|
onClose: import("@angular/core").OutputEmitterRef<void>;
|
|
13735
14257
|
private readonly injector;
|
|
13736
14258
|
pages: import("@angular/core").InputSignal<any>;
|
|
13737
|
-
variant: import("@angular/core").InputSignal<"
|
|
14259
|
+
variant: import("@angular/core").InputSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
|
|
13738
14260
|
/** Size of the trigger button. `sm` fits a row of result options. */
|
|
13739
|
-
size: import("@angular/core").InputSignal<"
|
|
14261
|
+
size: import("@angular/core").InputSignal<"small" | "large" | "sm" | "md" | "lg" | "xs" | "xsmall" | "medium" | null | undefined>;
|
|
13740
14262
|
/** Shows the close cross on the button. Turn it off where the button belongs to the page and is not a suggestion to dismiss. */
|
|
13741
14263
|
dismissible: import("@angular/core").InputSignal<boolean>;
|
|
13742
14264
|
readonly auditService: AuditService;
|
|
@@ -13767,7 +14289,7 @@ export declare class SearchFeedbackComponent {
|
|
|
13767
14289
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13768
14290
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
13769
14291
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13770
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
14292
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
13771
14293
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13772
14294
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
13773
14295
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -14089,7 +14611,7 @@ export declare class AggregationDateComponent {
|
|
|
14089
14611
|
*
|
|
14090
14612
|
* @default 'selection'
|
|
14091
14613
|
*/
|
|
14092
|
-
emitOn: import("@angular/core").InputSignal<"
|
|
14614
|
+
emitOn: import("@angular/core").InputSignal<"apply" | "selection">;
|
|
14093
14615
|
readonly title: import("@angular/core").InputSignal<AggregationTitle>;
|
|
14094
14616
|
readonly displayEmptyDistributionIntervals: import("@angular/core").InputSignal<boolean>;
|
|
14095
14617
|
onSelect: import("@angular/core").OutputEmitterRef<AggregationItem[]>;
|
|
@@ -14157,7 +14679,7 @@ export declare class AggregationDateComponent {
|
|
|
14157
14679
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14158
14680
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
14159
14681
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14160
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
14682
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
14161
14683
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14162
14684
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14163
14685
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -14672,7 +15194,7 @@ export declare class AggregationTreeComponent {
|
|
|
14672
15194
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14673
15195
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
14674
15196
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14675
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
15197
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
14676
15198
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14677
15199
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
14678
15200
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -14805,6 +15327,7 @@ export declare class AggregationTreeComponent {
|
|
|
14805
15327
|
enabled?: boolean;
|
|
14806
15328
|
data?: string[];
|
|
14807
15329
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15330
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14808
15331
|
};
|
|
14809
15332
|
previewMultiConversion?: boolean;
|
|
14810
15333
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -14847,6 +15370,7 @@ export declare class AggregationTreeComponent {
|
|
|
14847
15370
|
enabled?: boolean;
|
|
14848
15371
|
data?: string[];
|
|
14849
15372
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15373
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14850
15374
|
};
|
|
14851
15375
|
previewMultiConversion?: boolean;
|
|
14852
15376
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -14911,6 +15435,7 @@ export declare class AggregationTreeComponent {
|
|
|
14911
15435
|
enabled?: boolean;
|
|
14912
15436
|
data?: string[];
|
|
14913
15437
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15438
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
14914
15439
|
};
|
|
14915
15440
|
previewMultiConversion?: boolean;
|
|
14916
15441
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15005,6 +15530,7 @@ export declare class AggregationTreeComponent {
|
|
|
15005
15530
|
enabled?: boolean;
|
|
15006
15531
|
data?: string[];
|
|
15007
15532
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15533
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15008
15534
|
};
|
|
15009
15535
|
previewMultiConversion?: boolean;
|
|
15010
15536
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15047,6 +15573,7 @@ export declare class AggregationTreeComponent {
|
|
|
15047
15573
|
enabled?: boolean;
|
|
15048
15574
|
data?: string[];
|
|
15049
15575
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15576
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15050
15577
|
};
|
|
15051
15578
|
previewMultiConversion?: boolean;
|
|
15052
15579
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15547,7 +16074,7 @@ export declare class AggregationListComponent {
|
|
|
15547
16074
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
15548
16075
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
15549
16076
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
15550
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
16077
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
15551
16078
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
15552
16079
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
15553
16080
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -15680,6 +16207,7 @@ export declare class AggregationListComponent {
|
|
|
15680
16207
|
enabled?: boolean;
|
|
15681
16208
|
data?: string[];
|
|
15682
16209
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16210
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15683
16211
|
};
|
|
15684
16212
|
previewMultiConversion?: boolean;
|
|
15685
16213
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15692,19 +16220,7 @@ export declare class AggregationListComponent {
|
|
|
15692
16220
|
light?: {
|
|
15693
16221
|
small?: string;
|
|
15694
16222
|
large?: string;
|
|
15695
|
-
sidebar
|
|
15696
|
-
/**
|
|
15697
|
-
* When `false`, applying or clearing filters updates the store without
|
|
15698
|
-
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
15699
|
-
*
|
|
15700
|
-
* @default true
|
|
15701
|
-
*/
|
|
15702
|
-
/**
|
|
15703
|
-
* When `false`, applying or clearing filters updates the store without
|
|
15704
|
-
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
15705
|
-
*
|
|
15706
|
-
* @default true
|
|
15707
|
-
*/ : string;
|
|
16223
|
+
sidebar?: string;
|
|
15708
16224
|
};
|
|
15709
16225
|
dark?: {
|
|
15710
16226
|
small?: string;
|
|
@@ -15734,6 +16250,7 @@ export declare class AggregationListComponent {
|
|
|
15734
16250
|
enabled?: boolean;
|
|
15735
16251
|
data?: string[];
|
|
15736
16252
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16253
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15737
16254
|
};
|
|
15738
16255
|
previewMultiConversion?: boolean;
|
|
15739
16256
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15768,19 +16285,7 @@ export declare class AggregationListComponent {
|
|
|
15768
16285
|
light?: {
|
|
15769
16286
|
small?: string;
|
|
15770
16287
|
large?: string;
|
|
15771
|
-
sidebar
|
|
15772
|
-
/**
|
|
15773
|
-
* When `false`, applying or clearing filters updates the store without
|
|
15774
|
-
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
15775
|
-
*
|
|
15776
|
-
* @default true
|
|
15777
|
-
*/
|
|
15778
|
-
/**
|
|
15779
|
-
* When `false`, applying or clearing filters updates the store without
|
|
15780
|
-
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
15781
|
-
*
|
|
15782
|
-
* @default true
|
|
15783
|
-
*/ : string;
|
|
16288
|
+
sidebar?: string;
|
|
15784
16289
|
};
|
|
15785
16290
|
dark?: {
|
|
15786
16291
|
small?: string;
|
|
@@ -15810,6 +16315,7 @@ export declare class AggregationListComponent {
|
|
|
15810
16315
|
enabled?: boolean;
|
|
15811
16316
|
data?: string[];
|
|
15812
16317
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16318
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15813
16319
|
};
|
|
15814
16320
|
previewMultiConversion?: boolean;
|
|
15815
16321
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15904,6 +16410,7 @@ export declare class AggregationListComponent {
|
|
|
15904
16410
|
enabled?: boolean;
|
|
15905
16411
|
data?: string[];
|
|
15906
16412
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16413
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15907
16414
|
};
|
|
15908
16415
|
previewMultiConversion?: boolean;
|
|
15909
16416
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -15916,19 +16423,7 @@ export declare class AggregationListComponent {
|
|
|
15916
16423
|
light?: {
|
|
15917
16424
|
small?: string;
|
|
15918
16425
|
large?: string;
|
|
15919
|
-
sidebar
|
|
15920
|
-
/**
|
|
15921
|
-
* When `false`, applying or clearing filters updates the store without
|
|
15922
|
-
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
15923
|
-
*
|
|
15924
|
-
* @default true
|
|
15925
|
-
*/
|
|
15926
|
-
/**
|
|
15927
|
-
* When `false`, applying or clearing filters updates the store without
|
|
15928
|
-
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
15929
|
-
*
|
|
15930
|
-
* @default true
|
|
15931
|
-
*/ : string;
|
|
16426
|
+
sidebar?: string;
|
|
15932
16427
|
};
|
|
15933
16428
|
dark?: {
|
|
15934
16429
|
small?: string;
|
|
@@ -15958,6 +16453,7 @@ export declare class AggregationListComponent {
|
|
|
15958
16453
|
enabled?: boolean;
|
|
15959
16454
|
data?: string[];
|
|
15960
16455
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16456
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
15961
16457
|
};
|
|
15962
16458
|
previewMultiConversion?: boolean;
|
|
15963
16459
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -16221,6 +16717,7 @@ export declare class AggregationComponent {
|
|
|
16221
16717
|
enabled?: boolean;
|
|
16222
16718
|
data?: string[];
|
|
16223
16719
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16720
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16224
16721
|
};
|
|
16225
16722
|
previewMultiConversion?: boolean;
|
|
16226
16723
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -16263,6 +16760,7 @@ export declare class AggregationComponent {
|
|
|
16263
16760
|
enabled?: boolean;
|
|
16264
16761
|
data?: string[];
|
|
16265
16762
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16763
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16266
16764
|
};
|
|
16267
16765
|
previewMultiConversion?: boolean;
|
|
16268
16766
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -16327,6 +16825,7 @@ export declare class AggregationComponent {
|
|
|
16327
16825
|
enabled?: boolean;
|
|
16328
16826
|
data?: string[];
|
|
16329
16827
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16828
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16330
16829
|
};
|
|
16331
16830
|
previewMultiConversion?: boolean;
|
|
16332
16831
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -16421,6 +16920,7 @@ export declare class AggregationComponent {
|
|
|
16421
16920
|
enabled?: boolean;
|
|
16422
16921
|
data?: string[];
|
|
16423
16922
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16923
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16424
16924
|
};
|
|
16425
16925
|
previewMultiConversion?: boolean;
|
|
16426
16926
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -16463,6 +16963,7 @@ export declare class AggregationComponent {
|
|
|
16463
16963
|
enabled?: boolean;
|
|
16464
16964
|
data?: string[];
|
|
16465
16965
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16966
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
16466
16967
|
};
|
|
16467
16968
|
previewMultiConversion?: boolean;
|
|
16468
16969
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -16634,7 +17135,7 @@ export declare class AggregationComponent {
|
|
|
16634
17135
|
*
|
|
16635
17136
|
* @default 'selection'
|
|
16636
17137
|
*/
|
|
16637
|
-
emitOn: import("@angular/core").InputSignal<"
|
|
17138
|
+
emitOn: import("@angular/core").InputSignal<"apply" | "selection">;
|
|
16638
17139
|
/**
|
|
16639
17140
|
* Which sub-component renders the aggregation.
|
|
16640
17141
|
*
|
|
@@ -16647,7 +17148,7 @@ export declare class AggregationComponent {
|
|
|
16647
17148
|
*
|
|
16648
17149
|
* @default "auto"
|
|
16649
17150
|
*/
|
|
16650
|
-
type: import("@angular/core").InputSignal<"
|
|
17151
|
+
type: import("@angular/core").InputSignal<"date" | "list" | "tree" | "auto">;
|
|
16651
17152
|
/**
|
|
16652
17153
|
* Whether the host removes itself from the layout (Tailwind's `hidden`, i.e.
|
|
16653
17154
|
* `display: none`) when it resolves to zero items. When `false` (default), the
|
|
@@ -16699,7 +17200,7 @@ export declare class AggregationComponent {
|
|
|
16699
17200
|
* The sub-component to render: the explicit `type` input, or the current
|
|
16700
17201
|
* date/tree/list heuristic when `type` is `"auto"`.
|
|
16701
17202
|
*/
|
|
16702
|
-
protected resolvedType: import("@angular/core").Signal<"
|
|
17203
|
+
protected resolvedType: import("@angular/core").Signal<"date" | "list" | "tree">;
|
|
16703
17204
|
/** Whether a filter is currently applied on this aggregation. */
|
|
16704
17205
|
private readonly hasFilters;
|
|
16705
17206
|
/**
|
|
@@ -17152,11 +17653,11 @@ export declare class AppliedFiltersComponent {
|
|
|
17152
17653
|
* than as "unset". A `null` here would therefore silently neutralise `scheme` — the chips would keep
|
|
17153
17654
|
* their base look whatever colour was asked for. `undefined` lets the tag apply its own default.
|
|
17154
17655
|
*/
|
|
17155
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
17656
|
+
readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | null | undefined>;
|
|
17156
17657
|
/** Chip colour scheme, passed to galactik's `tag`. */
|
|
17157
|
-
readonly scheme: import("@angular/core").InputSignal<"error" | "sage" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "
|
|
17658
|
+
readonly scheme: import("@angular/core").InputSignal<"error" | "sage" | "success" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "warning" | "info" | null | undefined>;
|
|
17158
17659
|
/** Chip size, passed to galactik's `tag`. */
|
|
17159
|
-
readonly size: import("@angular/core").InputSignal<"
|
|
17660
|
+
readonly size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | null | undefined>;
|
|
17160
17661
|
/** Extra classes for each chip, merged by galactik's `tag`. */
|
|
17161
17662
|
readonly chipClass: import("@angular/core").InputSignal<string>;
|
|
17162
17663
|
/**
|
|
@@ -17408,7 +17909,7 @@ export declare class FilterButtonComponent {
|
|
|
17408
17909
|
* @default "sage"
|
|
17409
17910
|
*/
|
|
17410
17911
|
scheme: import("@angular/core").InputSignal<FilterScheme>;
|
|
17411
|
-
protected variant: import("@angular/core").WritableSignal<"
|
|
17912
|
+
protected variant: import("@angular/core").WritableSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
|
|
17412
17913
|
protected filter: import("@angular/core").WritableSignal<CFilterEx>;
|
|
17413
17914
|
/** Unique id wiring the trigger's `popovertarget` to the `<div popover>` `id`. */
|
|
17414
17915
|
protected readonly popoverId: string;
|
|
@@ -17465,7 +17966,7 @@ export declare class FilterButtonComponent {
|
|
|
17465
17966
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
17466
17967
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
17467
17968
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
17468
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
17969
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
17469
17970
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
17470
17971
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
17471
17972
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -17598,6 +18099,7 @@ export declare class FilterButtonComponent {
|
|
|
17598
18099
|
enabled?: boolean;
|
|
17599
18100
|
data?: string[];
|
|
17600
18101
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18102
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
17601
18103
|
};
|
|
17602
18104
|
previewMultiConversion?: boolean;
|
|
17603
18105
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -17640,6 +18142,7 @@ export declare class FilterButtonComponent {
|
|
|
17640
18142
|
enabled?: boolean;
|
|
17641
18143
|
data?: string[];
|
|
17642
18144
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18145
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
17643
18146
|
};
|
|
17644
18147
|
previewMultiConversion?: boolean;
|
|
17645
18148
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -17704,6 +18207,7 @@ export declare class FilterButtonComponent {
|
|
|
17704
18207
|
enabled?: boolean;
|
|
17705
18208
|
data?: string[];
|
|
17706
18209
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18210
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
17707
18211
|
};
|
|
17708
18212
|
previewMultiConversion?: boolean;
|
|
17709
18213
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -17798,6 +18302,7 @@ export declare class FilterButtonComponent {
|
|
|
17798
18302
|
enabled?: boolean;
|
|
17799
18303
|
data?: string[];
|
|
17800
18304
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18305
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
17801
18306
|
};
|
|
17802
18307
|
previewMultiConversion?: boolean;
|
|
17803
18308
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -17840,6 +18345,7 @@ export declare class FilterButtonComponent {
|
|
|
17840
18345
|
enabled?: boolean;
|
|
17841
18346
|
data?: string[];
|
|
17842
18347
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18348
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
17843
18349
|
};
|
|
17844
18350
|
previewMultiConversion?: boolean;
|
|
17845
18351
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18162,6 +18668,7 @@ export declare class MoreButtonComponent {
|
|
|
18162
18668
|
enabled?: boolean;
|
|
18163
18669
|
data?: string[];
|
|
18164
18670
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18671
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18165
18672
|
};
|
|
18166
18673
|
previewMultiConversion?: boolean;
|
|
18167
18674
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18204,6 +18711,7 @@ export declare class MoreButtonComponent {
|
|
|
18204
18711
|
enabled?: boolean;
|
|
18205
18712
|
data?: string[];
|
|
18206
18713
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18714
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18207
18715
|
};
|
|
18208
18716
|
previewMultiConversion?: boolean;
|
|
18209
18717
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18268,6 +18776,7 @@ export declare class MoreButtonComponent {
|
|
|
18268
18776
|
enabled?: boolean;
|
|
18269
18777
|
data?: string[];
|
|
18270
18778
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18779
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18271
18780
|
};
|
|
18272
18781
|
previewMultiConversion?: boolean;
|
|
18273
18782
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18362,6 +18871,7 @@ export declare class MoreButtonComponent {
|
|
|
18362
18871
|
enabled?: boolean;
|
|
18363
18872
|
data?: string[];
|
|
18364
18873
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18874
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18365
18875
|
};
|
|
18366
18876
|
previewMultiConversion?: boolean;
|
|
18367
18877
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18404,6 +18914,7 @@ export declare class MoreButtonComponent {
|
|
|
18404
18914
|
enabled?: boolean;
|
|
18405
18915
|
data?: string[];
|
|
18406
18916
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18917
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18407
18918
|
};
|
|
18408
18919
|
previewMultiConversion?: boolean;
|
|
18409
18920
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18456,7 +18967,7 @@ export declare class MoreButtonComponent {
|
|
|
18456
18967
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
18457
18968
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
18458
18969
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
18459
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
18970
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
18460
18971
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
18461
18972
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
18462
18973
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -18813,7 +19324,7 @@ export declare class FiltersBarComponent {
|
|
|
18813
19324
|
*
|
|
18814
19325
|
* @default "start"
|
|
18815
19326
|
*/
|
|
18816
|
-
align: import("@angular/core").InputSignal<"
|
|
19327
|
+
align: import("@angular/core").InputSignal<"start" | "center">;
|
|
18817
19328
|
/**
|
|
18818
19329
|
* How far apart the buttons are. `compact` (the default) is the tight spacing of a toolbar; `comfortable` puts
|
|
18819
19330
|
* `--spacing-lg` (20px) between every button, the quick filters pill and the "more" button included, as under the
|
|
@@ -18939,6 +19450,7 @@ export declare class FiltersBarComponent {
|
|
|
18939
19450
|
enabled?: boolean;
|
|
18940
19451
|
data?: string[];
|
|
18941
19452
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19453
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18942
19454
|
};
|
|
18943
19455
|
previewMultiConversion?: boolean;
|
|
18944
19456
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -18981,6 +19493,7 @@ export declare class FiltersBarComponent {
|
|
|
18981
19493
|
enabled?: boolean;
|
|
18982
19494
|
data?: string[];
|
|
18983
19495
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19496
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
18984
19497
|
};
|
|
18985
19498
|
previewMultiConversion?: boolean;
|
|
18986
19499
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19045,6 +19558,7 @@ export declare class FiltersBarComponent {
|
|
|
19045
19558
|
enabled?: boolean;
|
|
19046
19559
|
data?: string[];
|
|
19047
19560
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19561
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19048
19562
|
};
|
|
19049
19563
|
previewMultiConversion?: boolean;
|
|
19050
19564
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19139,6 +19653,7 @@ export declare class FiltersBarComponent {
|
|
|
19139
19653
|
enabled?: boolean;
|
|
19140
19654
|
data?: string[];
|
|
19141
19655
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19656
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19142
19657
|
};
|
|
19143
19658
|
previewMultiConversion?: boolean;
|
|
19144
19659
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19181,6 +19696,7 @@ export declare class FiltersBarComponent {
|
|
|
19181
19696
|
enabled?: boolean;
|
|
19182
19697
|
data?: string[];
|
|
19183
19698
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19699
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19184
19700
|
};
|
|
19185
19701
|
previewMultiConversion?: boolean;
|
|
19186
19702
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19242,7 +19758,7 @@ export declare class FiltersBarComponent {
|
|
|
19242
19758
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
19243
19759
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
19244
19760
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
19245
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
19761
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
19246
19762
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
19247
19763
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
19248
19764
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -19529,7 +20045,7 @@ type FiltersTab = "all" | "quick";
|
|
|
19529
20045
|
/**
|
|
19530
20046
|
* The filters panel: the facets of the search, and the quick filters of the user, in one card-sized column.
|
|
19531
20047
|
*
|
|
19532
|
-
* "All" holds
|
|
20048
|
+
* "All" holds every configured facet (`<aside-filters>`, whatever its `position`: LexiQ has no left/right notion) with a field that narrows them by
|
|
19533
20049
|
* name, the count of documents, and a button that saves the filters applied right now as a quick filter (a card under the button
|
|
19534
20050
|
* asks for its name). "Quick Filters" is the list of the `<quick-filters>` pill, inline (`<quick-filters-list>`): one line per quick filter, with the
|
|
19535
20051
|
* count of its filters — hovering it shows them as tags — and a cross that deletes it. A click on a quick filter replaces **all** the
|
|
@@ -19552,6 +20068,7 @@ export declare class FiltersPanelComponent {
|
|
|
19552
20068
|
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
19553
20069
|
private readonly appStore;
|
|
19554
20070
|
private readonly aggregationsStore;
|
|
20071
|
+
private readonly aggregationsService;
|
|
19555
20072
|
private readonly queryParamsStore;
|
|
19556
20073
|
private readonly userSettingsStore;
|
|
19557
20074
|
private readonly transloco;
|
|
@@ -19567,11 +20084,13 @@ export declare class FiltersPanelComponent {
|
|
|
19567
20084
|
private readonly nameInput;
|
|
19568
20085
|
private readonly saveButton;
|
|
19569
20086
|
/**
|
|
19570
|
-
*
|
|
19571
|
-
*
|
|
19572
|
-
|
|
19573
|
-
|
|
19574
|
-
|
|
20087
|
+
* Every configured facet the user may see: the `position` of the configuration (`left` / `both`) does not apply here — the panel
|
|
20088
|
+
* is the only place the facets live — but the authorizations and the admin "hidden" rule do.
|
|
20089
|
+
*/
|
|
20090
|
+
private readonly facets;
|
|
20091
|
+
/**
|
|
20092
|
+
* The names of the facets whose name contains the query (all of them when it is empty), as `<aside-filters [aggregations]>` takes them.
|
|
20093
|
+
* The list is always explicit: an empty one would make `<aside-filters>` fall back on its own `position`-driven configuration.
|
|
19575
20094
|
*/
|
|
19576
20095
|
protected readonly matching: import("@angular/core").Signal<string[]>;
|
|
19577
20096
|
protected selectTab(values: readonly string[]): void;
|
|
@@ -19676,6 +20195,7 @@ export declare class LabelService {
|
|
|
19676
20195
|
enabled?: boolean;
|
|
19677
20196
|
data?: string[];
|
|
19678
20197
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20198
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19679
20199
|
};
|
|
19680
20200
|
previewMultiConversion?: boolean;
|
|
19681
20201
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19718,6 +20238,7 @@ export declare class LabelService {
|
|
|
19718
20238
|
enabled?: boolean;
|
|
19719
20239
|
data?: string[];
|
|
19720
20240
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20241
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19721
20242
|
};
|
|
19722
20243
|
previewMultiConversion?: boolean;
|
|
19723
20244
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19782,6 +20303,7 @@ export declare class LabelService {
|
|
|
19782
20303
|
enabled?: boolean;
|
|
19783
20304
|
data?: string[];
|
|
19784
20305
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20306
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19785
20307
|
};
|
|
19786
20308
|
previewMultiConversion?: boolean;
|
|
19787
20309
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19876,6 +20398,7 @@ export declare class LabelService {
|
|
|
19876
20398
|
enabled?: boolean;
|
|
19877
20399
|
data?: string[];
|
|
19878
20400
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20401
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19879
20402
|
};
|
|
19880
20403
|
previewMultiConversion?: boolean;
|
|
19881
20404
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -19918,6 +20441,7 @@ export declare class LabelService {
|
|
|
19918
20441
|
enabled?: boolean;
|
|
19919
20442
|
data?: string[];
|
|
19920
20443
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20444
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
19921
20445
|
};
|
|
19922
20446
|
previewMultiConversion?: boolean;
|
|
19923
20447
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -20212,14 +20736,15 @@ export declare class HistoryPanelComponent {
|
|
|
20212
20736
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
20213
20737
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
20214
20738
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
20215
|
-
userTheme: import("@angular/core").Signal<"
|
|
20216
|
-
agents: import("@
|
|
20739
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
20740
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
20217
20741
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
20218
20742
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
20219
20743
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
20220
20744
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
20221
20745
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
20222
20746
|
unbookmark: (id: string) => Promise<void>;
|
|
20747
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
20223
20748
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
20224
20749
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
20225
20750
|
isFavoriteSearch: (search: Pick<SearchItem, "label" | "display">) => boolean;
|
|
@@ -20366,7 +20891,7 @@ export declare class QuickFiltersComponent {
|
|
|
20366
20891
|
private readonly popover;
|
|
20367
20892
|
protected readonly isOpen: import("@angular/core").Signal<boolean>;
|
|
20368
20893
|
constructor();
|
|
20369
|
-
protected readonly variant: import("@angular/core").Signal<"
|
|
20894
|
+
protected readonly variant: import("@angular/core").Signal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
|
|
20370
20895
|
protected readonly triggerClass: import("@angular/core").Signal<string>;
|
|
20371
20896
|
/** What was just done, for the screen readers: kept here, as the list goes with the popover once a quick filter is applied. */
|
|
20372
20897
|
protected readonly announcement: import("@angular/core").WritableSignal<string>;
|
|
@@ -20639,7 +21164,7 @@ export type SearchBoxTab = "suggestions" | "saved";
|
|
|
20639
21164
|
*/
|
|
20640
21165
|
export declare class SearchBoxComponent {
|
|
20641
21166
|
/** Scale of the field: `hero` for a home page (the prototype's pill), `medium` (36px) for the header of a results page. */
|
|
20642
|
-
readonly size: import("@angular/core").InputSignal<"small" | "
|
|
21167
|
+
readonly size: import("@angular/core").InputSignal<"small" | "large" | "medium" | "hero" | null | undefined>;
|
|
20643
21168
|
/** Shows the saved-search star once there is something to save. */
|
|
20644
21169
|
readonly showSave: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
20645
21170
|
/** The route a search leads to. */
|
|
@@ -20720,7 +21245,7 @@ export declare class SearchBoxComponent {
|
|
|
20720
21245
|
relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
20721
21246
|
removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
20722
21247
|
queryId?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
20723
|
-
aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> |
|
|
21248
|
+
aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
|
|
20724
21249
|
orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
20725
21250
|
groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
20726
21251
|
neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
@@ -20853,6 +21378,7 @@ export declare class SearchBoxComponent {
|
|
|
20853
21378
|
enabled?: boolean;
|
|
20854
21379
|
data?: string[];
|
|
20855
21380
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21381
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20856
21382
|
};
|
|
20857
21383
|
previewMultiConversion?: boolean;
|
|
20858
21384
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -20895,6 +21421,7 @@ export declare class SearchBoxComponent {
|
|
|
20895
21421
|
enabled?: boolean;
|
|
20896
21422
|
data?: string[];
|
|
20897
21423
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21424
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20898
21425
|
};
|
|
20899
21426
|
previewMultiConversion?: boolean;
|
|
20900
21427
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -20959,6 +21486,7 @@ export declare class SearchBoxComponent {
|
|
|
20959
21486
|
enabled?: boolean;
|
|
20960
21487
|
data?: string[];
|
|
20961
21488
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21489
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
20962
21490
|
};
|
|
20963
21491
|
previewMultiConversion?: boolean;
|
|
20964
21492
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -21053,6 +21581,7 @@ export declare class SearchBoxComponent {
|
|
|
21053
21581
|
enabled?: boolean;
|
|
21054
21582
|
data?: string[];
|
|
21055
21583
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21584
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21056
21585
|
};
|
|
21057
21586
|
previewMultiConversion?: boolean;
|
|
21058
21587
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -21095,6 +21624,7 @@ export declare class SearchBoxComponent {
|
|
|
21095
21624
|
enabled?: boolean;
|
|
21096
21625
|
data?: string[];
|
|
21097
21626
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21627
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
21098
21628
|
};
|
|
21099
21629
|
previewMultiConversion?: boolean;
|
|
21100
21630
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -21131,14 +21661,15 @@ export declare class SearchBoxComponent {
|
|
|
21131
21661
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
21132
21662
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
21133
21663
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
21134
|
-
userTheme: import("@angular/core").Signal<"
|
|
21135
|
-
agents: import("@
|
|
21664
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
21665
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
21136
21666
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
21137
21667
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
21138
21668
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
21139
21669
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
21140
21670
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
21141
21671
|
unbookmark: (id: string) => Promise<void>;
|
|
21672
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
21142
21673
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
21143
21674
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
21144
21675
|
isFavoriteSearch: (search: Pick<SearchItem, "label" | "display">) => boolean;
|
|
@@ -21442,14 +21973,15 @@ export declare class RecentSearchesComponent {
|
|
|
21442
21973
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
21443
21974
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
21444
21975
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
21445
|
-
userTheme: import("@angular/core").Signal<"
|
|
21446
|
-
agents: import("@
|
|
21976
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
21977
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
21447
21978
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
21448
21979
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
21449
21980
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
21450
21981
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
21451
21982
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
21452
21983
|
unbookmark: (id: string) => Promise<void>;
|
|
21984
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
21453
21985
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
21454
21986
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
21455
21987
|
isFavoriteSearch: (search: Pick<SearchItem, "label" | "display">) => boolean;
|
|
@@ -21567,14 +22099,15 @@ export declare class SavedSearchPopover {
|
|
|
21567
22099
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
21568
22100
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
21569
22101
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
21570
|
-
userTheme: import("@angular/core").Signal<"
|
|
21571
|
-
agents: import("@
|
|
22102
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
22103
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
21572
22104
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
21573
22105
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
21574
22106
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
21575
22107
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
21576
22108
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
21577
22109
|
unbookmark: (id: string) => Promise<void>;
|
|
22110
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
21578
22111
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
21579
22112
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
21580
22113
|
isFavoriteSearch: (search: Pick<SearchItem, "label" | "display">) => boolean;
|
|
@@ -21663,14 +22196,15 @@ export declare class SavedSearchesComponent {
|
|
|
21663
22196
|
alerts: import("@angular/core").Signal<import("@sinequa/atomic-angular").Alert[]>;
|
|
21664
22197
|
collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
|
|
21665
22198
|
language?: import("@angular/core").Signal<string | undefined> | undefined;
|
|
21666
|
-
userTheme: import("@angular/core").Signal<"
|
|
21667
|
-
agents: import("@
|
|
22199
|
+
userTheme: import("@angular/core").Signal<"dark" | "light" | "system" | undefined>;
|
|
22200
|
+
agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
|
|
21668
22201
|
disabledHighlightCategories: import("@angular/core").Signal<string[]>;
|
|
21669
22202
|
isDebugMode: import("@angular/core").Signal<boolean>;
|
|
21670
22203
|
isDarkMode: import("@angular/core").Signal<boolean>;
|
|
21671
22204
|
updateBookmarks: (bookmarks: import("@sinequa/atomic-angular").UserSettingsState["bookmarks"], auditEvents?: import("@sinequa/atomic").AuditEvents) => Promise<void>;
|
|
21672
22205
|
bookmark: (article: import("@sinequa/atomic").Article, queryName?: string) => Promise<void>;
|
|
21673
22206
|
unbookmark: (id: string) => Promise<void>;
|
|
22207
|
+
unbookmarkMany: (ids: string[]) => Promise<void>;
|
|
21674
22208
|
isBookmarked: (article: Partial<import("@sinequa/atomic").Article>) => boolean;
|
|
21675
22209
|
toggleBookmark: (article: import("@sinequa/atomic").Article) => Promise<void>;
|
|
21676
22210
|
isFavoriteSearch: (search: Pick<SearchItem, "label" | "display">) => boolean;
|
|
@@ -21837,7 +22371,7 @@ export declare class SettingsAccountPanelComponent {
|
|
|
21837
22371
|
param9: import("@angular/core").Signal<string>;
|
|
21838
22372
|
param10: import("@angular/core").Signal<string>;
|
|
21839
22373
|
userOverrideActive: import("@angular/core").Signal<boolean>;
|
|
21840
|
-
state: import("@angular/core").Signal<"error" | "
|
|
22374
|
+
state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
|
|
21841
22375
|
allowUserOverride: import("@angular/core").Signal<boolean>;
|
|
21842
22376
|
isOverridingUser: import("@angular/core").Signal<boolean>;
|
|
21843
22377
|
initials: import("@angular/core").Signal<string>;
|
|
@@ -21912,7 +22446,7 @@ export declare class SettingsAppearancePanelComponent {
|
|
|
21912
22446
|
private readonly themeIcons;
|
|
21913
22447
|
private readonly languageIcons;
|
|
21914
22448
|
private readonly languageLabels;
|
|
21915
|
-
protected readonly currentTheme: import("@angular/core").Signal<"
|
|
22449
|
+
protected readonly currentTheme: import("@angular/core").Signal<"dark" | "light" | "system">;
|
|
21916
22450
|
protected readonly currentLanguage: import("@angular/core").Signal<string>;
|
|
21917
22451
|
protected readonly themeLabel: (code: string | null) => string;
|
|
21918
22452
|
protected readonly languageLabel: (code: string | null) => string;
|
|
@@ -21950,8 +22484,12 @@ export declare class SettingsShortcutsPanelComponent {
|
|
|
21950
22484
|
static ɵfac: i0.ɵɵFactoryDeclaration<SettingsShortcutsPanelComponent, never>;
|
|
21951
22485
|
static ɵcmp: i0.ɵɵComponentDeclaration<SettingsShortcutsPanelComponent, "settings-shortcuts-panel", never, {}, {}, never, never, true, never>;
|
|
21952
22486
|
}
|
|
21953
|
-
/**
|
|
21954
|
-
|
|
22487
|
+
/**
|
|
22488
|
+
* The buckets of a `UserProfile`: the configured fields, the free-form ones, and the private free-form
|
|
22489
|
+
* ones. `privateCustomData` is only returned for the caller's own profile and only ever goes through the
|
|
22490
|
+
* private endpoints.
|
|
22491
|
+
*/
|
|
22492
|
+
export type UserProfileCategory = "data" | "customData" | "privateCustomData";
|
|
21955
22493
|
/**
|
|
21956
22494
|
* Model of the profile form.
|
|
21957
22495
|
*
|
|
@@ -21967,6 +22505,7 @@ export type UserProfileCategory = "data" | "customData";
|
|
|
21967
22505
|
export interface UserProfileFormModel {
|
|
21968
22506
|
data: Record<string, string>;
|
|
21969
22507
|
customData: Record<string, string>;
|
|
22508
|
+
privateCustomData: Record<string, string>;
|
|
21970
22509
|
}
|
|
21971
22510
|
export declare class UserProfileFormComponent {
|
|
21972
22511
|
/**
|
|
@@ -22001,7 +22540,7 @@ export declare class UserProfileFormComponent {
|
|
|
22001
22540
|
param9: Signal<string>;
|
|
22002
22541
|
param10: Signal<string>;
|
|
22003
22542
|
userOverrideActive: Signal<boolean>;
|
|
22004
|
-
state: Signal<"error" | "
|
|
22543
|
+
state: Signal<"error" | "initial" | "loading" | "loaded">;
|
|
22005
22544
|
allowUserOverride: Signal<boolean>;
|
|
22006
22545
|
isOverridingUser: Signal<boolean>;
|
|
22007
22546
|
initials: Signal<string>;
|
|
@@ -22089,6 +22628,7 @@ export declare class UserProfileFormComponent {
|
|
|
22089
22628
|
enabled?: boolean;
|
|
22090
22629
|
data?: string[];
|
|
22091
22630
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22631
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22092
22632
|
};
|
|
22093
22633
|
previewMultiConversion?: boolean;
|
|
22094
22634
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22131,6 +22671,7 @@ export declare class UserProfileFormComponent {
|
|
|
22131
22671
|
enabled?: boolean;
|
|
22132
22672
|
data?: string[];
|
|
22133
22673
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22674
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22134
22675
|
};
|
|
22135
22676
|
previewMultiConversion?: boolean;
|
|
22136
22677
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22195,6 +22736,7 @@ export declare class UserProfileFormComponent {
|
|
|
22195
22736
|
enabled?: boolean;
|
|
22196
22737
|
data?: string[];
|
|
22197
22738
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22739
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22198
22740
|
};
|
|
22199
22741
|
previewMultiConversion?: boolean;
|
|
22200
22742
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22289,6 +22831,7 @@ export declare class UserProfileFormComponent {
|
|
|
22289
22831
|
enabled?: boolean;
|
|
22290
22832
|
data?: string[];
|
|
22291
22833
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22834
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22292
22835
|
};
|
|
22293
22836
|
previewMultiConversion?: boolean;
|
|
22294
22837
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22331,6 +22874,7 @@ export declare class UserProfileFormComponent {
|
|
|
22331
22874
|
enabled?: boolean;
|
|
22332
22875
|
data?: string[];
|
|
22333
22876
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22877
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22334
22878
|
};
|
|
22335
22879
|
previewMultiConversion?: boolean;
|
|
22336
22880
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22368,7 +22912,7 @@ export declare class UserProfileFormComponent {
|
|
|
22368
22912
|
* pairs for contrast (it is the `light-accent` button): a neutral background with a neutral text was
|
|
22369
22913
|
* unreadable.
|
|
22370
22914
|
*/
|
|
22371
|
-
protected readonly chipClass = "inline-flex items-center rounded-(--radius-rounded) bg-(--bg-accent-base-alt) px-(--spacing-2xs) text-(length:--size-sm) font-medium text-(--font-accent-base)";
|
|
22915
|
+
protected readonly chipClass = "inline-flex items-center gap-(--spacing-3xs) rounded-(--radius-rounded) bg-(--bg-accent-base-alt) px-(--spacing-2xs) text-(length:--size-sm) font-medium text-(--font-accent-base)";
|
|
22372
22916
|
/**
|
|
22373
22917
|
* Polite announcement of what just happened — entering edit mode, saving, cancelling, deleting.
|
|
22374
22918
|
*
|
|
@@ -22386,17 +22930,26 @@ export declare class UserProfileFormComponent {
|
|
|
22386
22930
|
protected readonly formKeys: Signal<string[]>;
|
|
22387
22931
|
protected readonly allowProfilePhoto: Signal<boolean>;
|
|
22388
22932
|
private readonly customDataConfig;
|
|
22933
|
+
private readonly privateCustomDataConfig;
|
|
22389
22934
|
/**
|
|
22390
|
-
* The rows of the free-form properties.
|
|
22935
|
+
* The rows of the free-form properties of a bucket.
|
|
22391
22936
|
*
|
|
22392
|
-
*
|
|
22393
|
-
* that is an object — by its default, or by what the profile holds — is not
|
|
22394
|
-
* leaf (`workingHours › start`)
|
|
22395
|
-
*
|
|
22937
|
+
* A property is a `/`-separated path (`agent/favorites`), and the structure is the administrator's, in
|
|
22938
|
+
* the custom JSON. A property that is an object — by its default, or by what the profile holds — is not
|
|
22939
|
+
* one row but one row per leaf (`workingHours › start`). A leaf and a scalar are editable rows, and an
|
|
22940
|
+
* array a read-only one. A row is written at its path, the rest of the bucket untouched.
|
|
22396
22941
|
*/
|
|
22942
|
+
private rowsOf;
|
|
22397
22943
|
private readonly customRows;
|
|
22944
|
+
private readonly privateRows;
|
|
22398
22945
|
protected readonly customData: Signal<string[]>;
|
|
22946
|
+
protected readonly privateCustomData: Signal<string[]>;
|
|
22399
22947
|
private readonly customRowIndex;
|
|
22948
|
+
private readonly privateRowIndex;
|
|
22949
|
+
/** The row of a free-form property; `undefined` for a `data` key. */
|
|
22950
|
+
private rowOf;
|
|
22951
|
+
/** Where the profile holds a property, from the root of its bucket. */
|
|
22952
|
+
private pathOf;
|
|
22400
22953
|
/**
|
|
22401
22954
|
* The editable properties, flattened in display order — one row per entry.
|
|
22402
22955
|
*
|
|
@@ -22411,19 +22964,33 @@ export declare class UserProfileFormComponent {
|
|
|
22411
22964
|
translated: boolean;
|
|
22412
22965
|
}[]>;
|
|
22413
22966
|
/**
|
|
22414
|
-
* The rows grouped in the
|
|
22415
|
-
* A group with no row is left out, so a profile without custom properties shows a single card
|
|
22967
|
+
* The rows grouped in the cards of the form — the configured fields, the free-form ones, then the private
|
|
22968
|
+
* ones. A group with no row is left out, so a profile without custom properties shows a single card, and
|
|
22969
|
+
* one without `privateCustomData` shows no private card. `visibility` says who can see the card's values.
|
|
22416
22970
|
*/
|
|
22417
22971
|
protected readonly sections: Signal<{
|
|
22418
|
-
id:
|
|
22972
|
+
id: "information" | "preferences" | "private";
|
|
22973
|
+
visibility: "public" | "private";
|
|
22419
22974
|
rows: {
|
|
22420
22975
|
category: UserProfileCategory;
|
|
22421
22976
|
key: string;
|
|
22422
22977
|
translated: boolean;
|
|
22423
22978
|
}[];
|
|
22424
22979
|
}[]>;
|
|
22980
|
+
/** Whether the sections are tabs: a profile with a single block shows its card alone, with no tab. */
|
|
22981
|
+
protected readonly tabbed: Signal<boolean>;
|
|
22982
|
+
/**
|
|
22983
|
+
* The tab being looked at, one of the `sections()`. It falls back on the first one when the section it held
|
|
22984
|
+
* is gone (the configuration changed), and is otherwise kept.
|
|
22985
|
+
*/
|
|
22986
|
+
protected readonly activeSection: import("@angular/core").WritableSignal<string | undefined>;
|
|
22425
22987
|
protected readonly initials: Signal<string>;
|
|
22426
22988
|
protected readonly username: Signal<string | null>;
|
|
22989
|
+
/**
|
|
22990
|
+
* The properties deleted since the profile was loaded, `"<category>.<key>"`, until they are saved again. Their
|
|
22991
|
+
* local value is an empty string, so the value alone cannot tell "deleted" from "saved as empty".
|
|
22992
|
+
*/
|
|
22993
|
+
private readonly deletedProperties;
|
|
22427
22994
|
/** Id of the property being edited, `"<category>.<key>"` — at most one at a time. */
|
|
22428
22995
|
protected readonly propertyToEdit: import("@angular/core").WritableSignal<string | undefined>;
|
|
22429
22996
|
readonly changingPassword: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -22463,6 +23030,11 @@ export declare class UserProfileFormComponent {
|
|
|
22463
23030
|
protected showError(field: FieldTree<string> | undefined): boolean;
|
|
22464
23031
|
/** Maps the first validation error to its translation key (`userProfile.errors.required`, …). */
|
|
22465
23032
|
protected errorKey(field: FieldTree<string> | undefined): string;
|
|
23033
|
+
/**
|
|
23034
|
+
* Switches tab. An edit in progress is discarded: its field is about to be hidden, and a draft left behind a
|
|
23035
|
+
* tab would still hold the form in edit mode.
|
|
23036
|
+
*/
|
|
23037
|
+
protected onSectionChange(id: string | undefined): void;
|
|
22466
23038
|
/** Whether `key` is the property currently being edited. */
|
|
22467
23039
|
protected isEditing(category: UserProfileCategory, key: string): boolean;
|
|
22468
23040
|
/**
|
|
@@ -22474,7 +23046,7 @@ export declare class UserProfileFormComponent {
|
|
|
22474
23046
|
protected getDataValue(category: UserProfileCategory, key: string): string | undefined;
|
|
22475
23047
|
/** The default of a custom property, shown while the profile holds no value for it. */
|
|
22476
23048
|
private defaultValue;
|
|
22477
|
-
/** Whether a row is a leaf of an object
|
|
23049
|
+
/** Whether a row is nested: a leaf of an object, or a `/`-separated path. */
|
|
22478
23050
|
protected isLeaf(category: UserProfileCategory, key: string): boolean;
|
|
22479
23051
|
/** What the profile holds for a property — at its path, for a leaf. */
|
|
22480
23052
|
private storedValue;
|
|
@@ -22485,8 +23057,11 @@ export declare class UserProfileFormComponent {
|
|
|
22485
23057
|
protected isBoolean(category: UserProfileCategory, key: string): boolean;
|
|
22486
23058
|
/** Whether a boolean property is on. */
|
|
22487
23059
|
protected booleanValue(category: UserProfileCategory, key: string): boolean;
|
|
22488
|
-
/**
|
|
22489
|
-
|
|
23060
|
+
/**
|
|
23061
|
+
* Whether a property holds an array. It is shown as tags and edited as JSON, in a text area, since its items
|
|
23062
|
+
* can be anything: values, objects, arrays.
|
|
23063
|
+
*/
|
|
23064
|
+
protected isArray(category: UserProfileCategory, key: string): boolean;
|
|
22490
23065
|
/** The tags of an array property: a string as is, anything else as its JSON, a repeated value once. */
|
|
22491
23066
|
protected arrayTags(category: UserProfileCategory, key: string): string[];
|
|
22492
23067
|
/** The stored value of a property, else its default — what the field shows when it is not being edited. */
|
|
@@ -22529,6 +23104,8 @@ export declare class UserProfileFormComponent {
|
|
|
22529
23104
|
* (Transloco answers a missing entry with the path it was asked for).
|
|
22530
23105
|
*/
|
|
22531
23106
|
protected labelFor(category: UserProfileCategory, key: string): string;
|
|
23107
|
+
/** A free-form key, translated under `userProfile.<category>.<key>` when the application provides it; the key otherwise. */
|
|
23108
|
+
private translatedName;
|
|
22532
23109
|
/** Whether a property shows its default: the profile holds no value for it and the administrator gave one. */
|
|
22533
23110
|
protected isDefault(category: UserProfileCategory, key: string): boolean;
|
|
22534
23111
|
/** Whether a property has just been saved — its row shows a confirmation for a few seconds. */
|
|
@@ -22577,12 +23154,26 @@ export declare class UserProfileFormComponent {
|
|
|
22577
23154
|
* back before the next render never changes it.
|
|
22578
23155
|
*/
|
|
22579
23156
|
protected onToggleBoolean(category: UserProfileCategory, key: string, checked: boolean, toggle: SwitchComponent): Promise<void>;
|
|
23157
|
+
/** A path as the API takes it: the bare name for one segment, the segments otherwise (a name may hold a `/`). */
|
|
23158
|
+
private endpointPath;
|
|
22580
23159
|
/**
|
|
22581
23160
|
* Patches a single property and folds the response back into the stored profile.
|
|
22582
23161
|
*
|
|
23162
|
+
* The server does not create the nodes on the way (it answers 404): the write is made at the first missing
|
|
23163
|
+
* one, carrying the rest of the path (see `writeTarget`). A private property only goes through the private
|
|
23164
|
+
* endpoint, never the public one.
|
|
23165
|
+
*
|
|
22583
23166
|
* @returns whether the property was persisted.
|
|
22584
23167
|
*/
|
|
22585
23168
|
private patchProperty;
|
|
23169
|
+
/**
|
|
23170
|
+
* Folds the answer of a PATCH back into the stored profile, so the form shows what was just saved.
|
|
23171
|
+
*
|
|
23172
|
+
* The answer is the value alone — the string for `data`, any JSON value for `customData` — since the
|
|
23173
|
+
* profile routes answer with the addressed resource and nothing else (ES-34373). A server that still
|
|
23174
|
+
* answers with the whole profile (`{ data, customData, … }`) keeps working: it is merged as before.
|
|
23175
|
+
*/
|
|
23176
|
+
private foldSavedValue;
|
|
22586
23177
|
/**
|
|
22587
23178
|
* Reads the picked image and stores it as the profile photo.
|
|
22588
23179
|
*
|
|
@@ -22607,6 +23198,17 @@ export declare class UserProfileFormComponent {
|
|
|
22607
23198
|
* @returns The guard function.
|
|
22608
23199
|
*/
|
|
22609
23200
|
export declare function AuthGuard(): CanActivateFn;
|
|
23201
|
+
/**
|
|
23202
|
+
* Returns a guard function that lets a route match only when the Agent store is available
|
|
23203
|
+
* (`features.isAvailable.agentStore` of `GET /api/v2/version`, see {@link LicenseCapabilitiesService}).
|
|
23204
|
+
*
|
|
23205
|
+
* It is a `canMatch` guard: when the store is not available, the router falls through to the next route
|
|
23206
|
+
* that matches the URL (typically the catch-all), so neither the route nor its lazy chunk is reachable.
|
|
23207
|
+
* It only reads a signal: load it first with `LicenseCapabilitiesService.load()`, before the first
|
|
23208
|
+
* navigation (an application initializer), otherwise the capability reads as `false`.
|
|
23209
|
+
* @returns The guard function.
|
|
23210
|
+
*/
|
|
23211
|
+
export declare function AgentStoreGuard(): CanMatchFn;
|
|
22610
23212
|
/**
|
|
22611
23213
|
* Intercepts HTTP requests to add audit information if the request URL includes the API path.
|
|
22612
23214
|
*
|
|
@@ -22809,6 +23411,7 @@ export declare class SourceIconPipe implements PipeTransform {
|
|
|
22809
23411
|
enabled?: boolean;
|
|
22810
23412
|
data?: string[];
|
|
22811
23413
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23414
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22812
23415
|
};
|
|
22813
23416
|
previewMultiConversion?: boolean;
|
|
22814
23417
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22851,6 +23454,7 @@ export declare class SourceIconPipe implements PipeTransform {
|
|
|
22851
23454
|
enabled?: boolean;
|
|
22852
23455
|
data?: string[];
|
|
22853
23456
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23457
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22854
23458
|
};
|
|
22855
23459
|
previewMultiConversion?: boolean;
|
|
22856
23460
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -22915,6 +23519,7 @@ export declare class SourceIconPipe implements PipeTransform {
|
|
|
22915
23519
|
enabled?: boolean;
|
|
22916
23520
|
data?: string[];
|
|
22917
23521
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23522
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
22918
23523
|
};
|
|
22919
23524
|
previewMultiConversion?: boolean;
|
|
22920
23525
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -23009,6 +23614,7 @@ export declare class SourceIconPipe implements PipeTransform {
|
|
|
23009
23614
|
enabled?: boolean;
|
|
23010
23615
|
data?: string[];
|
|
23011
23616
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23617
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23012
23618
|
};
|
|
23013
23619
|
previewMultiConversion?: boolean;
|
|
23014
23620
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -23051,6 +23657,7 @@ export declare class SourceIconPipe implements PipeTransform {
|
|
|
23051
23657
|
enabled?: boolean;
|
|
23052
23658
|
data?: string[];
|
|
23053
23659
|
customData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23660
|
+
privateCustomData?: import("@sinequa/atomic-angular").CustomDataEntry[];
|
|
23054
23661
|
};
|
|
23055
23662
|
previewMultiConversion?: boolean;
|
|
23056
23663
|
persistFiltersAcrossTabs?: boolean;
|
|
@@ -23258,7 +23865,7 @@ export declare function injectAtomicClient(): AtomicClient;
|
|
|
23258
23865
|
*
|
|
23259
23866
|
* Only HTTP statuses `400`, `403`, `500` and `503` produce a toast, plus the explicit "Cannot override
|
|
23260
23867
|
* user" message for an impersonation rejected with a `401`. `404`, `429`, `502`, `504` and any failure
|
|
23261
|
-
* without an HTTP response (network error) stay silent, as
|
|
23868
|
+
* without an HTTP response (network error) stay silent, as do `api/v1/preview` and `api/v2/security/password/change` (surfaced by their own UI) and a
|
|
23262
23869
|
* `400` on `api/v2/user-profile`.
|
|
23263
23870
|
*
|
|
23264
23871
|
* The library renders nothing: `notify.error(...)` only dispatches a `notification` `CustomEvent` on
|
|
@@ -23439,10 +24046,14 @@ export type SessionExpiryOptions = {
|
|
|
23439
24046
|
/**
|
|
23440
24047
|
* Action of the "about to expire" notification: lets the user keep working without losing the session.
|
|
23441
24048
|
*
|
|
23442
|
-
* Defaults to
|
|
23443
|
-
*
|
|
23444
|
-
*
|
|
23445
|
-
*
|
|
24049
|
+
* Defaults to renewing the session through `security.webtoken`: it needs no credentials as long as the JSON
|
|
24050
|
+
* Web Token cookie is still valid, and renews it whatever the way the user signed in. It cannot revive a
|
|
24051
|
+
* session that already expired, and a bearer access token whose JSON method rules exclude `webtoken` is
|
|
24052
|
+
* refused. In both cases, and when the server returns no token, one light authenticated request
|
|
24053
|
+
* (`principal`) is tried instead: the platform then only renews the token as a side effect of a request,
|
|
24054
|
+
* and only when the server's JSON Web Token auto-refresh is enabled and the token's maximum lifetime is not
|
|
24055
|
+
* reached. When the expiry did not move afterwards, `onReconnect` runs, so the action never leaves the user
|
|
24056
|
+
* believing the session was extended.
|
|
23446
24057
|
*
|
|
23447
24058
|
* A custom handler replaces all of this, including that fallback.
|
|
23448
24059
|
*/
|