@arsedizioni/ars-utils 22.5.9 → 22.5.12

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.
@@ -1,19 +1,18 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { DestroyRef, ChangeDetectorRef, Injector } from '@angular/core';
2
+ import { DestroyRef, ChangeDetectorRef } from '@angular/core';
3
3
  import { ScrollDispatcher } from '@angular/cdk/scrolling';
4
4
  import { MatExpansionPanel } from '@angular/material/expansion';
5
5
  import { MatInput } from '@angular/material/input';
6
6
  import { MatPaginator, PageEvent } from '@angular/material/paginator';
7
7
  import { MatDrawer } from '@angular/material/sidenav';
8
- import { ClipperSearchFacetsSnapshot, ClipperSearchFacet, ClipperSearchFacetGroup, ClipperService, ClipperDocumentInfo, ClipperSearchParams, ClipperQueryReferencesMode, ClipperModule, ClipperModel, ClipperSearchCalendarSnapshotMonth, ClipperSearchCalendarSnapshotResult, ClipperSelectionMode, ClipperSearchResult, ClipperSort, ClipperUserSearch, SectorInfo, ClipperUserInfo, EditDialogCompleted, ClipperContactInfo, ClipperDocumentRelevants, ClipperDocumentAnchorInfo, ClipperDocumentNote, EditDialogData } from '@arsedizioni/ars-utils/clipper.common';
9
- import { BroadcastService, DateInterval, ThemeService, ScreenService, SelectableModel, NameValueItem, INode, ThemeType } from '@arsedizioni/ars-utils/core';
8
+ import { ClipperSearchFacetsSnapshot, ClipperSearchFacet, ClipperSearchFacetGroup, ClipperService, ClipperDocumentInfo, ClipperSearchParams, ClipperQueryReferencesMode, ClipperModule, ClipperModel, ClipperSearchCalendarSnapshotMonth, ClipperSearchCalendarSnapshotResult, ClipperSelectionMode, ClipperSearchResult, ClipperSort, ClipperUserSearch, SectorInfo, ClipperUserInfo, ClipperDocumentRelevants, ClipperDocumentAnchorInfo } from '@arsedizioni/ars-utils/clipper.common';
9
+ import { BroadcastService, DateInterval, ThemeType, ThemeService, ScreenService, SelectableModel, NameValueItem, INode } from '@arsedizioni/ars-utils/core';
10
10
  import { CalendarEmptyHeader, ButtonSelectorComponent, ChipsSelectorComponent } from '@arsedizioni/ars-utils/ui.controls';
11
11
  import { BreakpointObserver } from '@angular/cdk/layout';
12
12
  import { Clipboard } from '@angular/cdk/clipboard';
13
13
  import { ApplicationDialogService } from '@arsedizioni/ars-utils/ui.application';
14
14
  import { SendToPopulateData } from '@arsedizioni/ars-utils/ui';
15
15
  import { MatCalendar, MatCalendarCellClassFunction } from '@angular/material/datepicker';
16
- import { NgForm } from '@angular/forms';
17
16
  import { MatSelectionList } from '@angular/material/list';
18
17
  import { MatMenuTrigger, MatMenu } from '@angular/material/menu';
19
18
 
