@arsedizioni/ars-utils 18.1.70 → 18.1.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +3 -3
  2. package/esm2022/clipper.ui/ui/document/document.component.mjs +3 -3
  3. package/esm2022/clipper.ui/ui/last-15-days/last-15-days.component.mjs +3 -3
  4. package/esm2022/clipper.ui/ui/references/references.component.mjs +3 -3
  5. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +3 -3
  6. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +3 -3
  7. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +3 -3
  8. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +138 -218
  9. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +3 -3
  10. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +3 -3
  11. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +3 -3
  12. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +3 -3
  13. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +3 -3
  14. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +3 -3
  15. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +3 -3
  16. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +3 -3
  17. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +3 -3
  18. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +3 -3
  19. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +3 -3
  20. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +3 -3
  21. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +3 -3
  22. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +3 -3
  23. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +3 -3
  24. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +7 -4
  25. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +3 -3
  26. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +14 -14
  27. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  28. package/fesm2022/arsedizioni-ars-utils-help.mjs +142 -321
  29. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  30. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +4 -4
  31. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  32. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +22 -19
  33. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  34. package/fesm2022/arsedizioni-ars-utils-ui.mjs +12 -12
  35. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  36. package/help/components/help-viewer/help-viewer.component.d.ts +58 -90
  37. package/package.json +7 -7
  38. package/styles/ui.scss +18 -0
  39. package/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.d.ts +4 -3
