@arsedizioni/ars-utils 22.0.80 → 22.0.82
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/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +24 -24
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +54 -54
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs +206 -121
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +15 -15
- package/fesm2022/arsedizioni-ars-utils-help.mjs +10 -10
- package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +8 -8
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +67 -67
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +104 -104
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +6 -6
- package/package.json +1 -1
- package/styles/ui.scss +4 -2
- package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1 -1
- package/types/arsedizioni-ars-utils-core.d.ts +53 -4
- package/types/arsedizioni-ars-utils-ui.application.d.ts +2 -2
- package/types/arsedizioni-ars-utils-ui.d.ts +1 -1
|
@@ -707,10 +707,10 @@ class CoreService {
|
|
|
707
707
|
}
|
|
708
708
|
this.reset();
|
|
709
709
|
}
|
|
710
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
711
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
710
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CoreService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
711
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: CoreService }); }
|
|
712
712
|
}
|
|
713
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
713
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CoreService, decorators: [{
|
|
714
714
|
type: Service
|
|
715
715
|
}] });
|
|
716
716
|
|
|
@@ -995,10 +995,10 @@ class LoginService {
|
|
|
995
995
|
return r;
|
|
996
996
|
}));
|
|
997
997
|
}
|
|
998
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
999
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
998
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LoginService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
999
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: LoginService }); }
|
|
1000
1000
|
}
|
|
1001
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1001
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LoginService, decorators: [{
|
|
1002
1002
|
type: Service
|
|
1003
1003
|
}] });
|
|
1004
1004
|
|
|
@@ -1086,10 +1086,10 @@ class ComplianceService {
|
|
|
1086
1086
|
addActivities(params) {
|
|
1087
1087
|
return this.httpClient.post(this.core.serviceUri + '/compliance/activities/add', params);
|
|
1088
1088
|
}
|
|
1089
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1090
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
1089
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ComplianceService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
1090
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: ComplianceService }); }
|
|
1091
1091
|
}
|
|
1092
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ComplianceService, decorators: [{
|
|
1093
1093
|
type: Service
|
|
1094
1094
|
}] });
|
|
1095
1095
|
|
|
@@ -1115,10 +1115,10 @@ class AccountService {
|
|
|
1115
1115
|
deleteLink(item) {
|
|
1116
1116
|
return this.httpClient.post(this.core.serviceUri + '/account/links/delete', item);
|
|
1117
1117
|
}
|
|
1118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1119
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
1118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AccountService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
1119
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: AccountService }); }
|
|
1120
1120
|
}
|
|
1121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AccountService, decorators: [{
|
|
1122
1122
|
type: Service
|
|
1123
1123
|
}] });
|
|
1124
1124
|
|
|
@@ -1182,10 +1182,10 @@ class EvolutionService {
|
|
|
1182
1182
|
* @returns void
|
|
1183
1183
|
*/
|
|
1184
1184
|
ping() { this.session.ping(); }
|
|
1185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1186
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
1185
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: EvolutionService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
1186
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: EvolutionService }); }
|
|
1187
1187
|
}
|
|
1188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: EvolutionService, decorators: [{
|
|
1189
1189
|
type: Service
|
|
1190
1190
|
}] });
|
|
1191
1191
|
|
|
@@ -141,10 +141,10 @@ class IndexTreeDataSource {
|
|
|
141
141
|
update() {
|
|
142
142
|
this.dataChange.next(this.data);
|
|
143
143
|
}
|
|
144
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
145
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: IndexTreeDataSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
145
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: IndexTreeDataSource }); }
|
|
146
146
|
}
|
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: IndexTreeDataSource, decorators: [{
|
|
148
148
|
type: Injectable
|
|
149
149
|
}] });
|
|
150
150
|
class HelpViewerComponent {
|
|
@@ -436,13 +436,13 @@ class HelpViewerComponent {
|
|
|
436
436
|
this.history.update(h => h.slice(0, -1));
|
|
437
437
|
this.getChapter(n.id, n.position + 1);
|
|
438
438
|
}
|
|
439
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
440
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: HelpViewerComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [IndexTreeDataSource], viewQueries: [{ propertyName: "indexPane", first: true, predicate: ["indexPane"], descendants: true, isSignal: true }, { propertyName: "matTree", first: true, predicate: MatTree, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\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 class=\"dialog-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 <div mat-dialog-title>Guida</div>\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\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" 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);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [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 #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [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 {{treeNodeRef.isExpanded ? '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-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.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-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.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}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller!important}.small{font-size:small!important;line-height:16px!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;line-height:14px!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!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 .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;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:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@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,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!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:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}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:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);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:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, 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.FxFlexDirective, 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: i1.FxLayoutAlignDirective, 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.FxLayoutGapDirective, 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.FxFlexAlignDirective, 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.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: 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: MatSidenavModule }, { kind: "component", type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i7.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i7.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i7.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i7.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i7.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HelpViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
440
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: HelpViewerComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [IndexTreeDataSource], viewQueries: [{ propertyName: "indexPane", first: true, predicate: ["indexPane"], descendants: true, isSignal: true }, { propertyName: "matTree", first: true, predicate: MatTree, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\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 class=\"dialog-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 <div mat-dialog-title>Guida</div>\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\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" 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);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [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 #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [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 {{treeNodeRef.isExpanded ? '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-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.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-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.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}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!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;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!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 .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;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:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@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,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!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:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}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:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);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:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, 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.FxFlexDirective, 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: i1.FxLayoutAlignDirective, 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.FxLayoutGapDirective, 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.FxFlexAlignDirective, 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.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: 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: MatSidenavModule }, { kind: "component", type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i7.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i7.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i7.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i7.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i7.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
441
441
|
}
|
|
442
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HelpViewerComponent, decorators: [{
|
|
443
443
|
type: Component,
|
|
444
444
|
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [IndexTreeDataSource], standalone: true, imports: [FlexLayoutModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogTitle, MatDialogContent,
|
|
445
|
-
MatSidenavModule, MatTreeModule, SafeHtmlPipe], template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\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 class=\"dialog-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 <div mat-dialog-title>Guida</div>\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\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" 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);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [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 #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [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 {{treeNodeRef.isExpanded ? '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-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.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-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.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}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller!important}.small{font-size:small!important;line-height:16px!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;line-height:14px!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!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 .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;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:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@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,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!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:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}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:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);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:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"] }]
|
|
445
|
+
MatSidenavModule, MatTreeModule, SafeHtmlPipe], template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\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 class=\"dialog-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 <div mat-dialog-title>Guida</div>\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\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" 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);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [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 #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [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 {{treeNodeRef.isExpanded ? '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-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.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-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.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}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!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;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!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 .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;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:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@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,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!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:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}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:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);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:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"] }]
|
|
446
446
|
}], ctorParameters: () => [], propDecorators: { indexPane: [{ type: i0.ViewChild, args: ['indexPane', { isSignal: true }] }], matTree: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatTree), { isSignal: true }] }] } });
|
|
447
447
|
|
|
448
448
|
class HelpService {
|
|
@@ -511,10 +511,10 @@ class HelpService {
|
|
|
511
511
|
height: '100%'
|
|
512
512
|
});
|
|
513
513
|
}
|
|
514
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
515
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
514
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HelpService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
515
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: HelpService }); }
|
|
516
516
|
}
|
|
517
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
517
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HelpService, decorators: [{
|
|
518
518
|
type: Service
|
|
519
519
|
}] });
|
|
520
520
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arsedizioni-ars-utils-help.mjs","sources":["../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.ts","../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.html","../../../projects/ars-utils/help/services/help.service.ts","../../../projects/ars-utils/help/public_api.ts","../../../projects/ars-utils/help/arsedizioni-ars-utils-help.ts"],"sourcesContent":["import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, DestroyRef, Injectable, OnDestroy, ViewEncapsulation, afterNextRender, computed, inject, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTree, MatTreeModule } from '@angular/material/tree';\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { DialogService, FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { BehaviorSubject } from 'rxjs';\nimport { HelpService } from '../../services/help.service';\n\nexport interface HelpViewerDialogData {\n id?: string;\n}\n\nexport class IndexInfo {\n id: string;\n parent?: IndexInfo;\n name: string;\n itemsCount?: number;\n children?: IndexInfo[];\n}\n\nexport class IndexNode extends IndexInfo {\n expandable: boolean;\n level: number;\n\n constructor(item: IndexInfo, level: number) {\n super();\n\n // Flattened implementation\n this.expandable = !!item.children && item.children.length > 0;\n this.level = level;\n\n // Data\n this.id = item.id;\n this.name = item.name;\n this.itemsCount = item.itemsCount;\n this.parent = item.parent;\n }\n}\n\n@Injectable()\nexport class IndexTreeDataSource implements OnDestroy {\n dataChange = new BehaviorSubject<IndexInfo[]>([]);\n\n get data(): IndexInfo[] {\n return this.dataChange.value;\n }\n\n ngOnDestroy() {\n this.dataChange.unsubscribe();\n }\n\n /**\n * Initialises the data source with a flat list of root nodes.\n * @param data - Array of root `IndexInfo` items to display in the tree.\n */\n initialize(data: IndexInfo[]) {\n this.dataChange.next(data);\n }\n\n /**\n * Recursively searches the tree for a node with the given id.\n * @param node - The node to start from, or `null`/`undefined` to search from the root.\n * @param id - The id of the node to find.\n * @returns The matching `IndexInfo`, or `undefined` if not found.\n */\n findNode(node: IndexInfo | undefined | null, id: string): IndexInfo | undefined {\n let children: IndexInfo[] | undefined;\n if (node && node.id === id) return node;\n if (node) children = node.children;\n else children = this.data;\n if (children) {\n let _n: IndexInfo | undefined;\n children.some(n => {\n n.parent = node ?? undefined;\n _n = this.findNode(n, id);\n if (_n) return true;\n return false;\n });\n return _n;\n }\n return undefined;\n }\n\n /**\n * Removes the node with the given id from the tree.\n * @param id - The id of the node to remove.\n */\n removeNode(id: string): void {\n const n = this.findNode(null, id);\n if (!n) return;\n if (n.parent) {\n const siblings = n.parent.children;\n if (siblings) {\n const p = siblings.findIndex(c => c.id === id);\n if (p !== -1) {\n siblings.splice(p, 1);\n if (n.parent.itemsCount !== undefined) {\n n.parent.itemsCount--;\n }\n }\n }\n } else {\n const p = this.data.findIndex(c => c.id === id);\n if (p !== -1) {\n this.data.splice(p, 1);\n }\n }\n this.dataChange.next(this.data);\n }\n\n /**\n * Inserts a new node at the beginning of its parent's children, or at the root.\n * @param node - The `IndexInfo` node to insert.\n */\n insertNode(node: IndexInfo): void {\n if (node.parent) {\n node.parent.children ??= [];\n node.parent.children.unshift(node);\n node.parent.itemsCount = (node.parent.itemsCount ?? 0) + 1;\n } else {\n this.data.unshift(node);\n }\n this.dataChange.next(this.data);\n }\n\n /**\n * Renames a node in the tree.\n * @param id - The id of the node to rename.\n * @param name - The new display name.\n */\n renameNode(id: string, name: string): void {\n const n = this.findNode(null, id);\n if (n) {\n n.name = name;\n this.dataChange.next(this.data);\n }\n }\n\n /**\n * Re-emits the current data to all subscribers, triggering a tree refresh.\n */\n update(): void {\n this.dataChange.next(this.data);\n }\n}\n\n@Component({\n host: { 'Bind': SystemUtils.generateUUID() },\n templateUrl: './help-viewer.component.html',\n styleUrls: ['./help-viewer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IndexTreeDataSource],\n standalone: true,\n imports: [FlexLayoutModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogTitle, MatDialogContent,\n MatSidenavModule, MatTreeModule, SafeHtmlPipe]\n})\nexport class HelpViewerComponent {\n readonly indexPane = viewChild.required<MatSidenav>('indexPane');\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly dialogRef = inject(MatDialogRef<HelpViewerComponent>);\n protected readonly dialogData: HelpViewerDialogData = inject(MAT_DIALOG_DATA) ?? { id: '1' };\n private readonly dialogService = inject(DialogService);\n private readonly helpService = inject(HelpService);\n protected readonly breakpointObserver = inject(BreakpointObserver);\n protected readonly busy = signal<boolean>(false);\n protected readonly page = signal<string | null>(null);\n private indexId: string | undefined;\n private indexPaneClosed = false;\n protected indexNode: IndexInfo | undefined;\n private readonly history = signal<Array<{ id: string; position: number }>>([]);\n protected readonly canGoBack = computed(() => this.history().length > 1);\n\n private tree = inject(IndexTreeDataSource);\n readonly matTree = viewChild<MatTree<IndexNode>>(MatTree);\n /** Provides the level of a flat node to the tree component. */\n protected readonly levelAccessor = (node: IndexNode) => node.level;\n /** Flat list of all tree nodes used as the tree data source. */\n protected readonly flatNodes = signal<IndexNode[]>([]);\n private folders?: IndexInfo[];\n protected hasChild = (_: number, _node: IndexNode) => _node.expandable;\n\n constructor() {\n // Subscribe data change\n this.tree.dataChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(data => this.flatNodes.set(this.flattenNodes(data)));\n\n this.getToc();\n\n this.indexId = this.dialogData.id;\n if (this.indexId) {\n this.getChapter(this.indexId);\n }\n\n afterNextRender(() => {\n // Observe layout changes — must run after view init so indexPane is available\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleFilterPaneVisibility());\n\n this.indexPaneClosed = !this.indexPane().opened;\n });\n }\n\n\n /**\n* Handle filter pane visibility\n*/\n private handleFilterPaneVisibility() {\n const indexPane = this.indexPane();\n if (indexPane) {\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\n if (indexPane.opened) {\n indexPane.close();\n }\n } else {\n if (!indexPane.opened && !this.indexPaneClosed) {\n indexPane.open();\n }\n }\n }\n }\n\n /**\n * Shows or hides the index pane when the user clicks the toggle button.\n * Also tracks the user's explicit intent so the pane is not auto-reopened.\n */\n protected toggleIndexPane() {\n this.indexPaneClosed = !this.indexPaneClosed;\n this.indexPane()?.toggle();\n }\n\n\n /**\n * Closes the help viewer dialog.\n */\n protected close(): void {\n this.dialogRef.close();\n }\n\n /**\n * Loads the table of contents from the help service and populates the tree.\n */\n protected getToc(): void {\n this.busy.set(true);\n this.helpService\n .getToc()\n .subscribe({\n next: r => {\n if (!r.success) {\n this.dialogService.error(r.message);\n } else {\n this.folders = r.value.children;\n if (this.folders.length > 0) {\n this.tree.initialize(this.folders);\n this.indexNode = this.folders[0];\n this.expandCurrentFolder(); \n }\n }\n },\n complete: () => {\n this.busy.set(false);\n }\n });\n }\n\n /**\n * Intercepts anchor clicks inside the help page and navigates to the referenced chapter.\n * @param e - The click `MouseEvent` from the page content area.\n * @returns `false` to prevent default browser navigation.\n */\n protected gotoChapter(e: MouseEvent): boolean {\n const el = e.target as HTMLElement | null;\n if (el?.nodeName !== 'A') return false;\n const tag = el.outerHTML;\n let id = '';\n let p = tag.indexOf('help-target=\"');\n if (p !== -1) {\n p += 13;\n while (p < tag.length && tag[p] !== '\"') {\n id += tag[p];\n p++;\n }\n }\n if (id) this.getChapter(id);\n return false;\n }\n\n /**\n * Searches the folder list for a node matching the given id.\n * @param id - The id of the folder to locate.\n * @returns The matching `IndexInfo`, or `undefined` if not found.\n */\n private findFolder(id: string): IndexInfo | undefined {\n let node = undefined;\n if (this.folders) {\n this.folders.some(n => {\n node = this.tree.findNode(n, id);\n if (node) return true;\n return false;\n });\n }\n return node;\n }\n\n /**\n * Expands the tree node that corresponds to the currently selected chapter,\n * and all its ancestor nodes.\n */\n private expandCurrentFolder(): void {\n if (this.indexNode) {\n const current = this.flatNodes().find(n => n.id === this.indexNode!.id);\n if (current) {\n this.matTree()?.expand(current);\n }\n if (this.indexNode.parent) {\n // Expand all ancestors\n let n: IndexInfo | undefined = this.indexNode.parent;\n while (n) {\n const ancestor = this.flatNodes().find(x => x.id === n!.id);\n if (ancestor) this.matTree()?.expand(ancestor);\n n = n.parent;\n }\n }\n }\n }\n\n /**\n * Recursively flattens a nested IndexInfo tree into a depth-first ordered array of IndexNodes.\n * @param items - Root-level nodes to flatten.\n * @param level - Current depth level.\n */\n private flattenNodes(items: IndexInfo[], level = 0): IndexNode[] {\n const result: IndexNode[] = [];\n for (const node of items) {\n result.push(new IndexNode(node, level));\n if (node.children?.length) {\n result.push(...this.flattenNodes(node.children, level + 1));\n }\n }\n return result;\n }\n\n /**\n * Retrieves and displays a help chapter by id.\n * Optionally scrolls to an anchor or pixel offset after loading.\n * @param id - Chapter id, optionally followed by an anchor (`id#anchor`).\n * @param position - Pixel scroll offset to restore (default `0`, meaning top).\n */\n protected getChapter(id: string, position: number = 0): void {\n // Detect anchor if exists\n let anchor: string | undefined;\n const p = id.indexOf('#');\n if (p !== -1) {\n anchor = id.substring(p + 1);\n id = id.substring(0, p);\n }\n if (id !== '.') {\n this.busy.set(true);\n this.helpService.getChapter(id)\n .subscribe({\n next: r => {\n let found = false;\n if (!r.success) {\n this.dialogService.error(\"Capitolo non trovato.\");\n } else {\n if (!position)\n this.history.update(h => [...h, { id: this.indexId ?? '', position: this.getPosition() }]);\n this.indexId = id;\n this.page.set(r.value.data);\n found = (r.value.chapter?.name?.length ?? 0) > 0;\n if (found) {\n // Update folder\n this.indexNode = this.findFolder(id);\n this.expandCurrentFolder();\n // Handle positioning\n this.gotoPosition(anchor, position);\n }\n }\n\n if (!found) {\n this.getChapter(\"1\");\n }\n },\n complete: () => {\n this.busy.set(false);\n }\n });\n } else {\n if (!position)\n this.history.update(h => [...h, { id: this.indexId ?? '', position: this.getPosition() }]);\n // Move on the same chapter\n this.gotoPosition(anchor, position);\n }\n }\n\n /**\n * Scrolls the help content to a named anchor or a numeric pixel offset.\n * @param anchor - Named anchor (`<a name=\"…\">`) to scroll to, if any.\n * @param position - Fallback pixel offset (default `0`).\n */\n protected gotoPosition(anchor: string | undefined, position: number = 0): void {\n setTimeout(() => {\n if (anchor) {\n const elms = document.getElementsByName(anchor.toUpperCase());\n if (elms && elms.length > 0) position = elms[0].offsetTop;\n }\n this.setPosition(position > 0 ? position - 1 : 0);\n }, 50);\n }\n\n /**\n * Returns the current vertical scroll offset of the help content scroller.\n * @returns The `scrollTop` value in pixels, or `0` if the element is not found.\n */\n protected getPosition(): number {\n let elem = document.getElementById('helpviewer-scroller');\n if (elem) {\n return elem.scrollTop;\n }\n return 0;\n }\n\n /**\n * Scrolls the help content scroller to the specified pixel offset.\n * @param position - The vertical pixel offset to scroll to.\n */\n protected setPosition(position: number): void {\n let elem = document.getElementById('helpviewer-scroller');\n if (elem) {\n elem.scrollTo(0, position);\n }\n }\n\n /**\n * Navigates back to the previous chapter in the browsing history.\n */\n protected back(): void {\n const entries = this.history();\n if (entries.length === 0) return;\n const n = entries[entries.length - 1];\n this.history.update(h => h.slice(0, -1));\n this.getChapter(n.id, n.position + 1);\n }\n\n\n\n\n\n}\n","<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\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 class=\"dialog-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 <div mat-dialog-title>Guida</div>\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\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" 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);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [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 #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [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 {{treeNodeRef.isExpanded ? '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-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>","import { Service, inject } from '@angular/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { ApiResult } from '@arsedizioni/ars-utils/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { HelpViewerComponent, IndexInfo } from '../components/help-viewer/help-viewer.component';\r\nimport { Chapter, ChapterBag } from '../definitions';\r\n\r\n@Service()\r\nexport class HelpService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly dialogService = inject(DialogService);\r\n private serviceUri: string | undefined;\r\n\r\n /**\r\n * Initialises the service with the back-end base URI.\r\n * Must be called once during application bootstrap before any other method.\r\n * @param serviceUri - Base URL of the help service (e.g. `'https://api.example.com'`).\r\n */\r\n initialize(serviceUri: string): void {\r\n this.serviceUri = serviceUri;\r\n }\r\n\r\n /**\r\n * Retrieves the HTML content and metadata of a help chapter.\r\n * @param id - The chapter id.\r\n * @param query - Optional search query to highlight within the chapter content.\r\n * @returns An observable that emits `ApiResult<ChapterBag>`.\r\n */\r\n getChapter(id: string, query: string | undefined = undefined) {\r\n return this.httpClient.get<ApiResult<ChapterBag>>(\r\n this.serviceUri +\r\n '/help/chapter/' +\r\n id +\r\n '/?query=' +\r\n (query ?? '')\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves metadata (title, path, etc.) for a help chapter without its content.\r\n * @param id - The chapter id.\r\n * @returns An observable that emits `ApiResult<Chapter>`.\r\n */\r\n getChapterInfo(id: string) {\r\n return this.httpClient.get<ApiResult<Chapter>>(\r\n this.serviceUri + '/help/chapter/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves a raw repository file by id.\r\n * @param id - The repository file id.\r\n * @returns An observable that emits `ApiResult<unknown>`.\r\n */\r\n getRepo(id: string) {\r\n return this.httpClient.get<ApiResult<unknown>>(\r\n this.serviceUri + '/help/repo/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the table of contents as a hierarchical `IndexInfo` tree.\r\n * @returns An observable that emits `ApiResult<IndexInfo>`.\r\n */\r\n getToc() {\r\n return this.httpClient.get<ApiResult<IndexInfo>>(\r\n this.serviceUri + '/help/toc'\r\n );\r\n }\r\n\r\n /**\r\n * Opens the help viewer dialog, optionally pre-navigated to a specific chapter.\r\n * @param id - The chapter id to open (default: `'1'`, the root chapter).\r\n */\r\n show(id: string = '1'): void {\r\n this.dialogService.open(HelpViewerComponent, {\r\n ariaLabel: 'guida',\r\n autoFocus: 'dialog',\r\n restoreFocus: false,\r\n disableClose: true,\r\n data: { id },\r\n minWidth: '375px',\r\n maxWidth: '1200px',\r\n width: '100%',\r\n height: '100%'\r\n });\r\n }\r\n}\r\n\r\n","/*\r\n * Public API Surface \r\n */\r\nexport * from './definitions';\r\nexport * from './services/help.service';\r\nexport * from './components/help-viewer/help-viewer.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"arsedizioni-ars-utils-help.mjs","sources":["../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.ts","../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.html","../../../projects/ars-utils/help/services/help.service.ts","../../../projects/ars-utils/help/public_api.ts","../../../projects/ars-utils/help/arsedizioni-ars-utils-help.ts"],"sourcesContent":["import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, DestroyRef, Injectable, OnDestroy, ViewEncapsulation, afterNextRender, computed, inject, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTree, MatTreeModule } from '@angular/material/tree';\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { DialogService, FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { BehaviorSubject } from 'rxjs';\nimport { HelpService } from '../../services/help.service';\n\nexport interface HelpViewerDialogData {\n id?: string;\n}\n\nexport class IndexInfo {\n id: string;\n parent?: IndexInfo;\n name: string;\n itemsCount?: number;\n children?: IndexInfo[];\n}\n\nexport class IndexNode extends IndexInfo {\n expandable: boolean;\n level: number;\n\n constructor(item: IndexInfo, level: number) {\n super();\n\n // Flattened implementation\n this.expandable = !!item.children && item.children.length > 0;\n this.level = level;\n\n // Data\n this.id = item.id;\n this.name = item.name;\n this.itemsCount = item.itemsCount;\n this.parent = item.parent;\n }\n}\n\n@Injectable()\nexport class IndexTreeDataSource implements OnDestroy {\n dataChange = new BehaviorSubject<IndexInfo[]>([]);\n\n get data(): IndexInfo[] {\n return this.dataChange.value;\n }\n\n ngOnDestroy() {\n this.dataChange.unsubscribe();\n }\n\n /**\n * Initialises the data source with a flat list of root nodes.\n * @param data - Array of root `IndexInfo` items to display in the tree.\n */\n initialize(data: IndexInfo[]) {\n this.dataChange.next(data);\n }\n\n /**\n * Recursively searches the tree for a node with the given id.\n * @param node - The node to start from, or `null`/`undefined` to search from the root.\n * @param id - The id of the node to find.\n * @returns The matching `IndexInfo`, or `undefined` if not found.\n */\n findNode(node: IndexInfo | undefined | null, id: string): IndexInfo | undefined {\n let children: IndexInfo[] | undefined;\n if (node && node.id === id) return node;\n if (node) children = node.children;\n else children = this.data;\n if (children) {\n let _n: IndexInfo | undefined;\n children.some(n => {\n n.parent = node ?? undefined;\n _n = this.findNode(n, id);\n if (_n) return true;\n return false;\n });\n return _n;\n }\n return undefined;\n }\n\n /**\n * Removes the node with the given id from the tree.\n * @param id - The id of the node to remove.\n */\n removeNode(id: string): void {\n const n = this.findNode(null, id);\n if (!n) return;\n if (n.parent) {\n const siblings = n.parent.children;\n if (siblings) {\n const p = siblings.findIndex(c => c.id === id);\n if (p !== -1) {\n siblings.splice(p, 1);\n if (n.parent.itemsCount !== undefined) {\n n.parent.itemsCount--;\n }\n }\n }\n } else {\n const p = this.data.findIndex(c => c.id === id);\n if (p !== -1) {\n this.data.splice(p, 1);\n }\n }\n this.dataChange.next(this.data);\n }\n\n /**\n * Inserts a new node at the beginning of its parent's children, or at the root.\n * @param node - The `IndexInfo` node to insert.\n */\n insertNode(node: IndexInfo): void {\n if (node.parent) {\n node.parent.children ??= [];\n node.parent.children.unshift(node);\n node.parent.itemsCount = (node.parent.itemsCount ?? 0) + 1;\n } else {\n this.data.unshift(node);\n }\n this.dataChange.next(this.data);\n }\n\n /**\n * Renames a node in the tree.\n * @param id - The id of the node to rename.\n * @param name - The new display name.\n */\n renameNode(id: string, name: string): void {\n const n = this.findNode(null, id);\n if (n) {\n n.name = name;\n this.dataChange.next(this.data);\n }\n }\n\n /**\n * Re-emits the current data to all subscribers, triggering a tree refresh.\n */\n update(): void {\n this.dataChange.next(this.data);\n }\n}\n\n@Component({\n host: { 'Bind': SystemUtils.generateUUID() },\n templateUrl: './help-viewer.component.html',\n styleUrls: ['./help-viewer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IndexTreeDataSource],\n standalone: true,\n imports: [FlexLayoutModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogTitle, MatDialogContent,\n MatSidenavModule, MatTreeModule, SafeHtmlPipe]\n})\nexport class HelpViewerComponent {\n readonly indexPane = viewChild.required<MatSidenav>('indexPane');\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly dialogRef = inject(MatDialogRef<HelpViewerComponent>);\n protected readonly dialogData: HelpViewerDialogData = inject(MAT_DIALOG_DATA) ?? { id: '1' };\n private readonly dialogService = inject(DialogService);\n private readonly helpService = inject(HelpService);\n protected readonly breakpointObserver = inject(BreakpointObserver);\n protected readonly busy = signal<boolean>(false);\n protected readonly page = signal<string | null>(null);\n private indexId: string | undefined;\n private indexPaneClosed = false;\n protected indexNode: IndexInfo | undefined;\n private readonly history = signal<Array<{ id: string; position: number }>>([]);\n protected readonly canGoBack = computed(() => this.history().length > 1);\n\n private tree = inject(IndexTreeDataSource);\n readonly matTree = viewChild<MatTree<IndexNode>>(MatTree);\n /** Provides the level of a flat node to the tree component. */\n protected readonly levelAccessor = (node: IndexNode) => node.level;\n /** Flat list of all tree nodes used as the tree data source. */\n protected readonly flatNodes = signal<IndexNode[]>([]);\n private folders?: IndexInfo[];\n protected hasChild = (_: number, _node: IndexNode) => _node.expandable;\n\n constructor() {\n // Subscribe data change\n this.tree.dataChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(data => this.flatNodes.set(this.flattenNodes(data)));\n\n this.getToc();\n\n this.indexId = this.dialogData.id;\n if (this.indexId) {\n this.getChapter(this.indexId);\n }\n\n afterNextRender(() => {\n // Observe layout changes — must run after view init so indexPane is available\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleFilterPaneVisibility());\n\n this.indexPaneClosed = !this.indexPane().opened;\n });\n }\n\n\n /**\n* Handle filter pane visibility\n*/\n private handleFilterPaneVisibility() {\n const indexPane = this.indexPane();\n if (indexPane) {\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\n if (indexPane.opened) {\n indexPane.close();\n }\n } else {\n if (!indexPane.opened && !this.indexPaneClosed) {\n indexPane.open();\n }\n }\n }\n }\n\n /**\n * Shows or hides the index pane when the user clicks the toggle button.\n * Also tracks the user's explicit intent so the pane is not auto-reopened.\n */\n protected toggleIndexPane() {\n this.indexPaneClosed = !this.indexPaneClosed;\n this.indexPane()?.toggle();\n }\n\n\n /**\n * Closes the help viewer dialog.\n */\n protected close(): void {\n this.dialogRef.close();\n }\n\n /**\n * Loads the table of contents from the help service and populates the tree.\n */\n protected getToc(): void {\n this.busy.set(true);\n this.helpService\n .getToc()\n .subscribe({\n next: r => {\n if (!r.success) {\n this.dialogService.error(r.message);\n } else {\n this.folders = r.value.children;\n if (this.folders.length > 0) {\n this.tree.initialize(this.folders);\n this.indexNode = this.folders[0];\n this.expandCurrentFolder(); \n }\n }\n },\n complete: () => {\n this.busy.set(false);\n }\n });\n }\n\n /**\n * Intercepts anchor clicks inside the help page and navigates to the referenced chapter.\n * @param e - The click `MouseEvent` from the page content area.\n * @returns `false` to prevent default browser navigation.\n */\n protected gotoChapter(e: MouseEvent): boolean {\n const el = e.target as HTMLElement | null;\n if (el?.nodeName !== 'A') return false;\n const tag = el.outerHTML;\n let id = '';\n let p = tag.indexOf('help-target=\"');\n if (p !== -1) {\n p += 13;\n while (p < tag.length && tag[p] !== '\"') {\n id += tag[p];\n p++;\n }\n }\n if (id) this.getChapter(id);\n return false;\n }\n\n /**\n * Searches the folder list for a node matching the given id.\n * @param id - The id of the folder to locate.\n * @returns The matching `IndexInfo`, or `undefined` if not found.\n */\n private findFolder(id: string): IndexInfo | undefined {\n let node = undefined;\n if (this.folders) {\n this.folders.some(n => {\n node = this.tree.findNode(n, id);\n if (node) return true;\n return false;\n });\n }\n return node;\n }\n\n /**\n * Expands the tree node that corresponds to the currently selected chapter,\n * and all its ancestor nodes.\n */\n private expandCurrentFolder(): void {\n if (this.indexNode) {\n const current = this.flatNodes().find(n => n.id === this.indexNode!.id);\n if (current) {\n this.matTree()?.expand(current);\n }\n if (this.indexNode.parent) {\n // Expand all ancestors\n let n: IndexInfo | undefined = this.indexNode.parent;\n while (n) {\n const ancestor = this.flatNodes().find(x => x.id === n!.id);\n if (ancestor) this.matTree()?.expand(ancestor);\n n = n.parent;\n }\n }\n }\n }\n\n /**\n * Recursively flattens a nested IndexInfo tree into a depth-first ordered array of IndexNodes.\n * @param items - Root-level nodes to flatten.\n * @param level - Current depth level.\n */\n private flattenNodes(items: IndexInfo[], level = 0): IndexNode[] {\n const result: IndexNode[] = [];\n for (const node of items) {\n result.push(new IndexNode(node, level));\n if (node.children?.length) {\n result.push(...this.flattenNodes(node.children, level + 1));\n }\n }\n return result;\n }\n\n /**\n * Retrieves and displays a help chapter by id.\n * Optionally scrolls to an anchor or pixel offset after loading.\n * @param id - Chapter id, optionally followed by an anchor (`id#anchor`).\n * @param position - Pixel scroll offset to restore (default `0`, meaning top).\n */\n protected getChapter(id: string, position: number = 0): void {\n // Detect anchor if exists\n let anchor: string | undefined;\n const p = id.indexOf('#');\n if (p !== -1) {\n anchor = id.substring(p + 1);\n id = id.substring(0, p);\n }\n if (id !== '.') {\n this.busy.set(true);\n this.helpService.getChapter(id)\n .subscribe({\n next: r => {\n let found = false;\n if (!r.success) {\n this.dialogService.error(\"Capitolo non trovato.\");\n } else {\n if (!position)\n this.history.update(h => [...h, { id: this.indexId ?? '', position: this.getPosition() }]);\n this.indexId = id;\n this.page.set(r.value.data);\n found = (r.value.chapter?.name?.length ?? 0) > 0;\n if (found) {\n // Update folder\n this.indexNode = this.findFolder(id);\n this.expandCurrentFolder();\n // Handle positioning\n this.gotoPosition(anchor, position);\n }\n }\n\n if (!found) {\n this.getChapter(\"1\");\n }\n },\n complete: () => {\n this.busy.set(false);\n }\n });\n } else {\n if (!position)\n this.history.update(h => [...h, { id: this.indexId ?? '', position: this.getPosition() }]);\n // Move on the same chapter\n this.gotoPosition(anchor, position);\n }\n }\n\n /**\n * Scrolls the help content to a named anchor or a numeric pixel offset.\n * @param anchor - Named anchor (`<a name=\"…\">`) to scroll to, if any.\n * @param position - Fallback pixel offset (default `0`).\n */\n protected gotoPosition(anchor: string | undefined, position: number = 0): void {\n setTimeout(() => {\n if (anchor) {\n const elms = document.getElementsByName(anchor.toUpperCase());\n if (elms && elms.length > 0) position = elms[0].offsetTop;\n }\n this.setPosition(position > 0 ? position - 1 : 0);\n }, 50);\n }\n\n /**\n * Returns the current vertical scroll offset of the help content scroller.\n * @returns The `scrollTop` value in pixels, or `0` if the element is not found.\n */\n protected getPosition(): number {\n let elem = document.getElementById('helpviewer-scroller');\n if (elem) {\n return elem.scrollTop;\n }\n return 0;\n }\n\n /**\n * Scrolls the help content scroller to the specified pixel offset.\n * @param position - The vertical pixel offset to scroll to.\n */\n protected setPosition(position: number): void {\n let elem = document.getElementById('helpviewer-scroller');\n if (elem) {\n elem.scrollTo(0, position);\n }\n }\n\n /**\n * Navigates back to the previous chapter in the browsing history.\n */\n protected back(): void {\n const entries = this.history();\n if (entries.length === 0) return;\n const n = entries[entries.length - 1];\n this.history.update(h => h.slice(0, -1));\n this.getChapter(n.id, n.position + 1);\n }\n\n\n\n\n\n}\n","<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\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 class=\"dialog-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 <div mat-dialog-title>Guida</div>\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\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" 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);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [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 #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [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 {{treeNodeRef.isExpanded ? '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-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>","import { Service, inject } from '@angular/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { ApiResult } from '@arsedizioni/ars-utils/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { HelpViewerComponent, IndexInfo } from '../components/help-viewer/help-viewer.component';\r\nimport { Chapter, ChapterBag } from '../definitions';\r\n\r\n@Service()\r\nexport class HelpService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly dialogService = inject(DialogService);\r\n private serviceUri: string | undefined;\r\n\r\n /**\r\n * Initialises the service with the back-end base URI.\r\n * Must be called once during application bootstrap before any other method.\r\n * @param serviceUri - Base URL of the help service (e.g. `'https://api.example.com'`).\r\n */\r\n initialize(serviceUri: string): void {\r\n this.serviceUri = serviceUri;\r\n }\r\n\r\n /**\r\n * Retrieves the HTML content and metadata of a help chapter.\r\n * @param id - The chapter id.\r\n * @param query - Optional search query to highlight within the chapter content.\r\n * @returns An observable that emits `ApiResult<ChapterBag>`.\r\n */\r\n getChapter(id: string, query: string | undefined = undefined) {\r\n return this.httpClient.get<ApiResult<ChapterBag>>(\r\n this.serviceUri +\r\n '/help/chapter/' +\r\n id +\r\n '/?query=' +\r\n (query ?? '')\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves metadata (title, path, etc.) for a help chapter without its content.\r\n * @param id - The chapter id.\r\n * @returns An observable that emits `ApiResult<Chapter>`.\r\n */\r\n getChapterInfo(id: string) {\r\n return this.httpClient.get<ApiResult<Chapter>>(\r\n this.serviceUri + '/help/chapter/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves a raw repository file by id.\r\n * @param id - The repository file id.\r\n * @returns An observable that emits `ApiResult<unknown>`.\r\n */\r\n getRepo(id: string) {\r\n return this.httpClient.get<ApiResult<unknown>>(\r\n this.serviceUri + '/help/repo/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the table of contents as a hierarchical `IndexInfo` tree.\r\n * @returns An observable that emits `ApiResult<IndexInfo>`.\r\n */\r\n getToc() {\r\n return this.httpClient.get<ApiResult<IndexInfo>>(\r\n this.serviceUri + '/help/toc'\r\n );\r\n }\r\n\r\n /**\r\n * Opens the help viewer dialog, optionally pre-navigated to a specific chapter.\r\n * @param id - The chapter id to open (default: `'1'`, the root chapter).\r\n */\r\n show(id: string = '1'): void {\r\n this.dialogService.open(HelpViewerComponent, {\r\n ariaLabel: 'guida',\r\n autoFocus: 'dialog',\r\n restoreFocus: false,\r\n disableClose: true,\r\n data: { id },\r\n minWidth: '375px',\r\n maxWidth: '1200px',\r\n width: '100%',\r\n height: '100%'\r\n });\r\n }\r\n}\r\n\r\n","/*\r\n * Public API Surface \r\n */\r\nexport * from './definitions';\r\nexport * from './services/help.service';\r\nexport * from './components/help-viewer/help-viewer.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -106,10 +106,10 @@ class CoreService {
|
|
|
106
106
|
setProductModules(productModules) {
|
|
107
107
|
this._productModules = productModules;
|
|
108
108
|
}
|
|
109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
110
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CoreService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
110
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: CoreService }); }
|
|
111
111
|
}
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CoreService, decorators: [{
|
|
113
113
|
type: Service
|
|
114
114
|
}] });
|
|
115
115
|
|
|
@@ -203,10 +203,10 @@ class NotificationsService {
|
|
|
203
203
|
downloadNotificationDocument(documentId) {
|
|
204
204
|
return this.httpClient.get(this.core.serviceUri + '/documents/download/' + documentId, { responseType: 'blob' });
|
|
205
205
|
}
|
|
206
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
207
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
207
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: NotificationsService }); }
|
|
208
208
|
}
|
|
209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NotificationsService, decorators: [{
|
|
210
210
|
type: Service
|
|
211
211
|
}] });
|
|
212
212
|
|
|
@@ -266,10 +266,10 @@ class SupportService {
|
|
|
266
266
|
this.core.setProducts(products);
|
|
267
267
|
this.core.setProductModules(productModules);
|
|
268
268
|
}
|
|
269
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
270
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.
|
|
269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SupportService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
270
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.8", ngImport: i0, type: SupportService }); }
|
|
271
271
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SupportService, decorators: [{
|
|
273
273
|
type: Service
|
|
274
274
|
}] });
|
|
275
275
|
|