@sinequa/atomic-angular 2.4.0 → 2.5.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sinequa/atomic-angular",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -1551,7 +1551,7 @@ export declare class WorkspaceList {
1551
1551
  labelKey: string;
1552
1552
  }[];
1553
1553
  protected readonly viewMode: import("@angular/core").WritableSignal<ViewMode$1>;
1554
- protected readonly status: import("@angular/core").WritableSignal<"error" | "loading" | "ready">;
1554
+ protected readonly status: import("@angular/core").WritableSignal<"loading" | "ready" | "error">;
1555
1555
  protected readonly loadError: import("@angular/core").WritableSignal<Message | null>;
1556
1556
  protected readonly refreshError: import("@angular/core").WritableSignal<string | null>;
1557
1557
  protected readonly loadingMore: import("@angular/core").WritableSignal<boolean>;
@@ -2061,7 +2061,6 @@ export declare class DocumentPreviewPanel {
2061
2061
  protected readonly search: import("@sinequa/atomic-angular/document-workspaces").TextSearch;
2062
2062
  /** A slow answer for a document the user has already left must not replace the one on screen. */
2063
2063
  private token;
2064
- private readonly searchHost;
2065
2064
  constructor();
2066
2065
  private load;
2067
2066
  protected onFrameLoad(): void;
@@ -2136,7 +2135,7 @@ export declare class WorkspaceEditDialog {
2136
2135
  protected readonly busy: import("@angular/core").WritableSignal<boolean>;
2137
2136
  protected readonly error: import("@angular/core").WritableSignal<WorkspaceErrorMessage | null>;
2138
2137
  protected readonly descriptionTooLong: import("@angular/core").Signal<boolean>;
2139
- protected readonly saveLabel: import("@angular/core").Signal<"documentWorkspaces.common.save" | "documentWorkspaces.edit.creating" | "documentWorkspaces.edit.saving" | "documentWorkspaces.common.create">;
2138
+ protected readonly saveLabel: import("@angular/core").Signal<"documentWorkspaces.edit.creating" | "documentWorkspaces.edit.saving" | "documentWorkspaces.common.create" | "documentWorkspaces.common.save">;
2140
2139
  /** What to resolve with once the native dialog has closed: the saved workspace, or the plain dismissal. */
2141
2140
  private outcome;
2142
2141
  constructor();
@@ -2193,7 +2192,7 @@ export declare class WorkspaceDetail {
2193
2192
  protected readonly query: import("@angular/core").WritableSignal<string>;
2194
2193
  /** The search box, bound to `query`. */
2195
2194
  protected readonly searchForm: import("@angular/forms/signals").FieldTree<string, string | number, "writable">;
2196
- protected readonly status: import("@angular/core").WritableSignal<"error" | "loading" | "ready">;
2195
+ protected readonly status: import("@angular/core").WritableSignal<"loading" | "ready" | "error">;
2197
2196
  protected readonly loadError: import("@angular/core").WritableSignal<Message | null>;
2198
2197
  protected readonly refreshError: import("@angular/core").WritableSignal<string | null>;
2199
2198
  protected readonly refreshing: import("@angular/core").WritableSignal<boolean>;
@@ -2328,7 +2327,7 @@ export declare function injectWorkspaceMention(options?: WorkspaceMentionOptions
2328
2327
  /** The workspaces in each category — the whole list, not what the search left. */
2329
2328
  counts: import("@angular/core").Signal<import("@sinequa/atomic-angular/document-workspaces").WorkspaceTabCounts>;
2330
2329
  /** Whether the first page is loading, ready or failed. */
2331
- status: import("@angular/core").Signal<"error" | "loading" | "ready">;
2330
+ status: import("@angular/core").Signal<"loading" | "ready" | "error">;
2332
2331
  /** More workspaces than the loaded ones exist on the server: `loadMore()` fetches the next page. */
2333
2332
  hasMore: import("@angular/core").Signal<boolean>;
2334
2333
  /** The loading cap is reached: some workspaces will never be offered, search included. */
@@ -2375,7 +2374,7 @@ export declare const WORKSPACE_MENTION: InjectionToken<{
2375
2374
  /** The workspaces in each category — the whole list, not what the search left. */
2376
2375
  counts: import("@angular/core").Signal<import("@sinequa/atomic-angular/document-workspaces").WorkspaceTabCounts>;
2377
2376
  /** Whether the first page is loading, ready or failed. */
2378
- status: import("@angular/core").Signal<"error" | "loading" | "ready">;
2377
+ status: import("@angular/core").Signal<"loading" | "ready" | "error">;
2379
2378
  /** More workspaces than the loaded ones exist on the server: `loadMore()` fetches the next page. */
2380
2379
  hasMore: import("@angular/core").Signal<boolean>;
2381
2380
  /** The loading cap is reached: some workspaces will never be offered, search included. */
@@ -2526,7 +2525,7 @@ export declare class WorkspaceMention implements WorkspaceMentionApi, AfterConte
2526
2525
  labelKey: string;
2527
2526
  }[];
2528
2527
  readonly counts: import("@angular/core").Signal<import("@sinequa/atomic-angular/document-workspaces").WorkspaceTabCounts>;
2529
- readonly status: import("@angular/core").Signal<"error" | "loading" | "ready">;
2528
+ readonly status: import("@angular/core").Signal<"loading" | "ready" | "error">;
2530
2529
  readonly hasMore: import("@angular/core").Signal<boolean>;
2531
2530
  readonly truncated: import("@angular/core").Signal<boolean>;
2532
2531
  readonly loadingMore: import("@angular/core").Signal<boolean>;
@@ -2592,11 +2591,11 @@ export declare class WorkspaceMention implements WorkspaceMentionApi, AfterConte
2592
2591
  */
2593
2592
  export declare class WorkspaceMentionNew implements AfterContentInit {
2594
2593
  /** The button's variant. */
2595
- readonly variant: import("@angular/core").InputSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
2594
+ readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "none" | "light-accent" | "accent" | "tertiary" | null | undefined>;
2596
2595
  /** The button's colour scheme. */
2597
2596
  readonly scheme: import("@angular/core").InputSignal<"default" | "neutral" | null | undefined>;
2598
2597
  /** The button's size. */
2599
- readonly size: import("@angular/core").InputSignal<"small" | "medium" | "md" | "lg" | "sm" | "xs" | "xsmall" | "large" | null | undefined>;
2598
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "small" | "medium" | "xs" | "xsmall" | "large" | null | undefined>;
2600
2599
  private readonly mention;
2601
2600
  private readonly slot;
2602
2601
  /** Whether the host put its own content inside: the icon and the label then stay out. */
@@ -2639,7 +2638,7 @@ export declare class WorkspaceMentionRows {
2639
2638
  labelKey: string;
2640
2639
  }[];
2641
2640
  counts: import("@angular/core").Signal<import("@sinequa/atomic-angular/document-workspaces").WorkspaceTabCounts>;
2642
- status: import("@angular/core").Signal<"error" | "loading" | "ready">;
2641
+ status: import("@angular/core").Signal<"loading" | "ready" | "error">;
2643
2642
  hasMore: import("@angular/core").Signal<boolean>;
2644
2643
  truncated: import("@angular/core").Signal<boolean>;
2645
2644
  loadingMore: import("@angular/core").Signal<boolean>;
@@ -2661,9 +2660,9 @@ export declare class WorkspaceMentionRows {
2661
2660
  /** The search box of the enclosing `<workspace-mention>`: it narrows what the menu offers. */
2662
2661
  export declare class WorkspaceMentionSearch {
2663
2662
  /** The size of the box, as `<SearchInput>` sizes it. */
2664
- readonly size: import("@angular/core").InputSignal<"md" | "lg" | "sm" | null | undefined>;
2663
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | null | undefined>;
2665
2664
  /** The size of the text, as `<SearchInput>` sizes it; follows `size` when absent. */
2666
- readonly textSize: import("@angular/core").InputSignal<"base" | "sm" | null | undefined>;
2665
+ readonly textSize: import("@angular/core").InputSignal<"sm" | "base" | null | undefined>;
2667
2666
  /** The hint shown in the empty box; the translated "Search workspace..." when absent. */
2668
2667
  readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
2669
2668
  /** The accessible name of the box; the placeholder when absent. */
@@ -2710,7 +2709,7 @@ export declare class WorkspaceMentionSelectAll {
2710
2709
  labelKey: string;
2711
2710
  }[];
2712
2711
  counts: import("@angular/core").Signal<import("@sinequa/atomic-angular/document-workspaces").WorkspaceTabCounts>;
2713
- status: import("@angular/core").Signal<"error" | "loading" | "ready">;
2712
+ status: import("@angular/core").Signal<"loading" | "ready" | "error">;
2714
2713
  hasMore: import("@angular/core").Signal<boolean>;
2715
2714
  truncated: import("@angular/core").Signal<boolean>;
2716
2715
  loadingMore: import("@angular/core").Signal<boolean>;
@@ -2746,7 +2745,7 @@ export declare class WorkspaceMentionTabs {
2746
2745
  labelKey: string;
2747
2746
  }[];
2748
2747
  counts: import("@angular/core").Signal<import("@sinequa/atomic-angular/document-workspaces").WorkspaceTabCounts>;
2749
- status: import("@angular/core").Signal<"error" | "loading" | "ready">;
2748
+ status: import("@angular/core").Signal<"loading" | "ready" | "error">;
2750
2749
  hasMore: import("@angular/core").Signal<boolean>;
2751
2750
  truncated: import("@angular/core").Signal<boolean>;
2752
2751
  loadingMore: import("@angular/core").Signal<boolean>;
@@ -2791,14 +2790,14 @@ export declare const NEW_WORKSPACE_NAME_MAX = 50;
2791
2790
  */
2792
2791
  export declare class WorkspacePicker {
2793
2792
  /** `save` attaches `documents` to the chosen workspace; `move` takes `documentIds` from `fromWorkspaceId` to it. */
2794
- readonly mode: import("@angular/core").InputSignal<"move" | "save">;
2793
+ readonly mode: import("@angular/core").InputSignal<"save" | "move">;
2795
2794
  readonly documents: import("@angular/core").InputSignal<readonly PickerDocument[]>;
2796
2795
  readonly fromWorkspaceId: import("@angular/core").InputSignal<string | null>;
2797
2796
  readonly documentIds: import("@angular/core").InputSignal<readonly string[]>;
2798
2797
  /** The documents are in the workspace, and the check mark has been seen. */
2799
2798
  readonly completed: import("@angular/core").OutputEmitterRef<Workspace>;
2800
2799
  private readonly store;
2801
- protected readonly status: import("@angular/core").WritableSignal<"error" | "loading" | "ready">;
2800
+ protected readonly status: import("@angular/core").WritableSignal<"loading" | "ready" | "error">;
2802
2801
  protected readonly busyId: import("@angular/core").WritableSignal<string | null>;
2803
2802
  protected readonly doneId: import("@angular/core").WritableSignal<string | null>;
2804
2803
  protected readonly error: import("@angular/core").WritableSignal<Message | null>;
@@ -869,7 +869,7 @@ export declare class DocumentLocatorComponent implements OnDestroy {
869
869
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
870
870
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
871
871
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
872
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
872
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
873
873
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
874
874
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
875
875
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -1053,7 +1053,7 @@ export declare class MetadataComponent {
1053
1053
  }>;
1054
1054
  class: import("@angular/core").InputSignal<string | undefined>;
1055
1055
  variant: import("@angular/core").InputSignal<"primary" | "secondary" | null | undefined>;
1056
- size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | null | undefined>;
1056
+ size: import("@angular/core").InputSignal<"small" | "medium" | "sm" | "md" | "xs" | "xsmall" | null | undefined>;
1057
1057
  scheme: import("@angular/core").InputSignal<"error" | "sage" | "success" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "warning" | "info" | null | undefined>;
1058
1058
  metadata: import("@angular/core").InputSignal<(string & Record<never, never>) | KeyOf<Article>>;
1059
1059
  article: import("@angular/core").InputSignal<Partial<Article> | (string & Record<never, never>)>;
@@ -1130,7 +1130,7 @@ export declare class MissingTermsComponent {
1130
1130
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
1131
1131
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
1132
1132
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
1133
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
1133
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
1134
1134
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
1135
1135
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
1136
1136
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -1620,12 +1620,24 @@ export declare class MultiSelectionToolbarComponent {
1620
1620
  } | undefined;
1621
1621
  readonly class: import("@angular/core").InputSignal<string>;
1622
1622
  readonly variant: import("@angular/core").InputSignal<"light" | "dark" | "glassy" | null | undefined>;
1623
+ /**
1624
+ * Texte ajouté à l'annonce lecteur d'écran lors de la **première** sélection (ex. « F6 pour accéder
1625
+ * aux actions »). Il est fourni par l'application : seule elle sait par quel raccourci elle rend la
1626
+ * barre atteignable, la librairie n'en suppose aucun.
1627
+ */
1628
+ readonly hint: import("@angular/core").InputSignal<string | undefined>;
1623
1629
  readonly updatedCollections: import("@angular/core").OutputEmitterRef<void>;
1630
+ /** La sélection vient d'être vidée (bouton, Échap) : l'application replace le focus, la barre devient inerte. */
1631
+ readonly cleared: import("@angular/core").OutputEmitterRef<void>;
1624
1632
  readonly count: import("@angular/core").Signal<number>;
1625
1633
  readonly variants: import("@angular/core").Signal<string>;
1626
1634
  readonly ids: import("@angular/core").Signal<string[]>;
1627
1635
  readonly instanceId: import("@angular/core").Signal<string>;
1628
1636
  readonly enabledUserInput: import("@angular/core").Signal<boolean>;
1637
+ /** Vrai uniquement à la première sélection : ensuite, seul le décompte est annoncé. */
1638
+ protected readonly showHint: import("@angular/core").WritableSignal<boolean>;
1639
+ private armed;
1640
+ constructor();
1629
1641
  clearSelection: () => void;
1630
1642
  openCollectionDialog: () => Promise<void>;
1631
1643
  openExportDialog: () => void;
@@ -1642,8 +1654,14 @@ export declare class MultiSelectionToolbarComponent {
1642
1654
  "required": false;
1643
1655
  "isSignal": true;
1644
1656
  };
1657
+ "hint": {
1658
+ "alias": "hint";
1659
+ "required": false;
1660
+ "isSignal": true;
1661
+ };
1645
1662
  }, {
1646
1663
  "updatedCollections": "updatedCollections";
1664
+ "cleared": "cleared";
1647
1665
  }, never, never, true, never>;
1648
1666
  }
1649
1667
  export interface NavRouteTab {
@@ -2886,7 +2904,7 @@ export declare const PrincipalStore: import("@angular/core").Type<{
2886
2904
  param9: import("@angular/core").Signal<string>;
2887
2905
  param10: import("@angular/core").Signal<string>;
2888
2906
  userOverrideActive: import("@angular/core").Signal<boolean>;
2889
- state: import("@angular/core").Signal<"initial" | "loading" | "loaded" | "error">;
2907
+ state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
2890
2908
  allowUserOverride: import("@angular/core").Signal<boolean>;
2891
2909
  isOverridingUser: import("@angular/core").Signal<boolean>;
2892
2910
  initials: import("@angular/core").Signal<string>;
@@ -2966,7 +2984,7 @@ export declare const QueryParamsStore: import("@angular/core").Type<{
2966
2984
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
2967
2985
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
2968
2986
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
2969
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
2987
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
2970
2988
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
2971
2989
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
2972
2990
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -4435,7 +4453,7 @@ export declare class AggregationsService {
4435
4453
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
4436
4454
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
4437
4455
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
4438
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
4456
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
4439
4457
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
4440
4458
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
4441
4459
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -4756,7 +4774,7 @@ export declare class ApplicationService {
4756
4774
  param9: import("@angular/core").Signal<string>;
4757
4775
  param10: import("@angular/core").Signal<string>;
4758
4776
  userOverrideActive: import("@angular/core").Signal<boolean>;
4759
- state: import("@angular/core").Signal<"initial" | "loading" | "loaded" | "error">;
4777
+ state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
4760
4778
  allowUserOverride: import("@angular/core").Signal<boolean>;
4761
4779
  isOverridingUser: import("@angular/core").Signal<boolean>;
4762
4780
  initials: import("@angular/core").Signal<string>;
@@ -5133,7 +5151,7 @@ export declare class ApplicationService {
5133
5151
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
5134
5152
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
5135
5153
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
5136
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
5154
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
5137
5155
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
5138
5156
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
5139
5157
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -6672,7 +6690,7 @@ export declare class PreviewService {
6672
6690
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
6673
6691
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
6674
6692
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
6675
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
6693
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
6676
6694
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
6677
6695
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
6678
6696
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -7340,7 +7358,7 @@ export declare class SavedSearchesService {
7340
7358
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
7341
7359
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
7342
7360
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
7343
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
7361
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
7344
7362
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
7345
7363
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
7346
7364
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -7525,7 +7543,7 @@ export declare class SearchService {
7525
7543
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
7526
7544
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
7527
7545
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
7528
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
7546
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
7529
7547
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
7530
7548
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
7531
7549
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -7740,7 +7758,7 @@ export declare class SelectionService {
7740
7758
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
7741
7759
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
7742
7760
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
7743
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
7761
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
7744
7762
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
7745
7763
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
7746
7764
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -9209,7 +9227,7 @@ export declare class SponsoredResultsComponent {
9209
9227
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
9210
9228
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
9211
9229
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
9212
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
9230
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
9213
9231
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
9214
9232
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
9215
9233
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -10297,7 +10315,7 @@ export declare class AdvancedSearch {
10297
10315
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
10298
10316
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
10299
10317
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
10300
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
10318
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
10301
10319
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
10302
10320
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
10303
10321
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -10559,15 +10577,6 @@ export declare class AdvancedSearchTabs {
10559
10577
  protected readonly selectedTab: import("@angular/core").Signal<string | undefined>;
10560
10578
  private isTabAvailable;
10561
10579
  protected executeSearch(): void;
10562
- /**
10563
- * A plain bubble-phase `(keydown.enter)` on `<SearchBar>` never sees Enter: the ARIA `Combobox`
10564
- * directive its inner input carries (`@angular/aria/combobox`) attaches its own `(keydown)`
10565
- * listener directly on that input and swallows Enter as its own "commit" key, even with no popup
10566
- * wired up — Escape passes through untouched (nothing to close), but Enter doesn't. A capture-phase
10567
- * listener on this component's own host runs on the way *down* to the input, before that handler
10568
- * ever gets to stop it — immune to whatever it does during the bubble phase.
10569
- */
10570
- constructor(destroyRef: DestroyRef);
10571
10580
  static ɵfac: i0.ɵɵFactoryDeclaration<AdvancedSearchTabs, never>;
10572
10581
  static ɵcmp: i0.ɵɵComponentDeclaration<AdvancedSearchTabs, "advanced-search-tabs, AdvancedSearchTabs, advancedsearchtabs", never, {
10573
10582
  "article": {
@@ -11554,8 +11563,8 @@ export declare class SignedOutComponent {
11554
11563
  static ɵcmp: i0.ɵɵComponentDeclaration<SignedOutComponent, "signed-out, SignedOut, signedout", never, {}, {}, never, never, true, never>;
11555
11564
  }
11556
11565
  export declare class BookmarkButtonComponent {
11557
- variant: import("@angular/core").InputSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
11558
- size: import("@angular/core").InputSignal<"small" | "large" | "sm" | "md" | "xs" | "xsmall" | "medium" | "lg" | null | undefined>;
11566
+ variant: import("@angular/core").InputSignal<"primary" | "secondary" | "none" | "light-accent" | "accent" | "tertiary" | null | undefined>;
11567
+ size: import("@angular/core").InputSignal<"small" | "medium" | "sm" | "md" | "xs" | "xsmall" | "lg" | "large" | null | undefined>;
11559
11568
  /**
11560
11569
  * Tab index applied to the inner button.
11561
11570
  *
@@ -11628,6 +11637,12 @@ declare class ListPanelComponent<T> {
11628
11637
  /** Accessible name of a row (typeahead/aria) — falls back to `getValue()` when omitted. */
11629
11638
  getLabel: import("@angular/core").InputSignal<((item: T) => string) | undefined>;
11630
11639
  deleteButtonTitle: import("@angular/core").InputSignal<string>;
11640
+ /**
11641
+ * Whether rows can be deleted. On by default. Off, rows carry no trash icon, `Delete` does nothing and
11642
+ * nothing announces it (no `aria-keyshortcuts`, no hint) — a list that cannot delete must not say
11643
+ * that it can.
11644
+ */
11645
+ deletable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
11631
11646
  /**
11632
11647
  * Nom accessible de la liste, posé sur le `<List role="listbox">` interne.
11633
11648
  *
@@ -11641,6 +11656,19 @@ declare class ListPanelComponent<T> {
11641
11656
  itemClick: import("@angular/core").OutputEmitterRef<T>;
11642
11657
  delete: import("@angular/core").OutputEmitterRef<ListPanelDeleteEvent<T>>;
11643
11658
  protected readonly itemTemplate: import("@angular/core").Signal<ListPanelItemDirective | undefined>;
11659
+ /**
11660
+ * `Delete`, plus `Backspace` sur une plateforme Apple : un MacBook n'a pas de touche `Delete` dédiée
11661
+ * (`fn+⌫`), et `⌫` seul émet `Backspace`. Ailleurs, `Backspace` dans une liste n'exprime aucune
11662
+ * intention de suppression.
11663
+ */
11664
+ protected readonly deleteKeys: string[];
11665
+ private readonly list;
11666
+ /**
11667
+ * Vrai tant que le focus clavier est dans la liste. À brancher sur `[navigationHint]` du pied de liste
11668
+ * (`<ListPanel #panel>` … `<ListPanelFooter [navigationHint]="panel.keyboardFocused()">`) : l'aide de
11669
+ * navigation ne s'affiche que quand elle sert.
11670
+ */
11671
+ readonly keyboardFocused: import("@angular/core").Signal<boolean>;
11644
11672
  private readonly host;
11645
11673
  private readonly injector;
11646
11674
  /** Index de la ligne supprimée, tant que le focus n'a pas été rendu à la liste. */
@@ -11686,6 +11714,11 @@ declare class ListPanelComponent<T> {
11686
11714
  "required": false;
11687
11715
  "isSignal": true;
11688
11716
  };
11717
+ "deletable": {
11718
+ "alias": "deletable";
11719
+ "required": false;
11720
+ "isSignal": true;
11721
+ };
11689
11722
  "ariaLabel": {
11690
11723
  "alias": "ariaLabel";
11691
11724
  "required": false;
@@ -11784,7 +11817,7 @@ export declare class CollectionsDialog {
11784
11817
  readonly showSearch: import("@angular/core").Signal<boolean>;
11785
11818
  /** Collections matching the search text (case-insensitive, by name). */
11786
11819
  readonly filteredCollections: import("@angular/core").Signal<Basket[]>;
11787
- readonly collectionsMap: import("@angular/core").WritableSignal<Record<string, "some" | "all" | "none">>;
11820
+ readonly collectionsMap: import("@angular/core").WritableSignal<Record<string, "some" | "none" | "all">>;
11788
11821
  /** Windowing over the filtered list — renders only the visible rows. */
11789
11822
  readonly virtualizer: import("@tanstack/angular-virtual").AngularVirtualizer<HTMLDivElement, Element>;
11790
11823
  constructor();
@@ -12139,7 +12172,7 @@ export declare class ExportDialog {
12139
12172
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
12140
12173
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
12141
12174
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
12142
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
12175
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
12143
12176
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
12144
12177
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
12145
12178
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -12621,7 +12654,7 @@ export declare class SearchFeedbackComponent {
12621
12654
  onClose: import("@angular/core").OutputEmitterRef<void>;
12622
12655
  private readonly injector;
12623
12656
  pages: import("@angular/core").InputSignal<any>;
12624
- variant: import("@angular/core").InputSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
12657
+ variant: import("@angular/core").InputSignal<"primary" | "secondary" | "none" | "light-accent" | "accent" | "tertiary" | null | undefined>;
12625
12658
  readonly auditService: AuditService;
12626
12659
  protected readonly queryParamsStore: {
12627
12660
  name?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -12650,7 +12683,7 @@ export declare class SearchFeedbackComponent {
12650
12683
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
12651
12684
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
12652
12685
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
12653
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
12686
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
12654
12687
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
12655
12688
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
12656
12689
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -13020,7 +13053,7 @@ export declare class AggregationDateComponent {
13020
13053
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
13021
13054
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
13022
13055
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
13023
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
13056
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
13024
13057
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
13025
13058
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
13026
13059
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -13513,7 +13546,7 @@ export declare class AggregationTreeComponent {
13513
13546
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
13514
13547
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
13515
13548
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
13516
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
13549
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
13517
13550
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
13518
13551
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
13519
13552
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -14370,7 +14403,7 @@ export declare class AggregationListComponent {
14370
14403
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
14371
14404
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
14372
14405
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
14373
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
14406
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
14374
14407
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
14375
14408
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
14376
14409
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -15412,7 +15445,7 @@ export declare class AggregationComponent {
15412
15445
  *
15413
15446
  * @default "auto"
15414
15447
  */
15415
- type: import("@angular/core").InputSignal<"auto" | "list" | "tree" | "date">;
15448
+ type: import("@angular/core").InputSignal<"list" | "tree" | "date" | "auto">;
15416
15449
  /**
15417
15450
  * Whether the host removes itself from the layout (Tailwind's `hidden`, i.e.
15418
15451
  * `display: none`) when it resolves to zero items. When `false` (default), the
@@ -15837,7 +15870,7 @@ export declare class AppliedFiltersComponent {
15837
15870
  /** Chip colour scheme, passed to galactik's `tag`. */
15838
15871
  readonly scheme: import("@angular/core").InputSignal<"error" | "sage" | "success" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "warning" | "info" | null | undefined>;
15839
15872
  /** Chip size, passed to galactik's `tag`. */
15840
- readonly size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | null | undefined>;
15873
+ readonly size: import("@angular/core").InputSignal<"small" | "medium" | "sm" | "md" | "xs" | "xsmall" | null | undefined>;
15841
15874
  /** Extra classes for each chip, merged by galactik's `tag`. */
15842
15875
  readonly chipClass: import("@angular/core").InputSignal<string>;
15843
15876
  /** A chip was removed. */
@@ -16025,7 +16058,7 @@ export declare class FilterButtonComponent {
16025
16058
  */
16026
16059
  lockPosition: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
16027
16060
  expandedLevel: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
16028
- protected variant: import("@angular/core").WritableSignal<"none" | "primary" | "secondary" | "light-accent" | "accent" | "tertiary" | null | undefined>;
16061
+ protected variant: import("@angular/core").WritableSignal<"primary" | "secondary" | "none" | "light-accent" | "accent" | "tertiary" | null | undefined>;
16029
16062
  protected filter: import("@angular/core").WritableSignal<CFilterEx>;
16030
16063
  /** Unique id wiring the trigger's `popovertarget` to the `<div popover>` `id`. */
16031
16064
  protected readonly popoverId: string;
@@ -16069,7 +16102,7 @@ export declare class FilterButtonComponent {
16069
16102
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
16070
16103
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
16071
16104
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
16072
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
16105
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
16073
16106
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
16074
16107
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
16075
16108
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -16882,7 +16915,7 @@ export declare class MoreButtonComponent {
16882
16915
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
16883
16916
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
16884
16917
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
16885
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
16918
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
16886
16919
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
16887
16920
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
16888
16921
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -17516,7 +17549,7 @@ export declare class FiltersBarComponent {
17516
17549
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
17517
17550
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
17518
17551
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
17519
- aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
17552
+ aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
17520
17553
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
17521
17554
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
17522
17555
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -18666,6 +18699,9 @@ export declare class SettingsDialogComponent {
18666
18699
  labelKey: string;
18667
18700
  }[];
18668
18701
  protected readonly panel: import("@angular/core").WritableSignal<SettingsPanelId>;
18702
+ /** Once the user picks a panel, the focus is theirs: the account panel stops claiming it. */
18703
+ protected readonly navigated: import("@angular/core").WritableSignal<boolean>;
18704
+ protected navigate(id: SettingsPanelId): void;
18669
18705
  /** Set when another instance is already open: this one only redirects it, then ends. */
18670
18706
  protected readonly duplicate: boolean;
18671
18707
  constructor();
@@ -18682,6 +18718,18 @@ export declare const Settings: import("@sinequa/galactik").Callable<SettingsDial
18682
18718
  * mounts outside this panel's tree and would otherwise lose the scoped providers.
18683
18719
  */
18684
18720
  export declare class SettingsAccountPanelComponent {
18721
+ /**
18722
+ * Puts the focus on the first control of the profile once it is rendered. Off by default: when the
18723
+ * user reaches this panel from the navigation, the focus belongs to the navigation button they just
18724
+ * activated. The dialog turns it on only for the panel it opens on.
18725
+ *
18726
+ * The dialog itself lands the focus on its content, to be announced before Tab walks in — which
18727
+ * leaves a keyboard user a handful of Tabs (close, navigation, photo…) before the first field of
18728
+ * the profile they came to edit.
18729
+ */
18730
+ readonly focusOnOpen: import("@angular/core").InputSignal<boolean>;
18731
+ private readonly host;
18732
+ private readonly destroyRef;
18685
18733
  protected readonly principalStore: {
18686
18734
  id: import("@angular/core").Signal<string>;
18687
18735
  id2: import("@angular/core").Signal<string>;
@@ -18709,7 +18757,7 @@ export declare class SettingsAccountPanelComponent {
18709
18757
  param9: import("@angular/core").Signal<string>;
18710
18758
  param10: import("@angular/core").Signal<string>;
18711
18759
  userOverrideActive: import("@angular/core").Signal<boolean>;
18712
- state: import("@angular/core").Signal<"initial" | "loading" | "loaded" | "error">;
18760
+ state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
18713
18761
  allowUserOverride: import("@angular/core").Signal<boolean>;
18714
18762
  isOverridingUser: import("@angular/core").Signal<boolean>;
18715
18763
  initials: import("@angular/core").Signal<string>;
@@ -18752,11 +18800,18 @@ export declare class SettingsAccountPanelComponent {
18752
18800
  protected readonly username: import("@angular/core").Signal<string | null>;
18753
18801
  /** Same conditions as the profile form: feature flag, credentials auth mode, editable partition. */
18754
18802
  protected readonly allowChangePassword: import("@angular/core").Signal<boolean>;
18803
+ constructor();
18755
18804
  protected resetSettings(): void;
18756
18805
  protected overrideUser(): void;
18757
18806
  protected revertOverride(): void;
18758
18807
  static ɵfac: i0.ɵɵFactoryDeclaration<SettingsAccountPanelComponent, never>;
18759
- static ɵcmp: i0.ɵɵComponentDeclaration<SettingsAccountPanelComponent, "settings-account-panel", never, {}, {}, never, never, true, never>;
18808
+ static ɵcmp: i0.ɵɵComponentDeclaration<SettingsAccountPanelComponent, "settings-account-panel", never, {
18809
+ "focusOnOpen": {
18810
+ "alias": "focusOnOpen";
18811
+ "required": false;
18812
+ "isSignal": true;
18813
+ };
18814
+ }, {}, never, never, true, never>;
18760
18815
  }
18761
18816
  /**
18762
18817
  * Theme and language of the user interface — both applied on the spot and persisted in the user
@@ -18838,7 +18893,7 @@ export declare class UserProfileFormComponent {
18838
18893
  param9: Signal<string>;
18839
18894
  param10: Signal<string>;
18840
18895
  userOverrideActive: Signal<boolean>;
18841
- state: Signal<"initial" | "loading" | "loaded" | "error">;
18896
+ state: Signal<"error" | "initial" | "loading" | "loaded">;
18842
18897
  allowUserOverride: Signal<boolean>;
18843
18898
  isOverridingUser: Signal<boolean>;
18844
18899
  initials: Signal<string>;