@@ -1,137 +1,35 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Output, Injectable, ViewEncapsulation, Inject, ViewChild, NgModule } from '@angular/core';
2
+ import { Injectable, inject, ChangeDetectorRef, signal, computed, Component, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';
3
+ import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
3
4
  import { FlatTreeControl } from '@angular/cdk/tree';
4
- import * as i2$1 from '@angular/material/dialog';
5
- import { MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose, MAT_DIALOG_DATA } from '@angular/material/dialog';
6
- import * as i11 from '@angular/material/sidenav';
5
+ import { NgStyle, NgClass } from '@angular/common';
6
+ import * as i2 from '@angular/material/button';
7
+ import { MatButtonModule } from '@angular/material/button';
8
+ import { MatDialogRef, MAT_DIALOG_DATA, MatDialogContent } from '@angular/material/dialog';
9
+ import * as i4 from '@angular/material/icon';
10
+ import { MatIconModule } from '@angular/material/icon';
11
+ import * as i5 from '@angular/material/progress-bar';
12
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
13
+ import * as i7 from '@angular/material/sidenav';
7
14
  import { MatSidenavModule } from '@angular/material/sidenav';
8
- import * as i12 from '@angular/material/tree';
15
+ import * as i3 from '@angular/material/tooltip';
16
+ import { MatTooltipModule } from '@angular/material/tooltip';
17
+ import * as i8 from '@angular/material/tree';
9
18
  import { MatTreeFlattener, MatTreeFlatDataSource, MatTreeModule } from '@angular/material/tree';
10
19
  import { SystemUtils, SafeHtmlPipe } from '@arsedizioni/ars-utils/core';
11
- import { BehaviorSubject, Subject, of, fromEvent } from 'rxjs';
12
- import { takeUntil } from 'rxjs/operators';
13
- import * as i8 from '@angular/material/icon';
14
- import { MatIconModule } from '@angular/material/icon';
15
- import * as i7 from '@angular/material/button';
16
- import { MatButtonModule } from '@angular/material/button';
17
- import * as i6 from '@angular/material/input';
18
- import { MatInputModule } from '@angular/material/input';
19
- import * as i5$1 from '@angular/material/form-field';
20
- import { MatFormFieldModule } from '@angular/material/form-field';
21
- import * as i5 from '@ngbracket/ngx-layout/flex';
22
- import { FlexModule } from '@ngbracket/ngx-layout/flex';
23
- import * as i3 from '@angular/forms';
24
- import { FormsModule } from '@angular/forms';
25
- import * as i2 from '@arsedizioni/ars-utils/ui';
26
- import * as i10 from '@ngbracket/ngx-layout/extended';
20
+ import * as i2$1 from '@arsedizioni/ars-utils/ui';
21
+ import { DialogService } from '@arsedizioni/ars-utils/ui';
22
+ import * as i6 from '@ngbracket/ngx-layout/extended';
27
23
  import { ExtendedModule } from '@ngbracket/ngx-layout/extended';
28
- import * as i9 from '@angular/material/progress-bar';
29
- import { MatProgressBarModule } from '@angular/material/progress-bar';
30
- import { NgStyle, NgClass } from '@angular/common';
31
- import * as i7$1 from '@angular/material/tooltip';
32
- import { MatTooltipModule } from '@angular/material/tooltip';
33
- import * as i1 from '@ngbracket/ngx-layout';
24
+ import * as i1 from '@ngbracket/ngx-layout/flex';
25
+ import { FlexModule } from '@ngbracket/ngx-layout/flex';
26
+ import { BehaviorSubject, Subject, of, fromEvent } from 'rxjs';
27
+ import { takeUntil, debounceTime } from 'rxjs/operators';
34
28
  import * as i1$1 from '@angular/common/http';
35
29
 
36
- class HelpSearchQueryBuilderComponent {
37
- constructor($dialog, dialog) {
38
- this.$dialog = $dialog;
39
- this.dialog = dialog;
40
- this.done = new EventEmitter();
41
- this.queryAnd = '';
42
- this.queryOr = '';
43
- this.queryNot = '';
44
- this.queryPhrase = '';
45
- this.queryStart = '';
46
- }
47
- ngOnInit() { }
48
- /**
49
- * Clear
50
- */
51
- clear() {
52
- this.queryAnd = null;
53
- this.queryOr = null;
54
- this.queryNot = null;
55
- this.queryPhrase = null;
56
- this.queryStart = null;
57
- }
58
- /**
59
- * Submit search
60
- */
61
- ok() {
62
- let query = '';
63
- // Phrase
64
- if (this.queryPhrase.length > 0) {
65
- if (query.length > 0)
66
- query += ' ';
67
- query += '+"';
68
- query += this.queryPhrase.replace('"', '').trim();
69
- query += '"';
70
- query += ' ';
71
- }
72
- // And
73
- if (this.queryAnd.length > 0) {
74
- let parts = this.queryAnd.split(',');
75
- for (let i = 0; i < parts.length; i++) {
76
- if (query.length > 0)
77
- query += ' ';
78
- query += '+';
79
- query += parts[i].replace('"', '').trim();
80
- }
81
- query += ' ';
82
- }
83
- // Or
84
- if (this.queryOr.length > 0) {
85
- let parts = this.queryOr.split(',');
86
- for (let i = 0; i < parts.length; i++) {
87
- if (query.length > 0)
88
- query += ' ';
89
- query += parts[i].replace('"', '').trim();
90
- }
91
- query += ' ';
92
- }
93
- // Start with
94
- if (this.queryStart.length > 0) {
95
- if (query.length > 0)
96
- query += ' ';
97
- query += '+';
98
- query += this.queryStart.replace('"', '').trim();
99
- query += '*';
100
- query += ' ';
101
- }
102
- // Not
103
- if (this.queryNot.length > 0) {
104
- if (query.length === 0) {
105
- // Invalid query
106
- this.$dialog.error("L'operatore di esclusione funziona solo se prima è stato inserito un valore in almeno uno degli altri quattro campi.");
107
- return;
108
- }
109
- let parts = this.queryNot.split(',');
110
- for (let i = 0; i < parts.length; i++) {
111
- if (query.length > 0)
112
- query += ' ';
113
- query += '-';
114
- query += parts[i].replace('"', '').trim();
115
- }
116
- query += ' ';
117
- }
118
- // Notify
119
- if (query.length > 0)
120
- this.done.emit({ query: query });
121
- }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpSearchQueryBuilderComponent, deps: [{ token: i2.DialogService }, { token: i2$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: HelpSearchQueryBuilderComponent, 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\"\r\n (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\"\r\n (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\">CHIUDI</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.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i5.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: i5.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: i5.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: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.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"] }] }); }
30
+ class IndexInfo {
124
31
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpSearchQueryBuilderComponent, decorators: [{
126
- type: Component,
127
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, MatDialogActions, MatDialogClose], 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\"\r\n (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\"\r\n (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\">CHIUDI</button>\r\n </div>\r\n </div>\r\n</div>" }]
128
- }], ctorParameters: () => [{ type: i2.DialogService }, { type: i2$1.MatDialog }], propDecorators: { done: [{
129
- type: Output
130
- }] } });
131
-
132
- class FolderInfo {
133
- }
134
- class FolderNode extends FolderInfo {
32
+ class IndexNode extends IndexInfo {
135
33
  constructor(item, level) {
136
34
  super();
137
35
  // Flattened implementation
@@ -144,13 +42,13 @@ class FolderNode extends FolderInfo {
144
42
  this.parent = item.parent;
145
43
  }
146
44
  }
147
- class FolderTree {
148
- get data() {
149
- return this.dataChange.value;
150
- }
45
+ class IndexTreeDataSource {
151
46
  constructor() {
152
47
  this.dataChange = new BehaviorSubject([]);
153
48
  }
49
+ get data() {
50
+ return this.dataChange.value;
51
+ }
154
52
  ngOnDestroy() {
155
53
  this.dataChange.unsubscribe();
156
54
  }
@@ -241,83 +139,94 @@ class FolderTree {
241
139
  update() {
242
140
  this.dataChange.next(this.data);
243
141
  }
244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FolderTree, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
245
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FolderTree }); }
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IndexTreeDataSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
143
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IndexTreeDataSource }); }
246
144
  }
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FolderTree, decorators: [{
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IndexTreeDataSource, decorators: [{
248
146
  type: Injectable
249
- }], ctorParameters: () => [] });
147
+ }] });
250
148
  class HelpViewerComponent {
251
- constructor(media, tree, $dialog, $help, dialogRef, _data) {
252
- this.media = media;
253
- this.tree = tree;
254
- this.$dialog = $dialog;
255
- this.$help = $help;
256
- this.dialogRef = dialogRef;
257
- this.__d$ = new Subject();
258
- this.dialogTab = 1;
259
- this.busy = false;
260
- this.id = null;
261
- this.title = 'Guida';
262
- this.page = null;
263
- this.history = [];
264
- this.sidenavMode = 'side';
265
- this.sidenavClosed = false;
266
- this.sidenavVisible = false;
267
- this.searchText = null;
268
- this.hits = 0;
269
- this.hit = 0;
270
- this.mq = '';
271
- this.contentHeight = null;
272
- this.currentFolder = null;
273
- this.folders = null;
149
+ constructor() {
150
+ this.unsubscribe = new Subject();
151
+ this.changeDetector = inject(ChangeDetectorRef);
152
+ this.dialogRef = inject((MatDialogRef));
153
+ this.dialogData = inject(MAT_DIALOG_DATA) ?? { id: "1" };
154
+ this.dialogService = inject(DialogService);
155
+ this.helpService = inject(HelpService);
156
+ this.breakpointObserver = inject(BreakpointObserver);
157
+ this.busy = signal(false);
158
+ this.page = signal(null);
159
+ this.indexId = null;
160
+ this.indexPaneClosed = false;
161
+ this.indexNode = null;
162
+ this.history = signal([]);
163
+ this.canGoBack = computed(() => {
164
+ return this.history()?.length > 1;
165
+ });
166
+ this.height = signal(-1);
167
+ this.tree = inject(IndexTreeDataSource);
274
168
  /**
275
169
  * Manage flat tree view
276
170
  */
277
- this._getChildren = (node) => of(node.subFolders);
278
- this._getLevel = (node) => node.level;
279
- this._isExpandable = (node) => node.expandable;
171
+ this.folders = null;
172
+ this.getChildren = (node) => of(node.subFolders);
173
+ this.getLevel = (node) => node.level;
174
+ this.isExpandable = (node) => node.expandable;
280
175
  this.hasChild = (_, _node) => _node.expandable;
281
176
  this.transformer = (item, level) => {
282
- return new FolderNode(item, level);
177
+ return new IndexNode(item, level);
283
178
  };
284
- this.id = _data && _data.id ? _data.id : '1';
179
+ }
180
+ ngOnInit() {
285
181
  // Setup tree structure
286
- this.treeFlattener = new MatTreeFlattener(this.transformer, this._getLevel, this._isExpandable, this._getChildren);
287
- this.treeControl = new FlatTreeControl(this._getLevel, this._isExpandable);
182
+ this.treeFlattener = new MatTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);
183
+ this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
288
184
  this.treeData = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);
289
185
  // Subscribe data change
290
- tree.dataChange
291
- .pipe(takeUntil(this.__d$))
186
+ this.tree.dataChange
187
+ .pipe(takeUntil(this.unsubscribe))
292
188
  .subscribe(data => (this.treeData.data = data));
293
- }
294
- ngOnInit() {
295
- // Initialize sidenav visibility
296
- if (this.sidenav)
297
- this.sidenav.opened =
298
- this.mq !== 'xs' && this.mq !== 'sm';
299
- // React to media query changes
300
- this.media
301
- .asObservable()
302
- .pipe(takeUntil(this.__d$))
303
- .subscribe((changes) => {
304
- this.updateSidenavVisibilty(changes[0].mqAlias);
189
+ // Observe layout changes
190
+ this.breakpointObserver
191
+ .observe([
192
+ Breakpoints.XSmall,
193
+ Breakpoints.Small,
194
+ Breakpoints.Medium,
195
+ Breakpoints.Large,
196
+ Breakpoints.XLarge,
197
+ ])
198
+ .pipe(takeUntil(this.unsubscribe))
199
+ .subscribe((result) => {
200
+ for (const query of Object.keys(result.breakpoints)) {
201
+ if (result.breakpoints[query]) {
202
+ this.handleFilterPaneVisibility();
203
+ }
204
+ }
305
205
  });
306
206
  // React to window size change
307
207
  fromEvent(window, 'resize')
308
- .pipe(takeUntil(this.__d$))
208
+ .pipe(takeUntil(this.unsubscribe), debounceTime(500))
309
209
  .subscribe(() => {
310
210
  // Update view
311
211
  this.updateView();
312
212
  });
313
213
  this.adjustView();
314
214
  this.getToc();
315
- if (this.id)
316
- this.getChapter(this.id);
215
+ this.indexId = this.dialogData.indexId;
216
+ if (this.indexId) {
217
+ this.getChapter(this.indexId);
218
+ }
317
219
  }
318
220
  ngOnDestroy() {
319
- this.__d$.next();
320
- this.__d$.complete();
221
+ this.unsubscribe.next();
222
+ this.unsubscribe.complete();
223
+ }
224
+ ngAfterViewInit() {
225
+ setTimeout(() => {
226
+ this.handleFilterPaneVisibility();
227
+ this.indexPaneClosed = !this.indexPane.opened;
228
+ }, 0);
229
+ this.changeDetector.detectChanges();
321
230
  }
322
231
  /**
323
232
  * Adjust view
@@ -325,7 +234,7 @@ class HelpViewerComponent {
325
234
  adjustView() {
326
235
  setTimeout(() => {
327
236
  this.updateView();
328
- }, 50);
237
+ }, 100);
329
238
  }
330
239
  /**
331
240
  * Update view
@@ -339,51 +248,33 @@ class HelpViewerComponent {
339
248
  let hb = b[0].clientHeight;
340
249
  if (hb === 0)
341
250
  this.adjustView();
342
- this.contentHeight = a - (hb + 50);
343
- }
344
- /**
345
- * Update sidenav visibility
346
- * @param mq : the current media query
347
- */
348
- updateSidenavVisibilty(mq = null) {
349
- if (!mq)
350
- mq = this.mq;
351
- if (mq === 'xs' || mq === 'sm') {
352
- this.sidenavVisible = false;
353
- //this.sidenavMode = 'over';
354
- if (this.sidenav && this.sidenav.opened)
355
- this.sidenav.close();
356
- }
357
- else {
358
- //this.sidenavMode = 'side';
359
- if (this.sidenav && !this.sidenavClosed) {
360
- this.sidenav.toggle(true);
361
- this.sidenavVisible = true;
251
+ this.height.set(a - (hb + 50));
252
+ }
253
+ /**
254
+ * Handle filter pane visibility
255
+ */
256
+ handleFilterPaneVisibility() {
257
+ if (this.indexPane) {
258
+ if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||
259
+ this.breakpointObserver.isMatched(Breakpoints.Small) ||
260
+ this.breakpointObserver.isMatched(Breakpoints.Medium)) {
261
+ if (this.indexPane.opened) {
262
+ this.indexPane.close();
263
+ }
264
+ }
265
+ else {
266
+ if (!this.indexPane.opened && !this.indexPaneClosed) {
267
+ this.indexPane.open();
268
+ }
362
269
  }
363
270
  }
364
271
  }
365
272
  /**
366
- * Open sidebar
273
+ * Show hide index pane manually
367
274
  */
368
- sidenavOpen() {
369
- this.sidenavClosed = false;
370
- this.sidenav.open();
371
- }
372
- /**
373
- * Close sidebar
374
- */
375
- sidenavClose() {
376
- this.sidenavClosed = true;
377
- this.sidenav.close();
378
- }
379
- /**
380
- * Toggle sidenav
381
- */
382
- sidenavToggle() {
383
- if (this.sidenavClosed || !this.sidenav.opened)
384
- this.sidenavOpen();
385
- else
386
- this.sidenavClose();
275
+ toggleIndexPane() {
276
+ this.indexPaneClosed = !this.indexPaneClosed;
277
+ this.indexPane?.toggle();
387
278
  }
388
279
  /**
389
280
  * Close dialog
@@ -395,13 +286,13 @@ class HelpViewerComponent {
395
286
  * Get the toc
396
287
  */
397
288
  getToc() {
398
- this.busy = true;
399
- this.$help
289
+ this.busy.set(true);
290
+ this.helpService
400
291
  .getToc()
401
292
  .subscribe({
402
293
  next: (r) => {
403
294
  if (!r.success) {
404
- this.$dialog.error(r.message);
295
+ this.dialogService.error(r.message);
405
296
  }
406
297
  else {
407
298
  this.folders = r.value.subFolders;
@@ -409,7 +300,7 @@ class HelpViewerComponent {
409
300
  }
410
301
  },
411
302
  complete: () => {
412
- this.busy = false;
303
+ this.busy.set(false);
413
304
  }
414
305
  });
415
306
  }
@@ -456,11 +347,11 @@ class HelpViewerComponent {
456
347
  * Expand current fodler node
457
348
  */
458
349
  expandCurrentFolder() {
459
- if (this.currentFolder) {
460
- this.treeControl.expand(SystemUtils.arrayFindByKey(this.treeControl.dataNodes, 'id', this.currentFolder.id));
461
- if (this.currentFolder.parent) {
350
+ if (this.indexNode) {
351
+ this.treeControl.expand(SystemUtils.arrayFindByKey(this.treeControl.dataNodes, 'id', this.indexNode.id));
352
+ if (this.indexNode.parent) {
462
353
  // Apply previous selection
463
- let n = this.currentFolder.parent;
354
+ let n = this.indexNode.parent;
464
355
  while (n) {
465
356
  this.treeControl.expand(SystemUtils.arrayFindByKey(this.treeControl.dataNodes, 'id', n.id));
466
357
  n = n.parent;
@@ -482,26 +373,23 @@ class HelpViewerComponent {
482
373
  id = id.substring(0, p);
483
374
  }
484
375
  if (id !== '.') {
485
- this.busy = true;
486
- this.$help.getChapter(id, this.searchText)
376
+ this.busy.set(true);
377
+ this.helpService.getChapter(id)
487
378
  .subscribe({
488
379
  next: (r) => {
489
380
  let found = false;
490
381
  if (!r.success) {
491
- this.$dialog.error("Capitolo non trovato.");
382
+ this.dialogService.error("Capitolo non trovato.");
492
383
  }
493
384
  else {
494
385
  if (!position)
495
- this.history.push({ id: this.id, position: this.getPosition() });
496
- this.id = id;
497
- this.title = r.value.chapter?.name;
498
- this.page = r.value.data;
499
- this.hits = r.value.hits;
500
- this.hit = 0;
501
- found = this.title?.length > 0;
386
+ this.history().push({ id: this.indexId, position: this.getPosition() });
387
+ this.indexId = id;
388
+ this.page.set(r.value.data);
389
+ found = r.value.chapter?.name?.length > 0;
502
390
  if (found) {
503
391
  // Update folder
504
- this.currentFolder = this.findFolder(id);
392
+ this.indexNode = this.findFolder(id);
505
393
  this.expandCurrentFolder();
506
394
  // Handle positioning
507
395
  this.gotoPosition(anchor, position);
@@ -512,13 +400,13 @@ class HelpViewerComponent {
512
400
  }
513
401
  },
514
402
  complete: () => {
515
- this.busy = false;
403
+ this.busy.set(false);
516
404
  }
517
405
  });
518
406
  }
519
407
  else {
520
408
  if (!position)
521
- this.history.push({ id: this.id, position: this.getPosition() });
409
+ this.history().push({ id: this.indexId, position: this.getPosition() });
522
410
  // Move on the same chapter
523
411
  this.gotoPosition(anchor, position);
524
412
  }
@@ -571,86 +459,19 @@ class HelpViewerComponent {
571
459
  back() {
572
460
  if (!this.history || this.history.length === 0)
573
461
  return;
574
- let n = this.history.pop();
462
+ let n = this.history().pop();
575
463
  this.getChapter(n.id, n.position + 1);
576
464
  }
577
- /**
578
- * Compose a free text search query
579
- */
580
- composeSearch() {
581
- let d = this.$dialog.open(HelpSearchQueryBuilderComponent, {
582
- ariaLabel: 'costruisci ricerca',
583
- autoFocus: false,
584
- restoreFocus: true,
585
- disableClose: false,
586
- minWidth: '375px',
587
- maxWidth: '600px',
588
- width: '99%'
589
- });
590
- d.componentInstance.done.subscribe((r) => {
591
- this.searchText = r.query;
592
- // Finished
593
- d.close();
594
- });
595
- }
596
- /**
597
- * Perform search
598
- */
599
- search() {
600
- this.busy = true;
601
- this.$help.search({ text: this.searchText })
602
- .subscribe({
603
- next: (r) => {
604
- if (!r.success) {
605
- this.$dialog.error("Errore di sintassi.");
606
- }
607
- else {
608
- this.searchResult = r.value;
609
- }
610
- },
611
- complete: () => {
612
- this.busy = false;
613
- }
614
- });
615
- }
616
- /**
617
- * Goto next relevant item
618
- */
619
- nextHit() {
620
- const i = this.hit + 1;
621
- if (i <= this.hits) {
622
- let elms = document.getElementsByClassName('help-word-hit-' + i);
623
- if (elms) {
624
- this.setPosition(elms[0].offsetTop - 50);
625
- this.hit++;
626
- }
627
- }
628
- }
629
- /**
630
- * Goto previous relevant item
631
- */
632
- previousHit() {
633
- const i = this.hit - 1;
634
- if (i > 0) {
635
- let elms = document.getElementsByClassName('help-word-hit-' + i);
636
- if (elms) {
637
- this.setPosition(elms[0].offsetTop - 50);
638
- this.hit--;
639
- }
640
- }
641
- }
642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpViewerComponent, deps: [{ token: i1.MediaObserver }, { token: FolderTree }, { token: i2.DialogService }, { token: HelpService }, { token: i2$1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
643
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: HelpViewerComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [FolderTree], viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true }], ngImport: i0, template: "<div class=\"help-viewer-fixed\">\r\n <div class=\"help-viewer-header\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"sidenavToggle()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n <h2 class=\"mat-dialog-title truncated\">\r\n <div>Guida</div>\r\n </h2>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\">\r\n @if (history && history.length > 1) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\"\r\n color=\"primary\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\"\r\n color=\"primary\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:5px\">\r\n @if (busy) {\r\n <mat-progress-bar class=\"sidenav-loader\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-content [ngStyle]=\"{'min-height.px': contentHeight}\" style=\"padding: 0 0 0 24px\">\r\n <mat-sidenav-container [ngStyle]=\"{'height.px': contentHeight}\">\r\n <mat-sidenav #sidenav [mode]=\"sidenavMode\" [autoFocus]=\"false\" class=\"sidenav sidenav-help\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" class=\"scrollbox\">\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\" class=\"scrollable-content tree\"\r\n style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\"\r\n [ngClass]=\"{'tree-node-activated': currentFolder && currentFolder.id === node.id}\" [disabled]=\"busy\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"text-transform:uppercase; \">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [ngClass]=\"{'tree-node-activated': currentFolder && currentFolder.id === node.id }\"\r\n (click)=\"getChapter(node.id)\" [disabled]=\"busy\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"text-transform:uppercase; \">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n <mat-sidenav-content id=\"help-page-container\">\r\n <div [ngStyle]=\"{'height.px': contentHeight }\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div style=\"padding: 0 15px;\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.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-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.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}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.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}}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:#fafad2;border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:#e6e6fa;border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:#f9fbe7;border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.sidenav-help{width:320px}.tree-node-style:hover{background-color:#f8f8f8!important}::ng-deep .sidenav-help>.mat-drawer-inner-container{overflow-x:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i5.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: i5.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: i5.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: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.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: i5.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: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i9.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: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i10.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: i10.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i11.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i11.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i11.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i12.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i12.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i12.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i12.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i12.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
465
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
466
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: HelpViewerComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [IndexTreeDataSource], viewQueries: [{ propertyName: "indexPane", first: true, predicate: ["indexPane"], descendants: true }], ngImport: i0, template: "<div class=\"help-viewer-fixed\">\r\n <div class=\"help-viewer-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" >\r\n <h2 mat-dialog-title>Guida</h2>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"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 style=\"height:5px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-content [ngStyle]=\"{'min-height.px': height()}\" style=\"padding: 0 0 0 24px\">\r\n <mat-sidenav-container [ngStyle]=\"{'height.px': height()}\">\r\n <mat-sidenav #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"helpbrowser-index \">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" class=\"scroll-hidden\">\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\" class=\"scroll-auto tree \"\r\n style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\"\r\n [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id}\" [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id }\"\r\n (click)=\"getChapter(node.id)\" [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n <mat-sidenav-content id=\"help-page-container\">\r\n <div [ngStyle]=\"{'height.px': height() }\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div style=\"padding: 0 15px;\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.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-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}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.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}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.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}}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:#fafad2;border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:#e6e6fa;border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:#f9fbe7;border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.helpbrowser-index{width:320px}.helpbrowser-index>.mat-drawer-inner-container{overflow-x:hidden!important}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:36px!important}.tree-node-activated,.tree-node-activated>div{min-height:36px!important;font-weight:700!important}\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: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i5.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: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i6.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: i6.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i7.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i7.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i7.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i8.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i8.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
644
467
  }
645
468
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpViewerComponent, decorators: [{
646
469
  type: Component,
647
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, encapsulation: ViewEncapsulation.None, providers: [FolderTree], standalone: true, imports: [FlexModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogContent, NgStyle, ExtendedModule, MatSidenavModule, MatTreeModule, NgClass, SafeHtmlPipe], template: "<div class=\"help-viewer-fixed\">\r\n <div class=\"help-viewer-header\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"sidenavToggle()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n <h2 class=\"mat-dialog-title truncated\">\r\n <div>Guida</div>\r\n </h2>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\">\r\n @if (history && history.length > 1) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\"\r\n color=\"primary\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\"\r\n color=\"primary\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:5px\">\r\n @if (busy) {\r\n <mat-progress-bar class=\"sidenav-loader\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-content [ngStyle]=\"{'min-height.px': contentHeight}\" style=\"padding: 0 0 0 24px\">\r\n <mat-sidenav-container [ngStyle]=\"{'height.px': contentHeight}\">\r\n <mat-sidenav #sidenav [mode]=\"sidenavMode\" [autoFocus]=\"false\" class=\"sidenav sidenav-help\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" class=\"scrollbox\">\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\" class=\"scrollable-content tree\"\r\n style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\"\r\n [ngClass]=\"{'tree-node-activated': currentFolder && currentFolder.id === node.id}\" [disabled]=\"busy\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"text-transform:uppercase; \">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [ngClass]=\"{'tree-node-activated': currentFolder && currentFolder.id === node.id }\"\r\n (click)=\"getChapter(node.id)\" [disabled]=\"busy\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"text-transform:uppercase; \">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n <mat-sidenav-content id=\"help-page-container\">\r\n <div [ngStyle]=\"{'height.px': contentHeight }\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div style=\"padding: 0 15px;\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.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-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.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}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.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}}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:#fafad2;border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:#e6e6fa;border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:#f9fbe7;border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.sidenav-help{width:320px}.tree-node-style:hover{background-color:#f8f8f8!important}::ng-deep .sidenav-help>.mat-drawer-inner-container{overflow-x:hidden!important}\n"] }]
648
- }], ctorParameters: () => [{ type: i1.MediaObserver }, { type: FolderTree }, { type: i2.DialogService }, { type: HelpService }, { type: i2$1.MatDialogRef }, { type: undefined, decorators: [{
649
- type: Inject,
650
- args: [MAT_DIALOG_DATA]
651
- }] }], propDecorators: { sidenav: [{
470
+ args: [{ host: { 'Bind': SystemUtils.generateUUID() }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [IndexTreeDataSource], standalone: true, imports: [FlexModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogContent,
471
+ NgStyle, ExtendedModule, MatSidenavModule, MatTreeModule, NgClass, SafeHtmlPipe], template: "<div class=\"help-viewer-fixed\">\r\n <div class=\"help-viewer-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" >\r\n <h2 mat-dialog-title>Guida</h2>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"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 style=\"height:5px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-content [ngStyle]=\"{'min-height.px': height()}\" style=\"padding: 0 0 0 24px\">\r\n <mat-sidenav-container [ngStyle]=\"{'height.px': height()}\">\r\n <mat-sidenav #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"helpbrowser-index \">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\" class=\"scroll-hidden\">\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\" class=\"scroll-auto tree \"\r\n style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\"\r\n [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id}\" [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id }\"\r\n (click)=\"getChapter(node.id)\" [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n <mat-sidenav-content id=\"help-page-container\">\r\n <div [ngStyle]=\"{'height.px': height() }\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div style=\"padding: 0 15px;\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.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-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}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.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}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.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}}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:#ff0;border:1px solid silver;padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:#fafad2;border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:#e6e6fa;border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:#f9fbe7;border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.helpbrowser-index{width:320px}.helpbrowser-index>.mat-drawer-inner-container{overflow-x:hidden!important}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:36px!important}.tree-node-activated,.tree-node-activated>div{min-height:36px!important;font-weight:700!important}\n"] }]
472
+ }], propDecorators: { indexPane: [{
652
473
  type: ViewChild,
653
- args: ['sidenav']
474
+ args: ['indexPane']
654
475
  }] } });
655
476
 
656
477
  class HelpService {
@@ -722,7 +543,7 @@ class HelpService {
722
543
  height: '99%'
723
544
  });
724
545
  }
725
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpService, deps: [{ token: i1$1.HttpClient }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
546
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpService, deps: [{ token: i1$1.HttpClient }, { token: i2$1.DialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
726
547
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpService, providedIn: 'root' }); }
727
548
  }
728
549
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HelpService, decorators: [{
@@ -730,7 +551,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
730
551
  args: [{
731
552
  providedIn: 'root'
732
553
  }]
733
- }], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i2.DialogService }] });
554
+ }], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i2$1.DialogService }] });
734
555
 
735
556
  class ArsHelpModule {
736
557
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ArsHelpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -749,5 +570,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
749
570
  * Generated bundle index. Do not edit.
750
571
  */
751
572
 
752
- export { ArsHelpModule, FolderInfo, FolderNode, FolderTree, HelpService, HelpViewerComponent };
573
+ export { ArsHelpModule, HelpService, HelpViewerComponent, IndexInfo, IndexNode, IndexTreeDataSource };
753
574
  //# sourceMappingURL=arsedizioni-ars-utils-help.mjs.map