@sinequa/atomic-angular 2.7.0 → 2.8.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.7.0",
3
+ "version": "2.8.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -2595,7 +2595,7 @@ export declare class WorkspaceMentionNew implements AfterContentInit {
2595
2595
  /** The button's colour scheme. */
2596
2596
  readonly scheme: import("@angular/core").InputSignal<"default" | "neutral" | null | undefined>;
2597
2597
  /** The button's size. */
2598
- readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "small" | "medium" | "large" | "xs" | "xsmall" | null | undefined>;
2598
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "small" | "xs" | "xsmall" | "medium" | "large" | null | undefined>;
2599
2599
  private readonly mention;
2600
2600
  private readonly slot;
2601
2601
  /** Whether the host put its own content inside: the icon and the label then stay out. */
@@ -1,7 +1,7 @@
1
1
  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
- 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, getRelativeDate } from "@sinequa/atomic";
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
5
  import { CanActivateFn, 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 } from "@sinequa/galactik";
@@ -10,7 +10,6 @@ import { BehaviorSubject, Observable, Subject } from "rxjs";
10
10
  import { FieldTree } from "@angular/forms/signals";
11
11
  import MarkdownIt from "markdown-it";
12
12
  import { Placement } from "@floating-ui/dom";
13
- import { CdkDragDrop } from "@angular/cdk/drag-drop";
14
13
  import { Options as Options$1 } from "vanilla-calendar-pro";
15
14
  import { TreeItem } from "@angular/aria/tree";
16
15
  import { Toolbar } from "@angular/aria/toolbar";
@@ -1062,7 +1061,7 @@ export declare class MetadataComponent {
1062
1061
  }>;
1063
1062
  class: import("@angular/core").InputSignal<string | undefined>;
1064
1063
  variant: import("@angular/core").InputSignal<"primary" | "secondary" | null | undefined>;
1065
- size: import("@angular/core").InputSignal<"small" | "medium" | "xs" | "sm" | "md" | "xsmall" | null | undefined>;
1064
+ size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | null | undefined>;
1066
1065
  scheme: import("@angular/core").InputSignal<"error" | "sage" | "success" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "warning" | "info" | null | undefined>;
1067
1066
  metadata: import("@angular/core").InputSignal<(string & Record<never, never>) | KeyOf<Article>>;
1068
1067
  article: import("@angular/core").InputSignal<Partial<Article> | (string & Record<never, never>)>;
@@ -11095,20 +11094,76 @@ export declare class ArticleSimilarDocumentsTabPanel {
11095
11094
  "selected": "selected";
11096
11095
  }, never, never, true, never>;
11097
11096
  }
11097
+ /** One piece of the summary: a translation key (translated by the template's pipe) or a ready text. */
11098
+ interface AlertSummaryPart {
11099
+ key?: string;
11100
+ text?: string;
11101
+ }
11102
+ /**
11103
+ * Second line of an alert row: what the alert does, so the list answers "when will I be notified?" without
11104
+ * opening the dialog — « Daily · 09:00 · Mon–Fri ». A suspended alert starts with « Paused ».
11105
+ *
11106
+ * Returns the pieces rather than a sentence: the labels live in the `alerts` translation scope, which loads on
11107
+ * demand, and only the template's `transloco` pipe waits for it. The caller joins the pieces with " · ".
11108
+ *
11109
+ * Tolerant of an alert that lacks `times` or `days`: the piece is left out rather than shown empty.
11110
+ */
11111
+ declare function alertSummary(lang: string, alert: Alert): AlertSummaryPart[];
11112
+ /**
11113
+ * The user's alerts: one row per alert (name, when it fires, an on/off switch), "Create" in the header.
11114
+ *
11115
+ * The rows are reordered by dragging them or with Alt + ↑ / ↓ on a focused row — the gesture is galactik's
11116
+ * `[sortable]`, this component only saves the order it reports. A deletion is applied at once on screen and sent to
11117
+ * the server after `UNDO_DELAY`, unless the user undoes it; it is also sent when the component goes away (the
11118
+ * popover closes).
11119
+ */
11098
11120
  export declare class AlertsComponent {
11099
11121
  floating: PopoverDirective | null;
11100
11122
  private readonly userSettingsStore;
11101
11123
  private readonly injector;
11102
- reordering: import("@angular/core").WritableSignal<boolean>;
11103
- protected alerts: import("@angular/core").Signal<Alert[]>;
11104
- tmpAlerts: Alert[];
11124
+ private readonly transloco;
11125
+ private readonly lang;
11105
11126
  query: Query;
11127
+ protected readonly alerts: import("@angular/core").Signal<Alert[]>;
11128
+ /**
11129
+ * The order on screen. A copy of the store's list (the store edits its own array in place), and ahead of it
11130
+ * while a new order is being saved: a drop shows its result at once instead of after the round trip.
11131
+ */
11132
+ private readonly order;
11133
+ /** Alerts removed from the screen: awaiting the end of the undo delay, or being deleted on the server. */
11134
+ private readonly hidden;
11135
+ /** The alert whose deletion can still be undone. */
11136
+ protected readonly pendingDeletion: import("@angular/core").WritableSignal<Alert | undefined>;
11137
+ private undoTimer;
11138
+ /** The alerts to show, in order — what `[sortable]` reorders. */
11139
+ protected readonly visible: import("@angular/core").Signal<Alert[]>;
11140
+ /** The second line of each row. */
11141
+ private readonly summaries;
11142
+ protected readonly summaryOf: (alert: Alert) => AlertSummaryPart[];
11143
+ /** What a screen reader hears after a keyboard move. */
11144
+ protected readonly announceMove: (alert: Alert, position: number, total: number) => string;
11106
11145
  constructor();
11107
- onClick(index: number): void;
11146
+ /** A click on the switch or the delete button is theirs, not a request to edit the alert. */
11147
+ protected onRowClick(event: Event, alert: Alert): void;
11148
+ /** Enter edits the row only when the row itself has the focus — not when it comes from the switch or the button. */
11149
+ protected onRowEnter(event: Event, alert: Alert): void;
11150
+ private edit;
11108
11151
  createAlert(): void;
11109
- deleteAlert(event: Event, index: number): void;
11110
- reorder(): Promise<void>;
11111
- dropped(drop: CdkDragDrop<Alert[]>): void;
11152
+ /**
11153
+ * What each switch shows while its change is being saved. The switch flips itself on a click and the store
11154
+ * only changes once the save has succeeded: dropping the entry on a failure changes the bound value back,
11155
+ * which is what puts the switch back where it was.
11156
+ */
11157
+ private readonly pendingActive;
11158
+ protected isActive(alert: Alert): boolean;
11159
+ protected toggle(alert: Alert, active: boolean): Promise<void>;
11160
+ protected deleteAlert(alert: Alert): void;
11161
+ protected undoDeletion(): void;
11162
+ /** Sends the pending deletion. The row stays hidden until the store no longer holds the alert. */
11163
+ private commitDeletion;
11164
+ private unhide;
11165
+ /** The new order of the alerts shown. An alert being deleted is not in it: it goes after them, as it is about to leave. */
11166
+ protected saveOrder(shown: Alert[]): Promise<void>;
11112
11167
  static ɵfac: i0.ɵɵFactoryDeclaration<AlertsComponent, never>;
11113
11168
  static ɵcmp: i0.ɵɵComponentDeclaration<AlertsComponent, "Alerts", never, {}, {}, never, never, true, never>;
11114
11169
  }
