@arsedizioni/ars-utils 18.2.106 → 18.2.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/clipper.ui/documents.d.ts +1 -1
- package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts +14 -0
- package/clipper.ui/ui/document/document.component.d.ts +13 -7
- package/clipper.ui/ui/document-manager/document-manager.d.ts +2 -4
- package/clipper.ui/ui/document-menu/document-menu.component.d.ts +1 -1
- package/esm2022/clipper.ui/documents.mjs +2 -2
- package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +27 -2
- package/esm2022/clipper.ui/ui/document/document.component.mjs +18 -7
- package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +20 -17
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +1642 -1662
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -2,11 +2,11 @@ import { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';
|
|
|
2
2
|
import { NgClass, NgStyle } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { input, computed, Component, ChangeDetectionStrategy, EventEmitter, inject, Output, ViewChild, ChangeDetectorRef, signal, Renderer2 } from '@angular/core';
|
|
5
|
-
import * as i3$
|
|
5
|
+
import * as i3$2 from '@angular/forms';
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i9 from '@angular/material/badge';
|
|
8
8
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i2 from '@angular/material/button';
|
|
10
10
|
import { MatButtonModule } from '@angular/material/button';
|
|
11
11
|
import * as i1$1 from '@angular/material/checkbox';
|
|
12
12
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
@@ -15,7 +15,7 @@ import { MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MatDatepickerModule, M
|
|
|
15
15
|
import { MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
16
16
|
import * as i3 from '@angular/material/divider';
|
|
17
17
|
import { MatDividerModule } from '@angular/material/divider';
|
|
18
|
-
import * as i3$
|
|
18
|
+
import * as i3$3 from '@angular/material/form-field';
|
|
19
19
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
20
20
|
import * as i5 from '@angular/material/icon';
|
|
21
21
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -33,7 +33,8 @@ import { MatTabsModule } from '@angular/material/tabs';
|
|
|
33
33
|
import * as i3$1 from '@angular/material/tooltip';
|
|
34
34
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
35
35
|
import { ClipperService, ClipperSearchParams, ClipperModule, ClipperSectors, ClipperRegions, ClipperChannels, ClipperAuthors, ClipperSectorTypes, ClipperSearchUtils, ClipperSearchFacetsSnapshot, ClipperFacet, ClipperModel, ClipperQueryReferencesMode, ClipperMessages, ClipperSearchResult, ClipperSort, ClipperModels, ClipperSources, ClipperDocumentChangeReason } from '@arsedizioni/ars-utils/clipper.common';
|
|
36
|
-
import { SystemUtils, DateInterval, DateIntervalChangeDirective, SafeHtmlPipe, ScreenService, FormatPipe, SelectableModel,
|
|
36
|
+
import { SystemUtils, DateInterval, DateIntervalChangeDirective, SafeHtmlPipe, ScreenService, FormatPipe, SelectableModel, BroadcastService, DateFormat, SafeUrlPipe } from '@arsedizioni/ars-utils/core';
|
|
37
|
+
import { FlexLayoutModule } from '@ngbracket/ngx-layout';
|
|
37
38
|
import { Subject, takeUntil, fromEvent } from 'rxjs';
|
|
38
39
|
import { takeUntil as takeUntil$1, debounceTime } from 'rxjs/operators';
|
|
39
40
|
import * as i7 from '@angular/material/core';
|
|
@@ -45,18 +46,17 @@ import { MatSelectModule } from '@angular/material/select';
|
|
|
45
46
|
import * as i15 from '@angular/material/slide-toggle';
|
|
46
47
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
47
48
|
import { DialogService } from '@arsedizioni/ars-utils/ui';
|
|
48
|
-
import { ChipsSelectorComponent,
|
|
49
|
+
import { ChipsSelectorComponent, ApplicationDialogService, SendToDialogComponent, CalendarEmptyHeader, FilePreviewComponent } from '@arsedizioni/ars-utils/ui.application';
|
|
49
50
|
import * as i1 from '@ngbracket/ngx-layout/flex';
|
|
50
51
|
import { FlexModule } from '@ngbracket/ngx-layout/flex';
|
|
51
|
-
import
|
|
52
|
-
import * as
|
|
53
|
-
import * as i3$5 from '@angular/material/chips';
|
|
52
|
+
import * as i2$1 from '@ngbracket/ngx-layout/extended';
|
|
53
|
+
import * as i3$4 from '@angular/material/chips';
|
|
54
54
|
import { MatChipsModule } from '@angular/material/chips';
|
|
55
55
|
import { startOfToday, endOfDay, startOfMonth, endOfMonth, startOfDay, subDays } from 'date-fns';
|
|
56
56
|
import { Clipboard } from '@angular/cdk/clipboard';
|
|
57
57
|
import saveAs from 'file-saver';
|
|
58
58
|
import { Router } from '@angular/router';
|
|
59
|
-
import * as i2$
|
|
59
|
+
import * as i2$2 from '@angular/material/list';
|
|
60
60
|
import { MatListModule } from '@angular/material/list';
|
|
61
61
|
|
|
62
62
|
class ClipperDocumentMenuComponent {
|
|
@@ -114,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
114
114
|
|
|
115
115
|
class ClipperSearchFreeTextHelpComponent {
|
|
116
116
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchFreeTextHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
117
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperSearchFreeTextHelpComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<h2 mat-dialog-title>Come effettuare la ricerca in testo libero</h2>\r\n<div mat-dialog-content>\r\n <p>Normalmente viene sempre effettuata una ricerca per frase: tutte le parole specificate debbono essere\r\n \"ragionevolmente vicine\" (entro 5 parole) l'una dall'altra.</p>\r\n <p>La ricerca per frase di solito produce i risultati pi\u00F9 rilevanti.</p>\r\n <p>Tuttavia \u00E8 possibile istruire Clipper per eseguire ricerche differenti e pi\u00F9 complesse.</p>\r\n <p>Tutte gli elementi che compongono la stringa di ricerca devono essere separati da virgola.</p>\r\n <ul>\r\n <li>Se un elemento \u00E8 composto da pi\u00F9 parole \u00E8 una frase, altrimenti una parola</li>\r\n <li>Aggiungendo un <b style=\"font-size: 20px\">+</b> davanti all'elemento, l'elemento <b>dovr\u00E0 per forza</b> essere presente nel documento\r\n </li>\r\n <li>Aggiungendo un <b style=\"font-size: 20px\">-</b> davanti all'elemento, l'elemento <b>non dovr\u00E0</b> essere presente nel documento</li>\r\n </ul>\r\n <p>Ecco alcuni esempi:</p>\r\n <ul>\r\n <li><b>serbatoi interrati</b>: sar\u00E0 effettuata una ricerca per la frase \"serbatoi interrati\"</li>\r\n <li><b>serbatoi, interrati</b>: sar\u00E0 effettuata una ricerca per le parole \"serbatoi\" e \"interrati\"; il risultato sar\u00E0 tutti i documenti che contengono una o l'altra parola.</li>\r\n <li><b>serbatoi, +interrati</b>: sar\u00E0 effettuata una ricerca per le parole \"serbatoi\" e \"interrati\"; il risultato sar\u00E0 tutti i documenti che contengono necessariamente \"interrati\" ed eventualmente \"serbatoi\".</li>\r\n <li><b>serbatoi, -interrati</b>: sar\u00E0 effettuata una ricerca per le parole \"serbatoi\" e \"interrati\"; il risultato sar\u00E0 tutti i documenti che contengono necessariamente \"interrati\" ma non \"serbatoi\".</li>\r\n <li><b>\"serbatoi interrati\", -gas</b>: sar\u00E0 effettuata una ricerca per la frase \"serbatoi interrati\" e per la parola \"gas\"; il risultato sar\u00E0 tutti i documenti che contengono la frase \"serbatoi interrati\" ma non la parola \"gas\".</li>\r\n </ul>\r\n <p>Saranno mostrati per primi (pi\u00F9 rilevanti) i documenti che rispettano in pieno la condizione.</p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" fxFill >\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
117
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperSearchFreeTextHelpComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<h2 mat-dialog-title>Come effettuare la ricerca in testo libero</h2>\r\n<div mat-dialog-content>\r\n <p>Normalmente viene sempre effettuata una ricerca per frase: tutte le parole specificate debbono essere\r\n \"ragionevolmente vicine\" (entro 5 parole) l'una dall'altra.</p>\r\n <p>La ricerca per frase di solito produce i risultati pi\u00F9 rilevanti.</p>\r\n <p>Tuttavia \u00E8 possibile istruire Clipper per eseguire ricerche differenti e pi\u00F9 complesse.</p>\r\n <p>Tutte gli elementi che compongono la stringa di ricerca devono essere separati da virgola.</p>\r\n <ul>\r\n <li>Se un elemento \u00E8 composto da pi\u00F9 parole \u00E8 una frase, altrimenti una parola</li>\r\n <li>Aggiungendo un <b style=\"font-size: 20px\">+</b> davanti all'elemento, l'elemento <b>dovr\u00E0 per forza</b> essere presente nel documento\r\n </li>\r\n <li>Aggiungendo un <b style=\"font-size: 20px\">-</b> davanti all'elemento, l'elemento <b>non dovr\u00E0</b> essere presente nel documento</li>\r\n </ul>\r\n <p>Ecco alcuni esempi:</p>\r\n <ul>\r\n <li><b>serbatoi interrati</b>: sar\u00E0 effettuata una ricerca per la frase \"serbatoi interrati\"</li>\r\n <li><b>serbatoi, interrati</b>: sar\u00E0 effettuata una ricerca per le parole \"serbatoi\" e \"interrati\"; il risultato sar\u00E0 tutti i documenti che contengono una o l'altra parola.</li>\r\n <li><b>serbatoi, +interrati</b>: sar\u00E0 effettuata una ricerca per le parole \"serbatoi\" e \"interrati\"; il risultato sar\u00E0 tutti i documenti che contengono necessariamente \"interrati\" ed eventualmente \"serbatoi\".</li>\r\n <li><b>serbatoi, -interrati</b>: sar\u00E0 effettuata una ricerca per le parole \"serbatoi\" e \"interrati\"; il risultato sar\u00E0 tutti i documenti che contengono necessariamente \"interrati\" ma non \"serbatoi\".</li>\r\n <li><b>\"serbatoi interrati\", -gas</b>: sar\u00E0 effettuata una ricerca per la frase \"serbatoi interrati\" e per la parola \"gas\"; il risultato sar\u00E0 tutti i documenti che contengono la frase \"serbatoi interrati\" ma non la parola \"gas\".</li>\r\n </ul>\r\n <p>Saranno mostrati per primi (pi\u00F9 rilevanti) i documenti che rispettano in pieno la condizione.</p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" fxFill >\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
118
118
|
}
|
|
119
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchFreeTextHelpComponent, decorators: [{
|
|
120
120
|
type: Component,
|
|
@@ -200,7 +200,7 @@ class ClipperSearchFreeTextQueryBuilderComponent {
|
|
|
200
200
|
this.done.emit({ query: query });
|
|
201
201
|
}
|
|
202
202
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchFreeTextQueryBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchFreeTextQueryBuilderComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<h2 mat-dialog-title>Trova gli elementi che contengono...</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-label>Questa esatta parola o frase</mat-label>\r\n <input matInput name=\"queryPhrase\" [(ngModel)]=\"queryPhrase\" maxlength=\"200\" />\r\n @if (queryPhrase) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryPhrase=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Tutte queste parole</mat-label>\r\n <input matInput name=\"queryAnd\" [(ngModel)]=\"queryAnd\" maxlength=\"200\" />\r\n @if (queryAnd) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryAnd=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n <mat-hint>Separate da virgola</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Una qualunque di queste parole</mat-label>\r\n <input matInput name=\"queryOr\" [(ngModel)]=\"queryOr\" maxlength=\"200\" />\r\n @if (queryOr) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryOr=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n <mat-hint>Separate da virgola</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Parole che iniziano con</mat-label>\r\n <input matInput name=\"queryStart\" [(ngModel)]=\"queryStart\" maxlength=\"200\" />\r\n @if (queryStart) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryStart=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Nessuna qualunque di queste parole</mat-label>\r\n <input matInput name=\"queryNot\" [(ngModel)]=\"queryNot\" maxlength=\"200\" />\r\n @if (queryNot) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryNot=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n <mat-hint>Separate da virgola. L'operatore di esclusione funziona solo se prima \u00E8 stato inserito un valore in\r\n almeno uno degli altri quattro campi. </mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\" fxLayoutAlign=\"start\">\r\n <button type=\"button\" mat-button (click)=\"clear()\" color=\"primary\">Pulisci</button>\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\">Ok</button>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$
|
|
203
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchFreeTextQueryBuilderComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<h2 mat-dialog-title>Trova gli elementi che contengono...</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-label>Questa esatta parola o frase</mat-label>\r\n <input matInput name=\"queryPhrase\" [(ngModel)]=\"queryPhrase\" maxlength=\"200\" />\r\n @if (queryPhrase) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryPhrase=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Tutte queste parole</mat-label>\r\n <input matInput name=\"queryAnd\" [(ngModel)]=\"queryAnd\" maxlength=\"200\" />\r\n @if (queryAnd) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryAnd=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n <mat-hint>Separate da virgola</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Una qualunque di queste parole</mat-label>\r\n <input matInput name=\"queryOr\" [(ngModel)]=\"queryOr\" maxlength=\"200\" />\r\n @if (queryOr) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryOr=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n <mat-hint>Separate da virgola</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Parole che iniziano con</mat-label>\r\n <input matInput name=\"queryStart\" [(ngModel)]=\"queryStart\" maxlength=\"200\" />\r\n @if (queryStart) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryStart=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Nessuna qualunque di queste parole</mat-label>\r\n <input matInput name=\"queryNot\" [(ngModel)]=\"queryNot\" maxlength=\"200\" />\r\n @if (queryNot) {\r\n <a matSuffix mat-icon-button aria-label=\"Azzera\" (click)=\"queryNot=''\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n }\r\n <mat-hint>Separate da virgola. L'operatore di esclusione funziona solo se prima \u00E8 stato inserito un valore in\r\n almeno uno degli altri quattro campi. </mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\" fxLayoutAlign=\"start\">\r\n <button type=\"button\" mat-button (click)=\"clear()\" color=\"primary\">Pulisci</button>\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\">Ok</button>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
204
204
|
}
|
|
205
205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchFreeTextQueryBuilderComponent, decorators: [{
|
|
206
206
|
type: Component,
|
|
@@ -467,7 +467,7 @@ class ClipperSearchDialogComponent {
|
|
|
467
467
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
468
468
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [
|
|
469
469
|
MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER
|
|
470
|
-
], viewQueries: [{ propertyName: "okButton", first: true, predicate: ["okButton"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>Ricerca</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n <mat-accordion multi displayMode=\"flat\">\r\n @if(isLaws() || isModule(modulesEnum.ModificheAbrogazioniERinvii)) {\r\n <mat-expansion-panel expanded=\"true\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Settori\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <chips-selector [(ngModel)]=\"params.sectors\" [multiple]=\"true\" name=\"sectors\" label=\"Settori\"\r\n [options]=\"sectors\" (changed)=\"sectorsChanged()\" />\r\n @if(hasRegions())\r\n {\r\n <mat-divider style=\"padding-top: 8px; margin-top:8px\"></mat-divider>\r\n <chips-selector mode=\"collapsed\" [(ngModel)]=\"params.authors\" [multiple]=\"true\" name=\"authors\"\r\n label=\"Tutte le regioni\" [options]=\"regions\" />\r\n }\r\n </mat-expansion-panel>\r\n } @else if(isNews()) {\r\n <mat-expansion-panel expanded=\"true\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Tipologia\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <chips-selector [(ngModel)]=\"params.sectors\" [multiple]=\"true\" name=\"sectors\" label=\"Tipologia\"\r\n [options]=\"sectors\" />\r\n </mat-expansion-panel>\r\n }\r\n <mat-expansion-panel expanded=\"true\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Documento\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n @if (isLaws() || isModule(modulesEnum.Giurisprudenza)) {\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input #filterByNumber=\"matInput\" matInput maxlength=\"10\" [(ngModel)]=\"params.number\" name=\"number\" />\r\n @if (params.number) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.number = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.year\" name=\"year\" />\r\n @if (params.year) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.year = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (isLaws() || !isModule(modulesEnum.ScadenzeESegnalazioni)) {\r\n <mat-form-field>\r\n <mat-label>Intervallo di pubblicazione</mat-label>\r\n <mat-date-range-input [rangePicker]=\"picker1\">\r\n <input matStartDate [(ngModel)]=\"interval.from\" [dateIntervalChange]=\"interval\" #rangeFrom1=\"ngModel\"\r\n name=\"rangeFrom1\" placeholder=\"Da data\">\r\n <input matEndDate [(ngModel)]=\"interval.to\" [dateIntervalChange]=\"interval\" [end]=\"true\"\r\n #rangeTo1=\"ngModel\" name=\"rangeTo1\" placeholder=\"A data\">\r\n </mat-date-range-input>\r\n @if (interval.from || interval.to) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"interval.clear()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker1\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker1></mat-date-range-picker>\r\n @if (rangeFrom1.invalid || rangeTo1.invalid) {\r\n <mat-error>Intervallo non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field>\r\n <mat-label>Testo</mat-label>\r\n <input matInput maxlength=\"200\" [(ngModel)]=\"params.text\" name=\"text\" />\r\n @if (params.text) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.text = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix matTooltip=\"Opzioni\" aria-label=\"Opzioni\"\r\n [matMenuTriggerFor]=\"textOptionsMenu\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-form-field>\r\n <div>\r\n <div>\r\n <mat-slide-toggle [(ngModel)]=\"params.titleOnly\" name=\"titleOnly\">Cerca solo nel\r\n titolo</mat-slide-toggle>\r\n </div>\r\n @if(isLaws()) {\r\n <div style=\"padding-top:10px\">\r\n <mat-slide-toggle [(ngModel)]=\"params.showCommentedDocumentsOnly\" name=\"showCommentedDocumentsOnly\">Mostra\r\n solo norme con commenti</mat-slide-toggle>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n @if(isLaws()) {\r\n <mat-expansion-panel [expanded]=\"hasFilter('source')\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Fonte\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input matInput maxlength=\"10\" [(ngModel)]=\"params.sourceNumber\" name=\"sourceNumber\" />\r\n @if (params.sourceNumber) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.sourceNumber = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.sourceYear\"\r\n name=\"sourceYear\" />\r\n @if (params.sourceYear) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.sourceYear = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>Intervallo di pubblicazione</mat-label>\r\n <mat-date-range-input [rangePicker]=\"picker2\">\r\n <input matStartDate [(ngModel)]=\"sourceInterval.from\" [dateIntervalChange]=\"sourceInterval\"\r\n #rangeFrom2=\"ngModel\" name=\"rangeFrom2\" placeholder=\"Da data\">\r\n <input matEndDate [(ngModel)]=\"sourceInterval.to\" [dateIntervalChange]=\"sourceInterval\" [end]=\"true\"\r\n #rangeTo2=\"ngModel\" name=\"rangeTo2\" placeholder=\"A data\">\r\n </mat-date-range-input>\r\n @if (sourceInterval.from || sourceInterval.to) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"sourceInterval.clear()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker2\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker2></mat-date-range-picker>\r\n @if (rangeFrom2.invalid || rangeTo2.invalid) {\r\n <mat-error>Intervallo non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"params.source\" name=\"source\">\r\n @for (s of sources; track $index) {\r\n <mat-option [value]=\"s.value\" [matTooltip]=\"s.name\">\r\n {{s.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel [expanded]=\"hasFilter('other')\" class=\"accordion-panel mat-elevation-z0\">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Altre opzioni\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n @if(isLaws()) {\r\n @if(!hasRegions()) {\r\n <mat-form-field>\r\n <mat-label>Autore</mat-label>\r\n <mat-select [(ngModel)]=\"params.author\" name=\"author\">\r\n @for (a of authors; track $index) {\r\n <mat-option [value]=\"a.value\" [matTooltip]=\"a.name\">\r\n {{a.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <mat-form-field>\r\n <mat-label>Tipo documento</mat-label>\r\n <mat-select [(ngModel)]=\"params.type\" name=\"type\">\r\n @for (t of types; track $index) {\r\n <mat-option [value]=\"t.value\" [matTooltip]=\"t.name\">\r\n {{t.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Argomento</mat-label>\r\n <mat-select [(ngModel)]=\"params.topic\" name=\"topic\">\r\n @for (t of topics; track $index) {\r\n <mat-option [value]=\"t.value\" [matTooltip]=\"t.name\">\r\n {{t.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n } @else if(isModule(modulesEnum.ModificheAbrogazioniERinvii)) {\r\n <mat-expansion-panel expanded class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Documento modificato\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input matInput maxlength=\"10\" [(ngModel)]=\"params.changedNumber\" name=\"changedNumber\"\r\n #filterByChangeNumber=\"matInput\" />\r\n @if (params.changedNumber) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.changedNumber = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.changedYear\"\r\n name=\"changedYear\" />\r\n @if (params.changedYear) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.changedYear = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>Titolo</mat-label>\r\n <input matInput maxlength=\"200\" [(ngModel)]=\"params.changedTitle\" name=\"changedTitle\" />\r\n @if (params.changedTitle) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.changedTitle = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel [expanded]=\"hasFilter('modifier')\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Documento modificante\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input matInput maxlength=\"10\" [(ngModel)]=\"params.modifierNumber\" name=\"modifierNumber\" />\r\n @if (params.changedNumber) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.modifierNumber = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.modifierYear\"\r\n name=\"modifierYear\" />\r\n @if (params.modifierYear) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.modifierYear = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>Titolo</mat-label>\r\n <input matInput maxlength=\"200\" [(ngModel)]=\"params.modifierTitle\" name=\"modifierTitle\" />\r\n @if (params.modifierTitle) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.modifierTitle = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel [expanded]=\"hasFilter('other')\" class=\"accordion-panel mat-elevation-z0\">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Altre opzioni\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-label>Motivo</mat-label>\r\n <mat-select [(ngModel)]=\"params.changeReason\" name=\"changeReason\">\r\n <mat-option>Tutti</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n }\r\n </mat-accordion>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n <button type=\"button\" mat-button (click)=\"clear()\" color=\"primary\">Pulisci</button>\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" #okButton [disabled]=\"f.form.invalid\" (click)=\"ok()\">Trova</button>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-menu #textOptionsMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"compose()\">\r\n <mat-icon>build</mat-icon>Componi\r\n </button>\r\n <button mat-menu-item (click)=\"help()\">\r\n <mat-icon>help</mat-icon>Come usare la ricerca in testo libero\r\n </button>\r\n</mat-menu>", styles: [".accordion-panel{background-color:transparent}.accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.mat-expansion-panel-body{padding-bottom:20px!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i13.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i13.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i13.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i13.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i13.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: DateIntervalChangeDirective, selector: "[dateIntervalChange]", inputs: ["dateIntervalChange", "end"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i15.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: ChipsSelectorComponent, selector: "chips-selector", inputs: ["options", "collapsedWidth", "collapseAt", "collapseAtContainer", "collapseDisplayMode", "label", "multiple", "mode", "required", "disabled", "placeholder"], outputs: ["changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
470
|
+
], viewQueries: [{ propertyName: "okButton", first: true, predicate: ["okButton"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>Ricerca</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n <mat-accordion multi displayMode=\"flat\">\r\n @if(isLaws() || isModule(modulesEnum.ModificheAbrogazioniERinvii)) {\r\n <mat-expansion-panel expanded=\"true\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Settori\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <chips-selector [(ngModel)]=\"params.sectors\" [multiple]=\"true\" name=\"sectors\" label=\"Settori\"\r\n [options]=\"sectors\" (changed)=\"sectorsChanged()\" />\r\n @if(hasRegions())\r\n {\r\n <mat-divider style=\"padding-top: 8px; margin-top:8px\"></mat-divider>\r\n <chips-selector mode=\"collapsed\" [(ngModel)]=\"params.authors\" [multiple]=\"true\" name=\"authors\"\r\n label=\"Tutte le regioni\" [options]=\"regions\" />\r\n }\r\n </mat-expansion-panel>\r\n } @else if(isNews()) {\r\n <mat-expansion-panel expanded=\"true\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Tipologia\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <chips-selector [(ngModel)]=\"params.sectors\" [multiple]=\"true\" name=\"sectors\" label=\"Tipologia\"\r\n [options]=\"sectors\" />\r\n </mat-expansion-panel>\r\n }\r\n <mat-expansion-panel expanded=\"true\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Documento\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n @if (isLaws() || isModule(modulesEnum.Giurisprudenza)) {\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input #filterByNumber=\"matInput\" matInput maxlength=\"10\" [(ngModel)]=\"params.number\" name=\"number\" />\r\n @if (params.number) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.number = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.year\" name=\"year\" />\r\n @if (params.year) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.year = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (isLaws() || !isModule(modulesEnum.ScadenzeESegnalazioni)) {\r\n <mat-form-field>\r\n <mat-label>Intervallo di pubblicazione</mat-label>\r\n <mat-date-range-input [rangePicker]=\"picker1\">\r\n <input matStartDate [(ngModel)]=\"interval.from\" [dateIntervalChange]=\"interval\" #rangeFrom1=\"ngModel\"\r\n name=\"rangeFrom1\" placeholder=\"Da data\">\r\n <input matEndDate [(ngModel)]=\"interval.to\" [dateIntervalChange]=\"interval\" [end]=\"true\"\r\n #rangeTo1=\"ngModel\" name=\"rangeTo1\" placeholder=\"A data\">\r\n </mat-date-range-input>\r\n @if (interval.from || interval.to) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"interval.clear()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker1\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker1></mat-date-range-picker>\r\n @if (rangeFrom1.invalid || rangeTo1.invalid) {\r\n <mat-error>Intervallo non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field>\r\n <mat-label>Testo</mat-label>\r\n <input matInput maxlength=\"200\" [(ngModel)]=\"params.text\" name=\"text\" />\r\n @if (params.text) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.text = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix matTooltip=\"Opzioni\" aria-label=\"Opzioni\"\r\n [matMenuTriggerFor]=\"textOptionsMenu\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-form-field>\r\n <div>\r\n <div>\r\n <mat-slide-toggle [(ngModel)]=\"params.titleOnly\" name=\"titleOnly\">Cerca solo nel\r\n titolo</mat-slide-toggle>\r\n </div>\r\n @if(isLaws()) {\r\n <div style=\"padding-top:10px\">\r\n <mat-slide-toggle [(ngModel)]=\"params.showCommentedDocumentsOnly\" name=\"showCommentedDocumentsOnly\">Mostra\r\n solo norme con commenti</mat-slide-toggle>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n @if(isLaws()) {\r\n <mat-expansion-panel [expanded]=\"hasFilter('source')\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Fonte\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input matInput maxlength=\"10\" [(ngModel)]=\"params.sourceNumber\" name=\"sourceNumber\" />\r\n @if (params.sourceNumber) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.sourceNumber = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.sourceYear\"\r\n name=\"sourceYear\" />\r\n @if (params.sourceYear) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.sourceYear = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>Intervallo di pubblicazione</mat-label>\r\n <mat-date-range-input [rangePicker]=\"picker2\">\r\n <input matStartDate [(ngModel)]=\"sourceInterval.from\" [dateIntervalChange]=\"sourceInterval\"\r\n #rangeFrom2=\"ngModel\" name=\"rangeFrom2\" placeholder=\"Da data\">\r\n <input matEndDate [(ngModel)]=\"sourceInterval.to\" [dateIntervalChange]=\"sourceInterval\" [end]=\"true\"\r\n #rangeTo2=\"ngModel\" name=\"rangeTo2\" placeholder=\"A data\">\r\n </mat-date-range-input>\r\n @if (sourceInterval.from || sourceInterval.to) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"sourceInterval.clear()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker2\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker2></mat-date-range-picker>\r\n @if (rangeFrom2.invalid || rangeTo2.invalid) {\r\n <mat-error>Intervallo non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"params.source\" name=\"source\">\r\n @for (s of sources; track $index) {\r\n <mat-option [value]=\"s.value\" [matTooltip]=\"s.name\">\r\n {{s.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel [expanded]=\"hasFilter('other')\" class=\"accordion-panel mat-elevation-z0\">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Altre opzioni\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n @if(isLaws()) {\r\n @if(!hasRegions()) {\r\n <mat-form-field>\r\n <mat-label>Autore</mat-label>\r\n <mat-select [(ngModel)]=\"params.author\" name=\"author\">\r\n @for (a of authors; track $index) {\r\n <mat-option [value]=\"a.value\" [matTooltip]=\"a.name\">\r\n {{a.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <mat-form-field>\r\n <mat-label>Tipo documento</mat-label>\r\n <mat-select [(ngModel)]=\"params.type\" name=\"type\">\r\n @for (t of types; track $index) {\r\n <mat-option [value]=\"t.value\" [matTooltip]=\"t.name\">\r\n {{t.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Argomento</mat-label>\r\n <mat-select [(ngModel)]=\"params.topic\" name=\"topic\">\r\n @for (t of topics; track $index) {\r\n <mat-option [value]=\"t.value\" [matTooltip]=\"t.name\">\r\n {{t.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n } @else if(isModule(modulesEnum.ModificheAbrogazioniERinvii)) {\r\n <mat-expansion-panel expanded class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Documento modificato\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input matInput maxlength=\"10\" [(ngModel)]=\"params.changedNumber\" name=\"changedNumber\"\r\n #filterByChangeNumber=\"matInput\" />\r\n @if (params.changedNumber) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.changedNumber = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.changedYear\"\r\n name=\"changedYear\" />\r\n @if (params.changedYear) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.changedYear = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>Titolo</mat-label>\r\n <input matInput maxlength=\"200\" [(ngModel)]=\"params.changedTitle\" name=\"changedTitle\" />\r\n @if (params.changedTitle) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.changedTitle = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel [expanded]=\"hasFilter('modifier')\" class=\"accordion-panel mat-elevation-z0 \">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Documento modificante\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <mat-form-field fxFlex=\"59\" fxFlex.xs=\"100\">\r\n <mat-label>Numero</mat-label>\r\n <input matInput maxlength=\"10\" [(ngModel)]=\"params.modifierNumber\" name=\"modifierNumber\" />\r\n @if (params.changedNumber) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.modifierNumber = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxHide.xs fxFlex=\"39\" fxFlex.xs=\"100\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" min=\"1750\" matInput maxlength=\"4\" [(ngModel)]=\"params.modifierYear\"\r\n name=\"modifierYear\" />\r\n @if (params.modifierYear) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.modifierYear = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>Titolo</mat-label>\r\n <input matInput maxlength=\"200\" [(ngModel)]=\"params.modifierTitle\" name=\"modifierTitle\" />\r\n @if (params.modifierTitle) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"params.modifierTitle = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel [expanded]=\"hasFilter('other')\" class=\"accordion-panel mat-elevation-z0\">\r\n <mat-expansion-panel-header class=\"accordion-header\">\r\n <mat-panel-title>\r\n Altre opzioni\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-label>Motivo</mat-label>\r\n <mat-select [(ngModel)]=\"params.changeReason\" name=\"changeReason\">\r\n <mat-option>Tutti</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n }\r\n </mat-accordion>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n <button type=\"button\" mat-button (click)=\"clear()\" color=\"primary\">Pulisci</button>\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" #okButton [disabled]=\"f.form.invalid\" (click)=\"ok()\">Trova</button>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-menu #textOptionsMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"compose()\">\r\n <mat-icon>build</mat-icon>Componi\r\n </button>\r\n <button mat-menu-item (click)=\"help()\">\r\n <mat-icon>help</mat-icon>Come usare la ricerca in testo libero\r\n </button>\r\n</mat-menu>", styles: [".accordion-panel{background-color:transparent}.accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.mat-expansion-panel-body{padding-bottom:20px!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$1.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i13.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i13.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i13.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i13.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i13.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: DateIntervalChangeDirective, selector: "[dateIntervalChange]", inputs: ["dateIntervalChange", "end"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i15.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: ChipsSelectorComponent, selector: "chips-selector", inputs: ["options", "collapsedWidth", "collapseAt", "collapseAtContainer", "collapseDisplayMode", "label", "multiple", "mode", "required", "disabled", "placeholder"], outputs: ["changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
471
471
|
}
|
|
472
472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchDialogComponent, decorators: [{
|
|
473
473
|
type: Component,
|
|
@@ -729,7 +729,7 @@ class ClipperSearchFacetsComponent {
|
|
|
729
729
|
return this.snapshot;
|
|
730
730
|
}
|
|
731
731
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchFacetsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
732
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchFacetsComponent, isStandalone: true, selector: "clipper-search-facets", outputs: { changed: "changed" }, ngImport: i0, template: "<div fxLayout=\"column\" fxFill class=\"facets-container scroll-hidden\">\r\n <div>\r\n @if (snapshot.usedGroups.length > 0) {\r\n <div class=\"facets-selection\">\r\n <mat-chip-set aria-label=\"Selezione\">\r\n @for (ug of snapshot.usedGroups; track ug) {\r\n <mat-chip (removed)=\"dismiss(ug)\" [matTooltip]=\"ug.selectedValueDescription ?? ''\">\r\n {{ug.selectedValueDescription}}\r\n <button matChipRemove [attr.aria-label]=\"'Rimuovi ' + ug.name\" [matTooltip]=\"'Rimuovi ' + ug.name\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n <mat-divider class=\"divider\" style=\"margin-top: 20px;\"></mat-divider>\r\n </div>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-auto\">\r\n @if (snapshot.groups.length > 0) {\r\n @for (group of snapshot.groups; track group.index; let i = $index) {\r\n <mat-accordion multi displayMode=\"flat\">\r\n <mat-expansion-panel class=\"accordion-panel mat-elevation-z0 \" [expanded]=\"i == 0\">\r\n <mat-expansion-panel-header class=\"accordion-header\" [attr.aria-label]=\"group.name\">\r\n <mat-panel-title>\r\n @if (group.index == 2 && snapshot.interval) {\r\n {{snapshot.interval}} ({{group.values.length}})\r\n } @else {\r\n {{group.name}} ({{group.values.length}})\r\n }\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <nav class=\"facets-items\">\r\n <ul>\r\n @for (item of group.values; track $index) {\r\n <li (click)=\"use(group, item)\" [attr.aria-label]=\"item.title\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"truncated\">\r\n <div class=\"truncated\">{{item.title}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n {{snapshot.hasTooManyResults ? '~' : ''}}{{item.count}}\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n }\r\n } @else if (snapshot.hasFacets && !snapshot.hasMoreFacets) {\r\n <div class=\"facets-message\">\r\n <p class=\"small\"><i>Tutte le opzioni sono state selezionate</i></p>\r\n </div>\r\n } \r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.accordion-panel{background-color:transparent!important}.facets-container{padding-top:0;padding-bottom:10px}.facets-message{padding-top:10px;padding-left:15px}.facets-selection{padding:0 4px 0 15px}.facets-selection .divider{margin-top:20px}.facets-items{padding:0;margin:0}.facets-items ul{list-style-type:none;padding:0;margin:0}.facets-items ul li{font-size:small;padding:6px 12px;display:block;color:var(--ars-color-text, #191c1b)}.facets-items ul li a{color:inherit;text-decoration:none;display:block}.facets-items ul li:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:6px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i3$5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i3$5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i3$5.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5$1.MatExpansionPanelTitle, selector: "mat-panel-title" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
732
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchFacetsComponent, isStandalone: true, selector: "clipper-search-facets", outputs: { changed: "changed" }, ngImport: i0, template: "<div fxLayout=\"column\" fxFill class=\"facets-container scroll-hidden\">\r\n <div>\r\n @if (snapshot.usedGroups.length > 0) {\r\n <div class=\"facets-selection\">\r\n <mat-chip-set aria-label=\"Selezione\">\r\n @for (ug of snapshot.usedGroups; track ug) {\r\n <mat-chip (removed)=\"dismiss(ug)\" [matTooltip]=\"ug.selectedValueDescription ?? ''\">\r\n {{ug.selectedValueDescription}}\r\n <button matChipRemove [attr.aria-label]=\"'Rimuovi ' + ug.name\" [matTooltip]=\"'Rimuovi ' + ug.name\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n <mat-divider class=\"divider\" style=\"margin-top: 20px;\"></mat-divider>\r\n </div>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-auto\">\r\n @if (snapshot.groups.length > 0) {\r\n @for (group of snapshot.groups; track group.index; let i = $index) {\r\n <mat-accordion multi displayMode=\"flat\">\r\n <mat-expansion-panel class=\"accordion-panel mat-elevation-z0 \" [expanded]=\"i == 0\">\r\n <mat-expansion-panel-header class=\"accordion-header\" [attr.aria-label]=\"group.name\">\r\n <mat-panel-title>\r\n @if (group.index == 2 && snapshot.interval) {\r\n {{snapshot.interval}} ({{group.values.length}})\r\n } @else {\r\n {{group.name}} ({{group.values.length}})\r\n }\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <nav class=\"facets-items\">\r\n <ul>\r\n @for (item of group.values; track $index) {\r\n <li (click)=\"use(group, item)\" [attr.aria-label]=\"item.title\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"truncated\">\r\n <div class=\"truncated\">{{item.title}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n {{snapshot.hasTooManyResults ? '~' : ''}}{{item.count}}\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n }\r\n } @else if (snapshot.hasFacets && !snapshot.hasMoreFacets) {\r\n <div class=\"facets-message\">\r\n <p class=\"small\"><i>Tutte le opzioni sono state selezionate</i></p>\r\n </div>\r\n } \r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.accordion-panel{background-color:transparent!important}.facets-container{padding-top:0;padding-bottom:10px}.facets-message{padding-top:10px;padding-left:15px}.facets-selection{padding:0 4px 0 15px}.facets-selection .divider{margin-top:20px}.facets-items{padding:0;margin:0}.facets-items ul{list-style-type:none;padding:0;margin:0}.facets-items ul li{font-size:small;padding:6px 12px;display:block;color:var(--ars-color-text, #191c1b)}.facets-items ul li a{color:inherit;text-decoration:none;display:block}.facets-items ul li:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:6px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i3$4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i3$4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i3$4.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5$1.MatExpansionPanelTitle, selector: "mat-panel-title" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
733
733
|
}
|
|
734
734
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchFacetsComponent, decorators: [{
|
|
735
735
|
type: Component,
|
|
@@ -794,7 +794,7 @@ class ClipperSearchResultItemComponent {
|
|
|
794
794
|
}
|
|
795
795
|
;
|
|
796
796
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
797
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchResultItemComponent, isStandalone: true, selector: "clipper-search-result-item", inputs: { parent: { classPropertyName: "parent", publicName: "parent", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, tileNoPictureUrl: { classPropertyName: "tileNoPictureUrl", publicName: "tileNoPictureUrl", isSignal: true, isRequired: false, transformFunction: null }, tilePictureUrl: { classPropertyName: "tilePictureUrl", publicName: "tilePictureUrl", isSignal: true, isRequired: false, transformFunction: null }, isSelectable: { classPropertyName: "isSelectable", publicName: "isSelectable", isSignal: true, isRequired: false, transformFunction: null }, isReadable: { classPropertyName: "isReadable", publicName: "isReadable", isSignal: true, isRequired: false, transformFunction: null }, displayModelName: { classPropertyName: "displayModelName", publicName: "displayModelName", isSignal: true, isRequired: false, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenuTrigger", first: true, predicate: ["contextMenuTrigger"], descendants: true }], ngImport: i0, template: "<div>\r\n @if (displayMode() === displayModesEnum.List ) {\r\n <div class=\"item\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxLayoutAlign=\"start center\" fxFill\r\n [ngClass]=\"{'item-selected': isSelected() }\" (contextmenu)=\"onContextMenu($event, item())\"\r\n (mouseenter)=\"item().isOver = true\" (mouseleave)=\"item().isOver = false\">\r\n <div fxFlex=\"6px\" [ngClass]=\"parent()?.getItemStateCssClass(item)\"\r\n [matTooltip]=\"parent()?.getItemStateTooltip(item)\">\r\n </div>\r\n <div [fxFlex]=\"isSelectable() ? '48px' : '18px'\" fxLayoutAlign=\"center\">\r\n @if (isSelectable() && (screenService.isTouchable || item().isOver || isSelected())) {\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? parent()?.selection?.toggle(item(), item().documentId) : null\" [checked]=\"isSelected()\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\">\r\n <div class=\"item-content\">\r\n @if (displayModelName() && item().modelName) {\r\n <div class=\"info-2\">{{item().modelName}}</div>\r\n }\r\n @if (item().info) {\r\n <div class=\"info-1\">{{item().info}}</div>\r\n } @else if (item().date) {\r\n <div class=\"info-1\">{{item().date | format:'D':'d MMM yyyy'}}</div>\r\n } @else if (item().author && (item().origin === 'LR' || item().origin === 'GR' || item().origin\r\n ===\r\n 'GN')) {\r\n <div class=\"info-1\">{{item().author}}</div>\r\n }\r\n <div>\r\n <a class=\"link\" (click)=\"parent()?.open(item().documentId)\"\r\n [attr.aria-label]=\"'Apri documento ' + item().title1\">{{item().title1 ?? item().title2}}</a>\r\n @if (item().part > 0) {\r\n <span class=\"badge\">PARTE {{item().part}}</span>\r\n }\r\n @if (item().isCommented) {\r\n <span class=\"badge\">COMMENTATA</span>\r\n }\r\n @if (item().validityState > 0) {\r\n <span class=\"badge-red\">{{item().validityDescription}}</span>\r\n }\r\n </div>\r\n @if(item().description && item().model === modelsEnum.Coordinamento) {\r\n <div class=\"title\">{{item().description}}</div>\r\n }\r\n @if (item().title2 &&\r\n item().model !== modelsEnum.Coordinamento &&\r\n item().model !== modelsEnum.AllerteAlimentari &&\r\n item().model !== modelsEnum.Scadenze &&\r\n item().model !== modelsEnum.Segnalazioni) {\r\n <div class=\"title\">{{item().title2}}</div>\r\n }\r\n @if (item().originDescription ) {\r\n <div class=\"info-1\">\r\n {{item().originDescription}}</div>\r\n }\r\n @if (item().anchors.length > 0) {\r\n <div class=\"details\">\r\n <div>DETTAGLIO</div>\r\n <div class=\"links\">\r\n @for (a of item().anchors; track $index) {\r\n <span>\r\n @if (a.uri && a.text) {\r\n <a (click)=\"parent()?.open(a.documentId + '#' + a.uri)\" [matTooltip]=\"a.title\">{{a.text}} @if\r\n (a.veryRelevant) {\r\n <sup>\r\n <mat-icon style='font-size:x-small; height: 10px; width:10px' color=\"primary\"\r\n matTooltip=\"Molto rilevante\">thumb_up_alt</mat-icon>\r\n </sup>\r\n }</a>\r\n }\r\n @if (!a.uri && a.text) {\r\n <span>{{a.text}}</span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @if (item().taxonomy?.length > 0) {\r\n <div class=\"details\">\r\n <div>ARGOMENTI</div>\r\n <div class=\"links\">\r\n @for (n of item().taxonomy?.split('\\r\\n'); track $index) {\r\n <div class=\"link\">\r\n {{n}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @if (item().title2 && item().model === modelsEnum.Coordinamento) {\r\n <div class=\"details\">\r\n <div>TITOLO DOCUMENTO MODIFICATO</div>\r\n <div class=\"links\">\r\n <div>{{item().title2}}</div>\r\n </div>\r\n </div>\r\n }\r\n @if (item().description && item().model === modelsEnum.Coordinamento) {\r\n <div class=\"details\">\r\n <div>PROSSIMA SCADENZA</div>\r\n <div class=\"links\">\r\n <div>{{item().description}}</div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"48px\" fxLayoutAlign=\"end\">\r\n @if (item().isOver || item().isMenuOpen || isSelected()) {\r\n @if (isReadable() && !isRead() && item().model !== modelsEnum.Scadenze && item().model !== modelsEnum.Segnalazioni)\r\n {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Segna come gi\u00E0 letta\" [attr.aria-label]=\"'Segna come gi\u00E0 letta'\"\r\n (click)=\"parent()?.toggleRead(item(), $event)\">\r\n <mat-icon>flag</mat-icon>\r\n </button>\r\n }\r\n @if(item().model === modelsEnum.Scadenze || item().model === modelsEnum.Segnalazioni) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Aggiungi al tuo calendario\"\r\n [attr.aria-label]=\"'Aggiungi al tuo calendario'\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"actions()\" [matMenuTriggerData]=\"{item: item()}\" (click)=\"item().isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"tile\" (contextmenu)=\"onContextMenu($event, item())\" (mouseenter)=\"item().isOver = true\" (mouseleave)=\"item().isOver = false\" [ngClass]=\"{'item-selected': isSelected(), \r\n 'item-unread': isRead()}\" (click)=\"parent()?.open(item().documentId)\">\r\n <div class=\"image-mark\" [ngClass]=\"{'image-mark-unread': !isRead()}\"></div>\r\n <div class=\"image\">\r\n @if (isReadable() || isSelectable()) {\r\n <div class=\"buttons\">\r\n @if (isReadable() && !isRead() && item().isOver === true) {\r\n <button mat-icon-button class=\"read\" matTooltip=\"Segna come gi\u00E0 letto\"\r\n (click)=\"parent()?.toggleRead(item(), $event)\"><mat-icon>flag</mat-icon></button>\r\n }\r\n @if (isSelectable() && (isSelected() || item().isOver === true)) {\r\n <button mat-icon-button class=\"check\" [ngClass]=\"{'check-selected': isSelected()}\"\r\n matTooltip=\"Seleziona/Deseleziona\"\r\n (click)=\"parent()?.toggleSelection(item(), $event)\"><mat-icon>check</mat-icon></button>\r\n }\r\n </div>\r\n }\r\n <div class=\"info-1\">{{item().modelName}}</div>\r\n @if (item().info) {\r\n <div class=\"info-2\">{{item().info}}</div>\r\n }\r\n @if (item().pictureId && tilePictureUrl()) {\r\n <img decoding=\"async\" loading=\"lazy\" [src]=\"tilePictureUrl() + '?id=' + item().pictureId\" [alt]=\"item().title2\" />\r\n } @else if (tileNoPictureUrl()) {\r\n <picture>\r\n <img decoding=\"async\" loading=\"lazy\" [src]=\"tileNoPictureUrl()\"\r\n [alt]=\"item().title2 || 'immagine non trovata'\" />\r\n </picture>\r\n }\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"date\">\r\n <span class=\"date-day\" [ngClass]=\"{'unread': !item().isRead}\">{{item().date | format:'D':'d\r\n MMMM'}}</span>\r\n <span class=\"date-divider\"></span>\r\n <span>{{item().date| format:'D':'yyyy'}}</span>\r\n </div>\r\n <div class=\"title\">{{item().title2}}</div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"actions()\" [matMenuTriggerData]=\"{item: item}\">\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: FormatPipe, name: "format" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
797
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchResultItemComponent, isStandalone: true, selector: "clipper-search-result-item", inputs: { parent: { classPropertyName: "parent", publicName: "parent", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, tileNoPictureUrl: { classPropertyName: "tileNoPictureUrl", publicName: "tileNoPictureUrl", isSignal: true, isRequired: false, transformFunction: null }, tilePictureUrl: { classPropertyName: "tilePictureUrl", publicName: "tilePictureUrl", isSignal: true, isRequired: false, transformFunction: null }, isSelectable: { classPropertyName: "isSelectable", publicName: "isSelectable", isSignal: true, isRequired: false, transformFunction: null }, isReadable: { classPropertyName: "isReadable", publicName: "isReadable", isSignal: true, isRequired: false, transformFunction: null }, displayModelName: { classPropertyName: "displayModelName", publicName: "displayModelName", isSignal: true, isRequired: false, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenuTrigger", first: true, predicate: ["contextMenuTrigger"], descendants: true }], ngImport: i0, template: "<div>\r\n @if (displayMode() === displayModesEnum.List ) {\r\n <div class=\"item\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxLayoutAlign=\"start center\" fxFill\r\n [ngClass]=\"{'item-selected': isSelected() }\" (contextmenu)=\"onContextMenu($event, item())\"\r\n (mouseenter)=\"item().isOver = true\" (mouseleave)=\"item().isOver = false\">\r\n <div fxFlex=\"6px\" [ngClass]=\"parent()?.getItemStateCssClass(item)\"\r\n [matTooltip]=\"parent()?.getItemStateTooltip(item)\">\r\n </div>\r\n <div [fxFlex]=\"isSelectable() ? '48px' : '18px'\" fxLayoutAlign=\"center\">\r\n @if (isSelectable() && (screenService.isTouchable || item().isOver || isSelected())) {\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? parent()?.selection?.toggle(item(), item().documentId) : null\" [checked]=\"isSelected()\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\">\r\n <div class=\"item-content\">\r\n @if (displayModelName() && item().modelName) {\r\n <div class=\"info-2\">{{item().modelName}}</div>\r\n }\r\n @if (item().info) {\r\n <div class=\"info-1\">{{item().info}}</div>\r\n } @else if (item().date) {\r\n <div class=\"info-1\">{{item().date | format:'D':'d MMM yyyy'}}</div>\r\n } @else if (item().author && (item().origin === 'LR' || item().origin === 'GR' || item().origin\r\n ===\r\n 'GN')) {\r\n <div class=\"info-1\">{{item().author}}</div>\r\n }\r\n <div>\r\n <a class=\"link\" (click)=\"parent()?.open(item().documentId)\"\r\n [attr.aria-label]=\"'Apri documento ' + item().title1\">{{item().title1 ?? item().title2}}</a>\r\n @if (item().part > 0) {\r\n <span class=\"badge\">PARTE {{item().part}}</span>\r\n }\r\n @if (item().isCommented) {\r\n <span class=\"badge\">COMMENTATA</span>\r\n }\r\n @if (item().validityState > 0) {\r\n <span class=\"badge-red\">{{item().validityDescription}}</span>\r\n }\r\n </div>\r\n @if(item().description && item().model === modelsEnum.Coordinamento) {\r\n <div class=\"title\">{{item().description}}</div>\r\n }\r\n @if (item().title2 &&\r\n item().model !== modelsEnum.Coordinamento &&\r\n item().model !== modelsEnum.AllerteAlimentari &&\r\n item().model !== modelsEnum.Scadenze &&\r\n item().model !== modelsEnum.Segnalazioni) {\r\n <div class=\"title\">{{item().title2}}</div>\r\n }\r\n @if (item().originDescription ) {\r\n <div class=\"info-1\">\r\n {{item().originDescription}}</div>\r\n }\r\n @if (item().anchors.length > 0) {\r\n <div class=\"details\">\r\n <div>DETTAGLIO</div>\r\n <div class=\"links\">\r\n @for (a of item().anchors; track $index) {\r\n <span>\r\n @if (a.uri && a.text) {\r\n <a (click)=\"parent()?.open(a.documentId + '#' + a.uri)\" [matTooltip]=\"a.title\">{{a.text}} @if\r\n (a.veryRelevant) {\r\n <sup>\r\n <mat-icon style='font-size:x-small; height: 10px; width:10px' color=\"primary\"\r\n matTooltip=\"Molto rilevante\">thumb_up_alt</mat-icon>\r\n </sup>\r\n }</a>\r\n }\r\n @if (!a.uri && a.text) {\r\n <span>{{a.text}}</span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @if (item().taxonomy?.length > 0) {\r\n <div class=\"details\">\r\n <div>ARGOMENTI</div>\r\n <div class=\"links\">\r\n @for (n of item().taxonomy?.split('\\r\\n'); track $index) {\r\n <div class=\"link\">\r\n {{n}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @if (item().title2 && item().model === modelsEnum.Coordinamento) {\r\n <div class=\"details\">\r\n <div>TITOLO DOCUMENTO MODIFICATO</div>\r\n <div class=\"links\">\r\n <div>{{item().title2}}</div>\r\n </div>\r\n </div>\r\n }\r\n @if (item().description && item().model === modelsEnum.Coordinamento) {\r\n <div class=\"details\">\r\n <div>PROSSIMA SCADENZA</div>\r\n <div class=\"links\">\r\n <div>{{item().description}}</div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"48px\" fxLayoutAlign=\"end\">\r\n @if (item().isOver || item().isMenuOpen || isSelected()) {\r\n @if (isReadable() && !isRead() && item().model !== modelsEnum.Scadenze && item().model !== modelsEnum.Segnalazioni)\r\n {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Segna come gi\u00E0 letta\" [attr.aria-label]=\"'Segna come gi\u00E0 letta'\"\r\n (click)=\"parent()?.toggleRead(item(), $event)\">\r\n <mat-icon>flag</mat-icon>\r\n </button>\r\n }\r\n @if(item().model === modelsEnum.Scadenze || item().model === modelsEnum.Segnalazioni) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Aggiungi al tuo calendario\"\r\n [attr.aria-label]=\"'Aggiungi al tuo calendario'\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"actions()\" [matMenuTriggerData]=\"{item: item()}\" (click)=\"item().isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"tile\" (contextmenu)=\"onContextMenu($event, item())\" (mouseenter)=\"item().isOver = true\" (mouseleave)=\"item().isOver = false\" [ngClass]=\"{'item-selected': isSelected(), \r\n 'item-unread': isRead()}\" (click)=\"parent()?.open(item().documentId)\">\r\n <div class=\"image-mark\" [ngClass]=\"{'image-mark-unread': !isRead()}\"></div>\r\n <div class=\"image\">\r\n @if (isReadable() || isSelectable()) {\r\n <div class=\"buttons\">\r\n @if (isReadable() && !isRead() && item().isOver === true) {\r\n <button mat-icon-button class=\"read\" matTooltip=\"Segna come gi\u00E0 letto\"\r\n (click)=\"parent()?.toggleRead(item(), $event)\"><mat-icon>flag</mat-icon></button>\r\n }\r\n @if (isSelectable() && (isSelected() || item().isOver === true)) {\r\n <button mat-icon-button class=\"check\" [ngClass]=\"{'check-selected': isSelected()}\"\r\n matTooltip=\"Seleziona/Deseleziona\"\r\n (click)=\"parent()?.toggleSelection(item(), $event)\"><mat-icon>check</mat-icon></button>\r\n }\r\n </div>\r\n }\r\n <div class=\"info-1\">{{item().modelName}}</div>\r\n @if (item().info) {\r\n <div class=\"info-2\">{{item().info}}</div>\r\n }\r\n @if (item().pictureId && tilePictureUrl()) {\r\n <img decoding=\"async\" loading=\"lazy\" [src]=\"tilePictureUrl() + '?id=' + item().pictureId\" [alt]=\"item().title2\" />\r\n } @else if (tileNoPictureUrl()) {\r\n <picture>\r\n <img decoding=\"async\" loading=\"lazy\" [src]=\"tileNoPictureUrl()\"\r\n [alt]=\"item().title2 || 'immagine non trovata'\" />\r\n </picture>\r\n }\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"date\">\r\n <span class=\"date-day\" [ngClass]=\"{'unread': !item().isRead}\">{{item().date | format:'D':'d\r\n MMMM'}}</span>\r\n <span class=\"date-divider\"></span>\r\n <span>{{item().date| format:'D':'yyyy'}}</span>\r\n </div>\r\n <div class=\"title\">{{item().title2}}</div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"actions()\" [matMenuTriggerData]=\"{item: item}\">\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: FormatPipe, name: "format" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
798
798
|
}
|
|
799
799
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultItemComponent, decorators: [{
|
|
800
800
|
type: Component,
|
|
@@ -1078,7 +1078,7 @@ class ClipperReferencesComponent extends ClipperSearchResultManager {
|
|
|
1078
1078
|
this.dialogRef.close({ id: documentId });
|
|
1079
1079
|
}
|
|
1080
1080
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperReferencesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1081
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperReferencesComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "filterPane", first: true, predicate: ["filterPane"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"clipper-references-fixed\">\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap='10px' fxFill>\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>{{title}} </h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n (click)=\"close()\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n @if (dialogData.mode > 0 || selection?.hasValue() || (snapshot && snapshot.facets?.hasFacets && filterPane &&\r\n (!filterPane.opened || filterPaneClosed))) {\r\n <div style=\"padding: 0 10px 0 24px; height: 48px; min-height: 48px;\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData.mode === 1) {\r\n <mat-slide-toggle name=\"excludeTextReferences\" [(ngModel)]=\"filterParams.excludeTextReferences\"\r\n (change)=\"fetch(true)\">\r\n Mostra solo se citati nelle note\r\n </mat-slide-toggle>\r\n } @else if (dialogData.mode == 2) {\r\n <mat-slide-toggle name=\"excludeNotesReferences\" [(ngModel)]=\"filterParams.excludeNotesReferences\"\r\n (change)=\"fetch(true)\">\r\n Mostra solo se citano nel testo il documento\r\n </mat-slide-toggle>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (selection?.hasValue()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\r\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\r\n [disabled]=\"!snapshot.total\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection?.all.length\" matBadgeColor=\"accent\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <clipper-document-menu [parent]=\"this\" [selectionSource]=\"selection\" [isReadable]=\"false\"\r\n [isReference]=\"true\">\r\n </clipper-document-menu>\r\n </mat-menu>\r\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed)) {\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\" aria-label=\"'Affina ricerca'\"\r\n (click)=\"toggleFilterPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-references-scrollable\">\r\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"filterPaneHasBackdrop\">\r\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (filterBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (filterBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlexAlign=\"center\" class=\"title\">Affina ricerca</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"center\" mat-icon-button (click)=\"toggleFilterPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\r\n <clipper-search-facets #facets></clipper-search-facets>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\r\n @if (!snapshot.total) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of snapshot.items; track $index; let i = $index) {\r\n @if (item.group) {\r\n <div class=\"items-group-title\">\r\n <div [ngClass]=\"{'group-spaced': i > 0}\">{{item.group}}</div>\r\n </div>\r\n }\r\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [actions]=\"contextMenu\"></clipper-search-result-item>\r\n }\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [isReadable]=\"false\" [isReference]=\"true\">\r\n </clipper-document-menu>\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n <!-- footer -->\r\n @if ((snapshot?.total ?? 0) > 0) {\r\n <div class=\"items-footer\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <mat-paginator #paginator class=\"paginator\" [hidePageSize]=\"true\" [length]=\"snapshot?.total ?? 0\"\r\n [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i15.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i11.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i10.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ClipperDocumentMenuComponent, selector: "clipper-document-menu", inputs: ["parent", "selectionSource", "useSelections", "item", "isReference", "isReadable", "isDeadline", "isLawInForce", "isLaw"] }, { kind: "component", type: ClipperSearchFacetsComponent, selector: "clipper-search-facets", outputs: ["changed"] }, { kind: "component", type: ClipperSearchResultItemComponent, selector: "clipper-search-result-item", inputs: ["parent", "item", "actions", "tileNoPictureUrl", "tilePictureUrl", "isSelectable", "isReadable", "displayModelName", "displayMode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1081
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperReferencesComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "filterPane", first: true, predicate: ["filterPane"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"clipper-references-fixed\">\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap='10px' fxFill>\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>{{title}} </h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n (click)=\"close()\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n @if (dialogData.mode > 0 || selection?.hasValue() || (snapshot && snapshot.facets?.hasFacets && filterPane &&\r\n (!filterPane.opened || filterPaneClosed))) {\r\n <div style=\"padding: 0 10px 0 24px; height: 48px; min-height: 48px;\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData.mode === 1) {\r\n <mat-slide-toggle name=\"excludeTextReferences\" [(ngModel)]=\"filterParams.excludeTextReferences\"\r\n (change)=\"fetch(true)\">\r\n Mostra solo se citati nelle note\r\n </mat-slide-toggle>\r\n } @else if (dialogData.mode == 2) {\r\n <mat-slide-toggle name=\"excludeNotesReferences\" [(ngModel)]=\"filterParams.excludeNotesReferences\"\r\n (change)=\"fetch(true)\">\r\n Mostra solo se citano nel testo il documento\r\n </mat-slide-toggle>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (selection?.hasValue()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\r\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\r\n [disabled]=\"!snapshot.total\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection?.all.length\" matBadgeColor=\"accent\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <clipper-document-menu [parent]=\"this\" [selectionSource]=\"selection\" [isReadable]=\"false\"\r\n [isReference]=\"true\">\r\n </clipper-document-menu>\r\n </mat-menu>\r\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed)) {\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\" aria-label=\"'Affina ricerca'\"\r\n (click)=\"toggleFilterPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-references-scrollable\">\r\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"filterPaneHasBackdrop\">\r\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (filterBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (filterBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlexAlign=\"center\" class=\"title\">Affina ricerca</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"center\" mat-icon-button (click)=\"toggleFilterPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\r\n <clipper-search-facets #facets></clipper-search-facets>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\r\n @if (!snapshot.total) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of snapshot.items; track $index; let i = $index) {\r\n @if (item.group) {\r\n <div class=\"items-group-title\">\r\n <div [ngClass]=\"{'group-spaced': i > 0}\">{{item.group}}</div>\r\n </div>\r\n }\r\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [actions]=\"contextMenu\"></clipper-search-result-item>\r\n }\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [isReadable]=\"false\" [isReference]=\"true\">\r\n </clipper-document-menu>\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n <!-- footer -->\r\n @if ((snapshot?.total ?? 0) > 0) {\r\n <div class=\"items-footer\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <mat-paginator #paginator class=\"paginator\" [hidePageSize]=\"true\" [length]=\"snapshot?.total ?? 0\"\r\n [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i15.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i11.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i10.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ClipperDocumentMenuComponent, selector: "clipper-document-menu", inputs: ["parent", "selectionSource", "useSelections", "item", "isReference", "isReadable", "isDeadline", "isLawInForce", "isLaw"] }, { kind: "component", type: ClipperSearchFacetsComponent, selector: "clipper-search-facets", outputs: ["changed"] }, { kind: "component", type: ClipperSearchResultItemComponent, selector: "clipper-search-result-item", inputs: ["parent", "item", "actions", "tileNoPictureUrl", "tilePictureUrl", "isSelectable", "isReadable", "displayModelName", "displayMode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1082
1082
|
}
|
|
1083
1083
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperReferencesComponent, decorators: [{
|
|
1084
1084
|
type: Component,
|
|
@@ -1106,57 +1106,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
1106
1106
|
args: ['filterPane']
|
|
1107
1107
|
}] } });
|
|
1108
1108
|
|
|
1109
|
-
class
|
|
1109
|
+
class ClipperDocumentManager {
|
|
1110
1110
|
constructor() {
|
|
1111
|
-
this.
|
|
1112
|
-
this.changeDetector = inject(ChangeDetectorRef);
|
|
1111
|
+
this.clipboard = inject(Clipboard);
|
|
1113
1112
|
this.clipperService = inject(ClipperService);
|
|
1114
|
-
this.
|
|
1115
|
-
this.
|
|
1116
|
-
this.okDisabled = signal(false);
|
|
1113
|
+
this.broadcastService = inject(BroadcastService);
|
|
1114
|
+
this.dialogService = inject(ApplicationDialogService);
|
|
1117
1115
|
}
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1116
|
+
/**
|
|
1117
|
+
* Export a document in pdf format
|
|
1118
|
+
* @param item : the document to export
|
|
1119
|
+
*/
|
|
1120
|
+
exportPdf(item) {
|
|
1121
|
+
if (!this.clipperService.loggedIn())
|
|
1122
|
+
return;
|
|
1123
|
+
if (!item)
|
|
1124
|
+
return;
|
|
1125
|
+
this.dialogService
|
|
1126
|
+
.confirm("Confermi l'esportazione?", 'Attenzione!')
|
|
1127
|
+
.componentInstance.choosen.subscribe((r) => {
|
|
1128
|
+
if (r.result === 'ok') {
|
|
1129
|
+
const id = item.id || item.documentId;
|
|
1130
|
+
this.dialogService.busy('Esportazione in corso...');
|
|
1131
|
+
this.clipperService.exportPdf(id)
|
|
1132
|
+
.subscribe({
|
|
1133
|
+
next: (r2) => {
|
|
1134
|
+
saveAs(r2, (item.title1 ? item.title1 : id) + '.pdf');
|
|
1135
|
+
},
|
|
1136
|
+
complete: () => {
|
|
1137
|
+
this.dialogService.clearBusy();
|
|
1138
|
+
}
|
|
1139
|
+
});
|
|
1122
1140
|
}
|
|
1123
|
-
}
|
|
1141
|
+
});
|
|
1124
1142
|
}
|
|
1125
1143
|
/**
|
|
1126
|
-
*
|
|
1144
|
+
* Save current document list or just the selected documents as a csv
|
|
1145
|
+
* @param items: the item list
|
|
1146
|
+
* @param searchParams: the search params
|
|
1127
1147
|
*/
|
|
1128
|
-
|
|
1148
|
+
exportItems(items, searchParams = null) {
|
|
1129
1149
|
if (!this.clipperService.loggedIn())
|
|
1130
1150
|
return;
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1151
|
+
const ids = items?.map(n => n.documentId ?? n.id) ?? [];
|
|
1152
|
+
let model = { ids: ids, query: null, format: 1 };
|
|
1153
|
+
if (model.ids.length === 0) {
|
|
1154
|
+
model.query = searchParams;
|
|
1155
|
+
}
|
|
1156
|
+
this.dialogService.busy('Salvataggio in corso...');
|
|
1157
|
+
this.clipperService.export(model)
|
|
1135
1158
|
.subscribe({
|
|
1136
1159
|
next: (r) => {
|
|
1137
|
-
|
|
1138
|
-
this.dialogService.error(r.message);
|
|
1139
|
-
}
|
|
1140
|
-
else {
|
|
1141
|
-
this.items = [];
|
|
1142
|
-
r.value?.items.forEach((n) => {
|
|
1143
|
-
if (!this.dialogData.excludedTypes || this.dialogData.excludedTypes.indexOf(n.type) === -1) {
|
|
1144
|
-
if (n.title)
|
|
1145
|
-
n.description = n.title;
|
|
1146
|
-
else {
|
|
1147
|
-
if (n.type < 3) {
|
|
1148
|
-
n.description = n.text.trim();
|
|
1149
|
-
}
|
|
1150
|
-
else {
|
|
1151
|
-
n.description =
|
|
1152
|
-
n.typeDescription.trim() + ' ' + n.text.trim() + '.';
|
|
1153
|
-
}
|
|
1154
|
-
}
|
|
1155
|
-
this.items.push(n);
|
|
1156
|
-
}
|
|
1157
|
-
});
|
|
1158
|
-
this.changeDetector.markForCheck();
|
|
1159
|
-
}
|
|
1160
|
+
saveAs(r, 'elenco.csv');
|
|
1160
1161
|
},
|
|
1161
1162
|
complete: () => {
|
|
1162
1163
|
this.dialogService.clearBusy();
|
|
@@ -1164,1004 +1165,1022 @@ class ClipperDocumentIndexComponent {
|
|
|
1164
1165
|
});
|
|
1165
1166
|
}
|
|
1166
1167
|
/**
|
|
1167
|
-
*
|
|
1168
|
+
* Archive a list of items
|
|
1169
|
+
* @param items: the item list
|
|
1168
1170
|
*/
|
|
1169
|
-
|
|
1170
|
-
this.
|
|
1171
|
+
addToArchive(items) {
|
|
1172
|
+
this.broadcastService.sendMessage(ClipperMessages.COMMAND_ARCHIVE_ADD, items);
|
|
1171
1173
|
}
|
|
1172
1174
|
/**
|
|
1173
|
-
*
|
|
1174
|
-
* @param item: the
|
|
1175
|
+
* Create a new deadline
|
|
1176
|
+
* @param item : the item to add
|
|
1175
1177
|
*/
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
return;
|
|
1179
|
-
if (this.dialogData?.multiple) {
|
|
1180
|
-
if (item)
|
|
1181
|
-
return; // multiple and single item selection not supported
|
|
1182
|
-
let selection = [];
|
|
1183
|
-
this.selection.selectedOptions.selected.forEach((n) => {
|
|
1184
|
-
selection.push(n.value);
|
|
1185
|
-
});
|
|
1186
|
-
this.done.emit({ data: selection });
|
|
1187
|
-
}
|
|
1188
|
-
else if (item) {
|
|
1189
|
-
this.done.emit({ data: item });
|
|
1190
|
-
}
|
|
1178
|
+
addToCalendar(item) {
|
|
1179
|
+
this.broadcastService.sendMessage(ClipperMessages.COMMAND_CALENDAR_ADD, item);
|
|
1191
1180
|
}
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
FlexLayoutModule,
|
|
1199
|
-
MatDialogTitle,
|
|
1200
|
-
MatDialogContent,
|
|
1201
|
-
MatListModule,
|
|
1202
|
-
NgStyle,
|
|
1203
|
-
MatTooltipModule,
|
|
1204
|
-
MatDialogActions,
|
|
1205
|
-
MatButtonModule,
|
|
1206
|
-
MatDialogClose,
|
|
1207
|
-
], template: "<h2 mat-dialog-title>Indice</h2>\r\n<div mat-dialog-content>\r\n @if (!items || items.length === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <mat-selection-list dense #selection (selectionChange)=\"select();\" [multiple]=\"dialogData.multiple\"\r\n hideSingleSelectionIndicator=\"true\">\r\n @for (item of items; track item) {\r\n @if (item.type > 4) {\r\n <div class=\"small uppercase truncated accent\" style=\"display: flex; align-items: center; min-height: 36px;\">\r\n <div><b>{{item.description}}</b></div>\r\n </div>\r\n } @else {\r\n <mat-list-option color=\"primary\" [selected]=\"false\" [value]=\"item\" (click)=\"use(item)\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div [fxFlex]=\"(10 * item.level) + 'px'\"></div>\r\n <div fxFlex=\"*\" class=\"truncated\">\r\n <div class=\"small\" [matTooltip]=\"item.description\">{{item.description}}</div>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n }\r\n </mat-selection-list>\r\n }\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n @if (dialogData.multiple) {\r\n <button mat-flat-button color=\"primary\" [disabled]=\"okDisabled()\" (click)=\"use()\">Usa</button>\r\n }\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n</div>" }]
|
|
1208
|
-
}], propDecorators: { selection: [{
|
|
1209
|
-
type: ViewChild,
|
|
1210
|
-
args: ['selection']
|
|
1211
|
-
}], done: [{
|
|
1212
|
-
type: Output
|
|
1213
|
-
}] } });
|
|
1214
|
-
|
|
1215
|
-
class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
1216
|
-
constructor() {
|
|
1217
|
-
super(...arguments);
|
|
1218
|
-
this.closing = new EventEmitter();
|
|
1219
|
-
this.opening = new EventEmitter();
|
|
1220
|
-
// Compliance related events
|
|
1221
|
-
this.onComplianceAnalysis = new EventEmitter();
|
|
1222
|
-
this.onCompliancePlanning = new EventEmitter();
|
|
1223
|
-
this.onComplianceUsageReport = new EventEmitter();
|
|
1224
|
-
this.unsubscribe = new Subject();
|
|
1225
|
-
this.changeDetector = inject(ChangeDetectorRef);
|
|
1226
|
-
this.breakpointObserver = inject(BreakpointObserver);
|
|
1227
|
-
this.renderer = inject(Renderer2);
|
|
1228
|
-
this.router = inject(Router);
|
|
1229
|
-
this.dialogRef = inject((MatDialogRef));
|
|
1230
|
-
this.dialogData = inject(MAT_DIALOG_DATA) ?? { mode: ClipperQueryReferencesMode.ReferencesIn };
|
|
1231
|
-
this.url = signal(null);
|
|
1232
|
-
this.title = signal(null);
|
|
1233
|
-
this.busy = signal(false);
|
|
1234
|
-
this.lastQuery = null;
|
|
1235
|
-
this.lastDocument = {};
|
|
1236
|
-
this.relevants = {
|
|
1237
|
-
items: [],
|
|
1238
|
-
hits: 0,
|
|
1239
|
-
hit: 0,
|
|
1240
|
-
minimumScore: 100,
|
|
1241
|
-
};
|
|
1242
|
-
this.relevantsPaneHasBackdrop = false;
|
|
1243
|
-
this.relevantsPaneClosed = false;
|
|
1244
|
-
this.relevantsBusy = signal(false);
|
|
1245
|
-
this.hasRelevants = signal(false);
|
|
1246
|
-
this.selectionMode = null;
|
|
1181
|
+
/**
|
|
1182
|
+
* Add a list of items to working documents
|
|
1183
|
+
* @param items : the item list
|
|
1184
|
+
*/
|
|
1185
|
+
addItemsToWorkingDocuments(items) {
|
|
1186
|
+
this.broadcastService.sendMessage(ClipperMessages.COMMAND_WORKING_ADD, items);
|
|
1247
1187
|
}
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
// Listen to window messages
|
|
1261
|
-
this.rendererListener1 = this.renderer.listen('window', 'message', (e) => {
|
|
1262
|
-
let event = e;
|
|
1263
|
-
if (!event)
|
|
1264
|
-
return;
|
|
1265
|
-
if (event.data) {
|
|
1266
|
-
try {
|
|
1267
|
-
var data = JSON.parse(event.data);
|
|
1268
|
-
if (data) {
|
|
1269
|
-
switch (data.type) {
|
|
1270
|
-
case 'navigated':
|
|
1271
|
-
this.navigated(data.id, data.title1, data.title2, data.model, data.module, data.moduleName, data.date, data.number, data.author, data.origin, data.originDescription, data.bag, data.validityInfo, data.expiringInfo, data.primaryId, data.primaryModel, data.secondaryId, data.isTrial);
|
|
1272
|
-
break;
|
|
1273
|
-
case 'navigate':
|
|
1274
|
-
this.navigate(data.url);
|
|
1275
|
-
break;
|
|
1276
|
-
case 'references':
|
|
1277
|
-
this.openReferences(data.id, data.mode, data.model, data.anchor, data.anchorTitle, data.update);
|
|
1278
|
-
break;
|
|
1279
|
-
case 'hits':
|
|
1280
|
-
this.relevants.hits = data.total;
|
|
1281
|
-
this.updateRelevants();
|
|
1282
|
-
break;
|
|
1283
|
-
}
|
|
1284
|
-
this.changeDetector.markForCheck();
|
|
1285
|
-
this.resize();
|
|
1286
|
-
}
|
|
1287
|
-
}
|
|
1288
|
-
catch {
|
|
1188
|
+
/**
|
|
1189
|
+
* Add a list of items to working documents
|
|
1190
|
+
* @param items : the item list
|
|
1191
|
+
*/
|
|
1192
|
+
addItemsToBag(items) {
|
|
1193
|
+
if (!this.clipperService.loggedIn())
|
|
1194
|
+
return;
|
|
1195
|
+
const ids = items?.map(n => n.documentId ?? n.id) ?? [];
|
|
1196
|
+
this.clipperService.addToBag(ids).subscribe({
|
|
1197
|
+
next: (r) => {
|
|
1198
|
+
if (!r.success) {
|
|
1199
|
+
this.dialogService.error(r.message);
|
|
1289
1200
|
}
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
// Observe layout changes
|
|
1293
|
-
this.breakpointObserver
|
|
1294
|
-
.observe([
|
|
1295
|
-
Breakpoints.XSmall,
|
|
1296
|
-
Breakpoints.Small,
|
|
1297
|
-
Breakpoints.Medium,
|
|
1298
|
-
Breakpoints.Large,
|
|
1299
|
-
Breakpoints.XLarge,
|
|
1300
|
-
])
|
|
1301
|
-
.pipe(takeUntil$1(this.unsubscribe))
|
|
1302
|
-
.subscribe(result => {
|
|
1303
|
-
for (const query of Object.keys(result.breakpoints)) {
|
|
1304
|
-
if (result.breakpoints[query]) {
|
|
1305
|
-
this.handleRelevantsPaneVisibility();
|
|
1201
|
+
else {
|
|
1202
|
+
this.dialogService.toast('Operazione completata con successo.');
|
|
1306
1203
|
}
|
|
1307
1204
|
}
|
|
1308
1205
|
});
|
|
1309
|
-
// React to window size change
|
|
1310
|
-
fromEvent(window, 'resize')
|
|
1311
|
-
.pipe(takeUntil$1(this.unsubscribe))
|
|
1312
|
-
.subscribe(() => {
|
|
1313
|
-
this.resize();
|
|
1314
|
-
});
|
|
1315
|
-
this.resize();
|
|
1316
|
-
}
|
|
1317
|
-
ngOnDestroy() {
|
|
1318
|
-
this.unsubscribe.next();
|
|
1319
|
-
this.unsubscribe.complete();
|
|
1320
|
-
if (this.rendererListener1) {
|
|
1321
|
-
this.rendererListener1();
|
|
1322
|
-
}
|
|
1323
1206
|
}
|
|
1324
1207
|
/**
|
|
1325
|
-
*
|
|
1208
|
+
* Copy metadata to clipboard
|
|
1209
|
+
* @param item : the item to copy
|
|
1326
1210
|
*/
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
}
|
|
1211
|
+
copyMetadataToClipboard(item) {
|
|
1212
|
+
if (!item || item.model === ClipperModel.Coordinamento)
|
|
1213
|
+
return;
|
|
1214
|
+
let meta = (item.id ?? item.documentId) + '\t' +
|
|
1215
|
+
item.title1?.replaceAll("\r\n", " ") + '\t';
|
|
1216
|
+
if (item.title2)
|
|
1217
|
+
meta += item.title2.replaceAll("\r\n", " ");
|
|
1218
|
+
meta += '\t';
|
|
1219
|
+
if (item.number)
|
|
1220
|
+
meta += item.number;
|
|
1221
|
+
meta += '\t';
|
|
1222
|
+
if (item.publishingDate) {
|
|
1223
|
+
item.publishingDate = new Date(item.publishingDate);
|
|
1224
|
+
meta += SystemUtils.formatDate(item.publishingDate);
|
|
1225
|
+
}
|
|
1226
|
+
else if (item.date) {
|
|
1227
|
+
item.date = new Date(item.date);
|
|
1228
|
+
meta += SystemUtils.formatDate(item.date);
|
|
1229
|
+
}
|
|
1230
|
+
meta += '\t';
|
|
1231
|
+
if (item.originDescription)
|
|
1232
|
+
meta += item.originDescription;
|
|
1233
|
+
this.clipboard.copy(meta);
|
|
1234
|
+
this.dialogService.toast("Metadati copiati negli appunti.");
|
|
1342
1235
|
}
|
|
1343
1236
|
/**
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1237
|
+
* Show a document permalink
|
|
1238
|
+
* @param item : the item to show the link for
|
|
1239
|
+
*/
|
|
1240
|
+
showLink(item) {
|
|
1241
|
+
if (!item)
|
|
1242
|
+
return;
|
|
1243
|
+
let id = item.id ? item.id : item.documentId;
|
|
1244
|
+
let channels = item.channelName
|
|
1245
|
+
? 'Canali: ' + item.channelName + '<br>'
|
|
1246
|
+
: '';
|
|
1247
|
+
let origin = item.origin
|
|
1248
|
+
? 'Origine: ' +
|
|
1249
|
+
item.origin +
|
|
1250
|
+
' - ' +
|
|
1251
|
+
(item.originDescription ? item.originDescription : '') +
|
|
1252
|
+
'<br>'
|
|
1253
|
+
: '';
|
|
1254
|
+
let topics = item.topics ? 'Argomento: ' + item.topics + '<br>' : '';
|
|
1255
|
+
if (!id)
|
|
1256
|
+
return;
|
|
1257
|
+
let message = "<p >Il link che trovi qui sotto è un riferimento diretto al documento selezionato.</p>" +
|
|
1258
|
+
"<p >Lo puoi utilizzare nella tua documentazione o inviarlo per email ad un tuo collega. La persona che desidererà visualizzare il documento dovrà necessariamente essere un utente abbonato.</p>" +
|
|
1259
|
+
"<p >Seleziona e copia (fai CTRL+C) il link qui sotto.</p>" +
|
|
1260
|
+
"<div class='small accent'>" +
|
|
1261
|
+
'https://clipper.arsedizioni.it/?id=' +
|
|
1262
|
+
id +
|
|
1263
|
+
'</div>' +
|
|
1264
|
+
'<br>' +
|
|
1265
|
+
'<hr>' +
|
|
1266
|
+
'<p class="small">' +
|
|
1267
|
+
channels +
|
|
1268
|
+
origin +
|
|
1269
|
+
topics;
|
|
1270
|
+
'</p>';
|
|
1271
|
+
this.dialogService.info(message, 'Copia link', 'Chiudi');
|
|
1349
1272
|
}
|
|
1350
1273
|
/**
|
|
1351
|
-
*
|
|
1274
|
+
* Send documents links by email
|
|
1275
|
+
* @param items : the document list
|
|
1352
1276
|
*/
|
|
1353
|
-
|
|
1354
|
-
if (this.
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1277
|
+
sendItemsTo(items) {
|
|
1278
|
+
if (!this.clipperService.loggedIn())
|
|
1279
|
+
return;
|
|
1280
|
+
if (!items || items.length === 0)
|
|
1281
|
+
return;
|
|
1282
|
+
const d = this.dialogService.open(SendToDialogComponent, {
|
|
1283
|
+
ariaLabel: 'invia documenti per email',
|
|
1284
|
+
autoFocus: false,
|
|
1285
|
+
restoreFocus: false,
|
|
1286
|
+
disableClose: false,
|
|
1287
|
+
closeOnNavigation: false,
|
|
1288
|
+
data: {
|
|
1289
|
+
info: 'Puoi inviare i documenti a chi vuoi ma, per poterli visualizzare, è necessario essere un utente abbonato.',
|
|
1290
|
+
count: items.length,
|
|
1291
|
+
},
|
|
1292
|
+
minWidth: '375px',
|
|
1293
|
+
maxWidth: '600px',
|
|
1294
|
+
width: '99%',
|
|
1295
|
+
});
|
|
1296
|
+
d.componentInstance.done
|
|
1297
|
+
.subscribe((r) => {
|
|
1298
|
+
r.ids = items?.map(n => n.documentId ?? n.id) ?? [];
|
|
1299
|
+
this.dialogService.busy('Invio in corso...');
|
|
1300
|
+
this.clipperService.sendTo(r)
|
|
1301
|
+
.subscribe({
|
|
1302
|
+
next: (r2) => {
|
|
1303
|
+
if (!r2.success) {
|
|
1304
|
+
this.dialogService.error(r2.message);
|
|
1305
|
+
}
|
|
1306
|
+
else {
|
|
1307
|
+
this.dialogService.toast('Invio completato con successo.');
|
|
1308
|
+
d.close();
|
|
1309
|
+
}
|
|
1310
|
+
},
|
|
1311
|
+
complete: () => {
|
|
1312
|
+
this.dialogService.clearBusy();
|
|
1371
1313
|
}
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
this.relevantsPaneHasBackdrop = false;
|
|
1375
|
-
}
|
|
1376
|
-
}
|
|
1314
|
+
});
|
|
1315
|
+
});
|
|
1377
1316
|
}
|
|
1378
1317
|
/**
|
|
1379
|
-
*
|
|
1318
|
+
* Display a document report
|
|
1319
|
+
* @param documentId : the document id
|
|
1320
|
+
* @param title: the document short title
|
|
1380
1321
|
*/
|
|
1381
|
-
|
|
1382
|
-
if (this.
|
|
1383
|
-
|
|
1322
|
+
openReport(documentId, title = null) {
|
|
1323
|
+
if (!this.clipperService.loggedIn())
|
|
1324
|
+
return;
|
|
1325
|
+
if (!documentId)
|
|
1326
|
+
return;
|
|
1327
|
+
this.clipperService.report(documentId)
|
|
1328
|
+
.subscribe({
|
|
1329
|
+
next: (r) => {
|
|
1330
|
+
saveAs(r, (title ? title : documentId) + '.html');
|
|
1331
|
+
},
|
|
1332
|
+
complete: () => {
|
|
1333
|
+
this.dialogService.clearBusy();
|
|
1334
|
+
}
|
|
1335
|
+
});
|
|
1336
|
+
}
|
|
1337
|
+
/**
|
|
1338
|
+
* Open an item
|
|
1339
|
+
* This should be always overridden
|
|
1340
|
+
* @param documentId : the document id
|
|
1341
|
+
* @param query: the query string
|
|
1342
|
+
* @param newWindow: true if the document must be open into a new window
|
|
1343
|
+
*/
|
|
1344
|
+
open(documentId, query = null, newWindow = false) {
|
|
1345
|
+
if (documentId) {
|
|
1346
|
+
if (!newWindow) {
|
|
1347
|
+
this.openDocument(documentId, query);
|
|
1348
|
+
}
|
|
1349
|
+
else {
|
|
1350
|
+
window.open('/documento/' + documentId, '_blank');
|
|
1351
|
+
}
|
|
1384
1352
|
}
|
|
1385
|
-
this.dialogRef.close();
|
|
1386
1353
|
}
|
|
1387
1354
|
/**
|
|
1388
|
-
*
|
|
1389
|
-
* @param
|
|
1355
|
+
* Open a document
|
|
1356
|
+
* @param documentId : the document id
|
|
1357
|
+
* @param query: the query string
|
|
1390
1358
|
*/
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
return; // Nothing to do
|
|
1394
|
-
if (id.indexOf('?') !== -1) {
|
|
1395
|
-
if (id.startsWith('/api'))
|
|
1396
|
-
this.navigateByUrl(this.clipperService.serviceUri + id.substring(4));
|
|
1397
|
-
else if (!id.startsWith(this.clipperService.serviceUri))
|
|
1398
|
-
this.navigateByUrl(this.clipperService.serviceUri + id);
|
|
1399
|
-
else
|
|
1400
|
-
this.navigateByUrl(id);
|
|
1401
|
-
}
|
|
1402
|
-
else
|
|
1403
|
-
this.navigateByUrl(this.clipperService.serviceUri +
|
|
1404
|
-
'/documents/render/?query=&id=' +
|
|
1405
|
-
id);
|
|
1359
|
+
openDocument(documentId, query = null) {
|
|
1360
|
+
console.log("This function must be overridden! (" + documentId + "," + query + ")");
|
|
1406
1361
|
}
|
|
1407
1362
|
/**
|
|
1408
|
-
*
|
|
1409
|
-
* @param
|
|
1363
|
+
* Display a document report
|
|
1364
|
+
* @param item : the document
|
|
1410
1365
|
*/
|
|
1411
|
-
|
|
1412
|
-
if (!
|
|
1413
|
-
return;
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
if (parts.length > 1) {
|
|
1418
|
-
url += '#' + parts[1];
|
|
1419
|
-
}
|
|
1420
|
-
// Handle free text query
|
|
1421
|
-
let q = '';
|
|
1422
|
-
let pos = url.indexOf('query=');
|
|
1423
|
-
if (pos !== -1) {
|
|
1424
|
-
pos += 6;
|
|
1425
|
-
while (url.length > pos && url[pos] !== '&' && url[pos] !== '#')
|
|
1426
|
-
q += url[pos++];
|
|
1427
|
-
}
|
|
1428
|
-
if (q.length > 0) {
|
|
1429
|
-
// Reset
|
|
1430
|
-
this.relevants.hit = 0;
|
|
1431
|
-
try {
|
|
1432
|
-
// Assign query to enable search for fragments
|
|
1433
|
-
this.lastQuery = decodeURIComponent(encodeURIComponent(q));
|
|
1434
|
-
}
|
|
1435
|
-
catch {
|
|
1436
|
-
this.lastQuery = q;
|
|
1437
|
-
}
|
|
1438
|
-
}
|
|
1439
|
-
let navigateToFile = url.indexOf('&file=true') !== -1;
|
|
1440
|
-
if (navigateToFile === true) {
|
|
1441
|
-
// Preview
|
|
1442
|
-
this.previewFile(url);
|
|
1366
|
+
report(item) {
|
|
1367
|
+
if (!item)
|
|
1368
|
+
return;
|
|
1369
|
+
if (item.model != ClipperModel.NormativaVigente && item.model != ClipperModel.Scadenze) {
|
|
1370
|
+
this.dialogService.info("Questa funzionalità non è disponibile per questo tipo di documento.");
|
|
1371
|
+
return;
|
|
1443
1372
|
}
|
|
1444
1373
|
else {
|
|
1445
|
-
|
|
1446
|
-
this.busy.set(url.indexOf('documents/render/item') === -1);
|
|
1447
|
-
// Navigate
|
|
1448
|
-
this.url.set(url);
|
|
1374
|
+
this.openReport(item.documentId, item.title1);
|
|
1449
1375
|
}
|
|
1450
1376
|
}
|
|
1451
1377
|
/**
|
|
1452
|
-
*
|
|
1378
|
+
* Browse document references
|
|
1379
|
+
* @param item : the document item
|
|
1380
|
+
* @param mode : the snapshot mode
|
|
1453
1381
|
*/
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
title2, // Title 2
|
|
1457
|
-
model, // Model
|
|
1458
|
-
moduleId, // Module
|
|
1459
|
-
moduleName, // Module name
|
|
1460
|
-
date, // Date
|
|
1461
|
-
number, // Number
|
|
1462
|
-
author, // Author
|
|
1463
|
-
origin, // Origin
|
|
1464
|
-
originDescription, // Origin description
|
|
1465
|
-
bag, // Flags
|
|
1466
|
-
validityInfo, // Info about validity
|
|
1467
|
-
expiringInfo, // Info about expiring date
|
|
1468
|
-
primaryId, // Primary document id
|
|
1469
|
-
primaryModel, // Primary document model
|
|
1470
|
-
secondaryId, // Secondary document id
|
|
1471
|
-
isTrial // True if is a trial request
|
|
1472
|
-
) {
|
|
1473
|
-
// Check for session expiring
|
|
1474
|
-
if (title1 === 'Sessione non valida') {
|
|
1475
|
-
this.dialogService
|
|
1476
|
-
.error(title2, null, title1, 'Accedi di nuovo')
|
|
1477
|
-
.afterClosed()
|
|
1478
|
-
.subscribe(() => {
|
|
1479
|
-
this.router.navigate(['login']);
|
|
1480
|
-
});
|
|
1382
|
+
references(item, mode = ClipperQueryReferencesMode.ReferencesIn) {
|
|
1383
|
+
if (!item)
|
|
1481
1384
|
return;
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
this.lastDocument.number = number;
|
|
1495
|
-
this.lastDocument.author = author;
|
|
1496
|
-
this.lastDocument.origin = origin;
|
|
1497
|
-
this.lastDocument.originDescription = originDescription;
|
|
1498
|
-
this.lastDocument.bag = bag;
|
|
1499
|
-
this.lastDocument.validityInfo = validityInfo;
|
|
1500
|
-
this.lastDocument.primaryId = primaryId;
|
|
1501
|
-
this.lastDocument.primaryModel = primaryModel;
|
|
1502
|
-
this.lastDocument.hasPrimary =
|
|
1503
|
-
primaryId &&
|
|
1504
|
-
(model === ClipperModel.AggiornamentoNormativo ||
|
|
1505
|
-
model === ClipperModel.NormativaVigente);
|
|
1506
|
-
if (primaryId) {
|
|
1507
|
-
var description = '';
|
|
1508
|
-
switch (primaryModel ? primaryModel : model) {
|
|
1509
|
-
case ClipperModel.NormativaVigente:
|
|
1510
|
-
description = 'Testo vigente';
|
|
1511
|
-
break;
|
|
1512
|
-
case ClipperModel.AggiornamentoNormativo:
|
|
1513
|
-
description = 'Testo storico';
|
|
1514
|
-
break;
|
|
1515
|
-
case ClipperModel.Scadenze:
|
|
1516
|
-
description = 'Scadenza';
|
|
1517
|
-
break;
|
|
1518
|
-
case ClipperModel.Coordinamento:
|
|
1519
|
-
description = 'Modifica';
|
|
1520
|
-
break;
|
|
1521
|
-
default:
|
|
1522
|
-
description = 'Collegamento';
|
|
1523
|
-
break;
|
|
1524
|
-
}
|
|
1525
|
-
this.lastDocument.primaryDescription = description;
|
|
1526
|
-
}
|
|
1527
|
-
this.lastDocument.secondaryId = secondaryId;
|
|
1528
|
-
this.lastDocument.isTrial = isTrial;
|
|
1529
|
-
// Handle expiring info
|
|
1530
|
-
this.lastDocument.expiringDescription = null;
|
|
1531
|
-
if (expiringInfo) {
|
|
1532
|
-
let parts = expiringInfo.split('#');
|
|
1533
|
-
if (parts.length > 0) {
|
|
1534
|
-
let parts2 = parts[0].split('|');
|
|
1535
|
-
if (parts2.length > 0)
|
|
1536
|
-
this.lastDocument.expiringDate = new Date(parts2[0]);
|
|
1537
|
-
if (parts2.length > 1)
|
|
1538
|
-
this.lastDocument.expiringInfo = parts2[1];
|
|
1539
|
-
if (parts2.length > 2)
|
|
1540
|
-
this.lastDocument.expiringInfo += '|' + parts2[2];
|
|
1541
|
-
}
|
|
1542
|
-
if (parts.length > 1)
|
|
1543
|
-
this.lastDocument.expiringDescription = parts[1];
|
|
1544
|
-
}
|
|
1545
|
-
// Set title
|
|
1546
|
-
this.title.set(this.lastDocument.title1
|
|
1547
|
-
? this.lastDocument.title1
|
|
1548
|
-
: this.lastDocument.title2);
|
|
1549
|
-
// Get last document update
|
|
1550
|
-
this.clipperService.lastUpdate(this.lastDocument.id).subscribe((r) => {
|
|
1551
|
-
if (r.success) {
|
|
1552
|
-
this.lastDocument.lastUpdate = r.value;
|
|
1553
|
-
}
|
|
1385
|
+
const d = this.dialogService.open(ClipperReferencesComponent, {
|
|
1386
|
+
ariaLabel: 'riferimenti legati al documento',
|
|
1387
|
+
autoFocus: false,
|
|
1388
|
+
restoreFocus: false,
|
|
1389
|
+
disableClose: false,
|
|
1390
|
+
closeOnNavigation: false,
|
|
1391
|
+
data: { id: item.documentId, mode: mode },
|
|
1392
|
+
panelClass: 'references-container',
|
|
1393
|
+
minWidth: '375px',
|
|
1394
|
+
maxWidth: '1000px',
|
|
1395
|
+
width: '99%',
|
|
1396
|
+
height: '99%',
|
|
1554
1397
|
});
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1398
|
+
d.afterClosed()
|
|
1399
|
+
.subscribe((r) => {
|
|
1400
|
+
if (r && r.id)
|
|
1401
|
+
this.open(r.id);
|
|
1558
1402
|
});
|
|
1559
|
-
this.busy.set(false);
|
|
1560
1403
|
}
|
|
1561
1404
|
/**
|
|
1562
|
-
*
|
|
1405
|
+
* Manage clipper bag
|
|
1563
1406
|
*/
|
|
1564
|
-
|
|
1565
|
-
let
|
|
1566
|
-
|
|
1407
|
+
manageBag() {
|
|
1408
|
+
let items = [];
|
|
1409
|
+
this.clipperService.bag.forEach(n => {
|
|
1410
|
+
let title = n.title1 ?? n.title2;
|
|
1411
|
+
items.push({
|
|
1412
|
+
template: title,
|
|
1413
|
+
bag: n,
|
|
1414
|
+
searchBag: { name: title },
|
|
1415
|
+
});
|
|
1416
|
+
});
|
|
1417
|
+
const d = this.dialogService.select({
|
|
1418
|
+
title: 'Gestisci documenti di lavoro',
|
|
1419
|
+
multi: false,
|
|
1420
|
+
mustSelect: false,
|
|
1421
|
+
okCaption: 'SELEZIONA',
|
|
1422
|
+
items: items,
|
|
1423
|
+
canDelete: true,
|
|
1424
|
+
canView: true,
|
|
1425
|
+
});
|
|
1426
|
+
d.componentInstance.view
|
|
1427
|
+
.subscribe((r) => {
|
|
1428
|
+
let item = r.bag;
|
|
1429
|
+
this.open(item.documentId || item.DocumentId);
|
|
1430
|
+
});
|
|
1431
|
+
d.componentInstance.delete
|
|
1432
|
+
.subscribe((r) => {
|
|
1433
|
+
var item = r.selectedItems[0].bag;
|
|
1434
|
+
this.clipperService.removeFromBag(item.documentId || item.DocumentId).subscribe({
|
|
1435
|
+
next: (r2) => {
|
|
1436
|
+
if (!r2.success) {
|
|
1437
|
+
this.dialogService.error(r2.message);
|
|
1438
|
+
}
|
|
1439
|
+
else {
|
|
1440
|
+
this.dialogService.toast('Operazione completata con successo.');
|
|
1441
|
+
for (let p = 0; p < r.items.length; p++) {
|
|
1442
|
+
if (r.items[p].bag.DocumentId === item.DocumentId) {
|
|
1443
|
+
r.items.splice(p, 1);
|
|
1444
|
+
if (r.items.length === 0)
|
|
1445
|
+
d.close();
|
|
1446
|
+
return;
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
});
|
|
1452
|
+
});
|
|
1567
1453
|
}
|
|
1568
1454
|
/**
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1455
|
+
* Checks if a module is supported by RS
|
|
1456
|
+
* @param module : the module to check
|
|
1457
|
+
* @returns: true if the module is supported
|
|
1458
|
+
*/
|
|
1459
|
+
isModuleSupportedByRS(module) {
|
|
1460
|
+
return module === ClipperModule.GazzetteBollettiniEFontiDiverse ||
|
|
1461
|
+
module === ClipperModule.NormativaVigente ||
|
|
1462
|
+
module === ClipperModule.ScadenzeESegnalazioni;
|
|
1574
1463
|
}
|
|
1575
1464
|
/**
|
|
1576
|
-
*
|
|
1465
|
+
* Checks if a model is supported by RS
|
|
1466
|
+
* @param model : the model to check
|
|
1467
|
+
* @returns: true if the model is supported
|
|
1577
1468
|
*/
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1469
|
+
isModelSupportedByRS(model) {
|
|
1470
|
+
return model === ClipperModel.AggiornamentoNormativo ||
|
|
1471
|
+
model === ClipperModel.NormativaVigente ||
|
|
1472
|
+
model === ClipperModel.Scadenze;
|
|
1581
1473
|
}
|
|
1582
1474
|
/**
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1475
|
+
* Checks if all documents are supported by RS
|
|
1476
|
+
* @param items : the list of documens
|
|
1477
|
+
* @returns: true if all documents supports RS
|
|
1478
|
+
*/
|
|
1479
|
+
canSupportRS(items) {
|
|
1480
|
+
let allow = false;
|
|
1481
|
+
items.forEach((n) => {
|
|
1482
|
+
allow = this.isModelSupportedByRS(n.model);
|
|
1483
|
+
if (!allow)
|
|
1484
|
+
return;
|
|
1485
|
+
});
|
|
1486
|
+
return allow;
|
|
1587
1487
|
}
|
|
1588
1488
|
/**
|
|
1589
|
-
*
|
|
1489
|
+
* Checks if RS is enabled for all given documents
|
|
1490
|
+
* @param documents : the documents to check
|
|
1491
|
+
* @returns true if alla documents ar RS enabled
|
|
1590
1492
|
*/
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1493
|
+
RS_enabled(documents) {
|
|
1494
|
+
if (!documents || documents.length === 0)
|
|
1495
|
+
return false;
|
|
1496
|
+
let allow = false;
|
|
1497
|
+
documents.forEach(n => {
|
|
1498
|
+
allow = n && (n.model === ClipperModel.NormativaVigente ||
|
|
1499
|
+
n.model === ClipperModel.AggiornamentoNormativo ||
|
|
1500
|
+
n.model === ClipperModel.Scadenze);
|
|
1501
|
+
if (!allow)
|
|
1502
|
+
return;
|
|
1503
|
+
});
|
|
1504
|
+
return allow;
|
|
1598
1505
|
}
|
|
1599
1506
|
/**
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
if (
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
this.relevants.hit--;
|
|
1608
|
-
}
|
|
1507
|
+
* New law
|
|
1508
|
+
* @param documents: the array of documents to link to the law
|
|
1509
|
+
*/
|
|
1510
|
+
RS_newLaw(documents) {
|
|
1511
|
+
if (!this.clipperService.supportsRS())
|
|
1512
|
+
return;
|
|
1513
|
+
this.broadcastService.sendMessage(ClipperMessages.INTEROP_RS_NEW_LAW, documents);
|
|
1609
1514
|
}
|
|
1610
1515
|
/**
|
|
1611
|
-
*
|
|
1612
|
-
* @param
|
|
1516
|
+
* New activity
|
|
1517
|
+
* @param document: the document to link to the activity
|
|
1613
1518
|
*/
|
|
1614
|
-
|
|
1615
|
-
if (
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
else {
|
|
1621
|
-
let f = document.getElementById('clipper-document-iframe');
|
|
1622
|
-
f.contentWindow.postMessage('{"type": "relevant", "value": "' + item.uri + '"}', '*');
|
|
1623
|
-
}
|
|
1624
|
-
}
|
|
1625
|
-
/**
|
|
1626
|
-
* Update relevant items
|
|
1627
|
-
*/
|
|
1628
|
-
updateRelevants() {
|
|
1629
|
-
if (!this.lastQuery ||
|
|
1630
|
-
this.lastQuery.length === 0 ||
|
|
1631
|
-
this.lastQuery === ' ') {
|
|
1632
|
-
this.handleRelevantsPaneVisibility();
|
|
1633
|
-
}
|
|
1634
|
-
else {
|
|
1635
|
-
let params = new ClipperSearchParams();
|
|
1636
|
-
params.id = this.lastDocument.documentId ?? this.lastDocument.id;
|
|
1637
|
-
params.text = this.lastQuery;
|
|
1638
|
-
params.count = 1;
|
|
1639
|
-
this.clipperService
|
|
1640
|
-
.query(params)
|
|
1641
|
-
.subscribe((r) => {
|
|
1642
|
-
if (!r.success)
|
|
1643
|
-
this.dialogService.error(r.message);
|
|
1644
|
-
else {
|
|
1645
|
-
let minimumScore = 0;
|
|
1646
|
-
if (r.value?.items && r.value?.items.length > 0) {
|
|
1647
|
-
r.value.items[0].anchors.forEach((n) => {
|
|
1648
|
-
let score = n.score;
|
|
1649
|
-
if (score > 7)
|
|
1650
|
-
score -= 7;
|
|
1651
|
-
else if (score > 5)
|
|
1652
|
-
score -= 5;
|
|
1653
|
-
else if (score > 3)
|
|
1654
|
-
score -= 3;
|
|
1655
|
-
if (minimumScore > score)
|
|
1656
|
-
minimumScore = score;
|
|
1657
|
-
n.score = score;
|
|
1658
|
-
});
|
|
1659
|
-
this.relevants.minimumScore = minimumScore;
|
|
1660
|
-
this.relevants.items = r.value.items[0].anchors;
|
|
1661
|
-
this.hasRelevants.set(this.relevants.items?.length > 0);
|
|
1662
|
-
}
|
|
1663
|
-
this.handleRelevantsPaneVisibility();
|
|
1664
|
-
}
|
|
1665
|
-
});
|
|
1666
|
-
}
|
|
1667
|
-
}
|
|
1668
|
-
/**
|
|
1669
|
-
* Display document structure
|
|
1670
|
-
*/
|
|
1671
|
-
index(documentId) {
|
|
1672
|
-
let d = this.dialogService.open(ClipperDocumentIndexComponent, {
|
|
1673
|
-
ariaLabel: 'indice documento',
|
|
1674
|
-
autoFocus: false,
|
|
1675
|
-
restoreFocus: false,
|
|
1676
|
-
disableClose: true,
|
|
1677
|
-
closeOnNavigation: false,
|
|
1678
|
-
data: {
|
|
1679
|
-
documentId: documentId,
|
|
1680
|
-
excludedTypes: null,
|
|
1681
|
-
multiple: false
|
|
1682
|
-
},
|
|
1683
|
-
minWidth: '375px',
|
|
1684
|
-
maxWidth: '600px',
|
|
1685
|
-
width: '99%',
|
|
1686
|
-
});
|
|
1687
|
-
d.componentInstance.done
|
|
1688
|
-
.subscribe((r) => {
|
|
1689
|
-
if (r.data.documentId === documentId) {
|
|
1690
|
-
let f = document.getElementById('clipper-document-iframe');
|
|
1691
|
-
f.contentWindow.postMessage('{"type": "goto", "value":"' + r.data.uri + '"}', '*');
|
|
1692
|
-
}
|
|
1693
|
-
else {
|
|
1694
|
-
this.openDocument(r.data.documentId + '#' + r.data.uri);
|
|
1695
|
-
}
|
|
1696
|
-
d.close();
|
|
1697
|
-
});
|
|
1519
|
+
RS_newActivity(document) {
|
|
1520
|
+
if (!document)
|
|
1521
|
+
return;
|
|
1522
|
+
if (!this.clipperService.supportsRS())
|
|
1523
|
+
return;
|
|
1524
|
+
this.broadcastService.sendMessage(ClipperMessages.INTEROP_RS_NEW_ACTIVITY, document);
|
|
1698
1525
|
}
|
|
1699
1526
|
/**
|
|
1700
|
-
*
|
|
1701
|
-
* @param
|
|
1702
|
-
* @param name : the optional id paramenter name. Default is 'id'
|
|
1703
|
-
* @returns : the id parame
|
|
1527
|
+
* Document usage report
|
|
1528
|
+
* @param document: the law
|
|
1704
1529
|
*/
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1530
|
+
RS_usageReport(document) {
|
|
1531
|
+
if (!document)
|
|
1532
|
+
return;
|
|
1533
|
+
if (!this.clipperService.supportsRS())
|
|
1534
|
+
return;
|
|
1535
|
+
this.broadcastService.sendMessage(ClipperMessages.INTEROP_RS_USAGE_REPORT, document);
|
|
1709
1536
|
}
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
disableClose: true,
|
|
1735
|
-
data: {
|
|
1736
|
-
url: url,
|
|
1737
|
-
embed: r.value.canEmbed
|
|
1738
|
-
},
|
|
1739
|
-
minWidth: '375px',
|
|
1740
|
-
maxWidth: '900px',
|
|
1741
|
-
width: '99%',
|
|
1742
|
-
height: '99%'
|
|
1743
|
-
});
|
|
1537
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentManager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperDocumentManager, isStandalone: true, selector: "ng-component", ngImport: i0, template: '<div></div>', isInline: true }); }
|
|
1539
|
+
}
|
|
1540
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentManager, decorators: [{
|
|
1541
|
+
type: Component,
|
|
1542
|
+
args: [{
|
|
1543
|
+
template: '<div></div>',
|
|
1544
|
+
standalone: true
|
|
1545
|
+
}]
|
|
1546
|
+
}] });
|
|
1547
|
+
|
|
1548
|
+
class ClipperSearchCalendarComponent {
|
|
1549
|
+
constructor() {
|
|
1550
|
+
this.changed = new EventEmitter();
|
|
1551
|
+
this.busy = signal(false);
|
|
1552
|
+
this.months = null;
|
|
1553
|
+
this.calendarSpecialDays = null;
|
|
1554
|
+
this.calendarEmptyHeader = CalendarEmptyHeader;
|
|
1555
|
+
this.calendarDate = startOfToday();
|
|
1556
|
+
this.calendarDateClass = (cellDate) => {
|
|
1557
|
+
if (!this.calendarSpecialDays)
|
|
1558
|
+
return '';
|
|
1559
|
+
if (this.calendarSpecialDays[cellDate.getDate() - 1] > 0) {
|
|
1560
|
+
return cellDate < startOfToday() ? 'special-date-expired' : 'special-date';
|
|
1744
1561
|
}
|
|
1745
|
-
|
|
1562
|
+
return '';
|
|
1563
|
+
};
|
|
1564
|
+
this.calendarDateFilter = () => { return false; };
|
|
1565
|
+
/**
|
|
1566
|
+
* Disable date selection from calendar
|
|
1567
|
+
*/
|
|
1568
|
+
this.filterCalendarDates = () => {
|
|
1569
|
+
return true;
|
|
1570
|
+
};
|
|
1746
1571
|
}
|
|
1747
1572
|
/**
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
if (
|
|
1757
|
-
|
|
1758
|
-
this.dialogService.error("Il servizio di <b>commenti alle norme</b> non è compreso nel tuo abbonamento, per maggiori informazioni rivolgersi all'agente commerciale di riferimento o inviare una mail a <a href='mailto:sales@arsedizioni.it' target='_blank'>sales@arsedizioni.it</a>.", null, "Attenzione");
|
|
1759
|
-
else
|
|
1760
|
-
this.dialogService.error(r.message);
|
|
1573
|
+
* Update calendar
|
|
1574
|
+
* @param value : the snapshot
|
|
1575
|
+
* @param view : view to update 'month' or ' months'. Default is 'months'
|
|
1576
|
+
* @param date : the new current date
|
|
1577
|
+
*/
|
|
1578
|
+
update(value = null, view = 'months', date) {
|
|
1579
|
+
this.busy.set(true);
|
|
1580
|
+
setTimeout(() => {
|
|
1581
|
+
if (view === 'months') {
|
|
1582
|
+
this.months = value?.months;
|
|
1761
1583
|
}
|
|
1762
1584
|
else {
|
|
1763
|
-
if (
|
|
1764
|
-
this.
|
|
1765
|
-
|
|
1766
|
-
this.
|
|
1585
|
+
if (value && value.months && value.months.length > 0)
|
|
1586
|
+
this.calendarSpecialDays = value.months[0].days;
|
|
1587
|
+
if (this.calendar) {
|
|
1588
|
+
this.calendar.activeDate = date;
|
|
1589
|
+
this.calendar.selected = date;
|
|
1590
|
+
this.calendar.updateTodaysDate();
|
|
1591
|
+
}
|
|
1592
|
+
this.calendarDate = date;
|
|
1767
1593
|
}
|
|
1768
|
-
|
|
1594
|
+
this.busy.set(false);
|
|
1595
|
+
}, 250);
|
|
1769
1596
|
}
|
|
1770
1597
|
/**
|
|
1771
|
-
*
|
|
1772
|
-
*
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1598
|
+
* Filter by date
|
|
1599
|
+
* @param date : the date to filter to or "month" to filter by the whole month.
|
|
1600
|
+
*/
|
|
1601
|
+
filterByDate(date) {
|
|
1602
|
+
if (date === 'month') {
|
|
1603
|
+
if (this.calendarDate) {
|
|
1604
|
+
this.changed.emit(new DateInterval(endOfDay(startOfMonth(this.calendarDate)), endOfMonth(this.calendarDate)));
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
else if (date) {
|
|
1608
|
+
this.changed.emit(new DateInterval(endOfDay(date), endOfDay(date)));
|
|
1609
|
+
}
|
|
1610
|
+
else {
|
|
1611
|
+
this.changed.emit(null);
|
|
1783
1612
|
}
|
|
1784
|
-
else
|
|
1785
|
-
window.open('/documento/' + documentId, '_blank');
|
|
1786
1613
|
}
|
|
1787
1614
|
/**
|
|
1788
|
-
*
|
|
1789
|
-
* @param
|
|
1790
|
-
* @param mode : the mode
|
|
1615
|
+
* Filter by month
|
|
1616
|
+
* @param monthInfo: the month info
|
|
1791
1617
|
*/
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
disableClose: true,
|
|
1800
|
-
closeOnNavigation: false,
|
|
1801
|
-
data: {
|
|
1802
|
-
id: documentId,
|
|
1803
|
-
mode: mode,
|
|
1804
|
-
model: model,
|
|
1805
|
-
anchor: anchor,
|
|
1806
|
-
anchorTitle: anchorTitle,
|
|
1807
|
-
update: update,
|
|
1808
|
-
},
|
|
1809
|
-
panelClass: 'references-container',
|
|
1810
|
-
minWidth: '375px',
|
|
1811
|
-
maxWidth: '1000px',
|
|
1812
|
-
width: '99%',
|
|
1813
|
-
height: '99%',
|
|
1814
|
-
});
|
|
1815
|
-
d.afterClosed()
|
|
1816
|
-
.subscribe((r) => {
|
|
1817
|
-
if (r && r.id) {
|
|
1818
|
-
this.navigate(r.id);
|
|
1819
|
-
}
|
|
1820
|
-
});
|
|
1821
|
-
}
|
|
1822
|
-
/**
|
|
1823
|
-
* Display a report
|
|
1824
|
-
* @param item
|
|
1825
|
-
*/
|
|
1826
|
-
displayReport(item) {
|
|
1827
|
-
if (!item)
|
|
1828
|
-
return;
|
|
1829
|
-
if (item.model != ClipperModel.NormativaVigente && item.model != ClipperModel.Scadenze) {
|
|
1830
|
-
this.dialogService.info("Questa funzionalità non è disponibile per questo tipo di documento.");
|
|
1831
|
-
return;
|
|
1832
|
-
}
|
|
1833
|
-
this.openReport(item.id, item.title1 ? item.title1 : item.title2);
|
|
1834
|
-
}
|
|
1835
|
-
/**
|
|
1836
|
-
* Checks if documents can be selected and returned as message
|
|
1837
|
-
*/
|
|
1838
|
-
canSelect() {
|
|
1839
|
-
return this.selectionMode > 0 && this.lastDocument && (this.lastDocument?.model === ClipperModel.NormativaVigente || this.lastDocument?.model === ClipperModel.AggiornamentoNormativo);
|
|
1840
|
-
}
|
|
1841
|
-
/**
|
|
1842
|
-
* Send a message with current selection and close dialog
|
|
1843
|
-
*/
|
|
1844
|
-
select() {
|
|
1845
|
-
if (this.lastDocument) {
|
|
1846
|
-
this.broadcastService.sendMessage(ClipperMessages.DOCUMENT_SELECTED_INNER, [
|
|
1847
|
-
this.lastDocument,
|
|
1848
|
-
]);
|
|
1849
|
-
this.changeDetector.markForCheck();
|
|
1850
|
-
this.close();
|
|
1851
|
-
}
|
|
1618
|
+
filterByMonth(monthInfo) {
|
|
1619
|
+
let d = new Date(monthInfo.year, monthInfo.month - 1, 1);
|
|
1620
|
+
this.changed.emit(new DateInterval(endOfDay(startOfMonth(d)), endOfMonth(d)));
|
|
1621
|
+
this.calendarSpecialDays = monthInfo.days;
|
|
1622
|
+
this.calendar.activeDate = d;
|
|
1623
|
+
this.calendar.updateTodaysDate();
|
|
1624
|
+
this.calendarDate = d;
|
|
1852
1625
|
}
|
|
1853
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
1854
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperDocumentComponent, isStandalone: true, selector: "ng-component", outputs: { closing: "closing", opening: "opening", onComplianceAnalysis: "onComplianceAnalysis", onCompliancePlanning: "onCompliancePlanning", onComplianceUsageReport: "onComplianceUsageReport" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "relevantsPane", first: true, predicate: ["relevantsPane"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"clipper-document-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar style=\"z-index:11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start start\" fxFill>\r\n <div fxFlex=\"*\" class=\"title-container\">\r\n <div class=\"large bold\">{{title()}}</div>\r\n @if (lastDocument && lastDocument?.lastUpdate) {\r\n <div style=\"padding-top: 5px;\">\r\n <div class=\"x-small accent bold uppercase\">\r\n AGGIORNATO A:\r\n {{lastDocument?.lastUpdate}}\r\n </div>\r\n </div>\r\n }\r\n @if (lastDocument && (lastDocument?.expiringDescription || lastDocument?.validityInfo)) {\r\n <div style=\"padding-top: 5px;\">\r\n @if (lastDocument?.expiringDescription) {\r\n <div class=\"x-small accent-low bold uppercase\">\r\n {{lastDocument?.expiringDescription}}</div>\r\n }\r\n @if (lastDocument?.validityInfo) {\r\n <div class=\"x-small error bold uppercase\"><b>Attenzione!</b>\r\n {{lastDocument?.validityInfo}}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (canSelect()) {\r\n <div fxFlex=\"170px\" fxFlex.lt-md=\"58px\">\r\n <button fxHide.lt-md fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-flat-button (click)=\"select()\"\r\n class=\"clipper-selection-button\" style=\"margin-top: 8px;\">\r\n <span class=\"small uppercase\">Usa selezione</span>\r\n </button>\r\n <button fxHide.gt-sm fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-icon-button (click)=\"select()\"\r\n class=\"clipper-selection-icon-button\" matTooltip=\"Usa selezione\" aria-label=\"'Usa la selezione'\"\r\n style=\"margin-top: 4px;\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <div fxFlex=\"164px\" fxFlex.lt-md=\"48px\" fxLayoutAlign=\"end\">\r\n <div class=\"dialog-close\">\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\"\r\n aria-label=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Avanti\" aria-label=\"Avanti\"\r\n (click)=\"forward()\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row wrap \" fxFill fxLayoutAlign=\"space-between center\" style=\"padding: 0 10px 10px 15px;\">\r\n <div fxFlex.xs=\"100\">\r\n @if (lastDocument?.model === 9) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"index(lastDocument?.id)\">\r\n Indice\r\n </button>\r\n }\r\n @if (lastDocument?.bag && (lastDocument?.bag[1] ==='T' || lastDocument?.bag[3] ==='T')) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button matTooltip=\"Collegamenti\"\r\n [attr.aria-label]=\"'Collegamenti al documento'\" [matMenuTriggerFor]=\"menuLinks\">\r\n Collegamenti\r\n </button>\r\n }\r\n <mat-menu #menuLinks=\"matMenu\">\r\n @if (lastDocument?.bag && lastDocument?.bag[1] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti richiamati'\"\r\n (click)=\"openReferences(lastDocument?.id, 1)\">\r\n Documenti richiamati\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[3] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti che richiamano'\"\r\n (click)=\"openReferences(lastDocument?.id, 2)\">\r\n Documenti che richiamano\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra juris'\"\r\n (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche subite'\"\r\n (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !=='T' && lastDocument?.bag[6] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche apportate'\"\r\n (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n </mat-menu>\r\n @if (lastDocument?.hasPrimary) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento primario'\" (click)=\"navigate(lastDocument?.primaryId)\">\r\n {{lastDocument?.primaryDescription}}\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra juris'\" (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche subite'\" (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !== 'T' && lastDocument?.bag[6] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche apportate'\" (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n @if (lastDocument?.secondaryId) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento secondario'\" (click)=\"navigate(lastDocument?.secondaryId)\">\r\n Testo storico\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[7] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra commento'\"\r\n (click)=\"showComment()\">\r\n Commento\r\n </button>\r\n }\r\n </div>\r\n <div fxFlex.xs=\"100\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (hasRelevants() && relevants.hits) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div fxFlexAlign=\"center\" class=\"small item-greyed\" style=\"margin-left:20px; margin-right: 5px\"\r\n matTooltip=\"Parole evidenziate\">{{relevants.hit}}\r\n di {{relevants.hits}}</div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla parola precedente'\"\r\n (click)=\"previousRelevant()\" matTooltip=\"Parola precedente\" [disabled]=\"relevants.hit <= 1\">\r\n <mat-icon>chevron_left</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla prossima parola'\"\r\n (click)=\"nextRelevant()\" matTooltip=\"Prossima parola\" [disabled]=\"relevants.hit >= relevants.hits\">\r\n <mat-icon>chevron_right</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azioni sul documento\"\r\n [attr.aria-label]=\"'Azioni da eseguire sul documento'\" [matMenuTriggerFor]=\"menuActions\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menuActions=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Apri documento in una nuova finestra'\"\r\n (click)=\"open(lastDocument?.id, undefined, true)\">\r\n <mat-icon>open_in_browser</mat-icon>Apri in nuova finestra\r\n </button>\r\n <button mat-menu-item (click)=\"print()\" [attr.aria-label]=\"'Stampa documento'\">\r\n <mat-icon>print</mat-icon>Stampa\r\n </button>\r\n <button mat-menu-item (click)=\"find()\" [attr.aria-label]=\"'Trova nel documento'\">\r\n <mat-icon>find_in_page</mat-icon>Trova nel documento (CTRL+F)\r\n </button>\r\n <button mat-menu-item (click)=\"sendItemsTo([lastDocument])\" [attr.aria-label]=\"'Invia documento per email'\">\r\n <mat-icon>send</mat-icon>Invia per email\r\n </button>\r\n <button mat-menu-item (click)=\"addItemsToBag([lastDocument])\"\r\n [attr.aria-label]=\"'Aggiungi ai documenti di lavoro'\">\r\n <mat-icon>work_outline</mat-icon>Aggiungi ai documenti di lavoro\r\n </button>\r\n @if (lastDocument && lastDocument?.model != 11) {\r\n <button mat-menu-item (click)=\"exportPdf(lastDocument)\" [attr.aria-label]=\"'Salva documento in pdf'\">\r\n <mat-icon>save_alt</mat-icon>Salva in pdf\r\n </button>\r\n }\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un link permanente da utilizzare esternamente'\"\r\n (click)=\"showLink(lastDocument)\">\r\n <mat-icon>link</mat-icon>Link\r\n </button>\r\n @if ((lastDocument?.model === 9 || lastDocument?.model === 10)) {\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un report sul documento'\"\r\n (click)=\"displayReport(lastDocument)\">\r\n <mat-icon>assignment</mat-icon>Report\r\n </button>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <button type=\"button\" mat-menu-item matTooltip=\"Registro & Scadenzario\"\r\n [attr.aria-label]=\"'Opzioni di Registro & Scadenzario'\" [matMenuTriggerFor]=\"menuRS\">\r\n <mat-icon>alarm_on</mat-icon>\r\n Registro e scadenzario\r\n </button>\r\n }\r\n <mat-menu #menuRS=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova legge'\" (click)=\"RS_newLaw([lastDocument])\">\r\n Nuova legge\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova attivit\u00E0'\" (click)=\"RS_newActivity(lastDocument)\">\r\n Nuova attivit\u00E0\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Report utilizzo norma'\" (click)=\"RS_usageReport(lastDocument)\">\r\n Report utilizzo norma\r\n </button>\r\n </mat-menu>\r\n </mat-menu>\r\n @if (hasRelevants() && relevants.items && relevantsPane && (!relevantsPane.opened || relevantsPaneClosed)) {\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Rilevanza\" aria-label=\"'Rilevanza'\"\r\n (click)=\"toggleRelevantsPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-document-scrollable\">\r\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"[relevantsPaneHasBackdrop]\">\r\n <mat-drawer #relevantsPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (relevantsBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (relevantsBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"title\">Rilevanza</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button mat-icon-button (click)=\"toggleRelevantsPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"relevants-container scroll-auto\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div>\r\n <p>Parti del documento pi\u00F9 significative per la ricerca di <span class='word-hit'>{{lastQuery}}</span>\r\n </p>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <nav class=\"relevants-items\">\r\n <ul>\r\n @for (item of relevants.items; track $index) {\r\n <li class=\"small\" (click)=\"gotoRelevant(item)\" [attr.aria-label]=\"item.title\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\">\r\n {{item.title}}\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (item.score > 1.2) {\r\n <mat-icon style='font-size:x-small; height: 10px; width:10px' color=\"primary\"\r\n matTooltip=\"Molto rilevante\">thumb_up_alt</mat-icon>\r\n }\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div class=\"fill scroll-hidden\">\r\n <iframe id=\"clipper-document-iframe\" class=\"iframe\" [src]=\"url() | safeUrl\"></iframe>\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.title-container{padding-left:20px;padding-top:14px}.dialog-close{margin-right:10px;margin-top:4px}.word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.iframe{width:100%;height:100%;border:0}.relevants-container{padding:0 20px 10px}.relevants-items{padding:0;margin:0}.relevants-items ul{list-style-type:none;padding:0;margin:0}.relevants-items ul li{font-size:small;padding:6px 12px;display:block;color:var(--ars-color-text, #191c1b)}.relevants-items ul li a{color:inherit;text-decoration:none;display:block}.relevants-items ul li:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:6px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "pipe", type: SafeUrlPipe, name: "safeUrl" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1626
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1627
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchCalendarComponent, isStandalone: true, selector: "clipper-search-calendar", outputs: { changed: "changed" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" fxFill class=\"calendar-container scroll-hidden\">\r\n <div class=\"calendar-months\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\" fxLayoutGap=\"8px\" fxFill>\r\n @for (m of months; track m) {\r\n <button fxFlex=\"37px\" mat-button class=\"small uppercase\" (click)=\"filterByMonth(m)\"\r\n [disabled]=\"m.total === 0\">\r\n @if (m.expired) {\r\n <span class=\"expired\" [matTooltip]=\"m.expired + ' elementi in ritardo'\">{{m.monthShortName}}</span>\r\n }\r\n @if (!m.expired) {\r\n <span [matTooltip]=\"m.total + ' elementi'\">{{m.monthShortName}}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-auto\">\r\n @if (!busy()) {\r\n <mat-calendar #calendar [headerComponent]=\"calendarEmptyHeader\" [dateClass]=\"calendarDateClass\"\r\n [dateFilter]=\"calendarDateFilter\" (selectedChange)=\"filterByDate($event)\" class=\"calendar-month\">\r\n </mat-calendar>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around\" style=\"padding:0 15px\">\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"filterByDate('month')\">Tutto il\r\n mese</button>\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [".calendar-container{padding-top:20px;padding-bottom:10px}.calendar-message{padding-top:10px;padding-left:15px}.calendar-months{padding:0 15px}.calendar-months .separator{border-top:1px var(--ars-color-divider, #757d87) solid;margin-top:15px;padding-top:15px}.calendar-months .expired{color:var(--ars-color-error, #ff5449)}.calendar-month{padding:10px 0 30px;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatExpansionModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1855
1628
|
}
|
|
1856
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
1629
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchCalendarComponent, decorators: [{
|
|
1857
1630
|
type: Component,
|
|
1858
|
-
args: [{
|
|
1859
|
-
|
|
1631
|
+
args: [{ selector: 'clipper-search-calendar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1632
|
+
FlexModule,
|
|
1860
1633
|
MatButtonModule,
|
|
1861
1634
|
MatTooltipModule,
|
|
1635
|
+
MatCalendar,
|
|
1636
|
+
MatChipsModule,
|
|
1862
1637
|
MatIconModule,
|
|
1863
|
-
MatMenuModule,
|
|
1864
1638
|
MatDividerModule,
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
SafeUrlPipe,
|
|
1869
|
-
], template: "<div class=\"clipper-document-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar style=\"z-index:11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start start\" fxFill>\r\n <div fxFlex=\"*\" class=\"title-container\">\r\n <div class=\"large bold\">{{title()}}</div>\r\n @if (lastDocument && lastDocument?.lastUpdate) {\r\n <div style=\"padding-top: 5px;\">\r\n <div class=\"x-small accent bold uppercase\">\r\n AGGIORNATO A:\r\n {{lastDocument?.lastUpdate}}\r\n </div>\r\n </div>\r\n }\r\n @if (lastDocument && (lastDocument?.expiringDescription || lastDocument?.validityInfo)) {\r\n <div style=\"padding-top: 5px;\">\r\n @if (lastDocument?.expiringDescription) {\r\n <div class=\"x-small accent-low bold uppercase\">\r\n {{lastDocument?.expiringDescription}}</div>\r\n }\r\n @if (lastDocument?.validityInfo) {\r\n <div class=\"x-small error bold uppercase\"><b>Attenzione!</b>\r\n {{lastDocument?.validityInfo}}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (canSelect()) {\r\n <div fxFlex=\"170px\" fxFlex.lt-md=\"58px\">\r\n <button fxHide.lt-md fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-flat-button (click)=\"select()\"\r\n class=\"clipper-selection-button\" style=\"margin-top: 8px;\">\r\n <span class=\"small uppercase\">Usa selezione</span>\r\n </button>\r\n <button fxHide.gt-sm fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-icon-button (click)=\"select()\"\r\n class=\"clipper-selection-icon-button\" matTooltip=\"Usa selezione\" aria-label=\"'Usa la selezione'\"\r\n style=\"margin-top: 4px;\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <div fxFlex=\"164px\" fxFlex.lt-md=\"48px\" fxLayoutAlign=\"end\">\r\n <div class=\"dialog-close\">\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\"\r\n aria-label=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Avanti\" aria-label=\"Avanti\"\r\n (click)=\"forward()\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row wrap \" fxFill fxLayoutAlign=\"space-between center\" style=\"padding: 0 10px 10px 15px;\">\r\n <div fxFlex.xs=\"100\">\r\n @if (lastDocument?.model === 9) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"index(lastDocument?.id)\">\r\n Indice\r\n </button>\r\n }\r\n @if (lastDocument?.bag && (lastDocument?.bag[1] ==='T' || lastDocument?.bag[3] ==='T')) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button matTooltip=\"Collegamenti\"\r\n [attr.aria-label]=\"'Collegamenti al documento'\" [matMenuTriggerFor]=\"menuLinks\">\r\n Collegamenti\r\n </button>\r\n }\r\n <mat-menu #menuLinks=\"matMenu\">\r\n @if (lastDocument?.bag && lastDocument?.bag[1] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti richiamati'\"\r\n (click)=\"openReferences(lastDocument?.id, 1)\">\r\n Documenti richiamati\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[3] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti che richiamano'\"\r\n (click)=\"openReferences(lastDocument?.id, 2)\">\r\n Documenti che richiamano\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra juris'\"\r\n (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche subite'\"\r\n (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !=='T' && lastDocument?.bag[6] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche apportate'\"\r\n (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n </mat-menu>\r\n @if (lastDocument?.hasPrimary) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento primario'\" (click)=\"navigate(lastDocument?.primaryId)\">\r\n {{lastDocument?.primaryDescription}}\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra juris'\" (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche subite'\" (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !== 'T' && lastDocument?.bag[6] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche apportate'\" (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n @if (lastDocument?.secondaryId) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento secondario'\" (click)=\"navigate(lastDocument?.secondaryId)\">\r\n Testo storico\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[7] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra commento'\"\r\n (click)=\"showComment()\">\r\n Commento\r\n </button>\r\n }\r\n </div>\r\n <div fxFlex.xs=\"100\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (hasRelevants() && relevants.hits) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div fxFlexAlign=\"center\" class=\"small item-greyed\" style=\"margin-left:20px; margin-right: 5px\"\r\n matTooltip=\"Parole evidenziate\">{{relevants.hit}}\r\n di {{relevants.hits}}</div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla parola precedente'\"\r\n (click)=\"previousRelevant()\" matTooltip=\"Parola precedente\" [disabled]=\"relevants.hit <= 1\">\r\n <mat-icon>chevron_left</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla prossima parola'\"\r\n (click)=\"nextRelevant()\" matTooltip=\"Prossima parola\" [disabled]=\"relevants.hit >= relevants.hits\">\r\n <mat-icon>chevron_right</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azioni sul documento\"\r\n [attr.aria-label]=\"'Azioni da eseguire sul documento'\" [matMenuTriggerFor]=\"menuActions\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menuActions=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Apri documento in una nuova finestra'\"\r\n (click)=\"open(lastDocument?.id, undefined, true)\">\r\n <mat-icon>open_in_browser</mat-icon>Apri in nuova finestra\r\n </button>\r\n <button mat-menu-item (click)=\"print()\" [attr.aria-label]=\"'Stampa documento'\">\r\n <mat-icon>print</mat-icon>Stampa\r\n </button>\r\n <button mat-menu-item (click)=\"find()\" [attr.aria-label]=\"'Trova nel documento'\">\r\n <mat-icon>find_in_page</mat-icon>Trova nel documento (CTRL+F)\r\n </button>\r\n <button mat-menu-item (click)=\"sendItemsTo([lastDocument])\" [attr.aria-label]=\"'Invia documento per email'\">\r\n <mat-icon>send</mat-icon>Invia per email\r\n </button>\r\n <button mat-menu-item (click)=\"addItemsToBag([lastDocument])\"\r\n [attr.aria-label]=\"'Aggiungi ai documenti di lavoro'\">\r\n <mat-icon>work_outline</mat-icon>Aggiungi ai documenti di lavoro\r\n </button>\r\n @if (lastDocument && lastDocument?.model != 11) {\r\n <button mat-menu-item (click)=\"exportPdf(lastDocument)\" [attr.aria-label]=\"'Salva documento in pdf'\">\r\n <mat-icon>save_alt</mat-icon>Salva in pdf\r\n </button>\r\n }\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un link permanente da utilizzare esternamente'\"\r\n (click)=\"showLink(lastDocument)\">\r\n <mat-icon>link</mat-icon>Link\r\n </button>\r\n @if ((lastDocument?.model === 9 || lastDocument?.model === 10)) {\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un report sul documento'\"\r\n (click)=\"displayReport(lastDocument)\">\r\n <mat-icon>assignment</mat-icon>Report\r\n </button>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <button type=\"button\" mat-menu-item matTooltip=\"Registro & Scadenzario\"\r\n [attr.aria-label]=\"'Opzioni di Registro & Scadenzario'\" [matMenuTriggerFor]=\"menuRS\">\r\n <mat-icon>alarm_on</mat-icon>\r\n Registro e scadenzario\r\n </button>\r\n }\r\n <mat-menu #menuRS=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova legge'\" (click)=\"RS_newLaw([lastDocument])\">\r\n Nuova legge\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova attivit\u00E0'\" (click)=\"RS_newActivity(lastDocument)\">\r\n Nuova attivit\u00E0\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Report utilizzo norma'\" (click)=\"RS_usageReport(lastDocument)\">\r\n Report utilizzo norma\r\n </button>\r\n </mat-menu>\r\n </mat-menu>\r\n @if (hasRelevants() && relevants.items && relevantsPane && (!relevantsPane.opened || relevantsPaneClosed)) {\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Rilevanza\" aria-label=\"'Rilevanza'\"\r\n (click)=\"toggleRelevantsPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-document-scrollable\">\r\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"[relevantsPaneHasBackdrop]\">\r\n <mat-drawer #relevantsPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (relevantsBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (relevantsBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"title\">Rilevanza</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button mat-icon-button (click)=\"toggleRelevantsPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"relevants-container scroll-auto\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div>\r\n <p>Parti del documento pi\u00F9 significative per la ricerca di <span class='word-hit'>{{lastQuery}}</span>\r\n </p>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <nav class=\"relevants-items\">\r\n <ul>\r\n @for (item of relevants.items; track $index) {\r\n <li class=\"small\" (click)=\"gotoRelevant(item)\" [attr.aria-label]=\"item.title\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\">\r\n {{item.title}}\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (item.score > 1.2) {\r\n <mat-icon style='font-size:x-small; height: 10px; width:10px' color=\"primary\"\r\n matTooltip=\"Molto rilevante\">thumb_up_alt</mat-icon>\r\n }\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div class=\"fill scroll-hidden\">\r\n <iframe id=\"clipper-document-iframe\" class=\"iframe\" [src]=\"url() | safeUrl\"></iframe>\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.title-container{padding-left:20px;padding-top:14px}.dialog-close{margin-right:10px;margin-top:4px}.word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.iframe{width:100%;height:100%;border:0}.relevants-container{padding:0 20px 10px}.relevants-items{padding:0;margin:0}.relevants-items ul{list-style-type:none;padding:0;margin:0}.relevants-items ul li{font-size:small;padding:6px 12px;display:block;color:var(--ars-color-text, #191c1b)}.relevants-items ul li a{color:inherit;text-decoration:none;display:block}.relevants-items ul li:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:6px;cursor:pointer}\n"] }]
|
|
1870
|
-
}], propDecorators: { relevantsPane: [{
|
|
1639
|
+
MatExpansionModule
|
|
1640
|
+
], template: "<div fxLayout=\"column\" fxFill class=\"calendar-container scroll-hidden\">\r\n <div class=\"calendar-months\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\" fxLayoutGap=\"8px\" fxFill>\r\n @for (m of months; track m) {\r\n <button fxFlex=\"37px\" mat-button class=\"small uppercase\" (click)=\"filterByMonth(m)\"\r\n [disabled]=\"m.total === 0\">\r\n @if (m.expired) {\r\n <span class=\"expired\" [matTooltip]=\"m.expired + ' elementi in ritardo'\">{{m.monthShortName}}</span>\r\n }\r\n @if (!m.expired) {\r\n <span [matTooltip]=\"m.total + ' elementi'\">{{m.monthShortName}}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-auto\">\r\n @if (!busy()) {\r\n <mat-calendar #calendar [headerComponent]=\"calendarEmptyHeader\" [dateClass]=\"calendarDateClass\"\r\n [dateFilter]=\"calendarDateFilter\" (selectedChange)=\"filterByDate($event)\" class=\"calendar-month\">\r\n </mat-calendar>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around\" style=\"padding:0 15px\">\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"filterByDate('month')\">Tutto il\r\n mese</button>\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [".calendar-container{padding-top:20px;padding-bottom:10px}.calendar-message{padding-top:10px;padding-left:15px}.calendar-months{padding:0 15px}.calendar-months .separator{border-top:1px var(--ars-color-divider, #757d87) solid;margin-top:15px;padding-top:15px}.calendar-months .expired{color:var(--ars-color-error, #ff5449)}.calendar-month{padding:10px 0 30px;width:100%}\n"] }]
|
|
1641
|
+
}], propDecorators: { calendar: [{
|
|
1871
1642
|
type: ViewChild,
|
|
1872
|
-
args: ['
|
|
1873
|
-
}],
|
|
1874
|
-
type: Output
|
|
1875
|
-
}], opening: [{
|
|
1876
|
-
type: Output
|
|
1877
|
-
}], onComplianceAnalysis: [{
|
|
1878
|
-
type: Output
|
|
1879
|
-
}], onCompliancePlanning: [{
|
|
1880
|
-
type: Output
|
|
1881
|
-
}], onComplianceUsageReport: [{
|
|
1643
|
+
args: ['calendar']
|
|
1644
|
+
}], changed: [{
|
|
1882
1645
|
type: Output
|
|
1883
1646
|
}] } });
|
|
1884
1647
|
|
|
1885
|
-
class
|
|
1648
|
+
class ClipperSearchResultManager extends ClipperDocumentManager {
|
|
1886
1649
|
constructor() {
|
|
1887
|
-
|
|
1650
|
+
super(...arguments);
|
|
1651
|
+
this.unsubscribe = new Subject();
|
|
1652
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
1653
|
+
this.breakpointObserver = inject(BreakpointObserver);
|
|
1654
|
+
this.screenService = inject(ScreenService);
|
|
1655
|
+
this.selection = null;
|
|
1656
|
+
this.snapshot = new ClipperSearchResult();
|
|
1657
|
+
this.filterBusy = signal(false);
|
|
1658
|
+
this.filterParams = new ClipperSearchParams();
|
|
1659
|
+
this.filterPaneHasBackdrop = false;
|
|
1660
|
+
this.filterPaneClosed = false;
|
|
1661
|
+
this.filterPane2HasBackdrop = false;
|
|
1662
|
+
this.filterPane2Closed = false;
|
|
1663
|
+
this.sortOptions = [];
|
|
1664
|
+
this.sortMode = null;
|
|
1665
|
+
this.scrollerId = 'scroller_' + SystemUtils.generateUUID();
|
|
1666
|
+
this.restorableId = null;
|
|
1667
|
+
this.hasFacets = signal(false);
|
|
1668
|
+
this.hasCalendar = signal(false);
|
|
1669
|
+
this.hasRegions = () => {
|
|
1670
|
+
return (this.filterParams.sectors?.filter(n => n.value === 'LR').length ?? 0) > 0;
|
|
1671
|
+
};
|
|
1672
|
+
}
|
|
1673
|
+
ngOnDestroy() {
|
|
1674
|
+
this.unsubscribe.next();
|
|
1675
|
+
this.unsubscribe.complete();
|
|
1888
1676
|
}
|
|
1889
1677
|
/**
|
|
1890
|
-
*
|
|
1891
|
-
* @param documentId : the document id
|
|
1892
|
-
* @param query : the query
|
|
1678
|
+
* Update menu buttons visibility when the menu is closed
|
|
1893
1679
|
*/
|
|
1894
|
-
|
|
1895
|
-
if (
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
restoreFocus: false,
|
|
1901
|
-
disableClose: false,
|
|
1902
|
-
data: {
|
|
1903
|
-
id: documentId,
|
|
1904
|
-
query: query
|
|
1905
|
-
},
|
|
1906
|
-
panelClass: 'document-container',
|
|
1907
|
-
minWidth: '375px',
|
|
1908
|
-
maxWidth: '1400px',
|
|
1909
|
-
width: '99%',
|
|
1910
|
-
height: '99%'
|
|
1911
|
-
});
|
|
1912
|
-
d.componentInstance.opening.subscribe((r) => {
|
|
1913
|
-
this.openDocument(r.id);
|
|
1914
|
-
});
|
|
1915
|
-
return d;
|
|
1680
|
+
updateMenuButtonsVisibility() {
|
|
1681
|
+
if (this.snapshot) {
|
|
1682
|
+
this.snapshot.items?.forEach((n) => {
|
|
1683
|
+
n.isMenuOpen = false;
|
|
1684
|
+
});
|
|
1685
|
+
}
|
|
1916
1686
|
}
|
|
1917
1687
|
/**
|
|
1918
|
-
*
|
|
1919
|
-
* @param
|
|
1920
|
-
* @param mode : the snapshot mode
|
|
1688
|
+
* Scroll on top o list area
|
|
1689
|
+
* @param top: the top position
|
|
1921
1690
|
*/
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
autoFocus: false,
|
|
1928
|
-
restoreFocus: false,
|
|
1929
|
-
disableClose: false,
|
|
1930
|
-
closeOnNavigation: false,
|
|
1931
|
-
data: { id: item.documentId, mode: mode },
|
|
1932
|
-
panelClass: 'references-container',
|
|
1933
|
-
minWidth: '375px',
|
|
1934
|
-
maxWidth: '1000px',
|
|
1935
|
-
width: '99%',
|
|
1936
|
-
height: '99%',
|
|
1937
|
-
});
|
|
1938
|
-
return d;
|
|
1691
|
+
scroll(top = 0) {
|
|
1692
|
+
const elem = document.getElementById(this.scrollerId);
|
|
1693
|
+
if (elem) {
|
|
1694
|
+
elem.scrollTo({ top: top, left: 0, behavior: 'auto' });
|
|
1695
|
+
}
|
|
1939
1696
|
}
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
this.
|
|
1945
|
-
this.clipperService = inject(ClipperService);
|
|
1946
|
-
this.clipperDocumentService = inject(ClipperDocumentService);
|
|
1947
|
-
this.broadcastService = inject(BroadcastService);
|
|
1948
|
-
this.dialogService = inject(ApplicationDialogService);
|
|
1697
|
+
/**
|
|
1698
|
+
* Check if every element are selected
|
|
1699
|
+
*/
|
|
1700
|
+
allSelected() {
|
|
1701
|
+
return this.selection?.current?.selected?.length === this.snapshot?.items?.length;
|
|
1949
1702
|
}
|
|
1950
1703
|
/**
|
|
1951
|
-
|
|
1952
|
-
|
|
1704
|
+
* Master selection toggle
|
|
1705
|
+
* @param select: true to select all elements false to deselect all elements
|
|
1706
|
+
*/
|
|
1707
|
+
selectAll(select = true) {
|
|
1708
|
+
if (select) {
|
|
1709
|
+
this.snapshot?.items?.forEach((n) => this.selection?.select(n, n.documentId));
|
|
1710
|
+
}
|
|
1711
|
+
else {
|
|
1712
|
+
this.snapshot?.items?.forEach((n) => this.selection?.deselect(n, n.documentId));
|
|
1713
|
+
}
|
|
1714
|
+
}
|
|
1715
|
+
/**
|
|
1716
|
+
* Check if selections exists
|
|
1717
|
+
* @returns true if at least one element is selected
|
|
1718
|
+
*/
|
|
1719
|
+
hasAnySelection() {
|
|
1720
|
+
return (this.selection?.all?.length ?? 0) > 0;
|
|
1721
|
+
}
|
|
1722
|
+
/**
|
|
1723
|
+
* Check if only one element is selected
|
|
1724
|
+
* @returns true if only one element is selected
|
|
1725
|
+
*/
|
|
1726
|
+
hasSingleSelection() {
|
|
1727
|
+
return (this.selection?.all?.length ?? 0) === 1;
|
|
1728
|
+
}
|
|
1729
|
+
/**
|
|
1730
|
+
* Get the first selected item
|
|
1731
|
+
* @returns the selected item or null
|
|
1732
|
+
*/
|
|
1733
|
+
getSingleSelection() {
|
|
1734
|
+
return this.hasAnySelection() ? this.selection?.all[0] : null;
|
|
1735
|
+
}
|
|
1736
|
+
/**
|
|
1737
|
+
* Clear selection
|
|
1738
|
+
*/
|
|
1739
|
+
clearSelection() {
|
|
1740
|
+
return this.selection?.clear();
|
|
1741
|
+
}
|
|
1742
|
+
/**
|
|
1743
|
+
* Return the number of selected items or null
|
|
1744
|
+
* @returns Return the number of selected items
|
|
1745
|
+
*/
|
|
1746
|
+
countSelections() {
|
|
1747
|
+
return (this.selection && this.selection?.all?.length > 0) ? this.selection?.all?.length : null;
|
|
1748
|
+
}
|
|
1749
|
+
/**
|
|
1750
|
+
* Get the selected id
|
|
1751
|
+
*/
|
|
1752
|
+
getSeletectId() {
|
|
1753
|
+
if (this.hasAnySelection()) {
|
|
1754
|
+
return this.selection?.all[0].documentId;
|
|
1755
|
+
}
|
|
1756
|
+
return null;
|
|
1757
|
+
}
|
|
1758
|
+
/**
|
|
1759
|
+
* Get all selected ids
|
|
1953
1760
|
*/
|
|
1954
|
-
|
|
1955
|
-
if (
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
.
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
.subscribe({
|
|
1967
|
-
next: (r2) => {
|
|
1968
|
-
saveAs(r2, (item.title1 ? item.title1 : id) + '.pdf');
|
|
1969
|
-
},
|
|
1970
|
-
complete: () => {
|
|
1971
|
-
this.dialogService.clearBusy();
|
|
1972
|
-
}
|
|
1973
|
-
});
|
|
1974
|
-
}
|
|
1975
|
-
});
|
|
1761
|
+
getSeletectIds() {
|
|
1762
|
+
if ((this.selection?.all?.length ?? 0) > 100) {
|
|
1763
|
+
this.dialogService.error('La selezione non può contenere più di 100 elementi.');
|
|
1764
|
+
return null;
|
|
1765
|
+
}
|
|
1766
|
+
let ids = [];
|
|
1767
|
+
if (this.hasAnySelection()) {
|
|
1768
|
+
this.selection?.all?.forEach((n) => {
|
|
1769
|
+
ids.push(n.documentId);
|
|
1770
|
+
});
|
|
1771
|
+
}
|
|
1772
|
+
return ids;
|
|
1976
1773
|
}
|
|
1977
1774
|
/**
|
|
1978
|
-
*
|
|
1979
|
-
* @param items: the item list
|
|
1980
|
-
* @param searchParams: the search params
|
|
1775
|
+
* Get all selected ids
|
|
1981
1776
|
*/
|
|
1982
|
-
|
|
1983
|
-
if (
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
let model = { ids: ids, query: null, format: 1 };
|
|
1987
|
-
if (model.ids.length === 0) {
|
|
1988
|
-
model.query = searchParams;
|
|
1777
|
+
getSeletectIdsAndData() {
|
|
1778
|
+
if ((this.selection?.all?.length ?? 0) > 100) {
|
|
1779
|
+
this.dialogService.error('La selezione non può contenere più di 100 elementi.');
|
|
1780
|
+
return null;
|
|
1989
1781
|
}
|
|
1990
|
-
|
|
1991
|
-
this.
|
|
1992
|
-
.
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1782
|
+
let data = [];
|
|
1783
|
+
if (this.hasAnySelection()) {
|
|
1784
|
+
this.selection?.all?.forEach((n) => {
|
|
1785
|
+
data.push({ id: n.documentId, data: n });
|
|
1786
|
+
});
|
|
1787
|
+
}
|
|
1788
|
+
return data;
|
|
1789
|
+
}
|
|
1790
|
+
/**
|
|
1791
|
+
* Prepare result items
|
|
1792
|
+
* @param items : the items to process
|
|
1793
|
+
* @param params : the current search params
|
|
1794
|
+
*/
|
|
1795
|
+
prepareResultItems(items, params) {
|
|
1796
|
+
const today = startOfToday();
|
|
1797
|
+
const groupByYear = !params.sortMode ||
|
|
1798
|
+
params.sortMode === ClipperSort.DateAsc ||
|
|
1799
|
+
params.sortMode === ClipperSort.DateDesc ||
|
|
1800
|
+
params.sortMode === ClipperSort.SourceDateAsc ||
|
|
1801
|
+
params.sortMode === ClipperSort.SourceDateDesc;
|
|
1802
|
+
const groupByRelevance = params.sortMode === ClipperSort.Relevance;
|
|
1803
|
+
const groupByPopularity = params.sortMode === ClipperSort.Popularity;
|
|
1804
|
+
let group = '';
|
|
1805
|
+
items?.forEach(n => {
|
|
1806
|
+
n.documentId = n.documentId ?? n.id;
|
|
1807
|
+
this.selection?.updateCurrent(n, n.documentId);
|
|
1808
|
+
if (n.model === ClipperModel.Quesiti) {
|
|
1809
|
+
n.info = "Quesito n° " + n.number + " del " + SystemUtils.formatDate(n.date, "d MMM yyyy");
|
|
1810
|
+
}
|
|
1811
|
+
else if (n.model === ClipperModel.Scadenze ||
|
|
1812
|
+
n.model === ClipperModel.Segnalazioni) {
|
|
1813
|
+
switch (n.model) {
|
|
1814
|
+
case ClipperModel.Scadenze:
|
|
1815
|
+
n.originDescription = 'Scadenza';
|
|
1816
|
+
break;
|
|
1817
|
+
case ClipperModel.Segnalazioni:
|
|
1818
|
+
n.originDescription = 'Segnalazione';
|
|
1819
|
+
break;
|
|
1820
|
+
}
|
|
1821
|
+
if (n.expiringInfo) {
|
|
1822
|
+
let parts = n.expiringInfo.split('|');
|
|
1823
|
+
if (parts.length === 3)
|
|
1824
|
+
n.expiringDescription = parts[2];
|
|
1825
|
+
}
|
|
1826
|
+
if (n.expiringDate) {
|
|
1827
|
+
n.date = startOfDay(new Date(n.expiringDate));
|
|
1828
|
+
const d = startOfDay(subDays(n.date, 15));
|
|
1829
|
+
n.isExpiring = today <= n.date && today >= d;
|
|
1830
|
+
n.isExpired = n.date < today;
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1833
|
+
else {
|
|
1834
|
+
if ((n.model === ClipperModel.Articoli ||
|
|
1835
|
+
n.model === ClipperModel.News) &&
|
|
1836
|
+
n.tags) {
|
|
1837
|
+
n.info = n.tags.toUpperCase().substring(1).replaceAll("#", ", ");
|
|
1838
|
+
}
|
|
1839
|
+
if (n.model !== ClipperModel.AggiornamentoNormativo &&
|
|
1840
|
+
n.model !== ClipperModel.NormativaVigente &&
|
|
1841
|
+
n.model !== ClipperModel.Juris &&
|
|
1842
|
+
n.date) {
|
|
1843
|
+
n.date = startOfDay(new Date(n.date ?? n.publishingDate));
|
|
1844
|
+
const d = startOfDay(subDays(startOfToday(), 7));
|
|
1845
|
+
n.isNew = n.date > d;
|
|
1846
|
+
}
|
|
1847
|
+
else {
|
|
1848
|
+
n.date = null;
|
|
1849
|
+
}
|
|
1850
|
+
if (n.anchors) {
|
|
1851
|
+
let anchorType = null;
|
|
1852
|
+
let anchors = [];
|
|
1853
|
+
n.anchors.forEach((a) => {
|
|
1854
|
+
if (a.type === 20)
|
|
1855
|
+
return;
|
|
1856
|
+
if (a.type !== anchorType) {
|
|
1857
|
+
if (a.type >= 3)
|
|
1858
|
+
anchors.push({ text: a.typeDescription });
|
|
1859
|
+
anchorType = a.type;
|
|
1860
|
+
}
|
|
1861
|
+
let score = a.score;
|
|
1862
|
+
if (score > 7)
|
|
1863
|
+
score -= 7;
|
|
1864
|
+
else if (score > 5)
|
|
1865
|
+
score -= 5;
|
|
1866
|
+
else if (score > 3)
|
|
1867
|
+
score -= 3;
|
|
1868
|
+
anchors.push({
|
|
1869
|
+
text: a.text,
|
|
1870
|
+
title: a.title,
|
|
1871
|
+
documentId: a.documentId,
|
|
1872
|
+
uri: a.uri,
|
|
1873
|
+
veryRelevant: score > 0.6,
|
|
1874
|
+
});
|
|
1875
|
+
});
|
|
1876
|
+
n.anchors = anchors;
|
|
1877
|
+
}
|
|
1878
|
+
if (n.validityState > 0) {
|
|
1879
|
+
n.validityDescription = 'Il documento non è più vigente';
|
|
1880
|
+
n.isExpired = true;
|
|
1881
|
+
if (n.validUntilDate) {
|
|
1882
|
+
const expiringDate = startOfDay(new Date(n.validUntilDate));
|
|
1883
|
+
if (expiringDate < today) {
|
|
1884
|
+
n.validityDescription =
|
|
1885
|
+
'Il documento non è più vigente dal ' +
|
|
1886
|
+
SystemUtils.formatDate(expiringDate) +
|
|
1887
|
+
'.';
|
|
1888
|
+
}
|
|
1889
|
+
else {
|
|
1890
|
+
n.validityDescription =
|
|
1891
|
+
'Il documento non sarà più vigente dal ' +
|
|
1892
|
+
SystemUtils.formatDate(expiringDate) +
|
|
1893
|
+
'.';
|
|
1894
|
+
n.isExpired = false;
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
if (n.expiringDate) {
|
|
1899
|
+
n.date = startOfDay(new Date(n.expiringDate));
|
|
1900
|
+
const d = startOfDay(subDays(n.date, 15));
|
|
1901
|
+
n.isExpiring = today <= n.date && today >= d;
|
|
1902
|
+
n.isExpired = n.date < today;
|
|
1903
|
+
}
|
|
1904
|
+
}
|
|
1905
|
+
if (groupByYear) {
|
|
1906
|
+
const year = SystemUtils.formatDate(n.date ?? n.publishingDate, DateFormat.LongMonthAndYear).toLowerCase();
|
|
1907
|
+
if (group !== year) {
|
|
1908
|
+
n.group = year;
|
|
1909
|
+
group = year;
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
else if (groupByRelevance) {
|
|
1913
|
+
if (group !== 'none') {
|
|
1914
|
+
n.group =
|
|
1915
|
+
'Elementi più rilevanti per la ricerca: ' + params.text;
|
|
1916
|
+
group = 'none';
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
else if (groupByPopularity) {
|
|
1920
|
+
if (group !== 'none') {
|
|
1921
|
+
n.group = 'Elementi più popolari in ordine decrescente';
|
|
1922
|
+
group = 'none';
|
|
1923
|
+
}
|
|
1998
1924
|
}
|
|
1999
1925
|
});
|
|
2000
1926
|
}
|
|
2001
1927
|
/**
|
|
2002
|
-
*
|
|
2003
|
-
* @param
|
|
1928
|
+
* Prepare results
|
|
1929
|
+
* @param data : the optional result list to prepare
|
|
1930
|
+
* @param facets : the optional facets list to prepare
|
|
1931
|
+
* @param months : the optional snapshot months
|
|
1932
|
+
* @param month : the optional snapshot month
|
|
1933
|
+
* @param date : the optinal snapshot current date
|
|
2004
1934
|
*/
|
|
2005
|
-
|
|
2006
|
-
|
|
1935
|
+
prepareResults(data, facets, months, month, date) {
|
|
1936
|
+
if (data) {
|
|
1937
|
+
this.selection?.current.clear();
|
|
1938
|
+
this.snapshot = data;
|
|
1939
|
+
if (this.snapshot.items) {
|
|
1940
|
+
this.prepareResultItems(this.snapshot.items, this.filterParams);
|
|
1941
|
+
}
|
|
1942
|
+
}
|
|
1943
|
+
if (facets || months || month) {
|
|
1944
|
+
this.hasFacets.set(false);
|
|
1945
|
+
this.hasCalendar.set(false);
|
|
1946
|
+
if (facets) {
|
|
1947
|
+
this.hasFacets.set(true);
|
|
1948
|
+
setTimeout(() => {
|
|
1949
|
+
this.facets?.update(facets.facets, facets.interval);
|
|
1950
|
+
}, 0);
|
|
1951
|
+
if (this.snapshot) {
|
|
1952
|
+
this.snapshot.facets = this.facets.save();
|
|
1953
|
+
this.snapshot.facets.hasTooManyResults = this.snapshot.total >= 1000;
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
else if (months || month) {
|
|
1957
|
+
this.hasCalendar.set(true);
|
|
1958
|
+
setTimeout(() => {
|
|
1959
|
+
if (months) {
|
|
1960
|
+
this.calendar?.update(months, 'months', date ?? new Date());
|
|
1961
|
+
}
|
|
1962
|
+
if (month) {
|
|
1963
|
+
this.calendar?.update(month, 'month', date ?? new Date());
|
|
1964
|
+
}
|
|
1965
|
+
}, 0);
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
2007
1968
|
}
|
|
2008
1969
|
/**
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
1970
|
+
* Return item state css class
|
|
1971
|
+
* @param item : the item to evaluate
|
|
1972
|
+
*/
|
|
1973
|
+
getItemStateCssClass(item) {
|
|
1974
|
+
if (item.isRead !== true)
|
|
1975
|
+
return 'unread-bg';
|
|
1976
|
+
if (item.isExpired)
|
|
1977
|
+
return 'expired-bg';
|
|
1978
|
+
if (item.popularity === 3)
|
|
1979
|
+
return 'popular-bg';
|
|
1980
|
+
else if (item.popularity > 3)
|
|
1981
|
+
return 'very-popular-bg';
|
|
1982
|
+
return null;
|
|
2014
1983
|
}
|
|
2015
1984
|
/**
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
1985
|
+
* Return the item state tooltip text
|
|
1986
|
+
* @param item : the item to evaluate
|
|
1987
|
+
*/
|
|
1988
|
+
getItemStateTooltip(item) {
|
|
1989
|
+
if (item.isRead !== true)
|
|
1990
|
+
return 'Non letto';
|
|
1991
|
+
if (item.isExpired)
|
|
1992
|
+
return 'Non più vigente';
|
|
1993
|
+
if (item.popularity === 3)
|
|
1994
|
+
return 'Documento con numero di citazioni alto';
|
|
1995
|
+
else if (item.popularity > 3)
|
|
1996
|
+
return 'Documento con numero di citazioni molto alto';
|
|
1997
|
+
return '';
|
|
2021
1998
|
}
|
|
2022
1999
|
/**
|
|
2023
|
-
*
|
|
2024
|
-
* @param
|
|
2025
|
-
*/
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
return;
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
}
|
|
2035
|
-
else {
|
|
2036
|
-
this.dialogService.toast('Operazione completata con successo.');
|
|
2037
|
-
}
|
|
2038
|
-
}
|
|
2039
|
-
});
|
|
2000
|
+
* Return the item icon
|
|
2001
|
+
* @param item : the item to evaluate
|
|
2002
|
+
*/
|
|
2003
|
+
getItemIcon(item) {
|
|
2004
|
+
switch (item.model) {
|
|
2005
|
+
case ClipperModel.NormativaVigente: return 'gavel';
|
|
2006
|
+
case ClipperModel.Articoli:
|
|
2007
|
+
case ClipperModel.Quesiti:
|
|
2008
|
+
case ClipperModel.MetodiDiAnalisi: return 'extension';
|
|
2009
|
+
default: return 'updated';
|
|
2010
|
+
}
|
|
2040
2011
|
}
|
|
2041
2012
|
/**
|
|
2042
|
-
*
|
|
2043
|
-
* @param item : the item to
|
|
2013
|
+
* Toggle the read flag
|
|
2014
|
+
* @param item : the item to update
|
|
2015
|
+
* @paran e: the optional click event
|
|
2044
2016
|
*/
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
item.title1?.replaceAll("\r\n", " ") + '\t';
|
|
2050
|
-
if (item.title2)
|
|
2051
|
-
meta += item.title2.replaceAll("\r\n", " ");
|
|
2052
|
-
meta += '\t';
|
|
2053
|
-
if (item.number)
|
|
2054
|
-
meta += item.number;
|
|
2055
|
-
meta += '\t';
|
|
2056
|
-
if (item.publishingDate) {
|
|
2057
|
-
item.publishingDate = new Date(item.publishingDate);
|
|
2058
|
-
meta += SystemUtils.formatDate(item.publishingDate);
|
|
2059
|
-
}
|
|
2060
|
-
else if (item.date) {
|
|
2061
|
-
item.date = new Date(item.date);
|
|
2062
|
-
meta += SystemUtils.formatDate(item.date);
|
|
2063
|
-
}
|
|
2064
|
-
meta += '\t';
|
|
2065
|
-
if (item.originDescription)
|
|
2066
|
-
meta += item.originDescription;
|
|
2067
|
-
this.clipboard.copy(meta);
|
|
2068
|
-
this.dialogService.toast("Metadati copiati negli appunti.");
|
|
2017
|
+
toggleRead(item, e = null) {
|
|
2018
|
+
e?.preventDefault();
|
|
2019
|
+
e?.stopPropagation();
|
|
2020
|
+
this.setRead(!item?.isRead, item);
|
|
2069
2021
|
}
|
|
2070
2022
|
/**
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
? 'Canali: ' + item.channelName + '<br>'
|
|
2080
|
-
: '';
|
|
2081
|
-
let origin = item.origin
|
|
2082
|
-
? 'Origine: ' +
|
|
2083
|
-
item.origin +
|
|
2084
|
-
' - ' +
|
|
2085
|
-
(item.originDescription ? item.originDescription : '') +
|
|
2086
|
-
'<br>'
|
|
2087
|
-
: '';
|
|
2088
|
-
let topics = item.topics ? 'Argomento: ' + item.topics + '<br>' : '';
|
|
2089
|
-
if (!id)
|
|
2090
|
-
return;
|
|
2091
|
-
let message = "<p >Il link che trovi qui sotto è un riferimento diretto al documento selezionato.</p>" +
|
|
2092
|
-
"<p >Lo puoi utilizzare nella tua documentazione o inviarlo per email ad un tuo collega. La persona che desidererà visualizzare il documento dovrà necessariamente essere un utente abbonato.</p>" +
|
|
2093
|
-
"<p >Seleziona e copia (fai CTRL+C) il link qui sotto.</p>" +
|
|
2094
|
-
"<div class='small accent'>" +
|
|
2095
|
-
'https://clipper.arsedizioni.it/?id=' +
|
|
2096
|
-
id +
|
|
2097
|
-
'</div>' +
|
|
2098
|
-
'<br>' +
|
|
2099
|
-
'<hr>' +
|
|
2100
|
-
'<p class="small">' +
|
|
2101
|
-
channels +
|
|
2102
|
-
origin +
|
|
2103
|
-
topics;
|
|
2104
|
-
'</p>';
|
|
2105
|
-
this.dialogService.info(message, 'Copia link', 'Chiudi');
|
|
2023
|
+
* Toggle the selection flag
|
|
2024
|
+
* @param item : the item to update
|
|
2025
|
+
* @paran e: the optional click event
|
|
2026
|
+
*/
|
|
2027
|
+
toggleSelection(item, e = null) {
|
|
2028
|
+
e?.preventDefault();
|
|
2029
|
+
e?.stopPropagation();
|
|
2030
|
+
this.selection?.toggle(item, item.documentId);
|
|
2106
2031
|
}
|
|
2107
2032
|
/**
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
if (
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
data: {
|
|
2123
|
-
info: 'Puoi inviare i documenti a chi vuoi ma, per poterli visualizzare, è necessario essere un utente abbonato.',
|
|
2124
|
-
count: items.length,
|
|
2125
|
-
},
|
|
2126
|
-
minWidth: '375px',
|
|
2127
|
-
maxWidth: '600px',
|
|
2128
|
-
width: '99%',
|
|
2129
|
-
});
|
|
2130
|
-
d.componentInstance.done
|
|
2131
|
-
.subscribe((r) => {
|
|
2132
|
-
r.ids = items?.map(n => n.documentId ?? n.id) ?? [];
|
|
2133
|
-
this.dialogService.busy('Invio in corso...');
|
|
2134
|
-
this.clipperService.sendTo(r)
|
|
2135
|
-
.subscribe({
|
|
2136
|
-
next: (r2) => {
|
|
2137
|
-
if (!r2.success) {
|
|
2138
|
-
this.dialogService.error(r2.message);
|
|
2139
|
-
}
|
|
2140
|
-
else {
|
|
2141
|
-
this.dialogService.toast('Invio completato con successo.');
|
|
2142
|
-
d.close();
|
|
2143
|
-
}
|
|
2144
|
-
},
|
|
2145
|
-
complete: () => {
|
|
2146
|
-
this.dialogService.clearBusy();
|
|
2033
|
+
* Get the selected id
|
|
2034
|
+
*/
|
|
2035
|
+
setRead(value, item = null) {
|
|
2036
|
+
let documentIds = [];
|
|
2037
|
+
if (item) {
|
|
2038
|
+
documentIds = [item.documentId];
|
|
2039
|
+
}
|
|
2040
|
+
else if (this.hasAnySelection()) {
|
|
2041
|
+
documentIds = this.selection?.all?.map(n => n.documentId);
|
|
2042
|
+
}
|
|
2043
|
+
this.clipperService.updateState({ documentIds: documentIds, isRead: value }).subscribe(r => {
|
|
2044
|
+
if (r.success) {
|
|
2045
|
+
if (item) {
|
|
2046
|
+
item.isRead = value;
|
|
2147
2047
|
}
|
|
2148
|
-
|
|
2048
|
+
else if (this.hasAnySelection()) {
|
|
2049
|
+
this.selection?.all?.forEach(n => {
|
|
2050
|
+
n.isRead = value;
|
|
2051
|
+
});
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
2149
2054
|
});
|
|
2150
2055
|
}
|
|
2056
|
+
///
|
|
2057
|
+
// Restorable
|
|
2058
|
+
///
|
|
2151
2059
|
/**
|
|
2152
|
-
*
|
|
2153
|
-
* @param
|
|
2154
|
-
* @param
|
|
2060
|
+
* Save restorable data
|
|
2061
|
+
* @param id : the restorable id
|
|
2062
|
+
* @param scroll : the current scroll position
|
|
2155
2063
|
*/
|
|
2156
|
-
|
|
2064
|
+
save(id, scroll = 0) {
|
|
2065
|
+
sessionStorage.setItem(id, JSON.stringify({
|
|
2066
|
+
paginator: {
|
|
2067
|
+
page: this.paginator?.pageIndex ?? 0,
|
|
2068
|
+
total: this.snapshot?.total ?? 0,
|
|
2069
|
+
size: this.paginator?.pageSize ?? 15
|
|
2070
|
+
},
|
|
2071
|
+
facets: this.facets?.save(),
|
|
2072
|
+
filterParams: this.filterParams,
|
|
2073
|
+
scroll: scroll,
|
|
2074
|
+
sort: { mode: this.sortMode, options: this.sortOptions },
|
|
2075
|
+
data: this.snapshot
|
|
2076
|
+
? { items: this.snapshot.items, total: this.snapshot.total }
|
|
2077
|
+
: null
|
|
2078
|
+
}));
|
|
2079
|
+
}
|
|
2080
|
+
/**
|
|
2081
|
+
* Restore data
|
|
2082
|
+
* @param id : the restorable id
|
|
2083
|
+
*/
|
|
2084
|
+
restore(id) {
|
|
2085
|
+
const value = sessionStorage.getItem(id);
|
|
2086
|
+
if (value) {
|
|
2087
|
+
const data = JSON.parse(value);
|
|
2088
|
+
if (data) {
|
|
2089
|
+
this.filterParams = data.filterParams;
|
|
2090
|
+
this.snapshot = data.data;
|
|
2091
|
+
this.sortMode = data.sort.mode;
|
|
2092
|
+
this.sortOptions = data.sort.options;
|
|
2093
|
+
if (this.facets && data.facets) {
|
|
2094
|
+
this.facets.restore(data.facets);
|
|
2095
|
+
this.hasFacets.set(data.facets.hasFacets);
|
|
2096
|
+
}
|
|
2097
|
+
if (this.paginator && data.paginator) {
|
|
2098
|
+
this.paginator.pageIndex = data.paginator.page;
|
|
2099
|
+
this.paginator.pageSize = data.paginator.size;
|
|
2100
|
+
this.paginator.length = data.paginator.total;
|
|
2101
|
+
}
|
|
2102
|
+
this.broadcastService.sendMessage(ClipperMessages.COMMAND_SEARCH_RESTORED, data.filterParams);
|
|
2103
|
+
this.changeDetector.detectChanges();
|
|
2104
|
+
// Scroll top
|
|
2105
|
+
setTimeout(() => {
|
|
2106
|
+
this.scroll(data.scroll ?? 0);
|
|
2107
|
+
}, 100);
|
|
2108
|
+
}
|
|
2109
|
+
}
|
|
2110
|
+
}
|
|
2111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2112
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperSearchResultManager, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "facets", first: true, predicate: ["facets"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2113
|
+
}
|
|
2114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, decorators: [{
|
|
2115
|
+
type: Component,
|
|
2116
|
+
args: [{
|
|
2117
|
+
template: '<div></div>',
|
|
2118
|
+
standalone: true,
|
|
2119
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2120
|
+
imports: [ClipperDocumentManager, ClipperSearchFacetsComponent, ClipperSearchCalendarComponent],
|
|
2121
|
+
}]
|
|
2122
|
+
}], propDecorators: { paginator: [{
|
|
2123
|
+
type: ViewChild,
|
|
2124
|
+
args: ['paginator']
|
|
2125
|
+
}], facets: [{
|
|
2126
|
+
type: ViewChild,
|
|
2127
|
+
args: ['facets']
|
|
2128
|
+
}], calendar: [{
|
|
2129
|
+
type: ViewChild,
|
|
2130
|
+
args: ['calendar']
|
|
2131
|
+
}] } });
|
|
2132
|
+
|
|
2133
|
+
class ClipperDocumentIndexComponent {
|
|
2134
|
+
constructor() {
|
|
2135
|
+
this.done = new EventEmitter();
|
|
2136
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
2137
|
+
this.clipperService = inject(ClipperService);
|
|
2138
|
+
this.dialogService = inject(DialogService);
|
|
2139
|
+
this.dialogData = inject(MAT_DIALOG_DATA);
|
|
2140
|
+
this.okDisabled = signal(false);
|
|
2141
|
+
}
|
|
2142
|
+
ngOnInit() {
|
|
2143
|
+
if (this.dialogData) {
|
|
2144
|
+
if (this.dialogData.documentId) {
|
|
2145
|
+
this.load();
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
/**
|
|
2150
|
+
* Display document structure
|
|
2151
|
+
*/
|
|
2152
|
+
load() {
|
|
2157
2153
|
if (!this.clipperService.loggedIn())
|
|
2158
2154
|
return;
|
|
2159
|
-
if (!
|
|
2155
|
+
if (!this.dialogData)
|
|
2160
2156
|
return;
|
|
2161
|
-
this.
|
|
2157
|
+
this.dialogService.setBusy('Caricamento in corso...');
|
|
2158
|
+
this.clipperService.index(this.dialogData.documentId)
|
|
2162
2159
|
.subscribe({
|
|
2163
2160
|
next: (r) => {
|
|
2164
|
-
|
|
2161
|
+
if (!r.success) {
|
|
2162
|
+
this.dialogService.error(r.message);
|
|
2163
|
+
}
|
|
2164
|
+
else {
|
|
2165
|
+
this.items = [];
|
|
2166
|
+
r.value?.items.forEach((n) => {
|
|
2167
|
+
if (!this.dialogData.excludedTypes || this.dialogData.excludedTypes.indexOf(n.type) === -1) {
|
|
2168
|
+
if (n.title)
|
|
2169
|
+
n.description = n.title;
|
|
2170
|
+
else {
|
|
2171
|
+
if (n.type < 3) {
|
|
2172
|
+
n.description = n.text.trim();
|
|
2173
|
+
}
|
|
2174
|
+
else {
|
|
2175
|
+
n.description =
|
|
2176
|
+
n.typeDescription.trim() + ' ' + n.text.trim() + '.';
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2179
|
+
this.items.push(n);
|
|
2180
|
+
}
|
|
2181
|
+
});
|
|
2182
|
+
this.changeDetector.markForCheck();
|
|
2183
|
+
}
|
|
2165
2184
|
},
|
|
2166
2185
|
complete: () => {
|
|
2167
2186
|
this.dialogService.clearBusy();
|
|
@@ -2169,796 +2188,780 @@ class ClipperDocumentManager {
|
|
|
2169
2188
|
});
|
|
2170
2189
|
}
|
|
2171
2190
|
/**
|
|
2172
|
-
*
|
|
2173
|
-
* This should be always overridden
|
|
2174
|
-
* @param documentId : the document id
|
|
2175
|
-
* @param query: the query string
|
|
2176
|
-
* @param newWindow: true if the document must be open into a new window
|
|
2177
|
-
*/
|
|
2178
|
-
open(documentId, query = null, newWindow = false) {
|
|
2179
|
-
if (documentId) {
|
|
2180
|
-
if (!newWindow) {
|
|
2181
|
-
this.openDocument(documentId, query);
|
|
2182
|
-
}
|
|
2183
|
-
else {
|
|
2184
|
-
window.open('/documento/' + documentId, '_blank');
|
|
2185
|
-
}
|
|
2186
|
-
}
|
|
2187
|
-
}
|
|
2188
|
-
/**
|
|
2189
|
-
* Open a document
|
|
2190
|
-
* @param documentId : the document id
|
|
2191
|
-
* @param query: the query string
|
|
2191
|
+
* Handle selection/deselection of an item
|
|
2192
2192
|
*/
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
this.clipperDocumentService.openDocument(documentId, query);
|
|
2196
|
-
}
|
|
2193
|
+
select() {
|
|
2194
|
+
this.okDisabled.set(!this.selection || this.selection.selectedOptions.selected.length === 0);
|
|
2197
2195
|
}
|
|
2198
2196
|
/**
|
|
2199
|
-
*
|
|
2200
|
-
* @param item
|
|
2197
|
+
* Confirm selection
|
|
2198
|
+
* @param item: the selected item or null to use multiple selection if allowed
|
|
2201
2199
|
*/
|
|
2202
|
-
|
|
2203
|
-
if (
|
|
2204
|
-
return;
|
|
2205
|
-
if (item.model != ClipperModel.NormativaVigente && item.model != ClipperModel.Scadenze) {
|
|
2206
|
-
this.dialogService.info("Questa funzionalità non è disponibile per questo tipo di documento.");
|
|
2200
|
+
use(item = null) {
|
|
2201
|
+
if (this.okDisabled())
|
|
2207
2202
|
return;
|
|
2203
|
+
if (this.dialogData?.multiple) {
|
|
2204
|
+
if (item)
|
|
2205
|
+
return; // multiple and single item selection not supported
|
|
2206
|
+
let selection = [];
|
|
2207
|
+
this.selection.selectedOptions.selected.forEach((n) => {
|
|
2208
|
+
selection.push(n.value);
|
|
2209
|
+
});
|
|
2210
|
+
this.done.emit({ data: selection });
|
|
2208
2211
|
}
|
|
2209
|
-
else {
|
|
2210
|
-
this.
|
|
2212
|
+
else if (item) {
|
|
2213
|
+
this.done.emit({ data: item });
|
|
2211
2214
|
}
|
|
2212
2215
|
}
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2216
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2217
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperDocumentIndexComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "selection", first: true, predicate: ["selection"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>Indice</h2>\r\n<div mat-dialog-content>\r\n @if (!items || items.length === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <mat-selection-list dense #selection (selectionChange)=\"select();\" [multiple]=\"dialogData.multiple\"\r\n hideSingleSelectionIndicator=\"true\">\r\n @for (item of items; track item) {\r\n @if (item.type > 4) {\r\n <div class=\"small uppercase truncated accent\" style=\"display: flex; align-items: center; min-height: 36px;\">\r\n <div><b>{{item.description}}</b></div>\r\n </div>\r\n } @else {\r\n <mat-list-option color=\"primary\" [selected]=\"false\" [value]=\"item\" (click)=\"use(item)\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div [fxFlex]=\"(10 * item.level) + 'px'\"></div>\r\n <div fxFlex=\"*\" class=\"truncated\">\r\n <div class=\"small\" [matTooltip]=\"item.description\">{{item.description}}</div>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n }\r\n </mat-selection-list>\r\n }\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n @if (dialogData.multiple) {\r\n <button mat-flat-button color=\"primary\" [disabled]=\"okDisabled()\" (click)=\"use()\">Usa</button>\r\n }\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$2.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i2$2.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2218
|
+
}
|
|
2219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentIndexComponent, decorators: [{
|
|
2220
|
+
type: Component,
|
|
2221
|
+
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2222
|
+
FlexLayoutModule,
|
|
2223
|
+
MatDialogTitle,
|
|
2224
|
+
MatDialogContent,
|
|
2225
|
+
MatListModule,
|
|
2226
|
+
NgStyle,
|
|
2227
|
+
MatTooltipModule,
|
|
2228
|
+
MatDialogActions,
|
|
2229
|
+
MatButtonModule,
|
|
2230
|
+
MatDialogClose,
|
|
2231
|
+
], template: "<h2 mat-dialog-title>Indice</h2>\r\n<div mat-dialog-content>\r\n @if (!items || items.length === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <mat-selection-list dense #selection (selectionChange)=\"select();\" [multiple]=\"dialogData.multiple\"\r\n hideSingleSelectionIndicator=\"true\">\r\n @for (item of items; track item) {\r\n @if (item.type > 4) {\r\n <div class=\"small uppercase truncated accent\" style=\"display: flex; align-items: center; min-height: 36px;\">\r\n <div><b>{{item.description}}</b></div>\r\n </div>\r\n } @else {\r\n <mat-list-option color=\"primary\" [selected]=\"false\" [value]=\"item\" (click)=\"use(item)\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div [fxFlex]=\"(10 * item.level) + 'px'\"></div>\r\n <div fxFlex=\"*\" class=\"truncated\">\r\n <div class=\"small\" [matTooltip]=\"item.description\">{{item.description}}</div>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n }\r\n </mat-selection-list>\r\n }\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n @if (dialogData.multiple) {\r\n <button mat-flat-button color=\"primary\" [disabled]=\"okDisabled()\" (click)=\"use()\">Usa</button>\r\n }\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n</div>" }]
|
|
2232
|
+
}], propDecorators: { selection: [{
|
|
2233
|
+
type: ViewChild,
|
|
2234
|
+
args: ['selection']
|
|
2235
|
+
}], done: [{
|
|
2236
|
+
type: Output
|
|
2237
|
+
}] } });
|
|
2238
|
+
|
|
2239
|
+
class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
2240
|
+
constructor() {
|
|
2241
|
+
super(...arguments);
|
|
2242
|
+
this.closing = new EventEmitter();
|
|
2243
|
+
this.opening = new EventEmitter();
|
|
2244
|
+
// Compliance related events
|
|
2245
|
+
this.onComplianceAnalysis = new EventEmitter();
|
|
2246
|
+
this.onCompliancePlanning = new EventEmitter();
|
|
2247
|
+
this.onComplianceUsageReport = new EventEmitter();
|
|
2248
|
+
this.unsubscribe = new Subject();
|
|
2249
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
2250
|
+
this.breakpointObserver = inject(BreakpointObserver);
|
|
2251
|
+
this.renderer = inject(Renderer2);
|
|
2252
|
+
this.router = inject(Router);
|
|
2253
|
+
this.dialogRef = inject((MatDialogRef));
|
|
2254
|
+
this.dialogData = inject(MAT_DIALOG_DATA) ?? { mode: ClipperQueryReferencesMode.ReferencesIn };
|
|
2255
|
+
this.url = signal(null);
|
|
2256
|
+
this.title = signal(null);
|
|
2257
|
+
this.busy = signal(false);
|
|
2258
|
+
this.lastQuery = null;
|
|
2259
|
+
this.lastDocument = {};
|
|
2260
|
+
this.relevants = {
|
|
2261
|
+
items: [],
|
|
2262
|
+
hits: 0,
|
|
2263
|
+
hit: 0,
|
|
2264
|
+
minimumScore: 100,
|
|
2265
|
+
};
|
|
2266
|
+
this.relevantsPaneHasBackdrop = false;
|
|
2267
|
+
this.relevantsPaneClosed = false;
|
|
2268
|
+
this.relevantsBusy = signal(false);
|
|
2269
|
+
this.hasRelevants = signal(false);
|
|
2270
|
+
this.selectionMode = null;
|
|
2271
|
+
}
|
|
2272
|
+
ngOnInit() {
|
|
2273
|
+
if (this.dialogData) {
|
|
2274
|
+
this.selectionMode = this.dialogData.selectionMode;
|
|
2275
|
+
if (this.dialogData.id) {
|
|
2276
|
+
const url = this.clipperService.serviceUri +
|
|
2277
|
+
'/documents/render/?query=' +
|
|
2278
|
+
(this.dialogData.query ?? '') +
|
|
2279
|
+
'&id=' +
|
|
2280
|
+
this.dialogData.id;
|
|
2281
|
+
this.navigateByUrl(url);
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
// Listen to window messages
|
|
2285
|
+
this.rendererListener1 = this.renderer.listen('window', 'message', (e) => {
|
|
2286
|
+
let event = e;
|
|
2287
|
+
if (!event)
|
|
2288
|
+
return;
|
|
2289
|
+
if (event.data) {
|
|
2290
|
+
try {
|
|
2291
|
+
var data = JSON.parse(event.data);
|
|
2292
|
+
if (data) {
|
|
2293
|
+
switch (data.type) {
|
|
2294
|
+
case 'navigated':
|
|
2295
|
+
this.navigated(data.id, data.title1, data.title2, data.model, data.module, data.moduleName, data.date, data.number, data.author, data.origin, data.originDescription, data.bag, data.validityInfo, data.expiringInfo, data.primaryId, data.primaryModel, data.secondaryId, data.isTrial);
|
|
2296
|
+
break;
|
|
2297
|
+
case 'navigate':
|
|
2298
|
+
this.navigate(data.url);
|
|
2299
|
+
break;
|
|
2300
|
+
case 'references':
|
|
2301
|
+
this.openReferences(data.id, data.mode, data.model, data.anchor, data.anchorTitle, data.update);
|
|
2302
|
+
break;
|
|
2303
|
+
case 'hits':
|
|
2304
|
+
this.relevants.hits = data.total;
|
|
2305
|
+
this.updateRelevants();
|
|
2306
|
+
break;
|
|
2272
2307
|
}
|
|
2308
|
+
this.changeDetector.markForCheck();
|
|
2309
|
+
this.resize();
|
|
2273
2310
|
}
|
|
2274
2311
|
}
|
|
2275
|
-
|
|
2312
|
+
catch {
|
|
2313
|
+
}
|
|
2314
|
+
}
|
|
2315
|
+
});
|
|
2316
|
+
// Observe layout changes
|
|
2317
|
+
this.breakpointObserver
|
|
2318
|
+
.observe([
|
|
2319
|
+
Breakpoints.XSmall,
|
|
2320
|
+
Breakpoints.Small,
|
|
2321
|
+
Breakpoints.Medium,
|
|
2322
|
+
Breakpoints.Large,
|
|
2323
|
+
Breakpoints.XLarge,
|
|
2324
|
+
])
|
|
2325
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
2326
|
+
.subscribe(result => {
|
|
2327
|
+
for (const query of Object.keys(result.breakpoints)) {
|
|
2328
|
+
if (result.breakpoints[query]) {
|
|
2329
|
+
this.handleRelevantsPaneVisibility();
|
|
2330
|
+
}
|
|
2331
|
+
}
|
|
2332
|
+
});
|
|
2333
|
+
// React to window size change
|
|
2334
|
+
fromEvent(window, 'resize')
|
|
2335
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
2336
|
+
.subscribe(() => {
|
|
2337
|
+
this.resize();
|
|
2276
2338
|
});
|
|
2339
|
+
this.resize();
|
|
2277
2340
|
}
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
return module === ClipperModule.GazzetteBollettiniEFontiDiverse ||
|
|
2285
|
-
module === ClipperModule.NormativaVigente ||
|
|
2286
|
-
module === ClipperModule.ScadenzeESegnalazioni;
|
|
2341
|
+
ngOnDestroy() {
|
|
2342
|
+
this.unsubscribe.next();
|
|
2343
|
+
this.unsubscribe.complete();
|
|
2344
|
+
if (this.rendererListener1) {
|
|
2345
|
+
this.rendererListener1();
|
|
2346
|
+
}
|
|
2287
2347
|
}
|
|
2288
2348
|
/**
|
|
2289
|
-
*
|
|
2290
|
-
* @param model : the model to check
|
|
2291
|
-
* @returns: true if the model is supported
|
|
2349
|
+
* Resize
|
|
2292
2350
|
*/
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2351
|
+
resize() {
|
|
2352
|
+
setTimeout(() => {
|
|
2353
|
+
let elem = document.getElementById('clipper-document-scrollable');
|
|
2354
|
+
if (elem) {
|
|
2355
|
+
const height = this.dialogService.getCurrentDialogScrollableHeight(['clipper-document-fixed'], window.innerHeight);
|
|
2356
|
+
if (height != elem.clientHeight) {
|
|
2357
|
+
elem.setAttribute('style', 'padding:0;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
2358
|
+
elem = document.getElementById('clipper-document-iframe');
|
|
2359
|
+
elem?.setAttribute('style', 'height:' + (height - 10) + 'px !important;max-height:' + (height - 10) + 'px !important');
|
|
2360
|
+
}
|
|
2361
|
+
}
|
|
2362
|
+
else {
|
|
2363
|
+
this.resize();
|
|
2364
|
+
}
|
|
2365
|
+
}, 0);
|
|
2297
2366
|
}
|
|
2298
2367
|
/**
|
|
2299
|
-
*
|
|
2300
|
-
* @param items : the list of documens
|
|
2301
|
-
* @returns: true if all documents supports RS
|
|
2368
|
+
* Show hide relevants pane manually
|
|
2302
2369
|
*/
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
allow = this.isModelSupportedByRS(n.model);
|
|
2307
|
-
if (!allow)
|
|
2308
|
-
return;
|
|
2309
|
-
});
|
|
2310
|
-
return allow;
|
|
2370
|
+
toggleRelevantsPane() {
|
|
2371
|
+
this.relevantsPaneClosed = !this.relevantsPaneClosed;
|
|
2372
|
+
this.relevantsPane?.toggle();
|
|
2311
2373
|
}
|
|
2312
2374
|
/**
|
|
2313
|
-
*
|
|
2314
|
-
* @param documents : the documents to check
|
|
2315
|
-
* @returns true if alla documents ar RS enabled
|
|
2375
|
+
* Handle filter pane visibility
|
|
2316
2376
|
*/
|
|
2317
|
-
|
|
2318
|
-
if (
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2377
|
+
handleRelevantsPaneVisibility() {
|
|
2378
|
+
if (this.relevantsPane) {
|
|
2379
|
+
if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||
|
|
2380
|
+
this.breakpointObserver.isMatched(Breakpoints.Small) ||
|
|
2381
|
+
this.breakpointObserver.isMatched(Breakpoints.Medium)) {
|
|
2382
|
+
if (this.relevantsPane.opened) {
|
|
2383
|
+
this.relevantsPane.close();
|
|
2384
|
+
}
|
|
2385
|
+
this.relevantsPane.mode = 'over';
|
|
2386
|
+
this.relevantsPane.disableClose = false;
|
|
2387
|
+
this.relevantsPaneHasBackdrop = true;
|
|
2388
|
+
}
|
|
2389
|
+
else {
|
|
2390
|
+
if (!this.relevantsPane.opened && !this.relevantsPaneClosed && this.hasRelevants()) {
|
|
2391
|
+
this.relevantsPane.open();
|
|
2392
|
+
}
|
|
2393
|
+
else if (this.relevantsPane.opened && this.relevantsPaneClosed) {
|
|
2394
|
+
this.relevantsPane.close();
|
|
2395
|
+
}
|
|
2396
|
+
this.relevantsPane.mode = 'side';
|
|
2397
|
+
this.relevantsPane.disableClose = true;
|
|
2398
|
+
this.relevantsPaneHasBackdrop = false;
|
|
2399
|
+
}
|
|
2400
|
+
}
|
|
2338
2401
|
}
|
|
2339
2402
|
/**
|
|
2340
|
-
*
|
|
2341
|
-
* @param document: the document to link to the activity
|
|
2403
|
+
* Close dialog
|
|
2342
2404
|
*/
|
|
2343
|
-
|
|
2344
|
-
if (
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
this.broadcastService.sendMessage(ClipperMessages.INTEROP_RS_NEW_ACTIVITY, document);
|
|
2349
|
-
}
|
|
2350
|
-
/**
|
|
2351
|
-
* Document usage report
|
|
2352
|
-
* @param document: the law
|
|
2353
|
-
*/
|
|
2354
|
-
RS_usageReport(document) {
|
|
2355
|
-
if (!document)
|
|
2356
|
-
return;
|
|
2357
|
-
if (!this.clipperService.supportsRS())
|
|
2358
|
-
return;
|
|
2359
|
-
this.broadcastService.sendMessage(ClipperMessages.INTEROP_RS_USAGE_REPORT, document);
|
|
2360
|
-
}
|
|
2361
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentManager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2362
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperDocumentManager, isStandalone: true, selector: "ng-component", providers: [
|
|
2363
|
-
ClipperDocumentService
|
|
2364
|
-
], ngImport: i0, template: '<div></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2365
|
-
}
|
|
2366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentManager, decorators: [{
|
|
2367
|
-
type: Component,
|
|
2368
|
-
args: [{
|
|
2369
|
-
template: '<div></div>',
|
|
2370
|
-
standalone: true,
|
|
2371
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2372
|
-
providers: [
|
|
2373
|
-
ClipperDocumentService
|
|
2374
|
-
]
|
|
2375
|
-
}]
|
|
2376
|
-
}] });
|
|
2377
|
-
|
|
2378
|
-
class ClipperSearchCalendarComponent {
|
|
2379
|
-
constructor() {
|
|
2380
|
-
this.changed = new EventEmitter();
|
|
2381
|
-
this.busy = signal(false);
|
|
2382
|
-
this.months = null;
|
|
2383
|
-
this.calendarSpecialDays = null;
|
|
2384
|
-
this.calendarEmptyHeader = CalendarEmptyHeader;
|
|
2385
|
-
this.calendarDate = startOfToday();
|
|
2386
|
-
this.calendarDateClass = (cellDate) => {
|
|
2387
|
-
if (!this.calendarSpecialDays)
|
|
2388
|
-
return '';
|
|
2389
|
-
if (this.calendarSpecialDays[cellDate.getDate() - 1] > 0) {
|
|
2390
|
-
return cellDate < startOfToday() ? 'special-date-expired' : 'special-date';
|
|
2391
|
-
}
|
|
2392
|
-
return '';
|
|
2393
|
-
};
|
|
2394
|
-
this.calendarDateFilter = () => { return false; };
|
|
2395
|
-
/**
|
|
2396
|
-
* Disable date selection from calendar
|
|
2397
|
-
*/
|
|
2398
|
-
this.filterCalendarDates = () => {
|
|
2399
|
-
return true;
|
|
2400
|
-
};
|
|
2405
|
+
close() {
|
|
2406
|
+
if (this.closing) {
|
|
2407
|
+
this.closing.emit();
|
|
2408
|
+
}
|
|
2409
|
+
this.dialogRef.close();
|
|
2401
2410
|
}
|
|
2402
2411
|
/**
|
|
2403
|
-
*
|
|
2404
|
-
* @param
|
|
2405
|
-
* @param view : view to update 'month' or ' months'. Default is 'months'
|
|
2406
|
-
* @param date : the new current date
|
|
2412
|
+
* Navigate to a new document
|
|
2413
|
+
* @param id : the document id
|
|
2407
2414
|
*/
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
else
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
}
|
|
2424
|
-
this.busy.set(false);
|
|
2425
|
-
}, 250);
|
|
2415
|
+
navigate(id) {
|
|
2416
|
+
if (!id || id.length == 0)
|
|
2417
|
+
return; // Nothing to do
|
|
2418
|
+
if (id.indexOf('?') !== -1) {
|
|
2419
|
+
if (id.startsWith('/api'))
|
|
2420
|
+
this.navigateByUrl(this.clipperService.serviceUri + id.substring(4));
|
|
2421
|
+
else if (!id.startsWith(this.clipperService.serviceUri))
|
|
2422
|
+
this.navigateByUrl(this.clipperService.serviceUri + id);
|
|
2423
|
+
else
|
|
2424
|
+
this.navigateByUrl(id);
|
|
2425
|
+
}
|
|
2426
|
+
else
|
|
2427
|
+
this.navigateByUrl(this.clipperService.serviceUri +
|
|
2428
|
+
'/documents/render/?query=&id=' +
|
|
2429
|
+
id);
|
|
2426
2430
|
}
|
|
2427
2431
|
/**
|
|
2428
|
-
*
|
|
2429
|
-
* @param
|
|
2432
|
+
* Navigate by url
|
|
2433
|
+
* @param url : the url to navigate to
|
|
2430
2434
|
*/
|
|
2431
|
-
|
|
2432
|
-
if (
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
+
navigateByUrl(url) {
|
|
2436
|
+
if (!url || url.length === 0 || url === 'about:blank')
|
|
2437
|
+
return; // Nothing to do
|
|
2438
|
+
// Clean url
|
|
2439
|
+
let parts = url.split('#');
|
|
2440
|
+
url = parts[0];
|
|
2441
|
+
if (parts.length > 1) {
|
|
2442
|
+
url += '#' + parts[1];
|
|
2443
|
+
}
|
|
2444
|
+
// Handle free text query
|
|
2445
|
+
let q = '';
|
|
2446
|
+
let pos = url.indexOf('query=');
|
|
2447
|
+
if (pos !== -1) {
|
|
2448
|
+
pos += 6;
|
|
2449
|
+
while (url.length > pos && url[pos] !== '&' && url[pos] !== '#')
|
|
2450
|
+
q += url[pos++];
|
|
2451
|
+
}
|
|
2452
|
+
if (q.length > 0) {
|
|
2453
|
+
// Reset
|
|
2454
|
+
this.relevants.hit = 0;
|
|
2455
|
+
try {
|
|
2456
|
+
// Assign query to enable search for fragments
|
|
2457
|
+
this.lastQuery = decodeURIComponent(encodeURIComponent(q));
|
|
2458
|
+
}
|
|
2459
|
+
catch {
|
|
2460
|
+
this.lastQuery = q;
|
|
2435
2461
|
}
|
|
2436
2462
|
}
|
|
2437
|
-
|
|
2438
|
-
|
|
2463
|
+
let navigateToFile = url.indexOf('&file=true') !== -1;
|
|
2464
|
+
if (navigateToFile === true) {
|
|
2465
|
+
// Preview
|
|
2466
|
+
this.previewFile(url);
|
|
2439
2467
|
}
|
|
2440
2468
|
else {
|
|
2441
|
-
|
|
2469
|
+
// Begin loading only if not downloading a file
|
|
2470
|
+
this.busy.set(url.indexOf('documents/render/item') === -1);
|
|
2471
|
+
// Navigate
|
|
2472
|
+
this.url.set(url);
|
|
2442
2473
|
}
|
|
2443
2474
|
}
|
|
2444
2475
|
/**
|
|
2445
|
-
*
|
|
2446
|
-
* @param monthInfo: the month info
|
|
2447
|
-
*/
|
|
2448
|
-
filterByMonth(monthInfo) {
|
|
2449
|
-
let d = new Date(monthInfo.year, monthInfo.month - 1, 1);
|
|
2450
|
-
this.changed.emit(new DateInterval(endOfDay(startOfMonth(d)), endOfMonth(d)));
|
|
2451
|
-
this.calendarSpecialDays = monthInfo.days;
|
|
2452
|
-
this.calendar.activeDate = d;
|
|
2453
|
-
this.calendar.updateTodaysDate();
|
|
2454
|
-
this.calendarDate = d;
|
|
2455
|
-
}
|
|
2456
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2457
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperSearchCalendarComponent, isStandalone: true, selector: "clipper-search-calendar", outputs: { changed: "changed" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" fxFill class=\"calendar-container scroll-hidden\">\r\n <div class=\"calendar-months\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\" fxLayoutGap=\"8px\" fxFill>\r\n @for (m of months; track m) {\r\n <button fxFlex=\"37px\" mat-button class=\"small uppercase\" (click)=\"filterByMonth(m)\"\r\n [disabled]=\"m.total === 0\">\r\n @if (m.expired) {\r\n <span class=\"expired\" [matTooltip]=\"m.expired + ' elementi in ritardo'\">{{m.monthShortName}}</span>\r\n }\r\n @if (!m.expired) {\r\n <span [matTooltip]=\"m.total + ' elementi'\">{{m.monthShortName}}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-auto\">\r\n @if (!busy()) {\r\n <mat-calendar #calendar [headerComponent]=\"calendarEmptyHeader\" [dateClass]=\"calendarDateClass\"\r\n [dateFilter]=\"calendarDateFilter\" (selectedChange)=\"filterByDate($event)\" class=\"calendar-month\">\r\n </mat-calendar>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around\" style=\"padding:0 15px\">\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"filterByDate('month')\">Tutto il\r\n mese</button>\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [".calendar-container{padding-top:20px;padding-bottom:10px}.calendar-message{padding-top:10px;padding-left:15px}.calendar-months{padding:0 15px}.calendar-months .separator{border-top:1px var(--ars-color-divider, #757d87) solid;margin-top:15px;padding-top:15px}.calendar-months .expired{color:var(--ars-color-error, #ff5449)}.calendar-month{padding:10px 0 30px;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatExpansionModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2458
|
-
}
|
|
2459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchCalendarComponent, decorators: [{
|
|
2460
|
-
type: Component,
|
|
2461
|
-
args: [{ selector: 'clipper-search-calendar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2462
|
-
FlexModule,
|
|
2463
|
-
MatButtonModule,
|
|
2464
|
-
MatTooltipModule,
|
|
2465
|
-
MatCalendar,
|
|
2466
|
-
MatChipsModule,
|
|
2467
|
-
MatIconModule,
|
|
2468
|
-
MatDividerModule,
|
|
2469
|
-
MatExpansionModule
|
|
2470
|
-
], template: "<div fxLayout=\"column\" fxFill class=\"calendar-container scroll-hidden\">\r\n <div class=\"calendar-months\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\" fxLayoutGap=\"8px\" fxFill>\r\n @for (m of months; track m) {\r\n <button fxFlex=\"37px\" mat-button class=\"small uppercase\" (click)=\"filterByMonth(m)\"\r\n [disabled]=\"m.total === 0\">\r\n @if (m.expired) {\r\n <span class=\"expired\" [matTooltip]=\"m.expired + ' elementi in ritardo'\">{{m.monthShortName}}</span>\r\n }\r\n @if (!m.expired) {\r\n <span [matTooltip]=\"m.total + ' elementi'\">{{m.monthShortName}}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-auto\">\r\n @if (!busy()) {\r\n <mat-calendar #calendar [headerComponent]=\"calendarEmptyHeader\" [dateClass]=\"calendarDateClass\"\r\n [dateFilter]=\"calendarDateFilter\" (selectedChange)=\"filterByDate($event)\" class=\"calendar-month\">\r\n </mat-calendar>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around\" style=\"padding:0 15px\">\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"filterByDate('month')\">Tutto il\r\n mese</button>\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [".calendar-container{padding-top:20px;padding-bottom:10px}.calendar-message{padding-top:10px;padding-left:15px}.calendar-months{padding:0 15px}.calendar-months .separator{border-top:1px var(--ars-color-divider, #757d87) solid;margin-top:15px;padding-top:15px}.calendar-months .expired{color:var(--ars-color-error, #ff5449)}.calendar-month{padding:10px 0 30px;width:100%}\n"] }]
|
|
2471
|
-
}], propDecorators: { calendar: [{
|
|
2472
|
-
type: ViewChild,
|
|
2473
|
-
args: ['calendar']
|
|
2474
|
-
}], changed: [{
|
|
2475
|
-
type: Output
|
|
2476
|
-
}] } });
|
|
2477
|
-
|
|
2478
|
-
class ClipperSearchResultManager extends ClipperDocumentManager {
|
|
2479
|
-
constructor() {
|
|
2480
|
-
super(...arguments);
|
|
2481
|
-
this.unsubscribe = new Subject();
|
|
2482
|
-
this.changeDetector = inject(ChangeDetectorRef);
|
|
2483
|
-
this.breakpointObserver = inject(BreakpointObserver);
|
|
2484
|
-
this.screenService = inject(ScreenService);
|
|
2485
|
-
this.selection = null;
|
|
2486
|
-
this.snapshot = new ClipperSearchResult();
|
|
2487
|
-
this.filterBusy = signal(false);
|
|
2488
|
-
this.filterParams = new ClipperSearchParams();
|
|
2489
|
-
this.filterPaneHasBackdrop = false;
|
|
2490
|
-
this.filterPaneClosed = false;
|
|
2491
|
-
this.filterPane2HasBackdrop = false;
|
|
2492
|
-
this.filterPane2Closed = false;
|
|
2493
|
-
this.sortOptions = [];
|
|
2494
|
-
this.sortMode = null;
|
|
2495
|
-
this.scrollerId = 'scroller_' + SystemUtils.generateUUID();
|
|
2496
|
-
this.restorableId = null;
|
|
2497
|
-
this.hasFacets = signal(false);
|
|
2498
|
-
this.hasCalendar = signal(false);
|
|
2499
|
-
this.hasRegions = () => {
|
|
2500
|
-
return (this.filterParams.sectors?.filter(n => n.value === 'LR').length ?? 0) > 0;
|
|
2501
|
-
};
|
|
2502
|
-
}
|
|
2503
|
-
ngOnDestroy() {
|
|
2504
|
-
this.unsubscribe.next();
|
|
2505
|
-
this.unsubscribe.complete();
|
|
2506
|
-
}
|
|
2507
|
-
/**
|
|
2508
|
-
* Update menu buttons visibility when the menu is closed
|
|
2476
|
+
* Navigated callback
|
|
2509
2477
|
*/
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2478
|
+
navigated(id, // Documnent id
|
|
2479
|
+
title1, // Title 1
|
|
2480
|
+
title2, // Title 2
|
|
2481
|
+
model, // Model
|
|
2482
|
+
moduleId, // Module
|
|
2483
|
+
moduleName, // Module name
|
|
2484
|
+
date, // Date
|
|
2485
|
+
number, // Number
|
|
2486
|
+
author, // Author
|
|
2487
|
+
origin, // Origin
|
|
2488
|
+
originDescription, // Origin description
|
|
2489
|
+
bag, // Flags
|
|
2490
|
+
validityInfo, // Info about validity
|
|
2491
|
+
expiringInfo, // Info about expiring date
|
|
2492
|
+
primaryId, // Primary document id
|
|
2493
|
+
primaryModel, // Primary document model
|
|
2494
|
+
secondaryId, // Secondary document id
|
|
2495
|
+
isTrial // True if is a trial request
|
|
2496
|
+
) {
|
|
2497
|
+
// Check for session expiring
|
|
2498
|
+
if (title1 === 'Sessione non valida') {
|
|
2499
|
+
this.dialogService
|
|
2500
|
+
.error(title2, null, title1, 'Accedi di nuovo')
|
|
2501
|
+
.afterClosed()
|
|
2502
|
+
.subscribe(() => {
|
|
2503
|
+
this.router.navigate(['login']);
|
|
2514
2504
|
});
|
|
2505
|
+
return;
|
|
2506
|
+
}
|
|
2507
|
+
// Store data
|
|
2508
|
+
if (!this.lastDocument) {
|
|
2509
|
+
this.lastDocument = {};
|
|
2510
|
+
}
|
|
2511
|
+
this.lastDocument.id = id;
|
|
2512
|
+
this.lastDocument.title1 = title1 ? SystemUtils.urlDecode(title1) : null;
|
|
2513
|
+
this.lastDocument.title2 = title2 ? SystemUtils.urlDecode(title2) : null;
|
|
2514
|
+
this.lastDocument.model = model;
|
|
2515
|
+
this.lastDocument.module = moduleId;
|
|
2516
|
+
this.lastDocument.moduleName = moduleName;
|
|
2517
|
+
this.lastDocument.date = new Date(date);
|
|
2518
|
+
this.lastDocument.number = number;
|
|
2519
|
+
this.lastDocument.author = author;
|
|
2520
|
+
this.lastDocument.origin = origin;
|
|
2521
|
+
this.lastDocument.originDescription = originDescription;
|
|
2522
|
+
this.lastDocument.bag = bag;
|
|
2523
|
+
this.lastDocument.validityInfo = validityInfo;
|
|
2524
|
+
this.lastDocument.primaryId = primaryId;
|
|
2525
|
+
this.lastDocument.primaryModel = primaryModel;
|
|
2526
|
+
this.lastDocument.hasPrimary =
|
|
2527
|
+
primaryId &&
|
|
2528
|
+
(model === ClipperModel.AggiornamentoNormativo ||
|
|
2529
|
+
model === ClipperModel.NormativaVigente);
|
|
2530
|
+
if (primaryId) {
|
|
2531
|
+
var description = '';
|
|
2532
|
+
switch (primaryModel ? primaryModel : model) {
|
|
2533
|
+
case ClipperModel.NormativaVigente:
|
|
2534
|
+
description = 'Testo vigente';
|
|
2535
|
+
break;
|
|
2536
|
+
case ClipperModel.AggiornamentoNormativo:
|
|
2537
|
+
description = 'Testo storico';
|
|
2538
|
+
break;
|
|
2539
|
+
case ClipperModel.Scadenze:
|
|
2540
|
+
description = 'Scadenza';
|
|
2541
|
+
break;
|
|
2542
|
+
case ClipperModel.Coordinamento:
|
|
2543
|
+
description = 'Modifica';
|
|
2544
|
+
break;
|
|
2545
|
+
default:
|
|
2546
|
+
description = 'Collegamento';
|
|
2547
|
+
break;
|
|
2548
|
+
}
|
|
2549
|
+
this.lastDocument.primaryDescription = description;
|
|
2550
|
+
}
|
|
2551
|
+
this.lastDocument.secondaryId = secondaryId;
|
|
2552
|
+
this.lastDocument.isTrial = isTrial;
|
|
2553
|
+
// Handle expiring info
|
|
2554
|
+
this.lastDocument.expiringDescription = null;
|
|
2555
|
+
if (expiringInfo) {
|
|
2556
|
+
let parts = expiringInfo.split('#');
|
|
2557
|
+
if (parts.length > 0) {
|
|
2558
|
+
let parts2 = parts[0].split('|');
|
|
2559
|
+
if (parts2.length > 0)
|
|
2560
|
+
this.lastDocument.expiringDate = new Date(parts2[0]);
|
|
2561
|
+
if (parts2.length > 1)
|
|
2562
|
+
this.lastDocument.expiringInfo = parts2[1];
|
|
2563
|
+
if (parts2.length > 2)
|
|
2564
|
+
this.lastDocument.expiringInfo += '|' + parts2[2];
|
|
2565
|
+
}
|
|
2566
|
+
if (parts.length > 1)
|
|
2567
|
+
this.lastDocument.expiringDescription = parts[1];
|
|
2515
2568
|
}
|
|
2569
|
+
// Set title
|
|
2570
|
+
this.title.set(this.lastDocument.title1
|
|
2571
|
+
? this.lastDocument.title1
|
|
2572
|
+
: this.lastDocument.title2);
|
|
2573
|
+
// Get last document update
|
|
2574
|
+
this.clipperService.lastUpdate(this.lastDocument.id).subscribe((r) => {
|
|
2575
|
+
if (r.success) {
|
|
2576
|
+
this.lastDocument.lastUpdate = r.value;
|
|
2577
|
+
}
|
|
2578
|
+
});
|
|
2579
|
+
// Notify navigation has completed
|
|
2580
|
+
this.broadcastService.sendMessage(ClipperMessages.DOCUMENT_NAVIGATED, {
|
|
2581
|
+
document: this.lastDocument,
|
|
2582
|
+
});
|
|
2583
|
+
this.busy.set(false);
|
|
2516
2584
|
}
|
|
2517
2585
|
/**
|
|
2518
|
-
*
|
|
2519
|
-
* @param top: the top position
|
|
2586
|
+
* goto previous document in history
|
|
2520
2587
|
*/
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
elem.scrollTo({ top: top, left: 0, behavior: 'auto' });
|
|
2525
|
-
}
|
|
2588
|
+
back() {
|
|
2589
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2590
|
+
f.contentWindow.postMessage('{"type": "back"}', '*');
|
|
2526
2591
|
}
|
|
2527
2592
|
/**
|
|
2528
|
-
*
|
|
2593
|
+
* Goto next document in history
|
|
2529
2594
|
*/
|
|
2530
|
-
|
|
2531
|
-
|
|
2595
|
+
forward() {
|
|
2596
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2597
|
+
f.contentWindow.postMessage('{"type": "forward"}', '*');
|
|
2532
2598
|
}
|
|
2533
2599
|
/**
|
|
2534
|
-
*
|
|
2535
|
-
* @param select: true to select all elements false to deselect all elements
|
|
2600
|
+
* Print current document
|
|
2536
2601
|
*/
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
}
|
|
2541
|
-
else {
|
|
2542
|
-
this.snapshot?.items?.forEach((n) => this.selection?.deselect(n, n.documentId));
|
|
2543
|
-
}
|
|
2544
|
-
}
|
|
2545
|
-
/**
|
|
2546
|
-
* Check if selections exists
|
|
2547
|
-
* @returns true if at least one element is selected
|
|
2548
|
-
*/
|
|
2549
|
-
hasAnySelection() {
|
|
2550
|
-
return (this.selection?.all?.length ?? 0) > 0;
|
|
2551
|
-
}
|
|
2552
|
-
/**
|
|
2553
|
-
* Check if only one element is selected
|
|
2554
|
-
* @returns true if only one element is selected
|
|
2555
|
-
*/
|
|
2556
|
-
hasSingleSelection() {
|
|
2557
|
-
return (this.selection?.all?.length ?? 0) === 1;
|
|
2558
|
-
}
|
|
2559
|
-
/**
|
|
2560
|
-
* Get the first selected item
|
|
2561
|
-
* @returns the selected item or null
|
|
2562
|
-
*/
|
|
2563
|
-
getSingleSelection() {
|
|
2564
|
-
return this.hasAnySelection() ? this.selection?.all[0] : null;
|
|
2565
|
-
}
|
|
2566
|
-
/**
|
|
2567
|
-
* Clear selection
|
|
2568
|
-
*/
|
|
2569
|
-
clearSelection() {
|
|
2570
|
-
return this.selection?.clear();
|
|
2602
|
+
print() {
|
|
2603
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2604
|
+
f.contentWindow.postMessage('{"type": "print"}', '*');
|
|
2571
2605
|
}
|
|
2572
2606
|
/**
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
return (this.selection && this.selection?.all?.length > 0) ? this.selection?.all?.length : null;
|
|
2607
|
+
* Find in current document
|
|
2608
|
+
*/
|
|
2609
|
+
find() {
|
|
2610
|
+
this.dialogService.info('Per cercare nel documento premi CTRL + F.');
|
|
2578
2611
|
}
|
|
2579
2612
|
/**
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2613
|
+
* Goto next relevant item
|
|
2614
|
+
*/
|
|
2615
|
+
nextRelevant() {
|
|
2616
|
+
let i = this.relevants.hit + 1;
|
|
2617
|
+
if (i <= this.relevants.hits) {
|
|
2618
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2619
|
+
f.contentWindow.postMessage('{"type": "relevant", "value": "next"}', '*');
|
|
2620
|
+
this.relevants.hit++;
|
|
2585
2621
|
}
|
|
2586
|
-
return null;
|
|
2587
2622
|
}
|
|
2588
2623
|
/**
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
if (this.hasAnySelection()) {
|
|
2598
|
-
this.selection?.all?.forEach((n) => {
|
|
2599
|
-
ids.push(n.documentId);
|
|
2600
|
-
});
|
|
2624
|
+
* Goto previous relevant item
|
|
2625
|
+
*/
|
|
2626
|
+
previousRelevant() {
|
|
2627
|
+
let i = this.relevants.hit - 1;
|
|
2628
|
+
if (i > 0) {
|
|
2629
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2630
|
+
f.contentWindow.postMessage('{"type": "relevant", "value": "previous"}', '*');
|
|
2631
|
+
this.relevants.hit--;
|
|
2601
2632
|
}
|
|
2602
|
-
return ids;
|
|
2603
2633
|
}
|
|
2604
2634
|
/**
|
|
2605
|
-
*
|
|
2635
|
+
* Goto a relevant item
|
|
2636
|
+
* @param item : the item to go to
|
|
2606
2637
|
*/
|
|
2607
|
-
|
|
2608
|
-
if (
|
|
2609
|
-
this.
|
|
2610
|
-
|
|
2638
|
+
gotoRelevant(item) {
|
|
2639
|
+
if (item.type === 20) {
|
|
2640
|
+
window.open(this.clipperService.serviceUri +
|
|
2641
|
+
'/documents/render/item/?id=' +
|
|
2642
|
+
item.documentId, '_blank');
|
|
2611
2643
|
}
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
data.push({ id: n.documentId, data: n });
|
|
2616
|
-
});
|
|
2644
|
+
else {
|
|
2645
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2646
|
+
f.contentWindow.postMessage('{"type": "relevant", "value": "' + item.uri + '"}', '*');
|
|
2617
2647
|
}
|
|
2618
|
-
return data;
|
|
2619
2648
|
}
|
|
2620
2649
|
/**
|
|
2621
|
-
*
|
|
2622
|
-
* @param items : the items to process
|
|
2623
|
-
* @param params : the current search params
|
|
2650
|
+
* Update relevant items
|
|
2624
2651
|
*/
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
else if (n.model === ClipperModel.Scadenze ||
|
|
2642
|
-
n.model === ClipperModel.Segnalazioni) {
|
|
2643
|
-
switch (n.model) {
|
|
2644
|
-
case ClipperModel.Scadenze:
|
|
2645
|
-
n.originDescription = 'Scadenza';
|
|
2646
|
-
break;
|
|
2647
|
-
case ClipperModel.Segnalazioni:
|
|
2648
|
-
n.originDescription = 'Segnalazione';
|
|
2649
|
-
break;
|
|
2650
|
-
}
|
|
2651
|
-
if (n.expiringInfo) {
|
|
2652
|
-
let parts = n.expiringInfo.split('|');
|
|
2653
|
-
if (parts.length === 3)
|
|
2654
|
-
n.expiringDescription = parts[2];
|
|
2655
|
-
}
|
|
2656
|
-
if (n.expiringDate) {
|
|
2657
|
-
n.date = startOfDay(new Date(n.expiringDate));
|
|
2658
|
-
const d = startOfDay(subDays(n.date, 15));
|
|
2659
|
-
n.isExpiring = today <= n.date && today >= d;
|
|
2660
|
-
n.isExpired = n.date < today;
|
|
2661
|
-
}
|
|
2662
|
-
}
|
|
2663
|
-
else {
|
|
2664
|
-
if ((n.model === ClipperModel.Articoli ||
|
|
2665
|
-
n.model === ClipperModel.News) &&
|
|
2666
|
-
n.tags) {
|
|
2667
|
-
n.info = n.tags.toUpperCase().substring(1).replaceAll("#", ", ");
|
|
2668
|
-
}
|
|
2669
|
-
if (n.model !== ClipperModel.AggiornamentoNormativo &&
|
|
2670
|
-
n.model !== ClipperModel.NormativaVigente &&
|
|
2671
|
-
n.model !== ClipperModel.Juris &&
|
|
2672
|
-
n.date) {
|
|
2673
|
-
n.date = startOfDay(new Date(n.date ?? n.publishingDate));
|
|
2674
|
-
const d = startOfDay(subDays(startOfToday(), 7));
|
|
2675
|
-
n.isNew = n.date > d;
|
|
2676
|
-
}
|
|
2652
|
+
updateRelevants() {
|
|
2653
|
+
if (!this.lastQuery ||
|
|
2654
|
+
this.lastQuery.length === 0 ||
|
|
2655
|
+
this.lastQuery === ' ') {
|
|
2656
|
+
this.handleRelevantsPaneVisibility();
|
|
2657
|
+
}
|
|
2658
|
+
else {
|
|
2659
|
+
let params = new ClipperSearchParams();
|
|
2660
|
+
params.id = this.lastDocument.documentId ?? this.lastDocument.id;
|
|
2661
|
+
params.text = this.lastQuery;
|
|
2662
|
+
params.count = 1;
|
|
2663
|
+
this.clipperService
|
|
2664
|
+
.query(params)
|
|
2665
|
+
.subscribe((r) => {
|
|
2666
|
+
if (!r.success)
|
|
2667
|
+
this.dialogService.error(r.message);
|
|
2677
2668
|
else {
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
score -= 5;
|
|
2696
|
-
else if (score > 3)
|
|
2697
|
-
score -= 3;
|
|
2698
|
-
anchors.push({
|
|
2699
|
-
text: a.text,
|
|
2700
|
-
title: a.title,
|
|
2701
|
-
documentId: a.documentId,
|
|
2702
|
-
uri: a.uri,
|
|
2703
|
-
veryRelevant: score > 0.6,
|
|
2704
|
-
});
|
|
2705
|
-
});
|
|
2706
|
-
n.anchors = anchors;
|
|
2707
|
-
}
|
|
2708
|
-
if (n.validityState > 0) {
|
|
2709
|
-
n.validityDescription = 'Il documento non è più vigente';
|
|
2710
|
-
n.isExpired = true;
|
|
2711
|
-
if (n.validUntilDate) {
|
|
2712
|
-
const expiringDate = startOfDay(new Date(n.validUntilDate));
|
|
2713
|
-
if (expiringDate < today) {
|
|
2714
|
-
n.validityDescription =
|
|
2715
|
-
'Il documento non è più vigente dal ' +
|
|
2716
|
-
SystemUtils.formatDate(expiringDate) +
|
|
2717
|
-
'.';
|
|
2718
|
-
}
|
|
2719
|
-
else {
|
|
2720
|
-
n.validityDescription =
|
|
2721
|
-
'Il documento non sarà più vigente dal ' +
|
|
2722
|
-
SystemUtils.formatDate(expiringDate) +
|
|
2723
|
-
'.';
|
|
2724
|
-
n.isExpired = false;
|
|
2725
|
-
}
|
|
2669
|
+
let minimumScore = 0;
|
|
2670
|
+
if (r.value?.items && r.value?.items.length > 0) {
|
|
2671
|
+
r.value.items[0].anchors.forEach((n) => {
|
|
2672
|
+
let score = n.score;
|
|
2673
|
+
if (score > 7)
|
|
2674
|
+
score -= 7;
|
|
2675
|
+
else if (score > 5)
|
|
2676
|
+
score -= 5;
|
|
2677
|
+
else if (score > 3)
|
|
2678
|
+
score -= 3;
|
|
2679
|
+
if (minimumScore > score)
|
|
2680
|
+
minimumScore = score;
|
|
2681
|
+
n.score = score;
|
|
2682
|
+
});
|
|
2683
|
+
this.relevants.minimumScore = minimumScore;
|
|
2684
|
+
this.relevants.items = r.value.items[0].anchors;
|
|
2685
|
+
this.hasRelevants.set(this.relevants.items?.length > 0);
|
|
2726
2686
|
}
|
|
2687
|
+
this.handleRelevantsPaneVisibility();
|
|
2727
2688
|
}
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2689
|
+
});
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
/**
|
|
2693
|
+
* Display document structure
|
|
2694
|
+
*/
|
|
2695
|
+
index(documentId) {
|
|
2696
|
+
let d = this.dialogService.open(ClipperDocumentIndexComponent, {
|
|
2697
|
+
ariaLabel: 'indice documento',
|
|
2698
|
+
autoFocus: false,
|
|
2699
|
+
restoreFocus: false,
|
|
2700
|
+
disableClose: true,
|
|
2701
|
+
closeOnNavigation: false,
|
|
2702
|
+
data: {
|
|
2703
|
+
documentId: documentId,
|
|
2704
|
+
excludedTypes: null,
|
|
2705
|
+
multiple: false
|
|
2706
|
+
},
|
|
2707
|
+
minWidth: '375px',
|
|
2708
|
+
maxWidth: '600px',
|
|
2709
|
+
width: '99%',
|
|
2710
|
+
});
|
|
2711
|
+
d.componentInstance.done
|
|
2712
|
+
.subscribe((r) => {
|
|
2713
|
+
if (r.data.documentId === documentId) {
|
|
2714
|
+
let f = document.getElementById('clipper-document-iframe');
|
|
2715
|
+
f.contentWindow.postMessage('{"type": "goto", "value":"' + r.data.uri + '"}', '*');
|
|
2748
2716
|
}
|
|
2749
|
-
else
|
|
2750
|
-
|
|
2751
|
-
n.group = 'Elementi più popolari in ordine decrescente';
|
|
2752
|
-
group = 'none';
|
|
2753
|
-
}
|
|
2717
|
+
else {
|
|
2718
|
+
this.openDocument(r.data.documentId + '#' + r.data.uri);
|
|
2754
2719
|
}
|
|
2720
|
+
d.close();
|
|
2755
2721
|
});
|
|
2756
2722
|
}
|
|
2757
2723
|
/**
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2724
|
+
* Get the id in a query string
|
|
2725
|
+
* @param url : the url to process
|
|
2726
|
+
* @param name : the optional id paramenter name. Default is 'id'
|
|
2727
|
+
* @returns : the id parame
|
|
2728
|
+
*/
|
|
2729
|
+
getId(url, name = 'id') {
|
|
2730
|
+
const start = url.lastIndexOf(name + '=') + 3;
|
|
2731
|
+
const end = url.indexOf('&', start);
|
|
2732
|
+
return url.substring(start, end);
|
|
2733
|
+
}
|
|
2734
|
+
/**
|
|
2735
|
+
* Preview a file if possible
|
|
2736
|
+
* @param url : the url to preview
|
|
2764
2737
|
*/
|
|
2765
|
-
|
|
2766
|
-
if (
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2738
|
+
previewFile(url) {
|
|
2739
|
+
if (!url || url.length === 0)
|
|
2740
|
+
return; // Nothing to do
|
|
2741
|
+
// Get the id
|
|
2742
|
+
let id = this.getId(url);
|
|
2743
|
+
if (!id || id.length === 0)
|
|
2744
|
+
return; // Nothing to do
|
|
2745
|
+
// Create the url
|
|
2746
|
+
this.clipperService.newOTP(id).subscribe(r => {
|
|
2747
|
+
if (!r.success)
|
|
2748
|
+
this.dialogService.error(r.message);
|
|
2749
|
+
else if (!r.value.canPreview)
|
|
2750
|
+
// Donload manually
|
|
2751
|
+
location.href = url;
|
|
2752
|
+
else {
|
|
2753
|
+
this.dialogService.open(FilePreviewComponent, {
|
|
2754
|
+
panelClass: 'preview-panel',
|
|
2755
|
+
ariaLabel: 'anteprima',
|
|
2756
|
+
autoFocus: false,
|
|
2757
|
+
restoreFocus: false,
|
|
2758
|
+
disableClose: true,
|
|
2759
|
+
data: {
|
|
2760
|
+
url: url,
|
|
2761
|
+
embed: r.value.canEmbed
|
|
2762
|
+
},
|
|
2763
|
+
minWidth: '375px',
|
|
2764
|
+
maxWidth: '900px',
|
|
2765
|
+
width: '99%',
|
|
2766
|
+
height: '99%'
|
|
2767
|
+
});
|
|
2771
2768
|
}
|
|
2772
|
-
}
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2769
|
+
});
|
|
2770
|
+
}
|
|
2771
|
+
/**
|
|
2772
|
+
* Show document comment
|
|
2773
|
+
*/
|
|
2774
|
+
showComment() {
|
|
2775
|
+
if (this.lastDocument?.bag[7] !== 'T')
|
|
2776
|
+
return;
|
|
2777
|
+
this.clipperService
|
|
2778
|
+
.comment(this.lastDocument?.id)
|
|
2779
|
+
.subscribe((r) => {
|
|
2780
|
+
if (!r.success) {
|
|
2781
|
+
if (r.message === "Il tuo abbonamento non consente di visualizzare i commenti alle norme.")
|
|
2782
|
+
this.dialogService.error("Il servizio di <b>commenti alle norme</b> non è compreso nel tuo abbonamento, per maggiori informazioni rivolgersi all'agente commerciale di riferimento o inviare una mail a <a href='mailto:sales@arsedizioni.it' target='_blank'>sales@arsedizioni.it</a>.", null, "Attenzione");
|
|
2783
|
+
else
|
|
2784
|
+
this.dialogService.error(r.message);
|
|
2785
2785
|
}
|
|
2786
|
-
else
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
}
|
|
2792
|
-
if (month) {
|
|
2793
|
-
this.calendar?.update(month, 'month', date ?? new Date());
|
|
2794
|
-
}
|
|
2795
|
-
}, 0);
|
|
2786
|
+
else {
|
|
2787
|
+
if (r.value && r.value.length > 1)
|
|
2788
|
+
this.dialogService.info(r.value.replace(/\n/g, '<br>\r\n'), "Commento", "CHIUDI", 700);
|
|
2789
|
+
else
|
|
2790
|
+
this.dialogService.info("Commento non più disponibile o in fase di revisione.");
|
|
2796
2791
|
}
|
|
2792
|
+
});
|
|
2793
|
+
}
|
|
2794
|
+
/**
|
|
2795
|
+
* Open an item
|
|
2796
|
+
* This should be always overridden
|
|
2797
|
+
* @param documentId : the document id
|
|
2798
|
+
* @param query: the query string
|
|
2799
|
+
* @param newWindow: true if the document must be open into a new window
|
|
2800
|
+
*/
|
|
2801
|
+
open(documentId, query = null, newWindow = false) {
|
|
2802
|
+
if (!newWindow) {
|
|
2803
|
+
if (this.opening)
|
|
2804
|
+
this.opening.emit({ id: documentId });
|
|
2805
|
+
else
|
|
2806
|
+
this.openDocument(documentId, query);
|
|
2797
2807
|
}
|
|
2808
|
+
else
|
|
2809
|
+
window.open('/documento/' + documentId, '_blank');
|
|
2798
2810
|
}
|
|
2799
2811
|
/**
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
if (item.popularity === 3)
|
|
2809
|
-
return 'popular-bg';
|
|
2810
|
-
else if (item.popularity > 3)
|
|
2811
|
-
return 'very-popular-bg';
|
|
2812
|
-
return null;
|
|
2812
|
+
* Open a document
|
|
2813
|
+
* @param documentId : the document id
|
|
2814
|
+
* @param query: the query string
|
|
2815
|
+
*/
|
|
2816
|
+
openDocument(documentId, query = null) {
|
|
2817
|
+
if (documentId) {
|
|
2818
|
+
ClipperDocumentsUtils.openDocument(this.dialogService, this.clipperService, documentId, query);
|
|
2819
|
+
}
|
|
2813
2820
|
}
|
|
2814
2821
|
/**
|
|
2815
|
-
*
|
|
2816
|
-
* @param
|
|
2822
|
+
* Browse document references
|
|
2823
|
+
* @param documentId : the document id
|
|
2824
|
+
* @param mode : the mode
|
|
2817
2825
|
*/
|
|
2818
|
-
|
|
2819
|
-
if (
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2826
|
+
openReferences(documentId, mode = ClipperQueryReferencesMode.ReferencesIn, model = null, anchor = null, anchorTitle = null, update = true) {
|
|
2827
|
+
if (!documentId)
|
|
2828
|
+
documentId = this.lastDocument?.id;
|
|
2829
|
+
let d = this.dialogService.open(ClipperReferencesComponent, {
|
|
2830
|
+
ariaLabel: 'riferimenti legati al documento',
|
|
2831
|
+
autoFocus: false,
|
|
2832
|
+
restoreFocus: false,
|
|
2833
|
+
disableClose: true,
|
|
2834
|
+
closeOnNavigation: false,
|
|
2835
|
+
data: {
|
|
2836
|
+
id: documentId,
|
|
2837
|
+
mode: mode,
|
|
2838
|
+
model: model,
|
|
2839
|
+
anchor: anchor,
|
|
2840
|
+
anchorTitle: anchorTitle,
|
|
2841
|
+
update: update,
|
|
2842
|
+
},
|
|
2843
|
+
panelClass: 'references-container',
|
|
2844
|
+
minWidth: '375px',
|
|
2845
|
+
maxWidth: '1000px',
|
|
2846
|
+
width: '99%',
|
|
2847
|
+
height: '99%',
|
|
2848
|
+
});
|
|
2849
|
+
d.afterClosed()
|
|
2850
|
+
.subscribe((r) => {
|
|
2851
|
+
if (r && r.id) {
|
|
2852
|
+
this.navigate(r.id);
|
|
2853
|
+
}
|
|
2854
|
+
});
|
|
2828
2855
|
}
|
|
2829
2856
|
/**
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
default: return 'updated';
|
|
2857
|
+
* Display a report
|
|
2858
|
+
* @param item
|
|
2859
|
+
*/
|
|
2860
|
+
displayReport(item) {
|
|
2861
|
+
if (!item)
|
|
2862
|
+
return;
|
|
2863
|
+
if (item.model != ClipperModel.NormativaVigente && item.model != ClipperModel.Scadenze) {
|
|
2864
|
+
this.dialogService.info("Questa funzionalità non è disponibile per questo tipo di documento.");
|
|
2865
|
+
return;
|
|
2840
2866
|
}
|
|
2867
|
+
this.openReport(item.id, item.title1 ? item.title1 : item.title2);
|
|
2841
2868
|
}
|
|
2842
2869
|
/**
|
|
2843
|
-
*
|
|
2844
|
-
* @param item : the item to update
|
|
2845
|
-
* @paran e: the optional click event
|
|
2870
|
+
* Checks if documents can be selected and returned as message
|
|
2846
2871
|
*/
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
e?.stopPropagation();
|
|
2850
|
-
this.setRead(!item?.isRead, item);
|
|
2851
|
-
}
|
|
2852
|
-
/**
|
|
2853
|
-
* Toggle the selection flag
|
|
2854
|
-
* @param item : the item to update
|
|
2855
|
-
* @paran e: the optional click event
|
|
2856
|
-
*/
|
|
2857
|
-
toggleSelection(item, e = null) {
|
|
2858
|
-
e?.preventDefault();
|
|
2859
|
-
e?.stopPropagation();
|
|
2860
|
-
this.selection?.toggle(item, item.documentId);
|
|
2872
|
+
canSelect() {
|
|
2873
|
+
return this.selectionMode > 0 && this.lastDocument && (this.lastDocument?.model === ClipperModel.NormativaVigente || this.lastDocument?.model === ClipperModel.AggiornamentoNormativo);
|
|
2861
2874
|
}
|
|
2862
2875
|
/**
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2876
|
+
* Send a message with current selection and close dialog
|
|
2877
|
+
*/
|
|
2878
|
+
select() {
|
|
2879
|
+
if (this.lastDocument) {
|
|
2880
|
+
this.broadcastService.sendMessage(ClipperMessages.DOCUMENT_SELECTED_INNER, [
|
|
2881
|
+
this.lastDocument,
|
|
2882
|
+
]);
|
|
2883
|
+
this.changeDetector.markForCheck();
|
|
2884
|
+
this.close();
|
|
2872
2885
|
}
|
|
2873
|
-
this.clipperService.updateState({ documentIds: documentIds, isRead: value }).subscribe(r => {
|
|
2874
|
-
if (r.success) {
|
|
2875
|
-
if (item) {
|
|
2876
|
-
item.isRead = value;
|
|
2877
|
-
}
|
|
2878
|
-
else if (this.hasAnySelection()) {
|
|
2879
|
-
this.selection?.all?.forEach(n => {
|
|
2880
|
-
n.isRead = value;
|
|
2881
|
-
});
|
|
2882
|
-
}
|
|
2883
|
-
}
|
|
2884
|
-
});
|
|
2885
2886
|
}
|
|
2886
|
-
|
|
2887
|
-
// Restorable
|
|
2888
|
-
|
|
2887
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2888
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperDocumentComponent, isStandalone: true, selector: "ng-component", outputs: { closing: "closing", opening: "opening", onComplianceAnalysis: "onComplianceAnalysis", onCompliancePlanning: "onCompliancePlanning", onComplianceUsageReport: "onComplianceUsageReport" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "relevantsPane", first: true, predicate: ["relevantsPane"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"clipper-document-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar style=\"z-index:11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start start\" fxFill>\r\n <div fxFlex=\"*\" class=\"title-container\">\r\n <div class=\"large bold\">{{title()}}</div>\r\n @if (lastDocument && lastDocument?.lastUpdate) {\r\n <div style=\"padding-top: 5px;\">\r\n <div class=\"x-small accent bold uppercase\">\r\n AGGIORNATO A:\r\n {{lastDocument?.lastUpdate}}\r\n </div>\r\n </div>\r\n }\r\n @if (lastDocument && (lastDocument?.expiringDescription || lastDocument?.validityInfo)) {\r\n <div style=\"padding-top: 5px;\">\r\n @if (lastDocument?.expiringDescription) {\r\n <div class=\"x-small accent-low bold uppercase\">\r\n {{lastDocument?.expiringDescription}}</div>\r\n }\r\n @if (lastDocument?.validityInfo) {\r\n <div class=\"x-small error bold uppercase\"><b>Attenzione!</b>\r\n {{lastDocument?.validityInfo}}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (canSelect()) {\r\n <div fxFlex=\"170px\" fxFlex.lt-md=\"58px\">\r\n <button fxHide.lt-md fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-flat-button (click)=\"select()\"\r\n class=\"clipper-selection-button\" style=\"margin-top: 8px;\">\r\n <span class=\"small uppercase\">Usa selezione</span>\r\n </button>\r\n <button fxHide.gt-sm fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-icon-button (click)=\"select()\"\r\n class=\"clipper-selection-icon-button\" matTooltip=\"Usa selezione\" aria-label=\"'Usa la selezione'\"\r\n style=\"margin-top: 4px;\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <div fxFlex=\"164px\" fxFlex.lt-md=\"48px\" fxLayoutAlign=\"end\">\r\n <div class=\"dialog-close\">\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\"\r\n aria-label=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Avanti\" aria-label=\"Avanti\"\r\n (click)=\"forward()\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row wrap \" fxFill fxLayoutAlign=\"space-between center\" style=\"padding: 0 10px 10px 15px;\">\r\n <div fxFlex.xs=\"100\">\r\n @if (lastDocument?.model === 9) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"index(lastDocument?.id)\">\r\n Indice\r\n </button>\r\n }\r\n @if (lastDocument?.bag && (lastDocument?.bag[1] ==='T' || lastDocument?.bag[3] ==='T')) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button matTooltip=\"Collegamenti\"\r\n [attr.aria-label]=\"'Collegamenti al documento'\" [matMenuTriggerFor]=\"menuLinks\">\r\n Collegamenti\r\n </button>\r\n }\r\n <mat-menu #menuLinks=\"matMenu\">\r\n @if (lastDocument?.bag && lastDocument?.bag[1] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti richiamati'\"\r\n (click)=\"openReferences(lastDocument?.id, 1)\">\r\n Documenti richiamati\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[3] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti che richiamano'\"\r\n (click)=\"openReferences(lastDocument?.id, 2)\">\r\n Documenti che richiamano\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra juris'\"\r\n (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche subite'\"\r\n (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !=='T' && lastDocument?.bag[6] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche apportate'\"\r\n (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n </mat-menu>\r\n @if (lastDocument?.hasPrimary) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento primario'\" (click)=\"navigate(lastDocument?.primaryId)\">\r\n {{lastDocument?.primaryDescription}}\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra juris'\" (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche subite'\" (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !== 'T' && lastDocument?.bag[6] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche apportate'\" (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n @if (lastDocument?.secondaryId) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento secondario'\" (click)=\"navigate(lastDocument?.secondaryId)\">\r\n Testo storico\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[7] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra commento'\"\r\n (click)=\"showComment()\">\r\n Commento\r\n </button>\r\n }\r\n </div>\r\n <div fxFlex.xs=\"100\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (hasRelevants() && relevants.hits) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div fxFlexAlign=\"center\" class=\"small item-greyed\" style=\"margin-left:20px; margin-right: 5px\"\r\n matTooltip=\"Parole evidenziate\">{{relevants.hit}}\r\n di {{relevants.hits}}</div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla parola precedente'\"\r\n (click)=\"previousRelevant()\" matTooltip=\"Parola precedente\" [disabled]=\"relevants.hit <= 1\">\r\n <mat-icon>chevron_left</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla prossima parola'\"\r\n (click)=\"nextRelevant()\" matTooltip=\"Prossima parola\" [disabled]=\"relevants.hit >= relevants.hits\">\r\n <mat-icon>chevron_right</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azioni sul documento\"\r\n [attr.aria-label]=\"'Azioni da eseguire sul documento'\" [matMenuTriggerFor]=\"menuActions\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menuActions=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Apri documento in una nuova finestra'\"\r\n (click)=\"open(lastDocument?.id, undefined, true)\">\r\n <mat-icon>open_in_browser</mat-icon>Apri in nuova finestra\r\n </button>\r\n <button mat-menu-item (click)=\"print()\" [attr.aria-label]=\"'Stampa documento'\">\r\n <mat-icon>print</mat-icon>Stampa\r\n </button>\r\n <button mat-menu-item (click)=\"find()\" [attr.aria-label]=\"'Trova nel documento'\">\r\n <mat-icon>find_in_page</mat-icon>Trova nel documento (CTRL+F)\r\n </button>\r\n <button mat-menu-item (click)=\"sendItemsTo([lastDocument])\" [attr.aria-label]=\"'Invia documento per email'\">\r\n <mat-icon>send</mat-icon>Invia per email\r\n </button>\r\n <button mat-menu-item (click)=\"addItemsToBag([lastDocument])\"\r\n [attr.aria-label]=\"'Aggiungi ai documenti di lavoro'\">\r\n <mat-icon>work_outline</mat-icon>Aggiungi ai documenti di lavoro\r\n </button>\r\n @if (lastDocument && lastDocument?.model != 11) {\r\n <button mat-menu-item (click)=\"exportPdf(lastDocument)\" [attr.aria-label]=\"'Salva documento in pdf'\">\r\n <mat-icon>save_alt</mat-icon>Salva in pdf\r\n </button>\r\n }\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un link permanente da utilizzare esternamente'\"\r\n (click)=\"showLink(lastDocument)\">\r\n <mat-icon>link</mat-icon>Link\r\n </button>\r\n @if ((lastDocument?.model === 9 || lastDocument?.model === 10)) {\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un report sul documento'\"\r\n (click)=\"displayReport(lastDocument)\">\r\n <mat-icon>assignment</mat-icon>Report\r\n </button>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <button type=\"button\" mat-menu-item matTooltip=\"Registro & Scadenzario\"\r\n [attr.aria-label]=\"'Opzioni di Registro & Scadenzario'\" [matMenuTriggerFor]=\"menuRS\">\r\n <mat-icon>alarm_on</mat-icon>\r\n Registro e scadenzario\r\n </button>\r\n }\r\n <mat-menu #menuRS=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova legge'\" (click)=\"RS_newLaw([lastDocument])\">\r\n Nuova legge\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova attivit\u00E0'\" (click)=\"RS_newActivity(lastDocument)\">\r\n Nuova attivit\u00E0\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Report utilizzo norma'\" (click)=\"RS_usageReport(lastDocument)\">\r\n Report utilizzo norma\r\n </button>\r\n </mat-menu>\r\n </mat-menu>\r\n @if (hasRelevants() && relevants.items && relevantsPane && (!relevantsPane.opened || relevantsPaneClosed)) {\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Rilevanza\" aria-label=\"'Rilevanza'\"\r\n (click)=\"toggleRelevantsPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-document-scrollable\">\r\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"[relevantsPaneHasBackdrop]\">\r\n <mat-drawer #relevantsPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (relevantsBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (relevantsBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"title\">Rilevanza</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button mat-icon-button (click)=\"toggleRelevantsPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"relevants-container scroll-auto\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div>\r\n <p>Parti del documento pi\u00F9 significative per la ricerca di <span class='word-hit'>{{lastQuery}}</span>\r\n </p>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <nav class=\"relevants-items\">\r\n <ul>\r\n @for (item of relevants.items; track $index) {\r\n <li class=\"small\" (click)=\"gotoRelevant(item)\" [attr.aria-label]=\"item.title\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\">\r\n {{item.title}}\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (item.score > 1.2) {\r\n <mat-icon style='font-size:x-small; height: 10px; width:10px' color=\"primary\"\r\n matTooltip=\"Molto rilevante\">thumb_up_alt</mat-icon>\r\n }\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div class=\"fill scroll-hidden\">\r\n <iframe id=\"clipper-document-iframe\" class=\"iframe\" [src]=\"url() | safeUrl\"></iframe>\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.title-container{padding-left:20px;padding-top:14px}.dialog-close{margin-right:10px;margin-top:4px}.word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.iframe{width:100%;height:100%;border:0}.relevants-container{padding:0 20px 10px}.relevants-items{padding:0;margin:0}.relevants-items ul{list-style-type:none;padding:0;margin:0}.relevants-items ul li{font-size:small;padding:6px 12px;display:block;color:var(--ars-color-text, #191c1b)}.relevants-items ul li a{color:inherit;text-decoration:none;display:block}.relevants-items ul li:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:6px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$1.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "pipe", type: SafeUrlPipe, name: "safeUrl" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2889
|
+
}
|
|
2890
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperDocumentComponent, decorators: [{
|
|
2891
|
+
type: Component,
|
|
2892
|
+
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2893
|
+
FlexLayoutModule,
|
|
2894
|
+
MatButtonModule,
|
|
2895
|
+
MatTooltipModule,
|
|
2896
|
+
MatIconModule,
|
|
2897
|
+
MatMenuModule,
|
|
2898
|
+
MatDividerModule,
|
|
2899
|
+
MatProgressBarModule,
|
|
2900
|
+
MatDialogContent,
|
|
2901
|
+
MatSidenavModule,
|
|
2902
|
+
SafeUrlPipe,
|
|
2903
|
+
], template: "<div class=\"clipper-document-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar style=\"z-index:11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start start\" fxFill>\r\n <div fxFlex=\"*\" class=\"title-container\">\r\n <div class=\"large bold\">{{title()}}</div>\r\n @if (lastDocument && lastDocument?.lastUpdate) {\r\n <div style=\"padding-top: 5px;\">\r\n <div class=\"x-small accent bold uppercase\">\r\n AGGIORNATO A:\r\n {{lastDocument?.lastUpdate}}\r\n </div>\r\n </div>\r\n }\r\n @if (lastDocument && (lastDocument?.expiringDescription || lastDocument?.validityInfo)) {\r\n <div style=\"padding-top: 5px;\">\r\n @if (lastDocument?.expiringDescription) {\r\n <div class=\"x-small accent-low bold uppercase\">\r\n {{lastDocument?.expiringDescription}}</div>\r\n }\r\n @if (lastDocument?.validityInfo) {\r\n <div class=\"x-small error bold uppercase\"><b>Attenzione!</b>\r\n {{lastDocument?.validityInfo}}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (canSelect()) {\r\n <div fxFlex=\"170px\" fxFlex.lt-md=\"58px\">\r\n <button fxHide.lt-md fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-flat-button (click)=\"select()\"\r\n class=\"clipper-selection-button\" style=\"margin-top: 8px;\">\r\n <span class=\"small uppercase\">Usa selezione</span>\r\n </button>\r\n <button fxHide.gt-sm fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-icon-button (click)=\"select()\"\r\n class=\"clipper-selection-icon-button\" matTooltip=\"Usa selezione\" aria-label=\"'Usa la selezione'\"\r\n style=\"margin-top: 4px;\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <div fxFlex=\"164px\" fxFlex.lt-md=\"48px\" fxLayoutAlign=\"end\">\r\n <div class=\"dialog-close\">\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\"\r\n aria-label=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <button fxHide.lt-md fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Avanti\" aria-label=\"Avanti\"\r\n (click)=\"forward()\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row wrap \" fxFill fxLayoutAlign=\"space-between center\" style=\"padding: 0 10px 10px 15px;\">\r\n <div fxFlex.xs=\"100\">\r\n @if (lastDocument?.model === 9) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"index(lastDocument?.id)\">\r\n Indice\r\n </button>\r\n }\r\n @if (lastDocument?.bag && (lastDocument?.bag[1] ==='T' || lastDocument?.bag[3] ==='T')) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button matTooltip=\"Collegamenti\"\r\n [attr.aria-label]=\"'Collegamenti al documento'\" [matMenuTriggerFor]=\"menuLinks\">\r\n Collegamenti\r\n </button>\r\n }\r\n <mat-menu #menuLinks=\"matMenu\">\r\n @if (lastDocument?.bag && lastDocument?.bag[1] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti richiamati'\"\r\n (click)=\"openReferences(lastDocument?.id, 1)\">\r\n Documenti richiamati\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[3] ==='T') {\r\n <button mat-menu-item [attr.aria-label]=\"'Mostra documenti che richiamano'\"\r\n (click)=\"openReferences(lastDocument?.id, 2)\">\r\n Documenti che richiamano\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra juris'\"\r\n (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche subite'\"\r\n (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !=='T' && lastDocument?.bag[6] ==='T') {\r\n <button fxHide fxShow.lt-md mat-menu-item [attr.aria-label]=\"'Mostra modifiche apportate'\"\r\n (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n </mat-menu>\r\n @if (lastDocument?.hasPrimary) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento primario'\" (click)=\"navigate(lastDocument?.primaryId)\">\r\n {{lastDocument?.primaryDescription}}\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[2] ==='T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra juris'\" (click)=\"openReferences(lastDocument?.id, 4)\">\r\n Juris\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche subite'\" (click)=\"openReferences(lastDocument?.id, 3)\">\r\n Modifiche subite\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[4] !== 'T' && lastDocument?.bag[6] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" fxHide.lt-md mat-button\r\n [attr.aria-label]=\"'Mostra modifiche apportate'\" (click)=\"openReferences(lastDocument?.id, 5)\">\r\n Modifiche apportate\r\n </button>\r\n }\r\n @if (lastDocument?.secondaryId) {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button\r\n [attr.aria-label]=\"'Mostra documento secondario'\" (click)=\"navigate(lastDocument?.secondaryId)\">\r\n Testo storico\r\n </button>\r\n }\r\n @if (lastDocument?.bag && lastDocument?.bag[7] === 'T') {\r\n <button fxFlexAlign=\"center\" color=\"primary\" type=\"button\" mat-button [attr.aria-label]=\"'Mostra commento'\"\r\n (click)=\"showComment()\">\r\n Commento\r\n </button>\r\n }\r\n </div>\r\n <div fxFlex.xs=\"100\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (hasRelevants() && relevants.hits) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div fxFlexAlign=\"center\" class=\"small item-greyed\" style=\"margin-left:20px; margin-right: 5px\"\r\n matTooltip=\"Parole evidenziate\">{{relevants.hit}}\r\n di {{relevants.hits}}</div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla parola precedente'\"\r\n (click)=\"previousRelevant()\" matTooltip=\"Parola precedente\" [disabled]=\"relevants.hit <= 1\">\r\n <mat-icon>chevron_left</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button [attr.aria-label]=\"'Vai alla prossima parola'\"\r\n (click)=\"nextRelevant()\" matTooltip=\"Prossima parola\" [disabled]=\"relevants.hit >= relevants.hits\">\r\n <mat-icon>chevron_right</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azioni sul documento\"\r\n [attr.aria-label]=\"'Azioni da eseguire sul documento'\" [matMenuTriggerFor]=\"menuActions\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menuActions=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Apri documento in una nuova finestra'\"\r\n (click)=\"open(lastDocument?.id, undefined, true)\">\r\n <mat-icon>open_in_browser</mat-icon>Apri in nuova finestra\r\n </button>\r\n <button mat-menu-item (click)=\"print()\" [attr.aria-label]=\"'Stampa documento'\">\r\n <mat-icon>print</mat-icon>Stampa\r\n </button>\r\n <button mat-menu-item (click)=\"find()\" [attr.aria-label]=\"'Trova nel documento'\">\r\n <mat-icon>find_in_page</mat-icon>Trova nel documento (CTRL+F)\r\n </button>\r\n <button mat-menu-item (click)=\"sendItemsTo([lastDocument])\" [attr.aria-label]=\"'Invia documento per email'\">\r\n <mat-icon>send</mat-icon>Invia per email\r\n </button>\r\n <button mat-menu-item (click)=\"addItemsToBag([lastDocument])\"\r\n [attr.aria-label]=\"'Aggiungi ai documenti di lavoro'\">\r\n <mat-icon>work_outline</mat-icon>Aggiungi ai documenti di lavoro\r\n </button>\r\n @if (lastDocument && lastDocument?.model != 11) {\r\n <button mat-menu-item (click)=\"exportPdf(lastDocument)\" [attr.aria-label]=\"'Salva documento in pdf'\">\r\n <mat-icon>save_alt</mat-icon>Salva in pdf\r\n </button>\r\n }\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un link permanente da utilizzare esternamente'\"\r\n (click)=\"showLink(lastDocument)\">\r\n <mat-icon>link</mat-icon>Link\r\n </button>\r\n @if ((lastDocument?.model === 9 || lastDocument?.model === 10)) {\r\n <button mat-menu-item [attr.aria-label]=\"'Genera un report sul documento'\"\r\n (click)=\"displayReport(lastDocument)\">\r\n <mat-icon>assignment</mat-icon>Report\r\n </button>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (RS_enabled([lastDocument]) && !canSelect()) {\r\n <button type=\"button\" mat-menu-item matTooltip=\"Registro & Scadenzario\"\r\n [attr.aria-label]=\"'Opzioni di Registro & Scadenzario'\" [matMenuTriggerFor]=\"menuRS\">\r\n <mat-icon>alarm_on</mat-icon>\r\n Registro e scadenzario\r\n </button>\r\n }\r\n <mat-menu #menuRS=\"matMenu\">\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova legge'\" (click)=\"RS_newLaw([lastDocument])\">\r\n Nuova legge\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Nuova attivit\u00E0'\" (click)=\"RS_newActivity(lastDocument)\">\r\n Nuova attivit\u00E0\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Report utilizzo norma'\" (click)=\"RS_usageReport(lastDocument)\">\r\n Report utilizzo norma\r\n </button>\r\n </mat-menu>\r\n </mat-menu>\r\n @if (hasRelevants() && relevants.items && relevantsPane && (!relevantsPane.opened || relevantsPaneClosed)) {\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Rilevanza\" aria-label=\"'Rilevanza'\"\r\n (click)=\"toggleRelevantsPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-document-scrollable\">\r\n <mat-drawer-container class=\"fill\" [hasBackdrop]=\"[relevantsPaneHasBackdrop]\">\r\n <mat-drawer #relevantsPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (relevantsBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (relevantsBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"title\">Rilevanza</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button mat-icon-button (click)=\"toggleRelevantsPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"relevants-container scroll-auto\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div>\r\n <p>Parti del documento pi\u00F9 significative per la ricerca di <span class='word-hit'>{{lastQuery}}</span>\r\n </p>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <nav class=\"relevants-items\">\r\n <ul>\r\n @for (item of relevants.items; track $index) {\r\n <li class=\"small\" (click)=\"gotoRelevant(item)\" [attr.aria-label]=\"item.title\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\">\r\n {{item.title}}\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (item.score > 1.2) {\r\n <mat-icon style='font-size:x-small; height: 10px; width:10px' color=\"primary\"\r\n matTooltip=\"Molto rilevante\">thumb_up_alt</mat-icon>\r\n }\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div class=\"fill scroll-hidden\">\r\n <iframe id=\"clipper-document-iframe\" class=\"iframe\" [src]=\"url() | safeUrl\"></iframe>\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.title-container{padding-left:20px;padding-top:14px}.dialog-close{margin-right:10px;margin-top:4px}.word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.iframe{width:100%;height:100%;border:0}.relevants-container{padding:0 20px 10px}.relevants-items{padding:0;margin:0}.relevants-items ul{list-style-type:none;padding:0;margin:0}.relevants-items ul li{font-size:small;padding:6px 12px;display:block;color:var(--ars-color-text, #191c1b)}.relevants-items ul li a{color:inherit;text-decoration:none;display:block}.relevants-items ul li:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:6px;cursor:pointer}\n"] }]
|
|
2904
|
+
}], propDecorators: { relevantsPane: [{
|
|
2905
|
+
type: ViewChild,
|
|
2906
|
+
args: ['relevantsPane']
|
|
2907
|
+
}], closing: [{
|
|
2908
|
+
type: Output
|
|
2909
|
+
}], opening: [{
|
|
2910
|
+
type: Output
|
|
2911
|
+
}], onComplianceAnalysis: [{
|
|
2912
|
+
type: Output
|
|
2913
|
+
}], onCompliancePlanning: [{
|
|
2914
|
+
type: Output
|
|
2915
|
+
}], onComplianceUsageReport: [{
|
|
2916
|
+
type: Output
|
|
2917
|
+
}] } });
|
|
2918
|
+
|
|
2919
|
+
class ClipperDocumentsUtils {
|
|
2889
2920
|
/**
|
|
2890
|
-
*
|
|
2891
|
-
* @param
|
|
2892
|
-
* @param
|
|
2921
|
+
* Open a document
|
|
2922
|
+
* @param dialogService: the dialog service
|
|
2923
|
+
* @param clipperService: the clipper service
|
|
2924
|
+
* @param documentId : the document id
|
|
2925
|
+
* @param query : the query for highlight
|
|
2926
|
+
* @param selectionMode : the selection mode (1 = single, 2 = multiple, 3 = any selection)
|
|
2893
2927
|
*/
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2928
|
+
static openDocument(dialogService, clipperService, documentId, query = null, selectionMode = 'none') {
|
|
2929
|
+
if (!clipperService.loggedIn()) {
|
|
2930
|
+
dialogService.error("Clipper non è disponibile in questo momento. Verifica la connessione.");
|
|
2931
|
+
return null;
|
|
2932
|
+
}
|
|
2933
|
+
if (!documentId) {
|
|
2934
|
+
dialogService.error("Documento non valido.");
|
|
2935
|
+
return null;
|
|
2936
|
+
}
|
|
2937
|
+
return dialogService.open(ClipperDocumentComponent, {
|
|
2938
|
+
ariaLabel: 'documento',
|
|
2939
|
+
autoFocus: false,
|
|
2940
|
+
restoreFocus: false,
|
|
2941
|
+
disableClose: false,
|
|
2942
|
+
data: {
|
|
2943
|
+
id: documentId,
|
|
2944
|
+
query: query,
|
|
2945
|
+
selectionMode: selectionMode
|
|
2900
2946
|
},
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
? { items: this.snapshot.items, total: this.snapshot.total }
|
|
2907
|
-
: null
|
|
2908
|
-
}));
|
|
2947
|
+
minWidth: '375px',
|
|
2948
|
+
maxWidth: '1400px',
|
|
2949
|
+
width: '99%',
|
|
2950
|
+
height: '99%'
|
|
2951
|
+
});
|
|
2909
2952
|
}
|
|
2910
2953
|
/**
|
|
2911
|
-
*
|
|
2912
|
-
* @param
|
|
2954
|
+
* Extract document title
|
|
2955
|
+
* @param title : the full document title
|
|
2913
2956
|
*/
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
if (
|
|
2917
|
-
|
|
2918
|
-
if (data) {
|
|
2919
|
-
this.filterParams = data.filterParams;
|
|
2920
|
-
this.snapshot = data.data;
|
|
2921
|
-
this.sortMode = data.sort.mode;
|
|
2922
|
-
this.sortOptions = data.sort.options;
|
|
2923
|
-
if (this.facets && data.facets) {
|
|
2924
|
-
this.facets.restore(data.facets);
|
|
2925
|
-
this.hasFacets.set(data.facets.hasFacets);
|
|
2926
|
-
}
|
|
2927
|
-
if (this.paginator && data.paginator) {
|
|
2928
|
-
this.paginator.pageIndex = data.paginator.page;
|
|
2929
|
-
this.paginator.pageSize = data.paginator.size;
|
|
2930
|
-
this.paginator.length = data.paginator.total;
|
|
2931
|
-
}
|
|
2932
|
-
this.broadcastService.sendMessage(ClipperMessages.COMMAND_SEARCH_RESTORED, data.filterParams);
|
|
2933
|
-
this.changeDetector.detectChanges();
|
|
2934
|
-
// Scroll top
|
|
2935
|
-
setTimeout(() => {
|
|
2936
|
-
this.scroll(data.scroll ?? 0);
|
|
2937
|
-
}, 100);
|
|
2938
|
-
}
|
|
2957
|
+
static parseDocumentTitle(title) {
|
|
2958
|
+
let p = title?.indexOf('[');
|
|
2959
|
+
if (p !== -1) {
|
|
2960
|
+
return title.substring(0, p);
|
|
2939
2961
|
}
|
|
2962
|
+
return title;
|
|
2940
2963
|
}
|
|
2941
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2942
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperSearchResultManager, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "facets", first: true, predicate: ["facets"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2943
2964
|
}
|
|
2944
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, decorators: [{
|
|
2945
|
-
type: Component,
|
|
2946
|
-
args: [{
|
|
2947
|
-
template: '<div></div>',
|
|
2948
|
-
standalone: true,
|
|
2949
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2950
|
-
imports: [ClipperDocumentManager, ClipperSearchFacetsComponent, ClipperSearchCalendarComponent],
|
|
2951
|
-
}]
|
|
2952
|
-
}], propDecorators: { paginator: [{
|
|
2953
|
-
type: ViewChild,
|
|
2954
|
-
args: ['paginator']
|
|
2955
|
-
}], facets: [{
|
|
2956
|
-
type: ViewChild,
|
|
2957
|
-
args: ['facets']
|
|
2958
|
-
}], calendar: [{
|
|
2959
|
-
type: ViewChild,
|
|
2960
|
-
args: ['calendar']
|
|
2961
|
-
}] } });
|
|
2962
2965
|
|
|
2963
2966
|
class ClipperBrowserDialogComponent extends ClipperSearchResultManager {
|
|
2964
2967
|
constructor() {
|
|
@@ -3597,10 +3600,34 @@ class ClipperBrowserDialogComponent extends ClipperSearchResultManager {
|
|
|
3597
3600
|
width: '99%',
|
|
3598
3601
|
});
|
|
3599
3602
|
}
|
|
3603
|
+
/**
|
|
3604
|
+
* Open an item
|
|
3605
|
+
* This should be always overridden
|
|
3606
|
+
* @param documentId : the document id
|
|
3607
|
+
* @param query: the query string
|
|
3608
|
+
* @param newWindow: true if the document must be open into a new window
|
|
3609
|
+
*/
|
|
3610
|
+
open(documentId, query = null, newWindow = false) {
|
|
3611
|
+
if (!newWindow) {
|
|
3612
|
+
this.openDocument(documentId, query);
|
|
3613
|
+
}
|
|
3614
|
+
else
|
|
3615
|
+
window.open('/documento/' + documentId, '_blank');
|
|
3616
|
+
}
|
|
3617
|
+
/**
|
|
3618
|
+
* Open a document
|
|
3619
|
+
* @param documentId : the document id
|
|
3620
|
+
* @param query: the query string
|
|
3621
|
+
*/
|
|
3622
|
+
openDocument(documentId, query = null) {
|
|
3623
|
+
if (documentId) {
|
|
3624
|
+
ClipperDocumentsUtils.openDocument(this.dialogService, this.clipperService, documentId, query);
|
|
3625
|
+
}
|
|
3626
|
+
}
|
|
3600
3627
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperBrowserDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3601
3628
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ClipperBrowserDialogComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [
|
|
3602
3629
|
MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER
|
|
3603
|
-
], viewQueries: [{ propertyName: "filterPane", first: true, predicate: ["filterPane"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"clipper-browser-fixed\">\r\n <div class=\"dialog-header\">\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"*\" class=\"dialog-title\">\r\n <a href=\"https://clipper.arsedizioni.it\" matTooltip=\"Apri Clipper in un nuovo tab\" target=\"_blank\">\r\n <div class=\"clipper-logo\"></div>\r\n </a>\r\n </div>\r\n @if (dialogData?.selectionMode > 0 && canSelect()) {\r\n <div fxFlex=\"170px\" fxFlex.lt-md=\"58px\">\r\n <button fxHide.lt-md fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-flat-button (click)=\"select()\"\r\n class=\"clipper-selection-button\">\r\n <span class=\"small uppercase\">Usa selezione</span>\r\n </button>\r\n <button fxHide.gt-sm fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-icon-button (click)=\"select()\"\r\n matTooltip=\"Usa selezione\" aria-label=\"'Usa la selezione'\" class=\"clipper-selection-icon-button\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <div fxFlex=\"106px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (clipperService.bag.length > 0) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Documenti di lavoro\" aria-label=\"'Documenti di lavoro'\"\r\n (click)=\"manageBag()\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"clipperService.bag.length\"\r\n matBadgeColor=\"accent\">work_outline</mat-icon>\r\n </button>\r\n }\r\n <button type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start center\" fxFill style=\"padding: 10px 10px 10px 20px\">\r\n <div fxFlex=\"*\">\r\n <div fxLayout=\"row\" fxLayoutGap='10px' fxFill>\r\n <mat-form-field fxFlex=\"130px\" fxHide.xs subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Numero</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"filterParams.number\" #number=\"ngModel\" name=\"number\"\r\n maxlength=\"10\" (keyup.Enter)=\"fetch(true)\">\r\n @if (filterParams.number) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\"\r\n (click)=\"filterParams.number = null;\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxFlex=\"130px\" fxHide.xs subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" matInput [(ngModel)]=\"filterParams.year\" #year=\"ngModel\" name=\"year\" min=\"0\"\r\n maxlength=\"4\" (keyup.Enter)=\"fetch(true)\" />\r\n @if (filterParams.year) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"filterParams.year = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (year.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxFlex=\"100\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Parole, frasi o concetti...</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" #text [(ngModel)]=\"filterParams.text\" maxlength=\"200\"\r\n (keyup.Enter)=\"search()\" autofocus />\r\n @if (filterParams.text) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"filterParams.text = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <button fxHide.xs type=\"button\" mat-icon-button matSuffix aria-label=\"Componi\" matTooltip=\"Componi\"\r\n (click)=\"text.focus(); composeSearch()\">\r\n <mat-icon>build</mat-icon>\r\n </button>\r\n <button fxHide.xs type=\"button\" mat-icon-button matSuffix aria-label=\"Informazioni\"\r\n matTooltip=\"Come effettuare la ricerca in testo libero\" (click)=\"text.focus(); helpSearch()\">\r\n <mat-icon>help_outline</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button type=\"button\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'Avvia la ricerca'\"\r\n matTooltip=\"Avvia ricerca\" [disabled]=\"!clipperService.loggedIn()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n <button type=\"button\" mat-icon-button (click)=\"advancedSearch()\" [attr.aria-label]=\"'Ricerca avanzata'\"\r\n matTooltip=\"Ricerca avanzata\" [disabled]=\"!clipperService.loggedIn()\">\r\n <mat-icon>settings</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n @if (snapshot.searchInfo && snapshot.searchInfo.length > 0) {\r\n <div fxHide.xs>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill class=\"small\"\r\n style=\"padding:0 10px 0 20px;\">\r\n <div fxFlex=\"*\">\r\n <b>RICERCA ATTIVA</b> \r\n @for (si of snapshot.searchInfo; track si) {\r\n <span>\r\n {{si.sep ? ' ' : ''}} {{si.field}}: <span class=\"accent lowercase\"><i>{{si.value}}</i></span>\r\n </span>\r\n }\r\n </div>\r\n <div fxFlexAlign=\"start\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera ricerca\" (click)=\"clearSearch()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div>\r\n <div fxLayout=\"row wrap-reverse\" fxLayoutAlign=\"space-between center\" fxFill style=\"padding: 0 10px 0 15px;\">\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\r\n @if (snapshot.total > 0) {\r\n <div fxFlexAlign=\"center\">\r\n <mat-checkbox (change)=\"$event ? selectAll($event) : null\"\r\n [indeterminate]=\"selection?.hasValue() && !allSelected()\"\r\n [attr.aria-label]=\"'Seleziona/deseleziona tutto'\" matTooltip=\"Seleziona/deseleziona tutto\"\r\n [disabled]=\"!snapshot.items || snapshot.items.length == 0\">\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <div fxFlex=\"*\">\r\n @if (snapshot.total > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button matTooltip=\"Ordina\"\r\n [attr.aria-label]=\"'Menu ordina'\" [matMenuTriggerFor]=\"menuSort\" [disabled]=\"!snapshot.total\">\r\n <span fxHide.lt-lg>Ordina per:</span>\r\n <mat-icon fxHide.gt-md>sort</mat-icon> {{currentSort}}\r\n </button>\r\n }\r\n <mat-menu #menuSort=\"matMenu\">\r\n <button mat-menu-item (click)=\"sortBy(3)\" [attr.aria-label]=\"'Ordina per data decrescente'\">\r\n Data decrescente\r\n </button>\r\n <button mat-menu-item (click)=\"sortBy(2)\" [attr.aria-label]=\"'Ordina per data crescente'\">\r\n Data crescente\r\n </button>\r\n @if (filterParams.text) {\r\n <button mat-menu-item (click)=\"sortBy(1)\" [attr.aria-label]=\"'Ordina per rilevanza'\">\r\n Rilevanza\r\n </button>\r\n }\r\n <button mat-menu-item (click)=\"sortBy(5)\" [attr.aria-label]=\"'Ordina per popolarit\u00E0'\">\r\n Popolarit\u00E0\r\n </button>\r\n </mat-menu>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button [attr.aria-label]=\"'Menu modello'\"\r\n [matMenuTriggerFor]=\"menuModels\">\r\n <span fxHide.lt-lg>Mostra:</span>\r\n <mat-icon fxHide.gt-md>filter_list</mat-icon> {{currentModel}}\r\n </button>\r\n <mat-menu #menuModels=\"matMenu\">\r\n <button mat-menu-item (click)=\"changeModel(2)\" [attr.aria-label]=\"'Mostra aggiornamento normativo'\">\r\n Gazzette e bollettini\r\n </button>\r\n <button mat-menu-item (click)=\"changeModel(9)\" [attr.aria-label]=\"'Normativa vigente'\">\r\n Normativa vigente\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"changeModel()\" [attr.aria-label]=\"'Mostra tutti i documenti'\">\r\n Tutto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (selection?.hasValue()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\r\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\r\n [disabled]=\"!snapshot.total\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection?.all.length\" matBadgeColor=\"accent\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <clipper-document-menu [parent]=\"this\" selectionSource=\"selection\" [useSelections]=\"canSelect()\"\r\n [isReadable]=\"false\" [isLawInForce]=\"true\">\r\n </clipper-document-menu>\r\n </mat-menu>\r\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed)) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\"\r\n aria-label=\"'Affina ricerca'\" (click)=\"toggleFilterPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-browser-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (filterBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (filterBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlexAlign=\"center\" class=\"title\">Affina ricerca</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"center\" mat-icon-button (click)=\"toggleFilterPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\r\n <clipper-search-facets #facets></clipper-search-facets>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\r\n @if (!snapshot.total) {\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n } @else {\r\n <div>\r\n @for (item of snapshot.items; track $index; let i = $index) {\r\n @if (item.group) {\r\n <div class=\"items-group-title\">\r\n <div [ngClass]=\"{'group-spaced': i > 0}\">{{item.group}}</div>\r\n </div>\r\n }\r\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [actions]=\"contextMenu\"\r\n [displayModelName]=\"true\"></clipper-search-result-item>\r\n }\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [useSelections]=\"canSelect()\" [isReadable]=\"false\"\r\n [isLawInForce]=\"true\">\r\n </clipper-document-menu>\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n <!-- footer -->\r\n @if ((snapshot?.total ?? 0) > 0) {\r\n <div class=\"items-footer\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <mat-paginator #paginator class=\"paginator\" [hidePageSize]=\"true\" [length]=\"snapshot?.total ?? 0\"\r\n [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.dialog-title{padding-left:18px;padding-top:6px}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: ClipperDocumentMenuComponent, selector: "clipper-document-menu", inputs: ["parent", "selectionSource", "useSelections", "item", "isReference", "isReadable", "isDeadline", "isLawInForce", "isLaw"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ClipperSearchFacetsComponent, selector: "clipper-search-facets", outputs: ["changed"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ClipperSearchResultItemComponent, selector: "clipper-search-result-item", inputs: ["parent", "item", "actions", "tileNoPictureUrl", "tilePictureUrl", "isSelectable", "isReadable", "displayModelName", "displayMode"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i10.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3630
|
+
], viewQueries: [{ propertyName: "filterPane", first: true, predicate: ["filterPane"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"clipper-browser-fixed\">\r\n <div class=\"dialog-header\">\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"*\" class=\"dialog-title\">\r\n <a href=\"https://clipper.arsedizioni.it\" matTooltip=\"Apri Clipper in un nuovo tab\" target=\"_blank\">\r\n <div class=\"clipper-logo\"></div>\r\n </a>\r\n </div>\r\n @if (dialogData?.selectionMode > 0 && canSelect()) {\r\n <div fxFlex=\"170px\" fxFlex.lt-md=\"58px\">\r\n <button fxHide.lt-md fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-flat-button (click)=\"select()\"\r\n class=\"clipper-selection-button\">\r\n <span class=\"small uppercase\">Usa selezione</span>\r\n </button>\r\n <button fxHide.gt-sm fxFlexAlign=\"center\" type=\"button\" color=\"primary\" mat-icon-button (click)=\"select()\"\r\n matTooltip=\"Usa selezione\" aria-label=\"'Usa la selezione'\" class=\"clipper-selection-icon-button\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <div fxFlex=\"106px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (clipperService.bag.length > 0) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Documenti di lavoro\" aria-label=\"'Documenti di lavoro'\"\r\n (click)=\"manageBag()\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"clipperService.bag.length\"\r\n matBadgeColor=\"accent\">work_outline</mat-icon>\r\n </button>\r\n }\r\n <button type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxLayoutAlign=\"start center\" fxFill style=\"padding: 10px 10px 10px 20px\">\r\n <div fxFlex=\"*\">\r\n <div fxLayout=\"row\" fxLayoutGap='10px' fxFill>\r\n <mat-form-field fxFlex=\"130px\" fxHide.xs subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Numero</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"filterParams.number\" #number=\"ngModel\" name=\"number\"\r\n maxlength=\"10\" (keyup.Enter)=\"fetch(true)\">\r\n @if (filterParams.number) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\"\r\n (click)=\"filterParams.number = null;\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxFlex=\"130px\" fxHide.xs subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Anno</mat-label>\r\n <input type=\"number\" matInput [(ngModel)]=\"filterParams.year\" #year=\"ngModel\" name=\"year\" min=\"0\"\r\n maxlength=\"4\" (keyup.Enter)=\"fetch(true)\" />\r\n @if (filterParams.year) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"filterParams.year = null\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (year.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field fxFlex=\"100\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Parole, frasi o concetti...</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" #text [(ngModel)]=\"filterParams.text\" maxlength=\"200\"\r\n (keyup.Enter)=\"search()\" autofocus />\r\n @if (filterParams.text) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"filterParams.text = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <button fxHide.xs type=\"button\" mat-icon-button matSuffix aria-label=\"Componi\" matTooltip=\"Componi\"\r\n (click)=\"text.focus(); composeSearch()\">\r\n <mat-icon>build</mat-icon>\r\n </button>\r\n <button fxHide.xs type=\"button\" mat-icon-button matSuffix aria-label=\"Informazioni\"\r\n matTooltip=\"Come effettuare la ricerca in testo libero\" (click)=\"text.focus(); helpSearch()\">\r\n <mat-icon>help_outline</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button type=\"button\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'Avvia la ricerca'\"\r\n matTooltip=\"Avvia ricerca\" [disabled]=\"!clipperService.loggedIn()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n <button type=\"button\" mat-icon-button (click)=\"advancedSearch()\" [attr.aria-label]=\"'Ricerca avanzata'\"\r\n matTooltip=\"Ricerca avanzata\" [disabled]=\"!clipperService.loggedIn()\">\r\n <mat-icon>settings</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n @if (snapshot.searchInfo && snapshot.searchInfo.length > 0) {\r\n <div fxHide.xs>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill class=\"small\"\r\n style=\"padding:0 10px 0 20px;\">\r\n <div fxFlex=\"*\">\r\n <b>RICERCA ATTIVA</b> \r\n @for (si of snapshot.searchInfo; track si) {\r\n <span>\r\n {{si.sep ? ' ' : ''}} {{si.field}}: <span class=\"accent lowercase\"><i>{{si.value}}</i></span>\r\n </span>\r\n }\r\n </div>\r\n <div fxFlexAlign=\"start\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera ricerca\" (click)=\"clearSearch()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div>\r\n <div fxLayout=\"row wrap-reverse\" fxLayoutAlign=\"space-between center\" fxFill style=\"padding: 0 10px 0 15px;\">\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\r\n @if (snapshot.total > 0) {\r\n <div fxFlexAlign=\"center\">\r\n <mat-checkbox (change)=\"$event ? selectAll($event) : null\"\r\n [indeterminate]=\"selection?.hasValue() && !allSelected()\"\r\n [attr.aria-label]=\"'Seleziona/deseleziona tutto'\" matTooltip=\"Seleziona/deseleziona tutto\"\r\n [disabled]=\"!snapshot.items || snapshot.items.length == 0\">\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <div fxFlex=\"*\">\r\n @if (snapshot.total > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button matTooltip=\"Ordina\"\r\n [attr.aria-label]=\"'Menu ordina'\" [matMenuTriggerFor]=\"menuSort\" [disabled]=\"!snapshot.total\">\r\n <span fxHide.lt-lg>Ordina per:</span>\r\n <mat-icon fxHide.gt-md>sort</mat-icon> {{currentSort}}\r\n </button>\r\n }\r\n <mat-menu #menuSort=\"matMenu\">\r\n <button mat-menu-item (click)=\"sortBy(3)\" [attr.aria-label]=\"'Ordina per data decrescente'\">\r\n Data decrescente\r\n </button>\r\n <button mat-menu-item (click)=\"sortBy(2)\" [attr.aria-label]=\"'Ordina per data crescente'\">\r\n Data crescente\r\n </button>\r\n @if (filterParams.text) {\r\n <button mat-menu-item (click)=\"sortBy(1)\" [attr.aria-label]=\"'Ordina per rilevanza'\">\r\n Rilevanza\r\n </button>\r\n }\r\n <button mat-menu-item (click)=\"sortBy(5)\" [attr.aria-label]=\"'Ordina per popolarit\u00E0'\">\r\n Popolarit\u00E0\r\n </button>\r\n </mat-menu>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button [attr.aria-label]=\"'Menu modello'\"\r\n [matMenuTriggerFor]=\"menuModels\">\r\n <span fxHide.lt-lg>Mostra:</span>\r\n <mat-icon fxHide.gt-md>filter_list</mat-icon> {{currentModel}}\r\n </button>\r\n <mat-menu #menuModels=\"matMenu\">\r\n <button mat-menu-item (click)=\"changeModel(2)\" [attr.aria-label]=\"'Mostra aggiornamento normativo'\">\r\n Gazzette e bollettini\r\n </button>\r\n <button mat-menu-item (click)=\"changeModel(9)\" [attr.aria-label]=\"'Normativa vigente'\">\r\n Normativa vigente\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"changeModel()\" [attr.aria-label]=\"'Mostra tutti i documenti'\">\r\n Tutto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (selection?.hasValue()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button\r\n matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\"\r\n [disabled]=\"!snapshot.total\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection?.all.length\" matBadgeColor=\"accent\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <clipper-document-menu [parent]=\"this\" selectionSource=\"selection\" [useSelections]=\"canSelect()\"\r\n [isReadable]=\"false\" [isLawInForce]=\"true\">\r\n </clipper-document-menu>\r\n </mat-menu>\r\n @if (snapshot && snapshot.facets?.hasFacets && filterPane && (!filterPane.opened || filterPaneClosed)) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Affina ricerca\"\r\n aria-label=\"'Affina ricerca'\" (click)=\"toggleFilterPane()\">\r\n <mat-icon>menu_open</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"clipper-browser-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #filterPane position=\"end\" class=\"drawer-small drawer-with-loader\" opened=\"false\">\r\n @if (filterBusy()) {\r\n <div class=\"overlay\"></div>\r\n }\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"6px\">\r\n @if (filterBusy()) {\r\n <mat-progress-bar style=\"z-index: 11;\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n }\r\n </div>\r\n <div fxFlex=\"56px\" class=\"title-container-with-loader\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlexAlign=\"center\" class=\"title\">Affina ricerca</div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"center\" mat-icon-button (click)=\"toggleFilterPane()\"\r\n matTooltip=\"Nascondi\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex=\"*\" class=\"scroll-hidden\" style=\"padding: 0 5px;\">\r\n <clipper-search-facets #facets></clipper-search-facets>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" [id]=\"scrollerId\" class=\"scroll-auto\" style=\"padding: 0 5px;\">\r\n @if (!snapshot.total) {\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n } @else {\r\n <div>\r\n @for (item of snapshot.items; track $index; let i = $index) {\r\n @if (item.group) {\r\n <div class=\"items-group-title\">\r\n <div [ngClass]=\"{'group-spaced': i > 0}\">{{item.group}}</div>\r\n </div>\r\n }\r\n <clipper-search-result-item [item]=\"item\" [parent]=\"this\" [actions]=\"contextMenu\"\r\n [displayModelName]=\"true\"></clipper-search-result-item>\r\n }\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <clipper-document-menu [parent]=\"this\" [item]=\"item\" [useSelections]=\"canSelect()\" [isReadable]=\"false\"\r\n [isLawInForce]=\"true\">\r\n </clipper-document-menu>\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n <!-- footer -->\r\n @if ((snapshot?.total ?? 0) > 0) {\r\n <div class=\"items-footer\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <mat-paginator #paginator class=\"paginator\" [hidePageSize]=\"true\" [length]=\"snapshot?.total ?? 0\"\r\n [pageSize]=\"filterParams.count ?? 15\" [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-drawer-container>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.clipper-logo{background-size:110px 48px;width:110px;height:48px}.clipper-selection-button{width:150px;font-size:small;font-weight:600;text-transform:uppercase}.clipper-selection-icon-button{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.clipper-selection-icon-button:hover{background-color:var(--ars-primary-hi, #12c0ae)}.expired,.unread{color:var(--ars-error, #ff5449)!important}.expiring{color:var(--ars-warning, #FFC107)!important}.error-bg,.expired-bg,.unread-bg{background-color:var(--ars-error, #ff5449)}.expiring-bg{background-color:var(--ars-warning, #FFC107)}.popular-bg{background-color:#388e3c}.very-popular-bg{background-color:#4caf50}.item-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0!important}.item-unread{font-weight:bolder}.items-group-title{color:var(--ars-accent, #7894ae);font-size:large;font-weight:700;padding-left:25px;padding-bottom:10px;padding-top:10px}.items-group-title .group-spaced{padding:10px 0 0!important}.items-footer{padding-top:10px}.item{border-radius:12px;padding:10px 6px 10px 0;min-height:68px!important;margin-bottom:2px}.item:hover{background-color:var(--ars-item-hover-background-color, #eaecef)}.item-content .info-1{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent, #7894ae)}.item-content .info-2{font-size:x-small;font-weight:700;line-height:15px;text-transform:uppercase;color:var(--ars-accent-low, #456179)}.item-content .title{font-size:small;line-height:18px}.item-content .details{margin-top:4px;font-size:x-small;font-weight:700;line-height:15px;color:var(--ars-accent-low, #456179);text-transform:uppercase;border-left:4px solid var(--ars-accent-low, #456179);padding-left:10px}.item-content .details .links{text-transform:none;text-decoration:none}.item-content .details .links a,.item-content .details .links span,.item-content .details .links div{margin-right:8px;font-weight:600;color:var(--ars-color-text, #191c1b)}.item-content .details .links a{cursor:pointer!important;color:var(--ars-link, #03A9F4);font-weight:600}.item-content a.link{color:var(--ars-link, #03A9F4);cursor:pointer!important}.item-content:hover{-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);mask-image:linear-gradient(to right,black 85%,transparent 100%)}.tile:hover{background-color:var(--ars-item-hover-background-color, #eaecef);border-radius:12px}.tile{cursor:pointer;padding:10px 13px;margin-bottom:2px}.tile .body{padding:4px 6px}.tile .image-mark{border-top:6px solid transparent;margin:0 8px}.tile .image-mark-unread{border-top-color:var(--ars-error, #ff5449);margin:0 8px}.tile .image{height:180px;position:relative;background-color:transparent;overflow:hidden;display:flex;justify-content:center;align-items:center;border-radius:8px}.tile .image img{object-fit:cover;width:100%;height:100%}.tile .image .info-1{position:absolute;left:0;bottom:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-color-text, #191c1b);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .info-2{position:absolute;right:0;top:0;padding:4px 8px;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75));color:var(--ars-accent, #7894ae);font-size:small;font-weight:700;text-transform:uppercase}.tile .image .buttons{position:absolute;left:0;top:0;height:42px}.tile .image .buttons .check,.tile .image .buttons .read{background-color:var(--ars-primary, #00a293);color:var(--ars-color-text-low, #e0e2e5)}.tile .image .buttons .check-selected{background-color:var(--ars-primary-hi, #12c0ae)}.tile .date{padding:8px 0 6px;font-weight:700;text-transform:uppercase}.tile .date .date-day{color:var(--ars-accent, #7894ae)}.tile .date .date-divider{width:1px;margin:0 8px;border-left:1px solid var(--ars-color-divider, #757d87)}.tile .time{font-size:small;font-weight:700}.tile .title{text-decoration:none;font-size:small;min-height:72px;overflow:hidden}.badge,.badge-red{margin-left:10px;padding:1px 4px;border-radius:3px;font-size:x-small;font-weight:600;text-align:center;background-color:var(--ars-accent, #7894ae);text-transform:uppercase;white-space:nowrap;color:var(--ars-color-text, #191c1b)}.badge-red{background-color:var(--ars-error, #ff5449);color:var(--ars-color-text, #191c1b)}.busy-backdrop{background-color:#00000052!important}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:10px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}.special-date,.special-date-expired{border:2px var(--ars-accent, #7894ae) solid!important;border-radius:100%!important}.special-date-expired{border:2px var(--ars-error, #ff5449) solid!important}.dialog-title{padding-left:18px;padding-top:6px}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$1.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i2$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: ClipperDocumentMenuComponent, selector: "clipper-document-menu", inputs: ["parent", "selectionSource", "useSelections", "item", "isReference", "isReadable", "isDeadline", "isLawInForce", "isLaw"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ClipperSearchFacetsComponent, selector: "clipper-search-facets", outputs: ["changed"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ClipperSearchResultItemComponent, selector: "clipper-search-result-item", inputs: ["parent", "item", "actions", "tileNoPictureUrl", "tilePictureUrl", "isSelectable", "isReadable", "displayModelName", "displayMode"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i10.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3604
3631
|
}
|
|
3605
3632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperBrowserDialogComponent, decorators: [{
|
|
3606
3633
|
type: Component,
|
|
@@ -3633,53 +3660,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
3633
3660
|
args: ['filterPane']
|
|
3634
3661
|
}] } });
|
|
3635
3662
|
|
|
3636
|
-
class ClipperDocumentsUtils {
|
|
3637
|
-
/**
|
|
3638
|
-
* Open a document
|
|
3639
|
-
* @param dialogService: the dialog service
|
|
3640
|
-
* @param clipperService: the clipper service
|
|
3641
|
-
* @param documentId : the document id
|
|
3642
|
-
* @param query : the query for highlight
|
|
3643
|
-
* @param selectionMode : the selection mode (1 = single, 2 = multiple, 3 = any selection)
|
|
3644
|
-
*/
|
|
3645
|
-
static openDocument(dialogService, clipperService, documentId, query = null, selectionMode = null) {
|
|
3646
|
-
if (!clipperService.loggedIn()) {
|
|
3647
|
-
dialogService.error("Clipper non è disponibile in questo momento. Verifica la connessione.");
|
|
3648
|
-
return null;
|
|
3649
|
-
}
|
|
3650
|
-
if (!documentId) {
|
|
3651
|
-
dialogService.error("Documento non valido.");
|
|
3652
|
-
return null;
|
|
3653
|
-
}
|
|
3654
|
-
return dialogService.open(ClipperDocumentComponent, {
|
|
3655
|
-
ariaLabel: 'documento',
|
|
3656
|
-
autoFocus: false,
|
|
3657
|
-
restoreFocus: false,
|
|
3658
|
-
disableClose: false,
|
|
3659
|
-
data: {
|
|
3660
|
-
id: documentId,
|
|
3661
|
-
query: query,
|
|
3662
|
-
selectionMode: selectionMode
|
|
3663
|
-
},
|
|
3664
|
-
minWidth: '375px',
|
|
3665
|
-
maxWidth: '1400px',
|
|
3666
|
-
width: '99%',
|
|
3667
|
-
height: '99%'
|
|
3668
|
-
});
|
|
3669
|
-
}
|
|
3670
|
-
/**
|
|
3671
|
-
* Extract document title
|
|
3672
|
-
* @param title : the full document title
|
|
3673
|
-
*/
|
|
3674
|
-
static parseDocumentTitle(title) {
|
|
3675
|
-
let p = title?.indexOf('[');
|
|
3676
|
-
if (p !== -1) {
|
|
3677
|
-
return title.substring(0, p);
|
|
3678
|
-
}
|
|
3679
|
-
return title;
|
|
3680
|
-
}
|
|
3681
|
-
}
|
|
3682
|
-
|
|
3683
3663
|
/*
|
|
3684
3664
|
* Public API Surface of ars-utils
|
|
3685
3665
|
*/
|