@arsedizioni/ars-utils 22.6.92 → 22.6.94

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.
Files changed (64) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +15 -15
  2. package/fesm2022/arsedizioni-ars-utils-clipper.ui-document.component-B9qqPb0A.mjs +1573 -0
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui-document.component-B9qqPb0A.mjs.map +1 -0
  4. package/fesm2022/{arsedizioni-ars-utils-clipper.ui-document.component-BjMnaZGf.mjs → arsedizioni-ars-utils-clipper.ui-document.component-BKjGXtXa.mjs} +5 -5
  5. package/fesm2022/{arsedizioni-ars-utils-clipper.ui-document.component-BjMnaZGf.mjs.map → arsedizioni-ars-utils-clipper.ui-document.component-BKjGXtXa.mjs.map} +1 -1
  6. package/fesm2022/arsedizioni-ars-utils-clipper.ui-references.component-CBuJnNIf.mjs +806 -0
  7. package/fesm2022/arsedizioni-ars-utils-clipper.ui-references.component-CBuJnNIf.mjs.map +1 -0
  8. package/fesm2022/{arsedizioni-ars-utils-clipper.ui-references.component-C21l0EtN.mjs → arsedizioni-ars-utils-clipper.ui-references.component-CEA_wJTS.mjs} +4 -4
  9. package/fesm2022/{arsedizioni-ars-utils-clipper.ui-references.component-C21l0EtN.mjs.map → arsedizioni-ars-utils-clipper.ui-references.component-CEA_wJTS.mjs.map} +1 -1
  10. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +38 -38
  11. package/fesm2022/arsedizioni-ars-utils-core.date.mjs +6 -6
  12. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +3 -3
  13. package/fesm2022/arsedizioni-ars-utils-core.mjs +48 -48
  14. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs +42 -42
  15. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +15 -15
  16. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +9 -9
  17. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs +6 -6
  18. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +9 -9
  19. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs +3 -3
  20. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +18 -18
  21. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +12 -12
  22. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +9 -9
  23. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +15 -15
  24. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +12 -12
  25. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +3 -3
  26. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +9 -9
  27. package/fesm2022/arsedizioni-ars-utils-ui.mjs +61 -61
  28. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +49 -7
  29. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs.map +1 -1
  30. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +6 -6
  31. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +6 -6
  32. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs +3 -3
  33. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs +9 -9
  34. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +9 -9
  35. package/package.json +1 -1
  36. package/types/arsedizioni-ars-utils-clipper.common.d.ts.map +1 -0
  37. package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1 -1
  38. package/types/arsedizioni-ars-utils-clipper.ui.d.ts.map +1 -0
  39. package/types/arsedizioni-ars-utils-core.d.ts.map +1 -0
  40. package/types/arsedizioni-ars-utils-core.date.d.ts.map +1 -0
  41. package/types/arsedizioni-ars-utils-core.markdown.d.ts.map +1 -0
  42. package/types/arsedizioni-ars-utils-core.validators.d.ts.map +1 -0
  43. package/types/arsedizioni-ars-utils-evolution.common.d.ts.map +1 -0
  44. package/types/arsedizioni-ars-utils-support.common.d.ts.map +1 -0
  45. package/types/arsedizioni-ars-utils-ui.controls.d.ts +1 -1
  46. package/types/arsedizioni-ars-utils-ui.controls.d.ts.map +1 -0
  47. package/types/arsedizioni-ars-utils-ui.controls.date.d.ts.map +1 -0
  48. package/types/arsedizioni-ars-utils-ui.controls.tree.d.ts.map +1 -0
  49. package/types/arsedizioni-ars-utils-ui.d.ts.map +1 -0
  50. package/types/arsedizioni-ars-utils-ui.dialogs.auth.d.ts.map +1 -0
  51. package/types/arsedizioni-ars-utils-ui.dialogs.d.ts.map +1 -0
  52. package/types/arsedizioni-ars-utils-ui.dialogs.prompt.d.ts.map +1 -0
  53. package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts.map +1 -0
  54. package/types/arsedizioni-ars-utils-ui.files.d.ts.map +1 -0
  55. package/types/arsedizioni-ars-utils-ui.filters.d.ts.map +1 -0
  56. package/types/arsedizioni-ars-utils-ui.help.d.ts.map +1 -0
  57. package/types/arsedizioni-ars-utils-ui.navigation.d.ts +26 -1
  58. package/types/arsedizioni-ars-utils-ui.navigation.d.ts.map +1 -0
  59. package/types/arsedizioni-ars-utils-ui.notifications.d.ts.map +1 -0
  60. package/types/arsedizioni-ars-utils-ui.oauth.d.ts.map +1 -0
  61. package/types/arsedizioni-ars-utils-ui.paginator.d.ts.map +1 -0
  62. package/types/arsedizioni-ars-utils-ui.shell.d.ts.map +1 -0
  63. package/types/arsedizioni-ars-utils-ui.tinymce.d.ts.map +1 -0
  64. package/types/arsedizioni-ars-utils.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arsedizioni-ars-utils-clipper.ui-references.component-CBuJnNIf.mjs","names":[],"sources":["../../../projects/ars-utils/clipper.ui/references/references.component.ts","../../../projects/ars-utils/clipper.ui/references/references.component.html"],"sourcesContent":["import { Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, afterNextRender, inject, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDrawer, MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ClipperDocumentInfo, ClipperQueryReferencesMode, ClipperReferencesSearchParams, ClipperSearchFacetsResult, ClipperSearchFacetsSnapshot, ClipperSearchParams, ClipperUserInfo } from '@arsedizioni/ars-utils/clipper.common';\nimport { ApiResult, SelectableModel, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { finalize } from 'rxjs/operators';\nimport { ClipperSearchResultManager } from '../search-result-manager/search-result-manager';\nimport { ClipperDocumentMenuComponent } from '../document-menu/document-menu.component';\nimport { ClipperSearchFacetsComponent } from '../search-facets/search-facets.component';\nimport { ClipperSearchResultItemComponent } from '../search-result-item/search-result-item.component';\n\n\nexport interface ClipperReferencesDialogData {\n mode?: ClipperQueryReferencesMode;\n anchor?: string;\n anchorTitle?: string;\n documentId: string;\n model: number;\n canHandleTooManyResults?: boolean;\n}\n\nexport interface ClipperReferenceDialogResult {\n documentId: string;\n}\n\n@Component({\n host: { 'Bind': SystemUtils.generateUUID() },\n templateUrl: './references.component.html',\n styleUrls: ['./references.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FlexLayoutModule,\n MatDialogTitle,\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n MatCheckboxModule,\n MatSlideToggleModule,\n MatMenuModule,\n MatBadgeModule,\n MatPaginatorModule,\n MatDialogContent,\n MatSidenavModule,\n MatProgressBarModule,\n ClipperDocumentMenuComponent,\n ClipperSearchFacetsComponent,\n ClipperSearchResultItemComponent,\n ],\n})\nexport class ClipperReferencesComponent extends ClipperSearchResultManager {\n readonly filterPane = viewChild<MatDrawer>('filterPane');\n\n private readonly dialogRef = inject(MatDialogRef<ClipperReferencesComponent>);\n protected readonly dialogData: ClipperReferencesDialogData = inject(MAT_DIALOG_DATA) ?? { mode: ClipperQueryReferencesMode.ReferencesIn };\n protected title?: string;\n protected item?: ClipperDocumentInfo;\n protected readonly user: ClipperUserInfo | undefined = this.clipperService.user;\n private _viewReady = false;\n\n constructor() {\n super();\n if (this.dialogData) {\n switch (this.dialogData.mode) {\n case ClipperQueryReferencesMode.ReferencesIn:\n this.title = \"Documenti richiamati nelle note o nel testo\";\n break;\n case ClipperQueryReferencesMode.ReferencesOut:\n this.title = \"Documenti che richiamano quello in visione\";\n break;\n case ClipperQueryReferencesMode.ChangesIn:\n this.title = \"Modifiche subite\";\n break;\n case ClipperQueryReferencesMode.ChangesOut:\n this.title = \"Modifiche apportate\";\n break;\n case ClipperQueryReferencesMode.Juris:\n this.title = \"Giurisprudenza associata\";\n break;\n }\n if (this.dialogData.anchorTitle) {\n this.title += \" - \" + this.dialogData.anchorTitle;\n }\n // Use service snapshot\n this.snapshot = this.clipperService.referencesSnapshot() ?? { searchParams: new ClipperSearchParams(), interval: \"-1\" };\n if (\n this.filterParams.mode !== this.dialogData.mode ||\n this.filterParams.id !== this.dialogData.documentId ||\n this.filterParams.anchor !== this.dialogData.anchor\n ) {\n this.filterParams = new ClipperSearchParams();\n this.filterParams.mode = this.dialogData.mode;\n this.filterParams.model = this.dialogData.model;\n this.filterParams.anchor = this.dialogData.anchor;\n this.filterParams.id = this.dialogData.documentId;\n this.filterParams.useModifierInfo = this.dialogData.mode === ClipperQueryReferencesMode.ChangesOut;\n this.filterParams.returnModifierInfo = this.dialogData.mode !== ClipperQueryReferencesMode.ChangesOut;\n this.clipperService.referencesSnapshot.set(this.snapshot);\n }\n }\n\n // Initialize selection\n this.selection = new SelectableModel<ClipperDocumentInfo, string>(true, 'documentId');\n\n // Observe layout changes\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result: any) => {\n if (!this._viewReady) return; // DOM not ready yet\n for (const query of Object.keys(result.breakpoints)) {\n if (result.breakpoints[query]) {\n this.handleFilterPaneVisibility();\n }\n }\n });\n\n // Run view-dependent initialization after the first render.\n afterNextRender(() => {\n this._viewReady = true;\n this.handleFilterPaneVisibility();\n const filterPane = this.filterPane();\n if (filterPane) {\n filterPane.openedChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(opened => {\n if (filterPane.mode === 'over') {\n this.filterPaneHasBackdrop.set(opened);\n }\n });\n }\n const facets = this.facets();\n if (facets) {\n facets.changed\n .subscribe((value: ClipperSearchFacetsSnapshot) => {\n this.snapshot.facets = value;\n this.fetch(true);\n });\n }\n this.fetch(true);\n this.restoreFacets();\n this.changeDetector.markForCheck();\n });\n }\n\n\n /**\n * Toggles the filter pane open/closed state.\n */\n protected toggleFilterPane(): void {\n this.filterPaneClosed.set(!this.filterPaneClosed());\n this.filterPane()?.toggle();\n }\n\n\n\n /**\n * Adjusts the filter pane mode (side vs. overlay) and backdrop based on the current breakpoint.\n */\n private handleFilterPaneVisibility(): void {\n const filterPane = this.filterPane();\n if (filterPane) {\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\n if (filterPane.opened) {\n filterPane.close();\n }\n filterPane.mode = 'over';\n filterPane.disableClose = false;\n this.filterPaneHasBackdrop.set(filterPane.opened);\n } else {\n if (!this.hasFacets()) {\n filterPane.close();\n } else if (!filterPane.opened && !this.filterPaneClosed()) {\n filterPane.open();\n } else if (filterPane.opened && this.filterPaneClosed()) {\n filterPane.close();\n }\n filterPane.mode = 'side';\n filterPane.disableClose = true;\n this.filterPaneHasBackdrop.set(false);\n }\n }\n }\n\n\n /**\n * Closes the references dialog without returning a result.\n */\n close(): void {\n this.dialogRef.close();\n }\n\n\n\n /**\n * Sends document links by email for the given item or, when omitted, for all selected items.\n * @param item - The specific document to send, or `undefined` to use the current selection.\n */\n sendTo(item?: ClipperDocumentInfo): void {\n this.sendItemsTo(item ? [item] : this.selection?.all);\n }\n\n\n\n /**\n * Builds the search parameters for the next fetch call.\n * @param newSearch - When `true`, resets the pagination offset to 0.\n * @returns A cloned and enriched `ClipperSearchParams` ready to be sent to the API.\n */\n private prepareFetch(newSearch: boolean = false): ClipperSearchParams {\n const newParams = SystemUtils.clone(this.filterParams) as ClipperSearchParams;\n newParams.count = 15;\n newParams.useModifierInfo =\n newParams.mode === ClipperQueryReferencesMode.ChangesOut;\n newParams.returnModifierInfo =\n newParams.mode !== ClipperQueryReferencesMode.ChangesOut;\n // New search, reset paging\n if (newSearch) {\n newParams.first = 0;\n this.filterParams.first = 0;\n }\n\n // Apply facets\n if (this.snapshot.facets?.fromDate) {\n newParams.fromDate = this.snapshot.facets?.fromDate;\n newParams.toDate = this.snapshot.facets?.toDate;\n newParams.year = this.snapshot.facets?.fromDate.getFullYear();\n }\n if (this.snapshot.facets?.sector) {\n newParams.sector = this.snapshot.facets?.sector;\n }\n if (this.snapshot.facets?.type) {\n newParams.type = this.snapshot.facets?.type;\n }\n if (this.snapshot.facets?.author) {\n newParams.author = this.snapshot.facets?.author;\n }\n return newParams;\n }\n\n /**\n * Maps a generic `ClipperSearchParams` to the references-specific API parameter shape.\n * @param params - The base search parameters to convert.\n * @returns A `ClipperReferencesSearchParams` object ready for the references endpoint.\n */\n private toReferencesSearchParams(params: ClipperSearchParams): ClipperReferencesSearchParams {\n return {\n documentId: params.id,\n year: params.year,\n sector: params.sector,\n author: params.author,\n anchor: params.anchor,\n model: params.model?.toString() ?? null,\n mode: params.mode,\n excludeTextReferences: params.excludeTextReferences,\n excludeNotesReferences: params.excludeNotesReferences,\n returnModifierInfo: params.returnModifierInfo,\n useModifierInfo: params.useModifierInfo,\n count: 15,\n first: params.first ?? 0\n }\n }\n\n /**\n * Executes the references search and updates the result snapshot.\n * @param newSearch - When `true`, resets pagination and reloads facets. Defaults to `false`.\n */\n fetch(newSearch: boolean = false): void {\n if (!this.clipperService.loggedIn()) return;\n this.dialogService.busy('Ricerca in corso...');\n const searchParams = this.prepareFetch(newSearch);\n if (searchParams) {\n this.clipperService.documents.references(this.toReferencesSearchParams(searchParams))\n .pipe(finalize(() => this.dialogService.clearBusy()))\n .subscribe(r => {\n if (!r.success) this.dialogService.error(r.message);\n else {\n this.prepareResults(r.value, newSearch);\n\n // Handle facets\n if (this.snapshot.total > 0) {\n if (newSearch)\n // Update facets\n this.fetchFacets(searchParams);\n } else {\n this.hideFacets();\n }\n\n if (newSearch) {\n const paginator = this.paginator();\n if (paginator) paginator.pageIndex = 0;\n }\n\n this.scroll(0);\n }\n });\n }\n }\n\n /**\n * Navigates to the next result page.\n * @param e - The `PageEvent` emitted by the paginator with the new page index and size.\n */\n fetchMore(e: PageEvent): void {\n const first = e.pageIndex * (this.filterParams.count ?? 15);\n this.filterParams.first = first;\n this.fetch();\n }\n\n /**\n * Loads available facets for the current search parameters and updates the filter pane.\n * @param params - The search parameters used to request facets from the API.\n */\n fetchFacets(params: ClipperSearchParams): void {\n if (!this.clipperService.loggedIn() || !params) return;\n if (!this.snapshot.facets || this.snapshot.facets?.hasMoreFacets) {\n this.filterBusy.set(true);\n this.clipperService.documents.referencesFacets(this.toReferencesSearchParams(params))\n .subscribe({\n next: (r: ApiResult<ClipperSearchFacetsResult>) => {\n if (r.success) {\n let hasFacets = (r.value.facets?.length ?? 0) > 0;\n if (r.value.facets) {\n const facets = this.facets();\n facets?.update(r.value.facets, r.value.interval);\n if (facets && this.snapshot) {\n hasFacets = facets.hasFacets();\n this.snapshot.facets = facets.save();\n this.snapshot.facets.hasTooManyResults = (this.snapshot?.total ?? 0) >= 1000;\n }\n }\n this.hasFacets.set(hasFacets);\n this.handleFilterPaneVisibility();\n }\n },\n complete: () => {\n this.filterBusy.set(false);\n }\n });\n }\n }\n\n /**\n * Hides the facet filter pane and resets all applied facet filters.\n */\n protected hideFacets(): void {\n this.hasFacets.set(false);\n this.facets()?.reset();\n this.filterPane().close();\n this.filterPaneClosed.set(false);\n }\n /**\n * Restores previously saved facets from the snapshot and adjusts the filter pane accordingly.\n */\n restoreFacets(): void {\n if (this.snapshot.facets) {\n this.facets().restore(this.snapshot.facets);\n this.handleFilterPaneVisibility();\n }\n }\n\n /**\n * Closes the dialog and navigates to the selected document.\n * @param documentId - The ID of the document to open.\n */\n override open(documentId?: string): void {\n if (documentId) this.dialogRef.close({ documentId });\n }\n\n /**\n * Returns the CSS class reflecting the item's validity state.\n * @param item - The document to evaluate.\n * @returns A CSS class name string, or `undefined` when no special state applies.\n */\n override getItemStateCssClass(item: ClipperDocumentInfo): string | undefined {\n if (item.isExpired) return 'expired-bg';\n return undefined;\n }\n\n /**\n * Returns the tooltip text explaining the item's current validity state.\n * @param item - The document to evaluate.\n * @returns A human-readable state description, or an empty string when no special state applies.\n */\n override getItemStateTooltip(item: ClipperDocumentInfo): string {\n if (item.isExpired) return 'Non più vigente';\n return '';\n }\n}\n","<div class=\"clipper-references-fixed\">\n <div class=\"dialog-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap='10px' fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>{{title}} </div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n (click)=\"close()\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n @if (dialogData.mode > 0 || selection?.hasValue() || (snapshot && snapshot.facets?.hasFacets && filterPane &&\n (!filterPane.opened || filterPaneClosed()))) {\n <div class=\"dialog-toolbar\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n <div fxFlex=\"*\">\n @if (dialogData.mode === 1) {\n <mat-slide-toggle [checked]=\"filterParams.excludeTextReferences === true\"\n (change)=\"filterParams.excludeTextReferences = $event.checked; fetch(true)\">\n &nbsp; Mostra solo se citati nelle note\n </mat-slide-toggle>\n } @else if (dialogData.mode == 2) {\n <mat-slide-toggle [checked]=\"filterParams.excludeNotesReferences === true\"\n (change)=\"filterParams.excludeNotesReferences = $event.checked; fetch(true)\">\n &nbsp; Mostra solo se citano nel testo il documento\n </mat-slide-toggle>\n }\n </div>\n <div fxLayoutAlign=\"end\">\n @if (selection?.hasValue()) {\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\n [disabled]=\"!snapshot.total\" [matBadge]=\"selection?.all?.length\">\n <mat-icon>checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <clipper-document-menu [parent]=\"this\" selectionSource=\"selection\" [useSelections]=\"true\"\n [isReadable]=\"false\" [isReference]=\"true\" [canUseAIAssistant]=\"user?.hasAIAssistant ?? false\">\n </clipper-document-menu>\n </mat-menu>\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed())) {\n <div fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\" aria-label=\"'Affina ricerca'\"\n (click)=\"toggleFilterPane()\">\n <mat-icon>right_panel_open</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n</div>\n<mat-dialog-content id=\"clipper-references-scrollable\">\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"filterPaneHasBackdrop()\">\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\n @if (filterBusy()) {\n <div class=\"overlay\"></div>\n }\n <div fxLayout=\"column\" fxFill>\n <div fxFlex=\"6px\">\n @if (filterBusy()) {\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\n </mat-progress-bar>\n }\n </div>\n <div fxFlex=\"78px\" class=\"title-container-with-loader\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n <div class=\"title\">Affina ricerca</div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <button mat-icon-button (click)=\"toggleFilterPane()\"\n matTooltip=\"Nascondi\"><mat-icon>right_panel_close</mat-icon></button>\n </div>\n </div>\n </div>\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\n <clipper-search-facets #facets [handleTooManyResults]=\"dialogData.canHandleTooManyResults\" ></clipper-search-facets>\n </div>\n </div>\n </mat-drawer>\n <div fxLayout=\"column\" fxFill>\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\n @if (!snapshot.total) {\n <div class=\"message-container\">\n <p class=\"message\"><b>Nessun elemento da visualizzare.</b></p>\n </div>\n } @else {\n <div>\n @for (item of snapshot.items; track $index; let i = $index) {\n @if (item.group) {\n <div class=\"items-group-title\">\n <div [class.group-spaced]=\"i > 0\">{{item.group}}</div>\n </div>\n }\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [isReadable]=\"false\"\n [actions]=\"contextMenu\"></clipper-search-result-item>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [isReadable]=\"false\" [isReference]=\"true\"\n [canUseAIAssistant]=\"user?.hasAIAssistant ?? false\">\n </clipper-document-menu>\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n <!-- footer -->\n @if ((snapshot?.total ?? 0) > 0) {\n <div class=\"items-footer\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between center\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend expired-bg \"></div>\n non più vigente\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\" [class.wide]=\"filterPane?.opened\">\n <div fxLayout=\"row\">\n <mat-paginator fxFlexAlign=\"center\" #paginator class=\"paginator\" [hidePageSize]=\"true\"\n [length]=\"snapshot?.total ?? 0\" [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\"\n (page)=\"fetchMore($event)\">\n </mat-paginator>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </mat-drawer-container>\n</mat-dialog-content>"],"mappings":"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"}
@@ -236,7 +236,7 @@ var ClipperReferencesComponent = class ClipperReferencesComponent extends Clippe
236
236
  static {
237
237
  this.ɵfac = i0.ɵɵngDeclareFactory({
238
238
  minVersion: "12.0.0",
239
- version: "22.2.1",
239
+ version: "22.2.2",
240
240
  ngImport: i0,
241
241
  type: ClipperReferencesComponent,
242
242
  deps: [],
@@ -246,7 +246,7 @@ var ClipperReferencesComponent = class ClipperReferencesComponent extends Clippe
246
246
  static {
247
247
  this.ɵcmp = i0.ɵɵngDeclareComponent({
248
248
  minVersion: "17.0.0",
249
- version: "22.2.1",
249
+ version: "22.2.2",
250
250
  type: ClipperReferencesComponent,
251
251
  isStandalone: true,
252
252
  selector: "ng-component",
@@ -676,7 +676,7 @@ var ClipperReferencesComponent = class ClipperReferencesComponent extends Clippe
676
676
  };
677
677
  i0.ɵɵngDeclareClassMetadata({
678
678
  minVersion: "12.0.0",
679
- version: "22.2.1",
679
+ version: "22.2.2",
680
680
  ngImport: i0,
681
681
  type: ClipperReferencesComponent,
682
682
  decorators: [{
@@ -715,4 +715,4 @@ i0.ɵɵngDeclareClassMetadata({
715
715
  });
716
716
  export { ClipperReferencesComponent };
717
717
 
718
- //# sourceMappingURL=arsedizioni-ars-utils-clipper.ui-references.component-C21l0EtN.mjs.map
718
+ //# sourceMappingURL=arsedizioni-ars-utils-clipper.ui-references.component-CEA_wJTS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-clipper.ui-references.component-C21l0EtN.mjs","names":[],"sources":["../../../projects/ars-utils/clipper.ui/references/references.component.ts","../../../projects/ars-utils/clipper.ui/references/references.component.html"],"sourcesContent":["import { Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, afterNextRender, inject, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDrawer, MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ClipperDocumentInfo, ClipperQueryReferencesMode, ClipperReferencesSearchParams, ClipperSearchFacetsResult, ClipperSearchFacetsSnapshot, ClipperSearchParams, ClipperUserInfo } from '@arsedizioni/ars-utils/clipper.common';\nimport { ApiResult, SelectableModel, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { finalize } from 'rxjs/operators';\nimport { ClipperSearchResultManager } from '../search-result-manager/search-result-manager';\nimport { ClipperDocumentMenuComponent } from '../document-menu/document-menu.component';\nimport { ClipperSearchFacetsComponent } from '../search-facets/search-facets.component';\nimport { ClipperSearchResultItemComponent } from '../search-result-item/search-result-item.component';\n\n\nexport interface ClipperReferencesDialogData {\n mode?: ClipperQueryReferencesMode;\n anchor?: string;\n anchorTitle?: string;\n documentId: string;\n model: number;\n canHandleTooManyResults?: boolean;\n}\n\nexport interface ClipperReferenceDialogResult {\n documentId: string;\n}\n\n@Component({\n host: { 'Bind': SystemUtils.generateUUID() },\n templateUrl: './references.component.html',\n styleUrls: ['./references.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FlexLayoutModule,\n MatDialogTitle,\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n MatCheckboxModule,\n MatSlideToggleModule,\n MatMenuModule,\n MatBadgeModule,\n MatPaginatorModule,\n MatDialogContent,\n MatSidenavModule,\n MatProgressBarModule,\n ClipperDocumentMenuComponent,\n ClipperSearchFacetsComponent,\n ClipperSearchResultItemComponent,\n ],\n})\nexport class ClipperReferencesComponent extends ClipperSearchResultManager {\n readonly filterPane = viewChild<MatDrawer>('filterPane');\n\n private readonly dialogRef = inject(MatDialogRef<ClipperReferencesComponent>);\n protected readonly dialogData: ClipperReferencesDialogData = inject(MAT_DIALOG_DATA) ?? { mode: ClipperQueryReferencesMode.ReferencesIn };\n protected title?: string;\n protected item?: ClipperDocumentInfo;\n protected readonly user: ClipperUserInfo | undefined = this.clipperService.user;\n private _viewReady = false;\n\n constructor() {\n super();\n if (this.dialogData) {\n switch (this.dialogData.mode) {\n case ClipperQueryReferencesMode.ReferencesIn:\n this.title = \"Documenti richiamati nelle note o nel testo\";\n break;\n case ClipperQueryReferencesMode.ReferencesOut:\n this.title = \"Documenti che richiamano quello in visione\";\n break;\n case ClipperQueryReferencesMode.ChangesIn:\n this.title = \"Modifiche subite\";\n break;\n case ClipperQueryReferencesMode.ChangesOut:\n this.title = \"Modifiche apportate\";\n break;\n case ClipperQueryReferencesMode.Juris:\n this.title = \"Giurisprudenza associata\";\n break;\n }\n if (this.dialogData.anchorTitle) {\n this.title += \" - \" + this.dialogData.anchorTitle;\n }\n // Use service snapshot\n this.snapshot = this.clipperService.referencesSnapshot() ?? { searchParams: new ClipperSearchParams(), interval: \"-1\" };\n if (\n this.filterParams.mode !== this.dialogData.mode ||\n this.filterParams.id !== this.dialogData.documentId ||\n this.filterParams.anchor !== this.dialogData.anchor\n ) {\n this.filterParams = new ClipperSearchParams();\n this.filterParams.mode = this.dialogData.mode;\n this.filterParams.model = this.dialogData.model;\n this.filterParams.anchor = this.dialogData.anchor;\n this.filterParams.id = this.dialogData.documentId;\n this.filterParams.useModifierInfo = this.dialogData.mode === ClipperQueryReferencesMode.ChangesOut;\n this.filterParams.returnModifierInfo = this.dialogData.mode !== ClipperQueryReferencesMode.ChangesOut;\n this.clipperService.referencesSnapshot.set(this.snapshot);\n }\n }\n\n // Initialize selection\n this.selection = new SelectableModel<ClipperDocumentInfo, string>(true, 'documentId');\n\n // Observe layout changes\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result: any) => {\n if (!this._viewReady) return; // DOM not ready yet\n for (const query of Object.keys(result.breakpoints)) {\n if (result.breakpoints[query]) {\n this.handleFilterPaneVisibility();\n }\n }\n });\n\n // Run view-dependent initialization after the first render.\n afterNextRender(() => {\n this._viewReady = true;\n this.handleFilterPaneVisibility();\n const filterPane = this.filterPane();\n if (filterPane) {\n filterPane.openedChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(opened => {\n if (filterPane.mode === 'over') {\n this.filterPaneHasBackdrop.set(opened);\n }\n });\n }\n const facets = this.facets();\n if (facets) {\n facets.changed\n .subscribe((value: ClipperSearchFacetsSnapshot) => {\n this.snapshot.facets = value;\n this.fetch(true);\n });\n }\n this.fetch(true);\n this.restoreFacets();\n this.changeDetector.markForCheck();\n });\n }\n\n\n /**\n * Toggles the filter pane open/closed state.\n */\n protected toggleFilterPane(): void {\n this.filterPaneClosed.set(!this.filterPaneClosed());\n this.filterPane()?.toggle();\n }\n\n\n\n /**\n * Adjusts the filter pane mode (side vs. overlay) and backdrop based on the current breakpoint.\n */\n private handleFilterPaneVisibility(): void {\n const filterPane = this.filterPane();\n if (filterPane) {\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\n if (filterPane.opened) {\n filterPane.close();\n }\n filterPane.mode = 'over';\n filterPane.disableClose = false;\n this.filterPaneHasBackdrop.set(filterPane.opened);\n } else {\n if (!this.hasFacets()) {\n filterPane.close();\n } else if (!filterPane.opened && !this.filterPaneClosed()) {\n filterPane.open();\n } else if (filterPane.opened && this.filterPaneClosed()) {\n filterPane.close();\n }\n filterPane.mode = 'side';\n filterPane.disableClose = true;\n this.filterPaneHasBackdrop.set(false);\n }\n }\n }\n\n\n /**\n * Closes the references dialog without returning a result.\n */\n close(): void {\n this.dialogRef.close();\n }\n\n\n\n /**\n * Sends document links by email for the given item or, when omitted, for all selected items.\n * @param item - The specific document to send, or `undefined` to use the current selection.\n */\n sendTo(item?: ClipperDocumentInfo): void {\n this.sendItemsTo(item ? [item] : this.selection?.all);\n }\n\n\n\n /**\n * Builds the search parameters for the next fetch call.\n * @param newSearch - When `true`, resets the pagination offset to 0.\n * @returns A cloned and enriched `ClipperSearchParams` ready to be sent to the API.\n */\n private prepareFetch(newSearch: boolean = false): ClipperSearchParams {\n const newParams = SystemUtils.clone(this.filterParams) as ClipperSearchParams;\n newParams.count = 15;\n newParams.useModifierInfo =\n newParams.mode === ClipperQueryReferencesMode.ChangesOut;\n newParams.returnModifierInfo =\n newParams.mode !== ClipperQueryReferencesMode.ChangesOut;\n // New search, reset paging\n if (newSearch) {\n newParams.first = 0;\n this.filterParams.first = 0;\n }\n\n // Apply facets\n if (this.snapshot.facets?.fromDate) {\n newParams.fromDate = this.snapshot.facets?.fromDate;\n newParams.toDate = this.snapshot.facets?.toDate;\n newParams.year = this.snapshot.facets?.fromDate.getFullYear();\n }\n if (this.snapshot.facets?.sector) {\n newParams.sector = this.snapshot.facets?.sector;\n }\n if (this.snapshot.facets?.type) {\n newParams.type = this.snapshot.facets?.type;\n }\n if (this.snapshot.facets?.author) {\n newParams.author = this.snapshot.facets?.author;\n }\n return newParams;\n }\n\n /**\n * Maps a generic `ClipperSearchParams` to the references-specific API parameter shape.\n * @param params - The base search parameters to convert.\n * @returns A `ClipperReferencesSearchParams` object ready for the references endpoint.\n */\n private toReferencesSearchParams(params: ClipperSearchParams): ClipperReferencesSearchParams {\n return {\n documentId: params.id,\n year: params.year,\n sector: params.sector,\n author: params.author,\n anchor: params.anchor,\n model: params.model?.toString() ?? null,\n mode: params.mode,\n excludeTextReferences: params.excludeTextReferences,\n excludeNotesReferences: params.excludeNotesReferences,\n returnModifierInfo: params.returnModifierInfo,\n useModifierInfo: params.useModifierInfo,\n count: 15,\n first: params.first ?? 0\n }\n }\n\n /**\n * Executes the references search and updates the result snapshot.\n * @param newSearch - When `true`, resets pagination and reloads facets. Defaults to `false`.\n */\n fetch(newSearch: boolean = false): void {\n if (!this.clipperService.loggedIn()) return;\n this.dialogService.busy('Ricerca in corso...');\n const searchParams = this.prepareFetch(newSearch);\n if (searchParams) {\n this.clipperService.documents.references(this.toReferencesSearchParams(searchParams))\n .pipe(finalize(() => this.dialogService.clearBusy()))\n .subscribe(r => {\n if (!r.success) this.dialogService.error(r.message);\n else {\n this.prepareResults(r.value, newSearch);\n\n // Handle facets\n if (this.snapshot.total > 0) {\n if (newSearch)\n // Update facets\n this.fetchFacets(searchParams);\n } else {\n this.hideFacets();\n }\n\n if (newSearch) {\n const paginator = this.paginator();\n if (paginator) paginator.pageIndex = 0;\n }\n\n this.scroll(0);\n }\n });\n }\n }\n\n /**\n * Navigates to the next result page.\n * @param e - The `PageEvent` emitted by the paginator with the new page index and size.\n */\n fetchMore(e: PageEvent): void {\n const first = e.pageIndex * (this.filterParams.count ?? 15);\n this.filterParams.first = first;\n this.fetch();\n }\n\n /**\n * Loads available facets for the current search parameters and updates the filter pane.\n * @param params - The search parameters used to request facets from the API.\n */\n fetchFacets(params: ClipperSearchParams): void {\n if (!this.clipperService.loggedIn() || !params) return;\n if (!this.snapshot.facets || this.snapshot.facets?.hasMoreFacets) {\n this.filterBusy.set(true);\n this.clipperService.documents.referencesFacets(this.toReferencesSearchParams(params))\n .subscribe({\n next: (r: ApiResult<ClipperSearchFacetsResult>) => {\n if (r.success) {\n let hasFacets = (r.value.facets?.length ?? 0) > 0;\n if (r.value.facets) {\n const facets = this.facets();\n facets?.update(r.value.facets, r.value.interval);\n if (facets && this.snapshot) {\n hasFacets = facets.hasFacets();\n this.snapshot.facets = facets.save();\n this.snapshot.facets.hasTooManyResults = (this.snapshot?.total ?? 0) >= 1000;\n }\n }\n this.hasFacets.set(hasFacets);\n this.handleFilterPaneVisibility();\n }\n },\n complete: () => {\n this.filterBusy.set(false);\n }\n });\n }\n }\n\n /**\n * Hides the facet filter pane and resets all applied facet filters.\n */\n protected hideFacets(): void {\n this.hasFacets.set(false);\n this.facets()?.reset();\n this.filterPane().close();\n this.filterPaneClosed.set(false);\n }\n /**\n * Restores previously saved facets from the snapshot and adjusts the filter pane accordingly.\n */\n restoreFacets(): void {\n if (this.snapshot.facets) {\n this.facets().restore(this.snapshot.facets);\n this.handleFilterPaneVisibility();\n }\n }\n\n /**\n * Closes the dialog and navigates to the selected document.\n * @param documentId - The ID of the document to open.\n */\n override open(documentId?: string): void {\n if (documentId) this.dialogRef.close({ documentId });\n }\n\n /**\n * Returns the CSS class reflecting the item's validity state.\n * @param item - The document to evaluate.\n * @returns A CSS class name string, or `undefined` when no special state applies.\n */\n override getItemStateCssClass(item: ClipperDocumentInfo): string | undefined {\n if (item.isExpired) return 'expired-bg';\n return undefined;\n }\n\n /**\n * Returns the tooltip text explaining the item's current validity state.\n * @param item - The document to evaluate.\n * @returns A human-readable state description, or an empty string when no special state applies.\n */\n override getItemStateTooltip(item: ClipperDocumentInfo): string {\n if (item.isExpired) return 'Non più vigente';\n return '';\n }\n}\n","<div class=\"clipper-references-fixed\">\n <div class=\"dialog-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap='10px' fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>{{title}} </div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n (click)=\"close()\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n @if (dialogData.mode > 0 || selection?.hasValue() || (snapshot && snapshot.facets?.hasFacets && filterPane &&\n (!filterPane.opened || filterPaneClosed()))) {\n <div class=\"dialog-toolbar\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n <div fxFlex=\"*\">\n @if (dialogData.mode === 1) {\n <mat-slide-toggle [checked]=\"filterParams.excludeTextReferences === true\"\n (change)=\"filterParams.excludeTextReferences = $event.checked; fetch(true)\">\n &nbsp; Mostra solo se citati nelle note\n </mat-slide-toggle>\n } @else if (dialogData.mode == 2) {\n <mat-slide-toggle [checked]=\"filterParams.excludeNotesReferences === true\"\n (change)=\"filterParams.excludeNotesReferences = $event.checked; fetch(true)\">\n &nbsp; Mostra solo se citano nel testo il documento\n </mat-slide-toggle>\n }\n </div>\n <div fxLayoutAlign=\"end\">\n @if (selection?.hasValue()) {\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\n [disabled]=\"!snapshot.total\" [matBadge]=\"selection?.all?.length\">\n <mat-icon>checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <clipper-document-menu [parent]=\"this\" selectionSource=\"selection\" [useSelections]=\"true\"\n [isReadable]=\"false\" [isReference]=\"true\" [canUseAIAssistant]=\"user?.hasAIAssistant ?? false\">\n </clipper-document-menu>\n </mat-menu>\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed())) {\n <div fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\" aria-label=\"'Affina ricerca'\"\n (click)=\"toggleFilterPane()\">\n <mat-icon>right_panel_open</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n</div>\n<mat-dialog-content id=\"clipper-references-scrollable\">\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"filterPaneHasBackdrop()\">\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\n @if (filterBusy()) {\n <div class=\"overlay\"></div>\n }\n <div fxLayout=\"column\" fxFill>\n <div fxFlex=\"6px\">\n @if (filterBusy()) {\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\n </mat-progress-bar>\n }\n </div>\n <div fxFlex=\"78px\" class=\"title-container-with-loader\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n <div class=\"title\">Affina ricerca</div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <button mat-icon-button (click)=\"toggleFilterPane()\"\n matTooltip=\"Nascondi\"><mat-icon>right_panel_close</mat-icon></button>\n </div>\n </div>\n </div>\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\n <clipper-search-facets #facets [handleTooManyResults]=\"dialogData.canHandleTooManyResults\" ></clipper-search-facets>\n </div>\n </div>\n </mat-drawer>\n <div fxLayout=\"column\" fxFill>\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\n @if (!snapshot.total) {\n <div class=\"message-container\">\n <p class=\"message\"><b>Nessun elemento da visualizzare.</b></p>\n </div>\n } @else {\n <div>\n @for (item of snapshot.items; track $index; let i = $index) {\n @if (item.group) {\n <div class=\"items-group-title\">\n <div [class.group-spaced]=\"i > 0\">{{item.group}}</div>\n </div>\n }\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [isReadable]=\"false\"\n [actions]=\"contextMenu\"></clipper-search-result-item>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [isReadable]=\"false\" [isReference]=\"true\"\n [canUseAIAssistant]=\"user?.hasAIAssistant ?? false\">\n </clipper-document-menu>\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n <!-- footer -->\n @if ((snapshot?.total ?? 0) > 0) {\n <div class=\"items-footer\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between center\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend expired-bg \"></div>\n non più vigente\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\" [class.wide]=\"filterPane?.opened\">\n <div fxLayout=\"row\">\n <mat-paginator fxFlexAlign=\"center\" #paginator class=\"paginator\" [hidePageSize]=\"true\"\n [length]=\"snapshot?.total ?? 0\" [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\"\n (page)=\"fetchMore($event)\">\n </mat-paginator>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </mat-drawer-container>\n</mat-dialog-content>"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-clipper.ui-references.component-CEA_wJTS.mjs","names":[],"sources":["../../../projects/ars-utils/clipper.ui/references/references.component.ts","../../../projects/ars-utils/clipper.ui/references/references.component.html"],"sourcesContent":["import { Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, afterNextRender, inject, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDrawer, MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ClipperDocumentInfo, ClipperQueryReferencesMode, ClipperReferencesSearchParams, ClipperSearchFacetsResult, ClipperSearchFacetsSnapshot, ClipperSearchParams, ClipperUserInfo } from '@arsedizioni/ars-utils/clipper.common';\nimport { ApiResult, SelectableModel, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { finalize } from 'rxjs/operators';\nimport { ClipperSearchResultManager } from '../search-result-manager/search-result-manager';\nimport { ClipperDocumentMenuComponent } from '../document-menu/document-menu.component';\nimport { ClipperSearchFacetsComponent } from '../search-facets/search-facets.component';\nimport { ClipperSearchResultItemComponent } from '../search-result-item/search-result-item.component';\n\n\nexport interface ClipperReferencesDialogData {\n mode?: ClipperQueryReferencesMode;\n anchor?: string;\n anchorTitle?: string;\n documentId: string;\n model: number;\n canHandleTooManyResults?: boolean;\n}\n\nexport interface ClipperReferenceDialogResult {\n documentId: string;\n}\n\n@Component({\n host: { 'Bind': SystemUtils.generateUUID() },\n templateUrl: './references.component.html',\n styleUrls: ['./references.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FlexLayoutModule,\n MatDialogTitle,\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n MatCheckboxModule,\n MatSlideToggleModule,\n MatMenuModule,\n MatBadgeModule,\n MatPaginatorModule,\n MatDialogContent,\n MatSidenavModule,\n MatProgressBarModule,\n ClipperDocumentMenuComponent,\n ClipperSearchFacetsComponent,\n ClipperSearchResultItemComponent,\n ],\n})\nexport class ClipperReferencesComponent extends ClipperSearchResultManager {\n readonly filterPane = viewChild<MatDrawer>('filterPane');\n\n private readonly dialogRef = inject(MatDialogRef<ClipperReferencesComponent>);\n protected readonly dialogData: ClipperReferencesDialogData = inject(MAT_DIALOG_DATA) ?? { mode: ClipperQueryReferencesMode.ReferencesIn };\n protected title?: string;\n protected item?: ClipperDocumentInfo;\n protected readonly user: ClipperUserInfo | undefined = this.clipperService.user;\n private _viewReady = false;\n\n constructor() {\n super();\n if (this.dialogData) {\n switch (this.dialogData.mode) {\n case ClipperQueryReferencesMode.ReferencesIn:\n this.title = \"Documenti richiamati nelle note o nel testo\";\n break;\n case ClipperQueryReferencesMode.ReferencesOut:\n this.title = \"Documenti che richiamano quello in visione\";\n break;\n case ClipperQueryReferencesMode.ChangesIn:\n this.title = \"Modifiche subite\";\n break;\n case ClipperQueryReferencesMode.ChangesOut:\n this.title = \"Modifiche apportate\";\n break;\n case ClipperQueryReferencesMode.Juris:\n this.title = \"Giurisprudenza associata\";\n break;\n }\n if (this.dialogData.anchorTitle) {\n this.title += \" - \" + this.dialogData.anchorTitle;\n }\n // Use service snapshot\n this.snapshot = this.clipperService.referencesSnapshot() ?? { searchParams: new ClipperSearchParams(), interval: \"-1\" };\n if (\n this.filterParams.mode !== this.dialogData.mode ||\n this.filterParams.id !== this.dialogData.documentId ||\n this.filterParams.anchor !== this.dialogData.anchor\n ) {\n this.filterParams = new ClipperSearchParams();\n this.filterParams.mode = this.dialogData.mode;\n this.filterParams.model = this.dialogData.model;\n this.filterParams.anchor = this.dialogData.anchor;\n this.filterParams.id = this.dialogData.documentId;\n this.filterParams.useModifierInfo = this.dialogData.mode === ClipperQueryReferencesMode.ChangesOut;\n this.filterParams.returnModifierInfo = this.dialogData.mode !== ClipperQueryReferencesMode.ChangesOut;\n this.clipperService.referencesSnapshot.set(this.snapshot);\n }\n }\n\n // Initialize selection\n this.selection = new SelectableModel<ClipperDocumentInfo, string>(true, 'documentId');\n\n // Observe layout changes\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result: any) => {\n if (!this._viewReady) return; // DOM not ready yet\n for (const query of Object.keys(result.breakpoints)) {\n if (result.breakpoints[query]) {\n this.handleFilterPaneVisibility();\n }\n }\n });\n\n // Run view-dependent initialization after the first render.\n afterNextRender(() => {\n this._viewReady = true;\n this.handleFilterPaneVisibility();\n const filterPane = this.filterPane();\n if (filterPane) {\n filterPane.openedChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(opened => {\n if (filterPane.mode === 'over') {\n this.filterPaneHasBackdrop.set(opened);\n }\n });\n }\n const facets = this.facets();\n if (facets) {\n facets.changed\n .subscribe((value: ClipperSearchFacetsSnapshot) => {\n this.snapshot.facets = value;\n this.fetch(true);\n });\n }\n this.fetch(true);\n this.restoreFacets();\n this.changeDetector.markForCheck();\n });\n }\n\n\n /**\n * Toggles the filter pane open/closed state.\n */\n protected toggleFilterPane(): void {\n this.filterPaneClosed.set(!this.filterPaneClosed());\n this.filterPane()?.toggle();\n }\n\n\n\n /**\n * Adjusts the filter pane mode (side vs. overlay) and backdrop based on the current breakpoint.\n */\n private handleFilterPaneVisibility(): void {\n const filterPane = this.filterPane();\n if (filterPane) {\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\n if (filterPane.opened) {\n filterPane.close();\n }\n filterPane.mode = 'over';\n filterPane.disableClose = false;\n this.filterPaneHasBackdrop.set(filterPane.opened);\n } else {\n if (!this.hasFacets()) {\n filterPane.close();\n } else if (!filterPane.opened && !this.filterPaneClosed()) {\n filterPane.open();\n } else if (filterPane.opened && this.filterPaneClosed()) {\n filterPane.close();\n }\n filterPane.mode = 'side';\n filterPane.disableClose = true;\n this.filterPaneHasBackdrop.set(false);\n }\n }\n }\n\n\n /**\n * Closes the references dialog without returning a result.\n */\n close(): void {\n this.dialogRef.close();\n }\n\n\n\n /**\n * Sends document links by email for the given item or, when omitted, for all selected items.\n * @param item - The specific document to send, or `undefined` to use the current selection.\n */\n sendTo(item?: ClipperDocumentInfo): void {\n this.sendItemsTo(item ? [item] : this.selection?.all);\n }\n\n\n\n /**\n * Builds the search parameters for the next fetch call.\n * @param newSearch - When `true`, resets the pagination offset to 0.\n * @returns A cloned and enriched `ClipperSearchParams` ready to be sent to the API.\n */\n private prepareFetch(newSearch: boolean = false): ClipperSearchParams {\n const newParams = SystemUtils.clone(this.filterParams) as ClipperSearchParams;\n newParams.count = 15;\n newParams.useModifierInfo =\n newParams.mode === ClipperQueryReferencesMode.ChangesOut;\n newParams.returnModifierInfo =\n newParams.mode !== ClipperQueryReferencesMode.ChangesOut;\n // New search, reset paging\n if (newSearch) {\n newParams.first = 0;\n this.filterParams.first = 0;\n }\n\n // Apply facets\n if (this.snapshot.facets?.fromDate) {\n newParams.fromDate = this.snapshot.facets?.fromDate;\n newParams.toDate = this.snapshot.facets?.toDate;\n newParams.year = this.snapshot.facets?.fromDate.getFullYear();\n }\n if (this.snapshot.facets?.sector) {\n newParams.sector = this.snapshot.facets?.sector;\n }\n if (this.snapshot.facets?.type) {\n newParams.type = this.snapshot.facets?.type;\n }\n if (this.snapshot.facets?.author) {\n newParams.author = this.snapshot.facets?.author;\n }\n return newParams;\n }\n\n /**\n * Maps a generic `ClipperSearchParams` to the references-specific API parameter shape.\n * @param params - The base search parameters to convert.\n * @returns A `ClipperReferencesSearchParams` object ready for the references endpoint.\n */\n private toReferencesSearchParams(params: ClipperSearchParams): ClipperReferencesSearchParams {\n return {\n documentId: params.id,\n year: params.year,\n sector: params.sector,\n author: params.author,\n anchor: params.anchor,\n model: params.model?.toString() ?? null,\n mode: params.mode,\n excludeTextReferences: params.excludeTextReferences,\n excludeNotesReferences: params.excludeNotesReferences,\n returnModifierInfo: params.returnModifierInfo,\n useModifierInfo: params.useModifierInfo,\n count: 15,\n first: params.first ?? 0\n }\n }\n\n /**\n * Executes the references search and updates the result snapshot.\n * @param newSearch - When `true`, resets pagination and reloads facets. Defaults to `false`.\n */\n fetch(newSearch: boolean = false): void {\n if (!this.clipperService.loggedIn()) return;\n this.dialogService.busy('Ricerca in corso...');\n const searchParams = this.prepareFetch(newSearch);\n if (searchParams) {\n this.clipperService.documents.references(this.toReferencesSearchParams(searchParams))\n .pipe(finalize(() => this.dialogService.clearBusy()))\n .subscribe(r => {\n if (!r.success) this.dialogService.error(r.message);\n else {\n this.prepareResults(r.value, newSearch);\n\n // Handle facets\n if (this.snapshot.total > 0) {\n if (newSearch)\n // Update facets\n this.fetchFacets(searchParams);\n } else {\n this.hideFacets();\n }\n\n if (newSearch) {\n const paginator = this.paginator();\n if (paginator) paginator.pageIndex = 0;\n }\n\n this.scroll(0);\n }\n });\n }\n }\n\n /**\n * Navigates to the next result page.\n * @param e - The `PageEvent` emitted by the paginator with the new page index and size.\n */\n fetchMore(e: PageEvent): void {\n const first = e.pageIndex * (this.filterParams.count ?? 15);\n this.filterParams.first = first;\n this.fetch();\n }\n\n /**\n * Loads available facets for the current search parameters and updates the filter pane.\n * @param params - The search parameters used to request facets from the API.\n */\n fetchFacets(params: ClipperSearchParams): void {\n if (!this.clipperService.loggedIn() || !params) return;\n if (!this.snapshot.facets || this.snapshot.facets?.hasMoreFacets) {\n this.filterBusy.set(true);\n this.clipperService.documents.referencesFacets(this.toReferencesSearchParams(params))\n .subscribe({\n next: (r: ApiResult<ClipperSearchFacetsResult>) => {\n if (r.success) {\n let hasFacets = (r.value.facets?.length ?? 0) > 0;\n if (r.value.facets) {\n const facets = this.facets();\n facets?.update(r.value.facets, r.value.interval);\n if (facets && this.snapshot) {\n hasFacets = facets.hasFacets();\n this.snapshot.facets = facets.save();\n this.snapshot.facets.hasTooManyResults = (this.snapshot?.total ?? 0) >= 1000;\n }\n }\n this.hasFacets.set(hasFacets);\n this.handleFilterPaneVisibility();\n }\n },\n complete: () => {\n this.filterBusy.set(false);\n }\n });\n }\n }\n\n /**\n * Hides the facet filter pane and resets all applied facet filters.\n */\n protected hideFacets(): void {\n this.hasFacets.set(false);\n this.facets()?.reset();\n this.filterPane().close();\n this.filterPaneClosed.set(false);\n }\n /**\n * Restores previously saved facets from the snapshot and adjusts the filter pane accordingly.\n */\n restoreFacets(): void {\n if (this.snapshot.facets) {\n this.facets().restore(this.snapshot.facets);\n this.handleFilterPaneVisibility();\n }\n }\n\n /**\n * Closes the dialog and navigates to the selected document.\n * @param documentId - The ID of the document to open.\n */\n override open(documentId?: string): void {\n if (documentId) this.dialogRef.close({ documentId });\n }\n\n /**\n * Returns the CSS class reflecting the item's validity state.\n * @param item - The document to evaluate.\n * @returns A CSS class name string, or `undefined` when no special state applies.\n */\n override getItemStateCssClass(item: ClipperDocumentInfo): string | undefined {\n if (item.isExpired) return 'expired-bg';\n return undefined;\n }\n\n /**\n * Returns the tooltip text explaining the item's current validity state.\n * @param item - The document to evaluate.\n * @returns A human-readable state description, or an empty string when no special state applies.\n */\n override getItemStateTooltip(item: ClipperDocumentInfo): string {\n if (item.isExpired) return 'Non più vigente';\n return '';\n }\n}\n","<div class=\"clipper-references-fixed\">\n <div class=\"dialog-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap='10px' fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>{{title}} </div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n (click)=\"close()\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n @if (dialogData.mode > 0 || selection?.hasValue() || (snapshot && snapshot.facets?.hasFacets && filterPane &&\n (!filterPane.opened || filterPaneClosed()))) {\n <div class=\"dialog-toolbar\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n <div fxFlex=\"*\">\n @if (dialogData.mode === 1) {\n <mat-slide-toggle [checked]=\"filterParams.excludeTextReferences === true\"\n (change)=\"filterParams.excludeTextReferences = $event.checked; fetch(true)\">\n &nbsp; Mostra solo se citati nelle note\n </mat-slide-toggle>\n } @else if (dialogData.mode == 2) {\n <mat-slide-toggle [checked]=\"filterParams.excludeNotesReferences === true\"\n (change)=\"filterParams.excludeNotesReferences = $event.checked; fetch(true)\">\n &nbsp; Mostra solo se citano nel testo il documento\n </mat-slide-toggle>\n }\n </div>\n <div fxLayoutAlign=\"end\">\n @if (selection?.hasValue()) {\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\n [disabled]=\"!snapshot.total\" [matBadge]=\"selection?.all?.length\">\n <mat-icon>checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <clipper-document-menu [parent]=\"this\" selectionSource=\"selection\" [useSelections]=\"true\"\n [isReadable]=\"false\" [isReference]=\"true\" [canUseAIAssistant]=\"user?.hasAIAssistant ?? false\">\n </clipper-document-menu>\n </mat-menu>\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed())) {\n <div fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\" aria-label=\"'Affina ricerca'\"\n (click)=\"toggleFilterPane()\">\n <mat-icon>right_panel_open</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n</div>\n<mat-dialog-content id=\"clipper-references-scrollable\">\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"filterPaneHasBackdrop()\">\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\n @if (filterBusy()) {\n <div class=\"overlay\"></div>\n }\n <div fxLayout=\"column\" fxFill>\n <div fxFlex=\"6px\">\n @if (filterBusy()) {\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\n </mat-progress-bar>\n }\n </div>\n <div fxFlex=\"78px\" class=\"title-container-with-loader\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n <div class=\"title\">Affina ricerca</div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <button mat-icon-button (click)=\"toggleFilterPane()\"\n matTooltip=\"Nascondi\"><mat-icon>right_panel_close</mat-icon></button>\n </div>\n </div>\n </div>\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\n <clipper-search-facets #facets [handleTooManyResults]=\"dialogData.canHandleTooManyResults\" ></clipper-search-facets>\n </div>\n </div>\n </mat-drawer>\n <div fxLayout=\"column\" fxFill>\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\n @if (!snapshot.total) {\n <div class=\"message-container\">\n <p class=\"message\"><b>Nessun elemento da visualizzare.</b></p>\n </div>\n } @else {\n <div>\n @for (item of snapshot.items; track $index; let i = $index) {\n @if (item.group) {\n <div class=\"items-group-title\">\n <div [class.group-spaced]=\"i > 0\">{{item.group}}</div>\n </div>\n }\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [isReadable]=\"false\"\n [actions]=\"contextMenu\"></clipper-search-result-item>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [isReadable]=\"false\" [isReference]=\"true\"\n [canUseAIAssistant]=\"user?.hasAIAssistant ?? false\">\n </clipper-document-menu>\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n <!-- footer -->\n @if ((snapshot?.total ?? 0) > 0) {\n <div class=\"items-footer\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between center\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend expired-bg \"></div>\n non più vigente\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\" [class.wide]=\"filterPane?.opened\">\n <div fxLayout=\"row\">\n <mat-paginator fxFlexAlign=\"center\" #paginator class=\"paginator\" [hidePageSize]=\"true\"\n [length]=\"snapshot?.total ?? 0\" [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\"\n (page)=\"fetchMore($event)\">\n </mat-paginator>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </mat-drawer-container>\n</mat-dialog-content>"],"mappings":"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"}
@@ -163,7 +163,7 @@ var ClipperDocumentMenuComponent = class ClipperDocumentMenuComponent {
163
163
  static {
164
164
  this.ɵfac = i0.ɵɵngDeclareFactory({
165
165
  minVersion: "12.0.0",
166
- version: "22.2.1",
166
+ version: "22.2.2",
167
167
  ngImport: i0,
168
168
  type: ClipperDocumentMenuComponent,
169
169
  deps: [],
@@ -173,7 +173,7 @@ var ClipperDocumentMenuComponent = class ClipperDocumentMenuComponent {
173
173
  static {
174
174
  this.ɵcmp = i0.ɵɵngDeclareComponent({
175
175
  minVersion: "17.0.0",
176
- version: "22.2.1",
176
+ version: "22.2.2",
177
177
  type: ClipperDocumentMenuComponent,
178
178
  isStandalone: true,
179
179
  selector: "clipper-document-menu",
@@ -514,7 +514,7 @@ var ClipperDocumentMenuComponent = class ClipperDocumentMenuComponent {
514
514
  };
515
515
  i0.ɵɵngDeclareClassMetadata({
516
516
  minVersion: "12.0.0",
517
- version: "22.2.1",
517
+ version: "22.2.2",
518
518
  ngImport: i0,
519
519
  type: ClipperDocumentMenuComponent,
520
520
  decorators: [{
@@ -777,7 +777,7 @@ var ClipperSearchFacetsComponent = class ClipperSearchFacetsComponent {
777
777
  static {
778
778
  this.ɵfac = i0.ɵɵngDeclareFactory({
779
779
  minVersion: "12.0.0",
780
- version: "22.2.1",
780
+ version: "22.2.2",
781
781
  ngImport: i0,
782
782
  type: ClipperSearchFacetsComponent,
783
783
  deps: [],
@@ -787,7 +787,7 @@ var ClipperSearchFacetsComponent = class ClipperSearchFacetsComponent {
787
787
  static {
788
788
  this.ɵcmp = i0.ɵɵngDeclareComponent({
789
789
  minVersion: "17.0.0",
790
- version: "22.2.1",
790
+ version: "22.2.2",
791
791
  type: ClipperSearchFacetsComponent,
792
792
  isStandalone: true,
793
793
  selector: "clipper-search-facets",
@@ -1068,7 +1068,7 @@ var ClipperSearchFacetsComponent = class ClipperSearchFacetsComponent {
1068
1068
  };
1069
1069
  i0.ɵɵngDeclareClassMetadata({
1070
1070
  minVersion: "12.0.0",
1071
- version: "22.2.1",
1071
+ version: "22.2.2",
1072
1072
  ngImport: i0,
1073
1073
  type: ClipperSearchFacetsComponent,
1074
1074
  decorators: [{
@@ -1233,7 +1233,7 @@ var ClipperDocumentManager = class ClipperDocumentManager {
1233
1233
  }
1234
1234
  openReferences(documentId, mode = ClipperQueryReferencesMode.ReferencesIn) {
1235
1235
  if (!documentId) return;
1236
- import("./arsedizioni-ars-utils-clipper.ui-references.component-C21l0EtN.mjs").then(({ ClipperReferencesComponent }) => {
1236
+ import("./arsedizioni-ars-utils-clipper.ui-references.component-CEA_wJTS.mjs").then(({ ClipperReferencesComponent }) => {
1237
1237
  this.dialogService.open(ClipperReferencesComponent, {
1238
1238
  ariaLabel: "riferimenti legati al documento",
1239
1239
  autoFocus: "dialog",
@@ -1339,7 +1339,7 @@ var ClipperDocumentManager = class ClipperDocumentManager {
1339
1339
  static {
1340
1340
  this.ɵfac = i0.ɵɵngDeclareFactory({
1341
1341
  minVersion: "12.0.0",
1342
- version: "22.2.1",
1342
+ version: "22.2.2",
1343
1343
  ngImport: i0,
1344
1344
  type: ClipperDocumentManager,
1345
1345
  deps: [],
@@ -1349,7 +1349,7 @@ var ClipperDocumentManager = class ClipperDocumentManager {
1349
1349
  static {
1350
1350
  this.ɵcmp = i0.ɵɵngDeclareComponent({
1351
1351
  minVersion: "14.0.0",
1352
- version: "22.2.1",
1352
+ version: "22.2.2",
1353
1353
  type: ClipperDocumentManager,
1354
1354
  isStandalone: true,
1355
1355
  selector: "ng-component",
@@ -1363,7 +1363,7 @@ var ClipperDocumentManager = class ClipperDocumentManager {
1363
1363
  };
1364
1364
  i0.ɵɵngDeclareClassMetadata({
1365
1365
  minVersion: "12.0.0",
1366
- version: "22.2.1",
1366
+ version: "22.2.2",
1367
1367
  ngImport: i0,
1368
1368
  type: ClipperDocumentManager,
1369
1369
  decorators: [{
@@ -1393,7 +1393,7 @@ var ClipperDocumentViewerService = class ClipperDocumentViewerService {
1393
1393
  this.dialogService.error("Documento non valido.");
1394
1394
  return;
1395
1395
  }
1396
- import("./arsedizioni-ars-utils-clipper.ui-document.component-BjMnaZGf.mjs").then(({ ClipperDocumentComponent }) => {
1396
+ import("./arsedizioni-ars-utils-clipper.ui-document.component-BKjGXtXa.mjs").then(({ ClipperDocumentComponent }) => {
1397
1397
  const ref = this.dialogService.open(ClipperDocumentComponent, {
1398
1398
  ariaLabel: "documento",
1399
1399
  autoFocus: "dialog",
@@ -1424,7 +1424,7 @@ var ClipperDocumentViewerService = class ClipperDocumentViewerService {
1424
1424
  static {
1425
1425
  this.ɵfac = i0.ɵɵngDeclareFactory({
1426
1426
  minVersion: "12.0.0",
1427
- version: "22.2.1",
1427
+ version: "22.2.2",
1428
1428
  ngImport: i0,
1429
1429
  type: ClipperDocumentViewerService,
1430
1430
  deps: [],
@@ -1434,7 +1434,7 @@ var ClipperDocumentViewerService = class ClipperDocumentViewerService {
1434
1434
  static {
1435
1435
  this.ɵprov = i0.ɵɵngDeclareService({
1436
1436
  minVersion: "22.0.0",
1437
- version: "22.2.1",
1437
+ version: "22.2.2",
1438
1438
  ngImport: i0,
1439
1439
  type: ClipperDocumentViewerService
1440
1440
  });
@@ -1442,7 +1442,7 @@ var ClipperDocumentViewerService = class ClipperDocumentViewerService {
1442
1442
  };
1443
1443
  i0.ɵɵngDeclareClassMetadata({
1444
1444
  minVersion: "12.0.0",
1445
- version: "22.2.1",
1445
+ version: "22.2.2",
1446
1446
  ngImport: i0,
1447
1447
  type: ClipperDocumentViewerService,
1448
1448
  decorators: [{ type: Service }]
@@ -1804,7 +1804,7 @@ var ClipperSearchResultManager = class ClipperSearchResultManager extends Clippe
1804
1804
  static {
1805
1805
  this.ɵfac = i0.ɵɵngDeclareFactory({
1806
1806
  minVersion: "12.0.0",
1807
- version: "22.2.1",
1807
+ version: "22.2.2",
1808
1808
  ngImport: i0,
1809
1809
  type: ClipperSearchResultManager,
1810
1810
  deps: null,
@@ -1814,7 +1814,7 @@ var ClipperSearchResultManager = class ClipperSearchResultManager extends Clippe
1814
1814
  static {
1815
1815
  this.ɵcmp = i0.ɵɵngDeclareComponent({
1816
1816
  minVersion: "17.2.0",
1817
- version: "22.2.1",
1817
+ version: "22.2.2",
1818
1818
  type: ClipperSearchResultManager,
1819
1819
  isStandalone: true,
1820
1820
  selector: "ng-component",
@@ -1851,7 +1851,7 @@ var ClipperSearchResultManager = class ClipperSearchResultManager extends Clippe
1851
1851
  };
1852
1852
  i0.ɵɵngDeclareClassMetadata({
1853
1853
  minVersion: "12.0.0",
1854
- version: "22.2.1",
1854
+ version: "22.2.2",
1855
1855
  ngImport: i0,
1856
1856
  type: ClipperSearchResultManager,
1857
1857
  decorators: [{
@@ -1881,7 +1881,7 @@ var ClipperSearchFreeTextHelpComponent = class ClipperSearchFreeTextHelpComponen
1881
1881
  static {
1882
1882
  this.ɵfac = i0.ɵɵngDeclareFactory({
1883
1883
  minVersion: "12.0.0",
1884
- version: "22.2.1",
1884
+ version: "22.2.2",
1885
1885
  ngImport: i0,
1886
1886
  type: ClipperSearchFreeTextHelpComponent,
1887
1887
  deps: [],
@@ -1891,7 +1891,7 @@ var ClipperSearchFreeTextHelpComponent = class ClipperSearchFreeTextHelpComponen
1891
1891
  static {
1892
1892
  this.ɵcmp = i0.ɵɵngDeclareComponent({
1893
1893
  minVersion: "14.0.0",
1894
- version: "22.2.1",
1894
+ version: "22.2.2",
1895
1895
  type: ClipperSearchFreeTextHelpComponent,
1896
1896
  isStandalone: true,
1897
1897
  selector: "ng-component",
@@ -2037,7 +2037,7 @@ var ClipperSearchFreeTextHelpComponent = class ClipperSearchFreeTextHelpComponen
2037
2037
  };
2038
2038
  i0.ɵɵngDeclareClassMetadata({
2039
2039
  minVersion: "12.0.0",
2040
- version: "22.2.1",
2040
+ version: "22.2.2",
2041
2041
  ngImport: i0,
2042
2042
  type: ClipperSearchFreeTextHelpComponent,
2043
2043
  decorators: [{
@@ -2125,7 +2125,7 @@ var ClipperSearchFreeTextQueryBuilderComponent = class ClipperSearchFreeTextQuer
2125
2125
  static {
2126
2126
  this.ɵfac = i0.ɵɵngDeclareFactory({
2127
2127
  minVersion: "12.0.0",
2128
- version: "22.2.1",
2128
+ version: "22.2.2",
2129
2129
  ngImport: i0,
2130
2130
  type: ClipperSearchFreeTextQueryBuilderComponent,
2131
2131
  deps: [],
@@ -2135,7 +2135,7 @@ var ClipperSearchFreeTextQueryBuilderComponent = class ClipperSearchFreeTextQuer
2135
2135
  static {
2136
2136
  this.ɵcmp = i0.ɵɵngDeclareComponent({
2137
2137
  minVersion: "17.0.0",
2138
- version: "22.2.1",
2138
+ version: "22.2.2",
2139
2139
  type: ClipperSearchFreeTextQueryBuilderComponent,
2140
2140
  isStandalone: true,
2141
2141
  selector: "ng-component",
@@ -2397,7 +2397,7 @@ var ClipperSearchFreeTextQueryBuilderComponent = class ClipperSearchFreeTextQuer
2397
2397
  };
2398
2398
  i0.ɵɵngDeclareClassMetadata({
2399
2399
  minVersion: "12.0.0",
2400
- version: "22.2.1",
2400
+ version: "22.2.2",
2401
2401
  ngImport: i0,
2402
2402
  type: ClipperSearchFreeTextQueryBuilderComponent,
2403
2403
  decorators: [{
@@ -2487,7 +2487,7 @@ var ClipperSearchResultItemComponent = class ClipperSearchResultItemComponent {
2487
2487
  static {
2488
2488
  this.ɵfac = i0.ɵɵngDeclareFactory({
2489
2489
  minVersion: "12.0.0",
2490
- version: "22.2.1",
2490
+ version: "22.2.2",
2491
2491
  ngImport: i0,
2492
2492
  type: ClipperSearchResultItemComponent,
2493
2493
  deps: [],
@@ -2497,7 +2497,7 @@ var ClipperSearchResultItemComponent = class ClipperSearchResultItemComponent {
2497
2497
  static {
2498
2498
  this.ɵcmp = i0.ɵɵngDeclareComponent({
2499
2499
  minVersion: "17.0.0",
2500
- version: "22.2.1",
2500
+ version: "22.2.2",
2501
2501
  type: ClipperSearchResultItemComponent,
2502
2502
  isStandalone: true,
2503
2503
  selector: "clipper-search-result-item",
@@ -2883,7 +2883,7 @@ var ClipperSearchResultItemComponent = class ClipperSearchResultItemComponent {
2883
2883
  };
2884
2884
  i0.ɵɵngDeclareClassMetadata({
2885
2885
  minVersion: "12.0.0",
2886
- version: "22.2.1",
2886
+ version: "22.2.2",
2887
2887
  ngImport: i0,
2888
2888
  type: ClipperSearchResultItemComponent,
2889
2889
  decorators: [{
@@ -3951,7 +3951,7 @@ var ClipperBrowserComponent = class ClipperBrowserComponent extends ClipperSearc
3951
3951
  static {
3952
3952
  this.ɵfac = i0.ɵɵngDeclareFactory({
3953
3953
  minVersion: "12.0.0",
3954
- version: "22.2.1",
3954
+ version: "22.2.2",
3955
3955
  ngImport: i0,
3956
3956
  type: ClipperBrowserComponent,
3957
3957
  deps: [],
@@ -3961,7 +3961,7 @@ var ClipperBrowserComponent = class ClipperBrowserComponent extends ClipperSearc
3961
3961
  static {
3962
3962
  this.ɵcmp = i0.ɵɵngDeclareComponent({
3963
3963
  minVersion: "17.0.0",
3964
- version: "22.2.1",
3964
+ version: "22.2.2",
3965
3965
  type: ClipperBrowserComponent,
3966
3966
  isStandalone: true,
3967
3967
  selector: "clipper-browser",
@@ -4872,7 +4872,7 @@ var ClipperBrowserComponent = class ClipperBrowserComponent extends ClipperSearc
4872
4872
  };
4873
4873
  i0.ɵɵngDeclareClassMetadata({
4874
4874
  minVersion: "12.0.0",
4875
- version: "22.2.1",
4875
+ version: "22.2.2",
4876
4876
  ngImport: i0,
4877
4877
  type: ClipperBrowserComponent,
4878
4878
  decorators: [{
@@ -5043,7 +5043,7 @@ var ClipperBrowserDialogComponent = class ClipperBrowserDialogComponent {
5043
5043
  static {
5044
5044
  this.ɵfac = i0.ɵɵngDeclareFactory({
5045
5045
  minVersion: "12.0.0",
5046
- version: "22.2.1",
5046
+ version: "22.2.2",
5047
5047
  ngImport: i0,
5048
5048
  type: ClipperBrowserDialogComponent,
5049
5049
  deps: [],
@@ -5053,7 +5053,7 @@ var ClipperBrowserDialogComponent = class ClipperBrowserDialogComponent {
5053
5053
  static {
5054
5054
  this.ɵcmp = i0.ɵɵngDeclareComponent({
5055
5055
  minVersion: "17.0.0",
5056
- version: "22.2.1",
5056
+ version: "22.2.2",
5057
5057
  type: ClipperBrowserDialogComponent,
5058
5058
  isStandalone: true,
5059
5059
  selector: "ng-component",
@@ -5324,7 +5324,7 @@ var ClipperBrowserDialogComponent = class ClipperBrowserDialogComponent {
5324
5324
  };
5325
5325
  i0.ɵɵngDeclareClassMetadata({
5326
5326
  minVersion: "12.0.0",
5327
- version: "22.2.1",
5327
+ version: "22.2.2",
5328
5328
  ngImport: i0,
5329
5329
  type: ClipperBrowserDialogComponent,
5330
5330
  decorators: [{
@@ -5397,7 +5397,7 @@ var ClipperDocumentIndexComponent = class ClipperDocumentIndexComponent {
5397
5397
  static {
5398
5398
  this.ɵfac = i0.ɵɵngDeclareFactory({
5399
5399
  minVersion: "12.0.0",
5400
- version: "22.2.1",
5400
+ version: "22.2.2",
5401
5401
  ngImport: i0,
5402
5402
  type: ClipperDocumentIndexComponent,
5403
5403
  deps: [],
@@ -5407,7 +5407,7 @@ var ClipperDocumentIndexComponent = class ClipperDocumentIndexComponent {
5407
5407
  static {
5408
5408
  this.ɵcmp = i0.ɵɵngDeclareComponent({
5409
5409
  minVersion: "17.0.0",
5410
- version: "22.2.1",
5410
+ version: "22.2.2",
5411
5411
  type: ClipperDocumentIndexComponent,
5412
5412
  isStandalone: true,
5413
5413
  selector: "ng-component",
@@ -5633,7 +5633,7 @@ var ClipperDocumentIndexComponent = class ClipperDocumentIndexComponent {
5633
5633
  };
5634
5634
  i0.ɵɵngDeclareClassMetadata({
5635
5635
  minVersion: "12.0.0",
5636
- version: "22.2.1",
5636
+ version: "22.2.2",
5637
5637
  ngImport: i0,
5638
5638
  type: ClipperDocumentIndexComponent,
5639
5639
  decorators: [{
@@ -5740,7 +5740,7 @@ var ClipperSearchCalendarComponent = class ClipperSearchCalendarComponent {
5740
5740
  static {
5741
5741
  this.ɵfac = i0.ɵɵngDeclareFactory({
5742
5742
  minVersion: "12.0.0",
5743
- version: "22.2.1",
5743
+ version: "22.2.2",
5744
5744
  ngImport: i0,
5745
5745
  type: ClipperSearchCalendarComponent,
5746
5746
  deps: [],
@@ -5750,7 +5750,7 @@ var ClipperSearchCalendarComponent = class ClipperSearchCalendarComponent {
5750
5750
  static {
5751
5751
  this.ɵcmp = i0.ɵɵngDeclareComponent({
5752
5752
  minVersion: "17.0.0",
5753
- version: "22.2.1",
5753
+ version: "22.2.2",
5754
5754
  type: ClipperSearchCalendarComponent,
5755
5755
  isStandalone: true,
5756
5756
  selector: "clipper-search-calendar",
@@ -5965,7 +5965,7 @@ var ClipperSearchCalendarComponent = class ClipperSearchCalendarComponent {
5965
5965
  };
5966
5966
  i0.ɵɵngDeclareClassMetadata({
5967
5967
  minVersion: "12.0.0",
5968
- version: "22.2.1",
5968
+ version: "22.2.2",
5969
5969
  ngImport: i0,
5970
5970
  type: ClipperSearchCalendarComponent,
5971
5971
  decorators: [{