@@ -79,8 +78,6 @@ declare class ClipperDocumentManager {
79
78
  readonly clipperService: ClipperService;
80
79
  protected readonly broadcastService: BroadcastService;
81
80
  protected readonly dialogService: ApplicationDialogService;
82
- protected readonly canUseArchive: _angular_core.WritableSignal<boolean>;
83
- protected readonly canUseNotes: _angular_core.WritableSignal<boolean>;
84
81
  protected readonly canHandleTooManyResults: _angular_core.WritableSignal<boolean>;
85
82
  protected readonly canPopulateContacts: _angular_core.WritableSignal<boolean>;
86
83
  /**
@@ -100,16 +97,6 @@ declare class ClipperDocumentManager {
100
97
  * @param item - The document whose deadline to export.
101
98
  */
102
99
  exportDeadline(item: ClipperDocumentInfo): void;
103
- /**
104
- * Sends a broadcast message to add the given documents to the archive.
105
- * @param items - The list of documents to archive.
106
- */
107
- addToArchive(items: ClipperDocumentInfo[]): void;
108
- /**
109
- * Sends a broadcast message to create a new calendar deadline from the given document.
110
- * @param item - The document to add to the calendar.
111
- */
112
- addToCalendar(item: ClipperDocumentInfo): void;
113
100
  /**
114
101
  * Sends a broadcast message to add the given documents to the working-documents set.
115
102
  * @param items - The list of documents to add.
@@ -120,11 +107,6 @@ declare class ClipperDocumentManager {
120
107
  * @param items - The list of documents to add.
121
108
  */
122
109
  addItemsToBag(items: ClipperDocumentInfo[]): void;
123
- /**
124
- * Sends a broadcast message to add custom notes to the given document.
125
- * @param item - The document to add notes to.
126
- */
127
- addItemNotes(item: ClipperDocumentInfo): void;
128
110
  /**
129
111
  * Copies the document's metadata (ID, titles, number, date, origin) as a tab-separated string to the clipboard.
130
112
  * @param item - The document whose metadata to copy.
@@ -275,6 +257,49 @@ declare class ClipperSearchCalendarComponent {
275
257
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperSearchCalendarComponent, "clipper-search-calendar", never, { "canFilter": { "alias": "canFilter"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
276
258
  }
277
259
 
260
+ /**
261
+ * Opens the Clipper document viewer.
262
+ *
263
+ * It used to be a static method taking an `Injector` and resolving its dependencies through
264
+ * `runInInjectionContext`. That is the escape hatch for code that cannot do DI, and both callers
265
+ * here are components — they were injecting an `Injector` for the sole purpose of handing it over.
266
+ * As a service the dependencies are resolved at field level, which also removes a trap: the
267
+ * asynchronous continuation after the dynamic `import()` is outside the injection context, so an
268
+ * `inject()` added in there would have failed at runtime.
269
+ */
270
+ declare class ClipperDocumentUtilsService {
271
+ private readonly dialogService;
272
+ private readonly clipperService;
273
+ /**
274
+ * Opens the Clipper document viewer dialog for the given document.
275
+ * @param documentId - The ID of the document to open.
276
+ * @param query - The search query string used for term highlighting.
277
+ * @param queryChunks - Pipe-separated highlight chunks (e.g. "|1|2|3...").
278
+ * @param selectionMode - The Clipper selection mode to activate inside the viewer.
279
+ * @param selectableModules - The list of Clipper modules available for selection.
280
+ * @param theme - The UI theme to apply. Defaults to the system theme.
281
+ * @param canHandleTooManyResults - When `true`, the component handles oversized result sets.
282
+ * @param replaceUrl - When provided, after the dialog closes the method calls `window.close()`
283
+ * if the page was opened by another window, or navigates to this URL otherwise.
284
+ * @returns void
285
+ */
286
+ openDocument(documentId: string, query?: string, queryChunks?: string, selectionMode?: ClipperSelectionMode, selectableModules?: ClipperModule[], theme?: ThemeType, canHandleTooManyResults?: boolean, replaceUrl?: string): void;
287
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClipperDocumentUtilsService, never>;
288
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ClipperDocumentUtilsService>;
289
+ }
290
+ /**
291
+ * Pure helpers on document data. Deliberately NOT a service: there is nothing to inject, and a
292
+ * string function that needs an injector to be called is a function nobody can call from a test.
293
+ */
294
+ declare class ClipperDocumentsUtils {
295
+ /**
296
+ * Extracts the display title from a full document title by stripping any trailing `[...]` suffix.
297
+ * @param title - The full document title, which may contain a bracketed qualifier.
298
+ * @returns The portion of the title before the first `[`, or the original title when no `[` is present.
299
+ */
300
+ static parseDocumentTitle(title: string): string;
301
+ }
302
+
278
303
  declare class ClipperSearchResultManager extends ClipperDocumentManager {
279
304
  readonly paginator: _angular_core.Signal<MatPaginator>;
280
305
  readonly facets: _angular_core.Signal<ClipperSearchFacetsComponent>;
@@ -282,7 +307,7 @@ declare class ClipperSearchResultManager extends ClipperDocumentManager {
282
307
  protected readonly destroyRef: DestroyRef;
283
308
  protected readonly changeDetector: ChangeDetectorRef;
284
309
  protected readonly breakpointObserver: BreakpointObserver;
285
- protected readonly injector: Injector;
310
+ protected readonly documentUtils: ClipperDocumentUtilsService;
286
311
  protected readonly themeService: ThemeService;
287
312
  readonly screenService: ScreenService;
288
313
  selection: SelectableModel<ClipperDocumentInfo, string> | undefined;
@@ -748,56 +773,6 @@ declare class ClipperBrowserDialogComponent {
748
773
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperBrowserDialogComponent, "ng-component", never, {}, {}, never, never, true, never>;
749
774
  }
750
775
 
751
- declare class ClipperContactEditComponent {
752
- private clipperService;
753
- private dialogService;
754
- private dialogRef;
755
- private dialogData;
756
- protected readonly f: _angular_core.Signal<NgForm>;
757
- readonly done: _angular_core.OutputEmitterRef<EditDialogCompleted<ClipperContactInfo>>;
758
- protected readonly dialogTitle: string;
759
- protected readonly isNew: _angular_core.WritableSignal<boolean>;
760
- protected item: ClipperContactInfo;
761
- protected readonly availableTeams: _angular_core.WritableSignal<NameValueItem<string>[]>;
762
- protected selectedTeam: NameValueItem<string>;
763
- constructor();
764
- /**
765
- * Loads the list of available teams from the server and populates the team selector.
766
- * Pre-selects the team that matches the current contact's team id, falling back to 'Personale'.
767
- */
768
- private loadTeams;
769
- /**
770
- * Persists the current contact to the server.
771
- * Closes the dialog without saving when editing an existing contact whose form is unchanged.
772
- */
773
- protected save(): void;
774
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClipperContactEditComponent, never>;
775
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperContactEditComponent, "ng-component", never, {}, { "done": "done"; }, never, never, true, never>;
776
- }
777
-
778
- declare class ClipperContactsSelector {
779
- /**
780
- * Builds an HTML string representing a list of email addresses separated by line breaks.
781
- * @param emails - A semicolon-separated string of email addresses, or undefined.
782
- * @returns An HTML string with each address wrapped in a `<span>` tag.
783
- */
784
- private static buildEmailsHtml;
785
- /**
786
- * Builds the HTML row template used to display a contact inside the selection dialog.
787
- * @param item - The contact data to render.
788
- * @returns An HTML string representing the contact row.
789
- */
790
- private static buildContactTemplate;
791
- /**
792
- * Opens the contacts selection/management dialog and wires up all interaction events.
793
- * @param injector - The Angular injector used to resolve services within the dialog context.
794
- * @param canAppend - When true, the dialog allows adding new contacts.
795
- * @param canEdit - When true, the dialog allows editing and deleting contacts.
796
- * @param onSelect - Optional callback invoked with the selection result when the user confirms.
797
- */
798
- static Show(injector: Injector, canAppend?: boolean, canEdit?: boolean, onSelect?: (result: unknown) => void): void;
799
- }
800
-
801
776
  interface ClipperDocumentDialogData {
802
777
  selectionMode?: ClipperSelectionMode;
803
778
  selectableModules?: ClipperModule[];
@@ -805,8 +780,6 @@ interface ClipperDocumentDialogData {
805
780
  query?: string;
806
781
  queryChunks?: string;
807
782
  theme?: ThemeType;
808
- canUseArchive?: boolean;
809
- canUseNotes?: boolean;
810
783
  canHandleTooManyResults?: boolean;
811
784
  }
812
785
  declare class ClipperDocumentComponent extends ClipperDocumentManager {
@@ -818,7 +791,7 @@ declare class ClipperDocumentComponent extends ClipperDocumentManager {
818
791
  readonly closing: _angular_core.OutputEmitterRef<void>;
819
792
  readonly opening: _angular_core.OutputEmitterRef<string>;
820
793
  private readonly destroyRef;
821
- private readonly injector;
794
+ private readonly documentUtils;
822
795
  private readonly breakpointObserver;
823
796
  private readonly renderer;
824
797
  private rendererListener1;
@@ -972,7 +945,7 @@ declare class ClipperDocumentComponent extends ClipperDocumentManager {
972
945
  */
973
946
  open(documentId: string, query?: string, queryChunks?: string, newWindow?: boolean): void;
974
947
  /**
975
- * Opens a document inline via the {@link ClipperDocumentsUtils} helper.
948
+ * Opens a document inline via the {@link ClipperDocumentUtilsService}.
976
949
  * @param documentId - The id of the document to open.
977
950
  * @param query - Optional free-text query for highlight.
978
951
  * @param queryChunks - Optional chunk offsets for semantic highlight.
@@ -1072,9 +1045,6 @@ declare class ClipperDocumentMenuComponent {
1072
1045
  readonly isLawInForce: _angular_core.InputSignal<boolean>;
1073
1046
  readonly canPrint: _angular_core.InputSignal<boolean>;
1074
1047
  readonly canFind: _angular_core.InputSignal<boolean>;
1075
- readonly canUseCalendar: _angular_core.InputSignal<boolean>;
1076
- readonly canUseArchive: _angular_core.InputSignal<boolean>;
1077
- readonly canUseNotes: _angular_core.InputSignal<boolean>;
1078
1048
  readonly canUseAIAssistant: _angular_core.InputSignal<boolean>;
1079
1049
  protected readonly canUseAIEditor: boolean;
1080
1050
  readonly canUseRS: _angular_core.InputSignal<boolean>;
@@ -1087,13 +1057,7 @@ declare class ClipperDocumentMenuComponent {
1087
1057
  protected readonly canOpen: _angular_core.Signal<boolean>;
1088
1058
  /** `true` when at least one item can be sent by email. */
1089
1059
  protected readonly canSendByEmail: _angular_core.Signal<boolean>;
1090
- /** `true` when custom notes can be added to the single selected document. */
1091
- protected readonly canAddNotes: _angular_core.Signal<boolean>;
1092
- /** `true` when archive access is enabled and there is at least one selected item. */
1093
- protected readonly canAddToArchive: _angular_core.Signal<boolean>;
1094
- /** `true` when all selected items are deadline/alert documents and calendar is enabled. */
1095
- protected readonly canAddToCalendar: _angular_core.Signal<boolean>;
1096
- /** `true` when all selected items can be exported as an ICS calendar file. */
1060
+ /** `true` when all selected items are deadline/alert documents and can travel as an ICS file. */
1097
1061
  protected readonly canExportCalendar: _angular_core.Signal<boolean>;
1098
1062
  /** `true` when the selection contains non-Coordinamento items that can be added to working documents. */
1099
1063
  protected readonly canAddToWorkingDocuments: _angular_core.Signal<boolean>;
@@ -1155,113 +1119,7 @@ declare class ClipperDocumentMenuComponent {
1155
1119
  */
1156
1120
  protected openReferences(item: ClipperDocumentInfo | undefined, mode: number): void;
1157
1121
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClipperDocumentMenuComponent, never>;
1158
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperDocumentMenuComponent, "clipper-document-menu", never, { "useSelections": { "alias": "useSelections"; "required": false; "isSignal": true; }; "selectionSource": { "alias": "selectionSource"; "required": false; "isSignal": true; }; "parent": { "alias": "parent"; "required": true; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "isReference": { "alias": "isReference"; "required": false; "isSignal": true; }; "isReadable": { "alias": "isReadable"; "required": false; "isSignal": true; }; "isReadableModel": { "alias": "isReadableModel"; "required": false; "isSignal": true; }; "isLawInForce": { "alias": "isLawInForce"; "required": false; "isSignal": true; }; "canPrint": { "alias": "canPrint"; "required": false; "isSignal": true; }; "canFind": { "alias": "canFind"; "required": false; "isSignal": true; }; "canUseCalendar": { "alias": "canUseCalendar"; "required": false; "isSignal": true; }; "canUseArchive": { "alias": "canUseArchive"; "required": false; "isSignal": true; }; "canUseNotes": { "alias": "canUseNotes"; "required": false; "isSignal": true; }; "canUseAIAssistant": { "alias": "canUseAIAssistant"; "required": false; "isSignal": true; }; "canUseRS": { "alias": "canUseRS"; "required": false; "isSignal": true; }; "canOpenDocument": { "alias": "canOpenDocument"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1159
- }
1160
-
1161
- declare class ClipperNoteBadgeComponent {
1162
- private readonly themeService;
1163
- private readonly injector;
1164
- private readonly clipperService;
1165
- private readonly broadcastService;
1166
- private readonly dialogService;
1167
- private readonly destroyRef;
1168
- private readonly overlay;
1169
- private overlayRef;
1170
- private resizeSub;
1171
- private readonly viewContainerRef;
1172
- readonly populateContacts: _angular_core.OutputEmitterRef<SendToPopulateData>;
1173
- private readonly popupTpl;
1174
- readonly note: _angular_core.ModelSignal<ClipperDocumentNote>;
1175
- private readonly theme;
1176
- /**
1177
- * Badge background colour, blended from the note colour and the active theme.
1178
- * Recomputes automatically whenever the theme or the note colour changes.
1179
- */
1180
- protected readonly backgroundColor: _angular_core.Signal<string>;
1181
- protected readonly trackingUnopenedCount: _angular_core.Signal<number>;
1182
- protected readonly trackingOpenedCount: _angular_core.Signal<number>;
1183
- protected readonly totalTrackings: _angular_core.Signal<number>;
1184
- constructor();
1185
- /**
1186
- * Opens the note-details popup positioned near the mouse cursor.
1187
- * Stops event propagation to avoid triggering parent click handlers.
1188
- * @param event - The mouse event used to determine the popup position.
1189
- */
1190
- protected showPopup(event: MouseEvent): void;
1191
- /**
1192
- * Closes the note-details popup and cleans up overlay resources.
1193
- * @param event - Optional mouse event; when provided, propagation is stopped.
1194
- */
1195
- protected closePopup(event?: MouseEvent): void;
1196
- /**
1197
- * Opens the note-edit dialog pre-populated with the current note data.
1198
- * On confirmation, updates the model and broadcasts the change.
1199
- * Stops event propagation to avoid triggering parent click handlers.
1200
- * @param event - The mouse event that triggered the edit action.
1201
- */
1202
- protected edit(event: MouseEvent): void;
1203
- /**
1204
- * Opens a confirmation dialog and, on confirmation, deletes the note via the service.
1205
- * Broadcasts the deletion and closes the popup on success.
1206
- * Stops event propagation to avoid triggering parent click handlers.
1207
- * @param event - The mouse event that triggered the delete action.
1208
- */
1209
- protected delete(event: MouseEvent): void;
1210
- /**
1211
- * Opens the send-by-email dialog for the document linked to this note.
1212
- * On confirmation, sends a notification via the service and updates tracking data.
1213
- * Stops event propagation to avoid triggering parent click handlers.
1214
- * @param event - The mouse event that triggered the send action.
1215
- */
1216
- protected sendTo(event: MouseEvent): void;
1217
- /**
1218
- * Opens a confirmation dialog and, on confirmation, resends the email notifications
1219
- * associated with this note.
1220
- * Stops event propagation to avoid triggering parent click handlers.
1221
- * @param event - The mouse event that triggered the resend action.
1222
- * @param notifyIfNotOpen - When `true`, only recipients who have not yet opened the previous email are notified.
1223
- */
1224
- protected sendAgain(event: MouseEvent, notifyIfNotOpen: boolean): void;
1225
- /**
1226
- * Fetches the latest tracking data for the note from the server and updates the model.
1227
- * Stops event propagation to avoid triggering parent click handlers.
1228
- * @param event - The mouse event that triggered the refresh action.
1229
- */
1230
- protected refresh(event: MouseEvent): void;
1231
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClipperNoteBadgeComponent, never>;
1232
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperNoteBadgeComponent, "clipper-note-badge", never, { "note": { "alias": "note"; "required": true; "isSignal": true; }; }, { "populateContacts": "populateContacts"; "note": "noteChange"; }, never, never, true, never>;
1233
- }
1234
-
1235
- declare class ClipperNoteEditComponent {
1236
- readonly done: _angular_core.OutputEmitterRef<ClipperDocumentNote>;
1237
- private readonly dialogService;
1238
- protected readonly dialogData: EditDialogData<ClipperDocumentNote>;
1239
- protected readonly dialogTitle: _angular_core.WritableSignal<string>;
1240
- private readonly clipperService;
1241
- protected readonly colors: NameValueItem<string>[];
1242
- protected readonly isNew: _angular_core.WritableSignal<boolean>;
1243
- protected readonly availableTeams: _angular_core.WritableSignal<NameValueItem<string>[]>;
1244
- protected selectedTeam: NameValueItem<string>;
1245
- protected item: ClipperDocumentNote;
1246
- constructor();
1247
- /**
1248
- * Returns the display name for the given colour value.
1249
- * @param value - The hex/CSS colour string to look up.
1250
- * @returns The human-readable colour name, or the raw value when not found.
1251
- */
1252
- protected colorName(value: string): string;
1253
- /**
1254
- * Loads the teams available for shared-workspace notes and populates the teams dropdown.
1255
- * Pre-selects the team matching the current item's teamId, defaulting to "Personale".
1256
- */
1257
- private loadTeams;
1258
- /**
1259
- * Saves the note via the service and emits the result through the `done` output.
1260
- * For new notes, assigns the selected team before saving.
1261
- */
1262
- protected ok(): void;
1263
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClipperNoteEditComponent, never>;
1264
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperNoteEditComponent, "ng-component", never, {}, { "done": "done"; }, never, never, true, never>;
1122
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperDocumentMenuComponent, "clipper-document-menu", never, { "useSelections": { "alias": "useSelections"; "required": false; "isSignal": true; }; "selectionSource": { "alias": "selectionSource"; "required": false; "isSignal": true; }; "parent": { "alias": "parent"; "required": true; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "isReference": { "alias": "isReference"; "required": false; "isSignal": true; }; "isReadable": { "alias": "isReadable"; "required": false; "isSignal": true; }; "isReadableModel": { "alias": "isReadableModel"; "required": false; "isSignal": true; }; "isLawInForce": { "alias": "isLawInForce"; "required": false; "isSignal": true; }; "canPrint": { "alias": "canPrint"; "required": false; "isSignal": true; }; "canFind": { "alias": "canFind"; "required": false; "isSignal": true; }; "canUseAIAssistant": { "alias": "canUseAIAssistant"; "required": false; "isSignal": true; }; "canUseRS": { "alias": "canUseRS"; "required": false; "isSignal": true; }; "canOpenDocument": { "alias": "canOpenDocument"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1265
1123
  }
1266
1124
 
1267
1125
  interface ClipperReferencesDialogData {
@@ -1270,7 +1128,6 @@ interface ClipperReferencesDialogData {
1270
1128
  anchorTitle?: string;
1271
1129
  documentId: string;
1272
1130
  model: number;
1273
- canUseArchive?: boolean;
1274
1131
  canHandleTooManyResults?: boolean;
1275
1132
  }
1276
1133
  interface ClipperReferenceDialogResult {
@@ -1440,30 +1297,5 @@ declare class ClipperSearchResultItemComponent {
1440
1297
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClipperSearchResultItemComponent, "clipper-search-result-item", never, { "parent": { "alias": "parent"; "required": true; "isSignal": true; }; "item": { "alias": "item"; "required": true; "isSignal": true; }; "actions": { "alias": "actions"; "required": true; "isSignal": true; }; "tileNoPictureUrl": { "alias": "tileNoPictureUrl"; "required": false; "isSignal": true; }; "tilePictureUrl": { "alias": "tilePictureUrl"; "required": false; "isSignal": true; }; "isSelectable": { "alias": "isSelectable"; "required": false; "isSignal": true; }; "isReadable": { "alias": "isReadable"; "required": false; "isSignal": true; }; "isReadableModel": { "alias": "isReadableModel"; "required": false; "isSignal": true; }; "displayModifiedTitle": { "alias": "displayModifiedTitle"; "required": false; "isSignal": true; }; "displayModelName": { "alias": "displayModelName"; "required": false; "isSignal": true; }; "displayDate": { "alias": "displayDate"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; }, { "item": "itemChange"; }, never, never, true, never>;
1441
1298
  }
1442
1299
 
1443
- declare class ClipperDocumentsUtils {
1444
- /**
1445
- * Opens the Clipper document viewer dialog for the given document.
1446
- * @param injector - The Angular injector used to resolve `DialogService` and `ClipperService`.
1447
- * @param documentId - The ID of the document to open.
1448
- * @param query - The search query string used for term highlighting.
1449
- * @param queryChunks - Pipe-separated highlight chunks (e.g. "|1|2|3...").
1450
- * @param selectionMode - The Clipper selection mode to activate inside the viewer.
1451
- * @param selectableModules - The list of Clipper modules available for selection.
1452
- * @param theme - The UI theme to apply. Defaults to the system theme.
1453
- * @param canUseArchive - When `true`, archive access is enabled inside the viewer.
1454
- * @param canUseNotes - When `true`, notes access is enabled inside the viewer.
1455
- * @param canHandleTooManyResults - When `true`, the component handles oversized result sets.
1456
- * @param replaceUrl - When provided, after the dialog closes the method calls `window.close()`
1457
- * if the page was opened by another window, or navigates to this URL otherwise.
1458
- */
1459
- static openDocument(injector: Injector, documentId: string, query?: string, queryChunks?: string, selectionMode?: ClipperSelectionMode, selectableModules?: ClipperModule[], theme?: ThemeType, canUseArchive?: boolean, canUseNotes?: boolean, canHandleTooManyResults?: boolean, replaceUrl?: string): void;
1460
- /**
1461
- * Extracts the display title from a full document title by stripping any trailing `[...]` suffix.
1462
- * @param title - The full document title, which may contain a bracketed qualifier.
1463
- * @returns The portion of the title before the first `[`, or the original title when no `[` is present.
1464
- */
1465
- static parseDocumentTitle(title: string): string;
1466
- }
1467
-
1468
- export { ClipperBrowserComponent, ClipperBrowserDialogComponent, ClipperContactEditComponent, ClipperContactsSelector, ClipperDocumentComponent, ClipperDocumentIndexComponent, ClipperDocumentManager, ClipperDocumentMenuComponent, ClipperDocumentsUtils, ClipperNoteBadgeComponent, ClipperNoteEditComponent, ClipperReferencesComponent, ClipperSearchCalendarComponent, ClipperSearchFacetsComponent, ClipperSearchFreeTextHelpComponent, ClipperSearchFreeTextQueryBuilderComponent, ClipperSearchResultItemComponent, ClipperSearchResultItemDisplayMode, ClipperSearchResultManager };
1300
+ export { ClipperBrowserComponent, ClipperBrowserDialogComponent, ClipperDocumentComponent, ClipperDocumentIndexComponent, ClipperDocumentManager, ClipperDocumentMenuComponent, ClipperDocumentUtilsService, ClipperDocumentsUtils, ClipperReferencesComponent, ClipperSearchCalendarComponent, ClipperSearchFacetsComponent, ClipperSearchFreeTextHelpComponent, ClipperSearchFreeTextQueryBuilderComponent, ClipperSearchResultItemComponent, ClipperSearchResultItemDisplayMode, ClipperSearchResultManager };
1469
1301
  export type { ClipperBrowserDialogData, ClipperDocumentDialogData, ClipperDocumentIndexDialogData, ClipperDocumentIndexDialogResult, ClipperReferenceDialogResult, ClipperReferencesDialogData, SearchFreeTextQueryParams };