@@ -11212,6 +11267,10 @@ export declare class AlertDialog {
11212
11267
  readonly alert: import("@angular/core").WritableSignal<Alert | undefined>;
11213
11268
  canUpdateQuery: import("@angular/core").WritableSignal<boolean>;
11214
11269
  updateStatus: import("@angular/core").WritableSignal<"idle" | "updating" | "updated">;
11270
+ /** Why the last save failed — shown in the dialog until the next attempt. */
11271
+ protected readonly saveError: import("@angular/core").WritableSignal<{
11272
+ detail?: string;
11273
+ } | undefined>;
11215
11274
  /** Form model. Replaces the five former scalar signals. */
11216
11275
  readonly alertModel: import("@angular/core").WritableSignal<AlertFormModel>;
11217
11276
  protected readonly alertForm: FieldTree<AlertFormModel, string | number, "writable">;
@@ -11663,7 +11722,7 @@ export declare class SignedOutComponent {
11663
11722
  }
11664
11723
  export declare class BookmarkButtonComponent {
11665
11724
  variant: import("@angular/core").InputSignal<"primary" | "secondary" | "none" | "light-accent" | "accent" | "tertiary" | null | undefined>;
11666
- size: import("@angular/core").InputSignal<"small" | "medium" | "xs" | "sm" | "md" | "xsmall" | "large" | "lg" | null | undefined>;
11725
+ size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | "lg" | "large" | null | undefined>;
11667
11726
  /**
11668
11727
  * Tab index applied to the inner button.
11669
11728
  *
@@ -15985,7 +16044,7 @@ export declare class AppliedFiltersComponent {
15985
16044
  /** Chip colour scheme, passed to galactik's `tag`. */
15986
16045
  readonly scheme: import("@angular/core").InputSignal<"error" | "sage" | "success" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "warning" | "info" | null | undefined>;
15987
16046
  /** Chip size, passed to galactik's `tag`. */
15988
- readonly size: import("@angular/core").InputSignal<"small" | "medium" | "xs" | "sm" | "md" | "xsmall" | null | undefined>;
16047
+ readonly size: import("@angular/core").InputSignal<"small" | "sm" | "md" | "xs" | "xsmall" | "medium" | null | undefined>;
15989
16048
  /** Extra classes for each chip, merged by galactik's `tag`. */
15990
16049
  readonly chipClass: import("@angular/core").InputSignal<string>;
15991
16050
  /** A chip was removed. */
@@ -18623,7 +18682,7 @@ export declare class RecentSearchesComponent {
18623
18682
  }>;
18624
18683
  protected readonly transloco: TranslocoService;
18625
18684
  private readonly router;
18626
- protected getRelativeDate: typeof getRelativeDate;
18685
+ protected subtextOf: (search: SearchItem) => string | undefined;
18627
18686
  protected urlOf: (search: SearchItem) => string;
18628
18687
  protected labelOf: (search: SearchItem) => string;
18629
18688
  protected readonly range: import("@angular/core").WritableSignal<number>;
@@ -18820,7 +18879,7 @@ export declare class SavedSearchesComponent {
18820
18879
  }>;
18821
18880
  protected readonly transloco: TranslocoService;
18822
18881
  private readonly router;
18823
- protected getRelativeDate: typeof getRelativeDate;
18882
+ protected subtextOf: (search: SearchItem) => string | undefined;
18824
18883
  protected urlOf: (search: SearchItem) => string;
18825
18884
  protected labelOf: (search: SearchItem) => string;
18826
18885
  protected readonly range: import("@angular/core").WritableSignal<number>;