@arsedizioni/ars-utils 22.6.86 → 22.6.89

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +3158 -3344
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +7616 -4772
  4. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  5. package/fesm2022/arsedizioni-ars-utils-core.date.mjs +321 -702
  6. package/fesm2022/arsedizioni-ars-utils-core.date.mjs.map +1 -1
  7. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +445 -590
  8. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs.map +1 -1
  9. package/fesm2022/arsedizioni-ars-utils-core.mjs +1735 -2370
  10. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs +1280 -1470
  12. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs.map +1 -1
  13. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +1097 -1528
  14. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  15. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +198 -294
  16. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  17. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs +115 -117
  18. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs.map +1 -1
  19. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +1607 -613
  20. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs +840 -367
  22. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs.map +1 -1
  23. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +1634 -651
  24. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs.map +1 -1
  25. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +1255 -792
  26. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs.map +1 -1
  27. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +1410 -357
  28. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map +1 -1
  29. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +2401 -944
  30. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs.map +1 -1
  31. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +1553 -741
  32. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs.map +1 -1
  33. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +901 -430
  34. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs.map +1 -1
  35. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +737 -530
  36. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs.map +1 -1
  37. package/fesm2022/arsedizioni-ars-utils-ui.mjs +6638 -1755
  38. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  39. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +1479 -1207
  40. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs.map +1 -1
  41. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +1003 -270
  42. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs.map +1 -1
  43. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +497 -278
  44. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  45. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs +48 -52
  46. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs.map +1 -1
  47. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs +464 -704
  48. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs.map +1 -1
  49. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +724 -657
  50. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs.map +1 -1
  51. package/fesm2022/arsedizioni-ars-utils.mjs +3 -19
  52. package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
  53. package/package.json +1 -1
  54. package/types/arsedizioni-ars-utils-clipper.common.d.ts +1151 -1163
  55. package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1588 -1426
  56. package/types/arsedizioni-ars-utils-core.d.ts +1169 -1172
  57. package/types/arsedizioni-ars-utils-core.date.d.ts +204 -208
  58. package/types/arsedizioni-ars-utils-core.markdown.d.ts +128 -126
  59. package/types/arsedizioni-ars-utils-core.validators.d.ts +270 -236
  60. package/types/arsedizioni-ars-utils-evolution.common.d.ts +1054 -1067
  61. package/types/arsedizioni-ars-utils-support.common.d.ts +225 -234
  62. package/types/arsedizioni-ars-utils-ui.controls.d.ts +440 -278
  63. package/types/arsedizioni-ars-utils-ui.controls.date.d.ts +24 -28
  64. package/types/arsedizioni-ars-utils-ui.controls.tree.d.ts +172 -136
  65. package/types/arsedizioni-ars-utils-ui.d.ts +2035 -821
  66. package/types/arsedizioni-ars-utils-ui.dialogs.auth.d.ts +327 -322
  67. package/types/arsedizioni-ars-utils-ui.dialogs.d.ts +343 -347
  68. package/types/arsedizioni-ars-utils-ui.dialogs.prompt.d.ts +167 -167
  69. package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts +373 -367
  70. package/types/arsedizioni-ars-utils-ui.files.d.ts +335 -283
  71. package/types/arsedizioni-ars-utils-ui.filters.d.ts +232 -160
  72. package/types/arsedizioni-ars-utils-ui.help.d.ts +204 -211
  73. package/types/arsedizioni-ars-utils-ui.navigation.d.ts +811 -646
  74. package/types/arsedizioni-ars-utils-ui.notifications.d.ts +74 -78
  75. package/types/arsedizioni-ars-utils-ui.oauth.d.ts +102 -62
  76. package/types/arsedizioni-ars-utils-ui.paginator.d.ts +19 -22
  77. package/types/arsedizioni-ars-utils-ui.shell.d.ts +376 -382
  78. package/types/arsedizioni-ars-utils-ui.tinymce.d.ts +244 -231
  79. package/types/arsedizioni-ars-utils.d.ts +1 -3
@@ -1,271 +1,1004 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, signal, ChangeDetectionStrategy, Component, viewChild, DestroyRef, afterNextRender } from '@angular/core';
3
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { form, maxLength, FormField } from '@angular/forms/signals';
5
- import * as i8 from '@angular/material/badge';
6
- import { MatBadgeModule } from '@angular/material/badge';
7
- import * as i2 from '@angular/material/button';
8
- import { MatButtonModule } from '@angular/material/button';
9
- import * as i10 from '@angular/material/checkbox';
10
- import { MatCheckboxModule } from '@angular/material/checkbox';
11
- import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogClose, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
12
- import * as i9 from '@angular/material/divider';
13
- import { MatDividerModule } from '@angular/material/divider';
14
- import * as i5 from '@angular/material/form-field';
15
- import { MatFormFieldModule } from '@angular/material/form-field';
16
- import * as i4 from '@angular/material/icon';
17
- import { MatIconModule } from '@angular/material/icon';
18
- import * as i6 from '@angular/material/input';
19
- import { MatInputModule } from '@angular/material/input';
20
- import * as i7 from '@angular/material/menu';
21
- import { MatMenuModule } from '@angular/material/menu';
22
- import * as i11 from '@angular/material/paginator';
23
- import { MatPaginatorModule } from '@angular/material/paginator';
24
- import * as i3 from '@angular/material/tooltip';
25
- import { MatTooltipModule } from '@angular/material/tooltip';
26
- import { ScreenService, BroadcastService, SafeHtmlPipe, SystemUtils, SelectableModel, FormatPipe } from '@arsedizioni/ars-utils/core';
27
- import { SupportService, SupportMessages } from '@arsedizioni/ars-utils/support.common';
28
- import { DialogService } from '@arsedizioni/ars-utils/ui.dialogs';
29
- import * as i1 from '@arsedizioni/ars-utils/ui';
30
- import { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';
31
- import { finalize } from 'rxjs';
32
- import { saveAs } from 'file-saver';
33
-
34
- class SupportNotificationComponent {
35
- constructor() {
36
- this.screenService = inject(ScreenService);
37
- this.supportService = inject(SupportService);
38
- this.broadcastService = inject(BroadcastService);
39
- this.dialogService = inject(DialogService);
40
- this.dialogData = inject(MAT_DIALOG_DATA);
41
- /** Id of the notification to display, resolved from dialog data. */
42
- this.id = this.dialogData?.id ?? -1;
43
- /** The loaded notification; `undefined` until the fetch completes. */
44
- this.item = signal(undefined, /* @ts-ignore */
45
- ...(ngDevMode ? [{ debugName: "item" }] : /* istanbul ignore next */ []));
46
- this.fetch();
47
- }
48
- /**
49
- * Fetches the notification from the server and populates the `item` signal.
50
- */
51
- fetch() {
52
- this.dialogService.busy('Caricamento in corso...');
53
- this.supportService.notifications.getNotification(this.id)
54
- .pipe(finalize(() => this.dialogService.clearBusy()))
55
- .subscribe(r => {
56
- if (!r.success) {
57
- this.dialogService.error(r.message);
58
- }
59
- else {
60
- this.item.set(r.value);
61
- this.broadcastService.sendMessage(SupportMessages.NOTIFICATION_READ, r.value.id);
62
- }
63
- });
64
- }
65
- /**
66
- * Downloads a binary attachment using FileSaver, or opens a URL document in a new tab.
67
- * @param doc - The notification document to open or download.
68
- */
69
- downloadDocument(doc) {
70
- if (doc.isBinary) {
71
- if (doc.id === undefined)
72
- return;
73
- this.supportService.notifications.downloadNotificationDocument(doc.id).subscribe(blob => {
74
- saveAs(blob);
75
- });
76
- }
77
- else if (doc.url) {
78
- window.open(doc.url, '_blank');
79
- }
80
- }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SupportNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SupportNotificationComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div class=\"support-notification-fixed\">\r\n <div class=\"support-notification-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>{{item()?.title}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\"\r\n aria-label=\"Chiudi\" [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content id=\"notification-scrollable\">\r\n <div id=\"notification-scroller\">\r\n <div [innerHtml]=\"(item()?.text ?? 'Caricamento in corso...') | safeHtml\"></div>\r\n </div>\r\n</mat-dialog-content>\r\n@if (item()?.documents && item()!.documents!.length > 0) {\r\n<mat-dialog-actions class=\"notification-fixed\">\r\n <div style=\"padding: 10px 0\">\r\n <button type=\"button\" mat-button [attr.aria-label]=\"'Documenti scaricabili'\" [matMenuTriggerFor]=\"documentsMenu\">\r\n {{item()!.documents!.length}}\r\n @if (item()!.documents!.length === 1) {\r\n <span>Documento scaricabile</span>\r\n } @else {\r\n <span>Documenti scaricabili</span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #documentsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n @for (doc of item()!.documents; track doc.id) {\r\n <button mat-menu-item (click)=\"downloadDocument(doc)\">\r\n @if (doc.isBinary) {\r\n <mat-icon>attach_file</mat-icon>\r\n } @else {\r\n <mat-icon>link</mat-icon>\r\n }\r\n {{doc.name}}\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n</mat-dialog-actions>\r\n}", 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}}.mat-mdc-dialog-content{max-height:unset!important}img{border-radius:12px!important;transition:box-shadow .3s ease!important}@media(prefers-color-scheme:light){img{box-shadow:0 25px 25px #0000004d!important}}@media(prefers-color-scheme:dark){img{box-shadow:0 25px 25px #ffffff1a!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: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { 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: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
83
- }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SupportNotificationComponent, decorators: [{
85
- type: Component,
86
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FlexLayoutModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose, MatIconModule, MatDialogContent,
87
- MatDialogActions, MatMenuModule, SafeHtmlPipe], template: "<div class=\"support-notification-fixed\">\r\n <div class=\"support-notification-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>{{item()?.title}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\"\r\n aria-label=\"Chiudi\" [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content id=\"notification-scrollable\">\r\n <div id=\"notification-scroller\">\r\n <div [innerHtml]=\"(item()?.text ?? 'Caricamento in corso...') | safeHtml\"></div>\r\n </div>\r\n</mat-dialog-content>\r\n@if (item()?.documents && item()!.documents!.length > 0) {\r\n<mat-dialog-actions class=\"notification-fixed\">\r\n <div style=\"padding: 10px 0\">\r\n <button type=\"button\" mat-button [attr.aria-label]=\"'Documenti scaricabili'\" [matMenuTriggerFor]=\"documentsMenu\">\r\n {{item()!.documents!.length}}\r\n @if (item()!.documents!.length === 1) {\r\n <span>Documento scaricabile</span>\r\n } @else {\r\n <span>Documenti scaricabili</span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #documentsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n @for (doc of item()!.documents; track doc.id) {\r\n <button mat-menu-item (click)=\"downloadDocument(doc)\">\r\n @if (doc.isBinary) {\r\n <mat-icon>attach_file</mat-icon>\r\n } @else {\r\n <mat-icon>link</mat-icon>\r\n }\r\n {{doc.name}}\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n</mat-dialog-actions>\r\n}", 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}}.mat-mdc-dialog-content{max-height:unset!important}img{border-radius:12px!important;transition:box-shadow .3s ease!important}@media(prefers-color-scheme:light){img{box-shadow:0 25px 25px #0000004d!important}}@media(prefers-color-scheme:dark){img{box-shadow:0 25px 25px #ffffff1a!important}}\n"] }]
88
- }], ctorParameters: () => [] });
89
-
90
- class SupportNotificationsBrowserComponent {
91
- constructor() {
92
- this.paginator = viewChild.required('paginator', /* @ts-ignore */
93
- ...(ngDevMode ? [{ debugName: "paginator" }] : /* istanbul ignore next */ []));
94
- this.screenService = inject(ScreenService);
95
- this.supportService = inject(SupportService);
96
- this.broadcastService = inject(BroadcastService);
97
- this.dialogService = inject(DialogService);
98
- this.destroyRef = inject(DestroyRef);
99
- this.selection = new SelectableModel(true, 'id');
100
- this.searchParams = {
101
- first: 0,
102
- count: 25
103
- };
104
- /** Current free-text search value, bound to the search input. */
105
- this.searchText = signal('', /* @ts-ignore */
106
- ...(ngDevMode ? [{ debugName: "searchText" }] : /* istanbul ignore next */ []));
107
- /** Signal form for the search box (max 200 characters). */
108
- this.searchForm = form(this.searchText, p => {
109
- maxLength(p, 200);
110
- });
111
- this.total = signal(-1, /* @ts-ignore */
112
- ...(ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []));
113
- this.items = signal([], /* @ts-ignore */
114
- ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
115
- // React to message broadcasting
116
- this.broadcastService.getMessage()
117
- .pipe(takeUntilDestroyed(this.destroyRef))
118
- .subscribe(message => {
119
- if (message.id === SupportMessages.NOTIFICATION_READ) {
120
- this.items.update(list => list.map(n => n.id === message.data ? { ...n, isRead: true } : n));
121
- }
122
- });
123
- afterNextRender(() => this.find());
124
- }
125
- /**
126
- * Scrolls the notifications list back to the top.
127
- */
128
- updateScroll() {
129
- const elem = document.getElementById('notifications-browser-scroller');
130
- if (elem?.parentElement) {
131
- elem.parentElement.scrollTop = 0;
132
- }
133
- }
134
- /**
135
- * Resets the `isMenuOpen` flag on all items after a context menu is closed.
136
- */
137
- updateMenuButtonsVisibility() {
138
- this.items.update(list => list.map(n => ({ ...n, isMenuOpen: false })));
139
- }
140
- /**
141
- * Returns the ids of the currently selected items.
142
- * Shows an error and returns `undefined` when the selection exceeds 50 items.
143
- * @returns An array of selected notification ids, or `undefined` on validation failure.
144
- */
145
- getSelectedIds() {
146
- if ((this.selection.all?.length ?? 0) > 50) {
147
- this.dialogService.error('La selezione non può contenere più di 50 elementi.');
148
- return undefined;
149
- }
150
- return this.selection.all?.map(n => n.id) ?? [];
151
- }
152
- /**
153
- * Returns the CSS class to apply to the read-state indicator stripe.
154
- * @param item - The notification to evaluate.
155
- * @returns `'unread-bg'` when the notification has not been read, otherwise `undefined`.
156
- */
157
- getItemStateCssClass(item) {
158
- return !item.isRead ? 'unread-bg' : undefined;
159
- }
160
- /**
161
- * Returns the tooltip text for the read-state indicator stripe.
162
- * @param item - The notification to evaluate.
163
- * @returns `'Non letto'` when unread, otherwise an empty string.
164
- */
165
- getItemStateTooltip(item) {
166
- return !item.isRead ? 'Non letto' : '';
167
- }
168
- /**
169
- * Resets pagination to page 0 and fetches a fresh result set.
170
- */
171
- find() {
172
- this.searchParams.first = 0;
173
- const paginator = this.paginator();
174
- if (paginator) {
175
- paginator.pageIndex = 0;
176
- }
177
- this.fetch();
178
- }
179
- /**
180
- * Fetches the current page of notifications from the server.
181
- */
182
- fetch() {
183
- // Commit the live search text to the query parameters at fetch time.
184
- this.searchParams.any = this.searchText() || undefined;
185
- this.dialogService.busy('Caricamento in corso...');
186
- this.supportService.notifications.queryNotifications(this.searchParams)
187
- .pipe(finalize(() => this.dialogService.clearBusy()))
188
- .subscribe(r => {
189
- if (!r.success) {
190
- this.dialogService.error(r.message);
191
- }
192
- else {
193
- this.items.set(r.value?.items ?? []);
194
- this.total.set(r.value?.total ?? 0);
195
- this.updateScroll();
196
- }
197
- });
198
- }
199
- /**
200
- * Handles paginator page changes and loads the corresponding result page.
201
- * @param e - The `PageEvent` emitted by `MatPaginator`.
202
- */
203
- fetchMore(e) {
204
- const first = e.pageIndex * (this.searchParams.count ?? 25);
205
- this.searchParams.first = first;
206
- this.fetch();
207
- }
208
- /**
209
- * Marks one or more notifications as read or unread.
210
- * When no specific item is supplied, acts on the current selection.
211
- * @param item - A single notification to mark, or `undefined` to use the selection.
212
- * @param unmark - `true` to mark as unread; `false` (default) to mark as read.
213
- */
214
- mark(item, unmark = false) {
215
- if (!item && !this.selection.all?.length)
216
- return;
217
- const ids = item ? [item.id] : this.getSelectedIds();
218
- if (!ids)
219
- return;
220
- this.dialogService.busy('Aggiornamento in corso...');
221
- this.supportService.notifications.markNotifications({ ids, unmark })
222
- .pipe(finalize(() => this.dialogService.clearBusy()))
223
- .subscribe(r => {
224
- if (!r.success) {
225
- this.dialogService.error(r.message);
226
- }
227
- else {
228
- const idSet = new Set(ids);
229
- this.items.update(list => list.map(n => idSet.has(n.id) ? { ...n, isRead: !unmark } : n));
230
- this.selection.clear();
231
- this.supportService.notifications.countUnreadNotifications();
232
- }
233
- });
234
- }
235
- /**
236
- * Opens the notification detail dialog for the given item.
237
- * @param item - The notification to display.
238
- */
239
- show(item) {
240
- this.dialogService.open(SupportNotificationComponent, {
241
- ariaLabel: 'visualizza notifica',
242
- autoFocus: 'dialog',
243
- restoreFocus: false,
244
- disableClose: true,
245
- data: { id: item.id },
246
- minWidth: '375px',
247
- maxWidth: '900px',
248
- width: '99%',
249
- height: '99%'
250
- });
251
- }
252
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SupportNotificationsBrowserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SupportNotificationsBrowserComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"notifications-browser-fixed\">\n <div class=\"notifications-browser-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>Novit\u00E0 e informazioni</div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\n <mat-label>Cerca</mat-label>\n <input matInput #searchInput=\"matInput\" type=\"text\" [formField]=\"searchForm\"\n (keyup.enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\n @if (searchText()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"searchText.set('')\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <div fxFlexAlign=\"center\">\n @if (selection.hasValue()) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\n <mat-icon>clear</mat-icon>Deseleziona tutti\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(undefined, true)\">\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\n </button>\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(undefined)\">\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\n </button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<mat-dialog-content id=\"notifications-browser-scrollable\">\n <div id=\"notifications-browser-scroller\">\n @if (total() === 0) {\n <div>\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\n </div>\n } @else {\n <div>\n @for (item of items(); track item.id; let i = $index) {\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\n [matContextMenuTriggerFor]=\"contextMenu\" [matContextMenuTriggerData]=\"{item: item}\">\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [class.news-selected]=\"selection.isSelected(item.id)\"\n [class.news-read]=\"item.isRead\">\n <div fxFlex=\"6px\" [class]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\n </div>\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\n [checked]=\"selection.isSelected(item.id)\">\n </mat-checkbox>\n }\n </div>\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\n <div class=\"info-1 uppercase\">\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\n <div>{{item.title}}</div>\n <div class=\"info-2 uppercase\">\n {{item.productNames}}\n @if (item.productModuleNames) {\n <span> | {{item.productModuleNames}}</span>\n }\n </div>\n </div>\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\"\n [hidden]=\"!(item.isOver || item.isMenuOpen || selection.isSelected(item.id))\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n </div>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n @if (item.isRead) {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\n <mat-icon>flag</mat-icon>Segna come da leggere\n </button>\n } @else {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\n </button>\n }\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"notifications-browser-fixed\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend unread-bg\"></div>\n da leggere\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\n </div>\n </div>\n</mat-dialog-actions>", 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}}.news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .legend:not(:first-of-type){margin-left: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: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], 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: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatContextMenuTrigger, selector: "[matContextMenuTriggerFor]", inputs: ["matContextMenuTriggerFor", "matContextMenuTriggerData", "matContextMenuTriggerRestoreFocus", "matContextMenuTriggerDisabled"], outputs: ["menuOpened", "menuClosed"], exportAs: ["matContextMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i11.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "pipe", type: FormatPipe, name: "format" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
254
- }
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SupportNotificationsBrowserComponent, decorators: [{
256
- type: Component,
257
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FlexLayoutModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose,
258
- MatIconModule, MatFormFieldModule, MatInputModule, FormField, MatMenuModule, MatBadgeModule, MatDividerModule, MatDialogContent,
259
- MatCheckboxModule, MatDialogActions, MatPaginatorModule, FormatPipe], template: "<div class=\"notifications-browser-fixed\">\n <div class=\"notifications-browser-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>Novit\u00E0 e informazioni</div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\n <mat-label>Cerca</mat-label>\n <input matInput #searchInput=\"matInput\" type=\"text\" [formField]=\"searchForm\"\n (keyup.enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\n @if (searchText()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"searchText.set('')\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <div fxFlexAlign=\"center\">\n @if (selection.hasValue()) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\n <mat-icon>clear</mat-icon>Deseleziona tutti\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(undefined, true)\">\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\n </button>\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(undefined)\">\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\n </button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<mat-dialog-content id=\"notifications-browser-scrollable\">\n <div id=\"notifications-browser-scroller\">\n @if (total() === 0) {\n <div>\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\n </div>\n } @else {\n <div>\n @for (item of items(); track item.id; let i = $index) {\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\n [matContextMenuTriggerFor]=\"contextMenu\" [matContextMenuTriggerData]=\"{item: item}\">\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [class.news-selected]=\"selection.isSelected(item.id)\"\n [class.news-read]=\"item.isRead\">\n <div fxFlex=\"6px\" [class]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\n </div>\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\n [checked]=\"selection.isSelected(item.id)\">\n </mat-checkbox>\n }\n </div>\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\n <div class=\"info-1 uppercase\">\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\n <div>{{item.title}}</div>\n <div class=\"info-2 uppercase\">\n {{item.productNames}}\n @if (item.productModuleNames) {\n <span> | {{item.productModuleNames}}</span>\n }\n </div>\n </div>\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\"\n [hidden]=\"!(item.isOver || item.isMenuOpen || selection.isSelected(item.id))\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n </div>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n @if (item.isRead) {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\n <mat-icon>flag</mat-icon>Segna come da leggere\n </button>\n } @else {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\n </button>\n }\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"notifications-browser-fixed\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend unread-bg\"></div>\n da leggere\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\n </div>\n </div>\n</mat-dialog-actions>", 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}}.news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .legend:not(:first-of-type){margin-left:10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"] }]
260
- }], ctorParameters: () => [], propDecorators: { paginator: [{ type: i0.ViewChild, args: ['paginator', { isSignal: true }] }] } });
261
-
262
- /*
263
- * Public API Surface of @arsedizioni/ars-utils/ui.notifications
264
- */
265
-
266
- /**
267
- * Generated bundle index. Do not edit.
268
- */
269
-
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, afterNextRender, inject, signal, viewChild } from "@angular/core";
3
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
4
+ import { FormField, form, maxLength } from "@angular/forms/signals";
5
+ import * as i8 from "@angular/material/badge";
6
+ import { MatBadgeModule } from "@angular/material/badge";
7
+ import * as i2 from "@angular/material/button";
8
+ import { MatButtonModule } from "@angular/material/button";
9
+ import * as i10 from "@angular/material/checkbox";
10
+ import { MatCheckboxModule } from "@angular/material/checkbox";
11
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from "@angular/material/dialog";
12
+ import * as i9 from "@angular/material/divider";
13
+ import { MatDividerModule } from "@angular/material/divider";
14
+ import * as i5 from "@angular/material/form-field";
15
+ import { MatFormFieldModule } from "@angular/material/form-field";
16
+ import * as i4 from "@angular/material/icon";
17
+ import { MatIconModule } from "@angular/material/icon";
18
+ import * as i6 from "@angular/material/input";
19
+ import { MatInputModule } from "@angular/material/input";
20
+ import * as i5$1 from "@angular/material/menu";
21
+ import { MatMenuModule } from "@angular/material/menu";
22
+ import * as i11 from "@angular/material/paginator";
23
+ import { MatPaginatorModule } from "@angular/material/paginator";
24
+ import * as i3 from "@angular/material/tooltip";
25
+ import { MatTooltipModule } from "@angular/material/tooltip";
26
+ import { BroadcastService, FormatPipe, SafeHtmlPipe, ScreenService, SelectableModel, SystemUtils } from "@arsedizioni/ars-utils/core";
27
+ import { SupportMessages, SupportService } from "@arsedizioni/ars-utils/support.common";
28
+ import { DialogService } from "@arsedizioni/ars-utils/ui.dialogs";
29
+ import * as i1 from "@arsedizioni/ars-utils/ui";
30
+ import { FlexLayoutModule } from "@arsedizioni/ars-utils/ui";
31
+ import { finalize } from "rxjs";
32
+ import { saveAs } from "file-saver";
33
+ var SupportNotificationComponent = class SupportNotificationComponent {
34
+ constructor() {
35
+ this.screenService = inject(ScreenService);
36
+ this.supportService = inject(SupportService);
37
+ this.broadcastService = inject(BroadcastService);
38
+ this.dialogService = inject(DialogService);
39
+ this.dialogData = inject(MAT_DIALOG_DATA);
40
+ this.id = this.dialogData?.id ?? -1;
41
+ this.item = signal(void 0, ...ngDevMode ? [{ debugName: "item" }] : /* istanbul ignore next */ []);
42
+ this.fetch();
43
+ }
44
+ fetch() {
45
+ this.dialogService.busy("Caricamento in corso...");
46
+ this.supportService.notifications.getNotification(this.id).pipe(finalize(() => this.dialogService.clearBusy())).subscribe((r) => {
47
+ if (!r.success) this.dialogService.error(r.message);
48
+ else {
49
+ this.item.set(r.value);
50
+ this.broadcastService.sendMessage(SupportMessages.NOTIFICATION_READ, r.value.id);
51
+ }
52
+ });
53
+ }
54
+ downloadDocument(doc) {
55
+ if (doc.isBinary) {
56
+ if (doc.id === void 0) return;
57
+ this.supportService.notifications.downloadNotificationDocument(doc.id).subscribe((blob) => {
58
+ saveAs(blob);
59
+ });
60
+ } else if (doc.url) window.open(doc.url, "_blank");
61
+ }
62
+ static {
63
+ this.ɵfac = i0.ɵɵngDeclareFactory({
64
+ minVersion: "12.0.0",
65
+ version: "22.2.1",
66
+ ngImport: i0,
67
+ type: SupportNotificationComponent,
68
+ deps: [],
69
+ target: i0.ɵɵFactoryTarget.Component
70
+ });
71
+ }
72
+ static {
73
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
74
+ minVersion: "17.0.0",
75
+ version: "22.2.1",
76
+ type: SupportNotificationComponent,
77
+ isStandalone: true,
78
+ selector: "ng-component",
79
+ host: { attributes: { "Bind": SystemUtils.generateUUID() } },
80
+ ngImport: i0,
81
+ template: "<div class=\"support-notification-fixed\">\r\n <div class=\"support-notification-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>{{item()?.title}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\"\r\n aria-label=\"Chiudi\" [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content id=\"notification-scrollable\">\r\n <div id=\"notification-scroller\">\r\n <div [innerHtml]=\"(item()?.text ?? 'Caricamento in corso...') | safeHtml\"></div>\r\n </div>\r\n</mat-dialog-content>\r\n@if (item()?.documents && item()!.documents!.length > 0) {\r\n<mat-dialog-actions class=\"notification-fixed\">\r\n <div style=\"padding: 10px 0\">\r\n <button type=\"button\" mat-button [attr.aria-label]=\"'Documenti scaricabili'\" [matMenuTriggerFor]=\"documentsMenu\">\r\n {{item()!.documents!.length}}\r\n @if (item()!.documents!.length === 1) {\r\n <span>Documento scaricabile</span>\r\n } @else {\r\n <span>Documenti scaricabili</span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #documentsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n @for (doc of item()!.documents; track doc.id) {\r\n <button mat-menu-item (click)=\"downloadDocument(doc)\">\r\n @if (doc.isBinary) {\r\n <mat-icon>attach_file</mat-icon>\r\n } @else {\r\n <mat-icon>link</mat-icon>\r\n }\r\n {{doc.name}}\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n</mat-dialog-actions>\r\n}",
82
+ 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}}.mat-mdc-dialog-content{max-height:unset!important}img{border-radius:12px!important;transition:box-shadow .3s ease!important}@media(prefers-color-scheme:light){img{box-shadow:0 25px 25px #0000004d!important}}@media(prefers-color-scheme:dark){img{box-shadow:0 25px 25px #ffffff1a!important}}\n"],
83
+ dependencies: [
84
+ {
85
+ kind: "ngmodule",
86
+ type: FlexLayoutModule
87
+ },
88
+ {
89
+ kind: "directive",
90
+ type: i1.FxLayoutDirective,
91
+ 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] ",
92
+ inputs: [
93
+ "fxLayout",
94
+ "fxLayout.xs",
95
+ "fxLayout.sm",
96
+ "fxLayout.md",
97
+ "fxLayout.lg",
98
+ "fxLayout.xl",
99
+ "fxLayout.lt-sm",
100
+ "fxLayout.lt-md",
101
+ "fxLayout.lt-lg",
102
+ "fxLayout.lt-xl",
103
+ "fxLayout.gt-xs",
104
+ "fxLayout.gt-sm",
105
+ "fxLayout.gt-md",
106
+ "fxLayout.gt-lg"
107
+ ]
108
+ },
109
+ {
110
+ kind: "directive",
111
+ type: i1.FxFlexDirective,
112
+ 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] ",
113
+ inputs: [
114
+ "fxFlex",
115
+ "fxFlex.xs",
116
+ "fxFlex.sm",
117
+ "fxFlex.md",
118
+ "fxFlex.lg",
119
+ "fxFlex.xl",
120
+ "fxFlex.lt-sm",
121
+ "fxFlex.lt-md",
122
+ "fxFlex.lt-lg",
123
+ "fxFlex.lt-xl",
124
+ "fxFlex.gt-xs",
125
+ "fxFlex.gt-sm",
126
+ "fxFlex.gt-md",
127
+ "fxFlex.gt-lg"
128
+ ]
129
+ },
130
+ {
131
+ kind: "directive",
132
+ type: i1.FxLayoutAlignDirective,
133
+ 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] ",
134
+ inputs: [
135
+ "fxLayoutAlign",
136
+ "fxLayoutAlign.xs",
137
+ "fxLayoutAlign.sm",
138
+ "fxLayoutAlign.md",
139
+ "fxLayoutAlign.lg",
140
+ "fxLayoutAlign.xl",
141
+ "fxLayoutAlign.lt-sm",
142
+ "fxLayoutAlign.lt-md",
143
+ "fxLayoutAlign.lt-lg",
144
+ "fxLayoutAlign.lt-xl",
145
+ "fxLayoutAlign.gt-xs",
146
+ "fxLayoutAlign.gt-sm",
147
+ "fxLayoutAlign.gt-md",
148
+ "fxLayoutAlign.gt-lg"
149
+ ]
150
+ },
151
+ {
152
+ kind: "directive",
153
+ type: i1.FxLayoutGapDirective,
154
+ 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] ",
155
+ inputs: [
156
+ "fxLayoutGap",
157
+ "fxLayoutGap.xs",
158
+ "fxLayoutGap.sm",
159
+ "fxLayoutGap.md",
160
+ "fxLayoutGap.lg",
161
+ "fxLayoutGap.xl",
162
+ "fxLayoutGap.lt-sm",
163
+ "fxLayoutGap.lt-md",
164
+ "fxLayoutGap.lt-lg",
165
+ "fxLayoutGap.lt-xl",
166
+ "fxLayoutGap.gt-xs",
167
+ "fxLayoutGap.gt-sm",
168
+ "fxLayoutGap.gt-md",
169
+ "fxLayoutGap.gt-lg"
170
+ ]
171
+ },
172
+ {
173
+ kind: "directive",
174
+ type: i1.FxFlexAlignDirective,
175
+ 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] ",
176
+ inputs: [
177
+ "fxFlexAlign",
178
+ "fxFlexAlign.xs",
179
+ "fxFlexAlign.sm",
180
+ "fxFlexAlign.md",
181
+ "fxFlexAlign.lg",
182
+ "fxFlexAlign.xl",
183
+ "fxFlexAlign.lt-sm",
184
+ "fxFlexAlign.lt-md",
185
+ "fxFlexAlign.lt-lg",
186
+ "fxFlexAlign.lt-xl",
187
+ "fxFlexAlign.gt-xs",
188
+ "fxFlexAlign.gt-sm",
189
+ "fxFlexAlign.gt-md",
190
+ "fxFlexAlign.gt-lg"
191
+ ]
192
+ },
193
+ {
194
+ kind: "directive",
195
+ type: i1.FxFlexFillDirective,
196
+ 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] ",
197
+ inputs: [
198
+ "fxFlexFill",
199
+ "fxFill",
200
+ "fxFlexFill.xs",
201
+ "fxFlexFill.sm",
202
+ "fxFlexFill.md",
203
+ "fxFlexFill.lg",
204
+ "fxFlexFill.xl",
205
+ "fxFlexFill.lt-sm",
206
+ "fxFlexFill.lt-md",
207
+ "fxFlexFill.lt-lg",
208
+ "fxFlexFill.lt-xl",
209
+ "fxFlexFill.gt-xs",
210
+ "fxFlexFill.gt-sm",
211
+ "fxFlexFill.gt-md",
212
+ "fxFlexFill.gt-lg"
213
+ ]
214
+ },
215
+ {
216
+ kind: "directive",
217
+ type: MatDialogTitle,
218
+ selector: "[mat-dialog-title], [matDialogTitle]",
219
+ inputs: ["id"],
220
+ exportAs: ["matDialogTitle"]
221
+ },
222
+ {
223
+ kind: "ngmodule",
224
+ type: MatButtonModule
225
+ },
226
+ {
227
+ kind: "component",
228
+ type: i2.MatButton,
229
+ selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ",
230
+ inputs: ["matButton"],
231
+ exportAs: ["matButton", "matAnchor"]
232
+ },
233
+ {
234
+ kind: "component",
235
+ type: i2.MatIconButton,
236
+ selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]",
237
+ exportAs: ["matButton", "matAnchor"]
238
+ },
239
+ {
240
+ kind: "ngmodule",
241
+ type: MatTooltipModule
242
+ },
243
+ {
244
+ kind: "directive",
245
+ type: i3.MatTooltip,
246
+ selector: "[matTooltip]",
247
+ inputs: [
248
+ "matTooltipPosition",
249
+ "matTooltipPositionAtOrigin",
250
+ "matTooltipDisabled",
251
+ "matTooltipShowDelay",
252
+ "matTooltipHideDelay",
253
+ "matTooltipTouchGestures",
254
+ "matTooltip",
255
+ "matTooltipClass"
256
+ ],
257
+ exportAs: ["matTooltip"]
258
+ },
259
+ {
260
+ kind: "directive",
261
+ type: MatDialogClose,
262
+ selector: "[mat-dialog-close], [matDialogClose]",
263
+ inputs: [
264
+ "aria-label",
265
+ "type",
266
+ "mat-dialog-close",
267
+ "matDialogClose"
268
+ ],
269
+ exportAs: ["matDialogClose"]
270
+ },
271
+ {
272
+ kind: "ngmodule",
273
+ type: MatIconModule
274
+ },
275
+ {
276
+ kind: "component",
277
+ type: i4.MatIcon,
278
+ selector: "mat-icon",
279
+ inputs: [
280
+ "color",
281
+ "inline",
282
+ "svgIcon",
283
+ "fontSet",
284
+ "fontIcon"
285
+ ],
286
+ exportAs: ["matIcon"]
287
+ },
288
+ {
289
+ kind: "directive",
290
+ type: MatDialogContent,
291
+ selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]"
292
+ },
293
+ {
294
+ kind: "directive",
295
+ type: MatDialogActions,
296
+ selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",
297
+ inputs: ["align"]
298
+ },
299
+ {
300
+ kind: "ngmodule",
301
+ type: MatMenuModule
302
+ },
303
+ {
304
+ kind: "component",
305
+ type: i5$1.MatMenu,
306
+ selector: "mat-menu",
307
+ inputs: [
308
+ "backdropClass",
309
+ "aria-label",
310
+ "aria-labelledby",
311
+ "aria-describedby",
312
+ "xPosition",
313
+ "yPosition",
314
+ "overlapTrigger",
315
+ "hasBackdrop",
316
+ "class",
317
+ "classList"
318
+ ],
319
+ outputs: ["closed", "close"],
320
+ exportAs: ["matMenu"]
321
+ },
322
+ {
323
+ kind: "component",
324
+ type: i5$1.MatMenuItem,
325
+ selector: "[mat-menu-item]",
326
+ inputs: [
327
+ "role",
328
+ "disabled",
329
+ "disabledInteractive",
330
+ "disableRipple"
331
+ ],
332
+ exportAs: ["matMenuItem"]
333
+ },
334
+ {
335
+ kind: "directive",
336
+ type: i5$1.MatMenuContent,
337
+ selector: "ng-template[matMenuContent]"
338
+ },
339
+ {
340
+ kind: "directive",
341
+ type: i5$1.MatMenuTrigger,
342
+ selector: "[mat-menu-trigger-for], [matMenuTriggerFor]",
343
+ inputs: [
344
+ "mat-menu-trigger-for",
345
+ "matMenuTriggerFor",
346
+ "matMenuTriggerData",
347
+ "matMenuTriggerRestoreFocus"
348
+ ],
349
+ outputs: [
350
+ "menuOpened",
351
+ "onMenuOpen",
352
+ "menuClosed",
353
+ "onMenuClose"
354
+ ],
355
+ exportAs: ["matMenuTrigger"]
356
+ },
357
+ {
358
+ kind: "pipe",
359
+ type: SafeHtmlPipe,
360
+ name: "safeHtml"
361
+ }
362
+ ],
363
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
364
+ });
365
+ }
366
+ };
367
+ i0.ɵɵngDeclareClassMetadata({
368
+ minVersion: "12.0.0",
369
+ version: "22.2.1",
370
+ ngImport: i0,
371
+ type: SupportNotificationComponent,
372
+ decorators: [{
373
+ type: Component,
374
+ args: [{
375
+ host: { "Bind": SystemUtils.generateUUID() },
376
+ standalone: true,
377
+ changeDetection: ChangeDetectionStrategy.OnPush,
378
+ imports: [
379
+ FlexLayoutModule,
380
+ MatDialogTitle,
381
+ MatButtonModule,
382
+ MatTooltipModule,
383
+ MatDialogClose,
384
+ MatIconModule,
385
+ MatDialogContent,
386
+ MatDialogActions,
387
+ MatMenuModule,
388
+ SafeHtmlPipe
389
+ ],
390
+ template: "<div class=\"support-notification-fixed\">\r\n <div class=\"support-notification-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>{{item()?.title}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\"\r\n aria-label=\"Chiudi\" [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content id=\"notification-scrollable\">\r\n <div id=\"notification-scroller\">\r\n <div [innerHtml]=\"(item()?.text ?? 'Caricamento in corso...') | safeHtml\"></div>\r\n </div>\r\n</mat-dialog-content>\r\n@if (item()?.documents && item()!.documents!.length > 0) {\r\n<mat-dialog-actions class=\"notification-fixed\">\r\n <div style=\"padding: 10px 0\">\r\n <button type=\"button\" mat-button [attr.aria-label]=\"'Documenti scaricabili'\" [matMenuTriggerFor]=\"documentsMenu\">\r\n {{item()!.documents!.length}}\r\n @if (item()!.documents!.length === 1) {\r\n <span>Documento scaricabile</span>\r\n } @else {\r\n <span>Documenti scaricabili</span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #documentsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n @for (doc of item()!.documents; track doc.id) {\r\n <button mat-menu-item (click)=\"downloadDocument(doc)\">\r\n @if (doc.isBinary) {\r\n <mat-icon>attach_file</mat-icon>\r\n } @else {\r\n <mat-icon>link</mat-icon>\r\n }\r\n {{doc.name}}\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n</mat-dialog-actions>\r\n}",
391
+ 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}}.mat-mdc-dialog-content{max-height:unset!important}img{border-radius:12px!important;transition:box-shadow .3s ease!important}@media(prefers-color-scheme:light){img{box-shadow:0 25px 25px #0000004d!important}}@media(prefers-color-scheme:dark){img{box-shadow:0 25px 25px #ffffff1a!important}}\n"]
392
+ }]
393
+ }],
394
+ ctorParameters: () => []
395
+ });
396
+ var SupportNotificationsBrowserComponent = class SupportNotificationsBrowserComponent {
397
+ constructor() {
398
+ this.paginator = viewChild.required("paginator", ...ngDevMode ? [{ debugName: "paginator" }] : /* istanbul ignore next */ []);
399
+ this.screenService = inject(ScreenService);
400
+ this.supportService = inject(SupportService);
401
+ this.broadcastService = inject(BroadcastService);
402
+ this.dialogService = inject(DialogService);
403
+ this.destroyRef = inject(DestroyRef);
404
+ this.selection = new SelectableModel(true, "id");
405
+ this.searchParams = {
406
+ first: 0,
407
+ count: 25
408
+ };
409
+ this.searchText = signal("", ...ngDevMode ? [{ debugName: "searchText" }] : /* istanbul ignore next */ []);
410
+ this.searchForm = form(this.searchText, (p) => {
411
+ maxLength(p, 200);
412
+ });
413
+ this.total = signal(-1, ...ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []);
414
+ this.items = signal([], ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
415
+ this.broadcastService.getMessage().pipe(takeUntilDestroyed(this.destroyRef)).subscribe((message) => {
416
+ if (message.id === SupportMessages.NOTIFICATION_READ) this.items.update((list) => list.map((n) => n.id === message.data ? {
417
+ ...n,
418
+ isRead: true
419
+ } : n));
420
+ });
421
+ afterNextRender(() => this.find());
422
+ }
423
+ updateScroll() {
424
+ const elem = document.getElementById("notifications-browser-scroller");
425
+ if (elem?.parentElement) elem.parentElement.scrollTop = 0;
426
+ }
427
+ updateMenuButtonsVisibility() {
428
+ this.items.update((list) => list.map((n) => ({
429
+ ...n,
430
+ isMenuOpen: false
431
+ })));
432
+ }
433
+ getSelectedIds() {
434
+ if ((this.selection.all?.length ?? 0) > 50) {
435
+ this.dialogService.error("La selezione non può contenere più di 50 elementi.");
436
+ return;
437
+ }
438
+ return this.selection.all?.map((n) => n.id) ?? [];
439
+ }
440
+ getItemStateCssClass(item) {
441
+ return !item.isRead ? "unread-bg" : void 0;
442
+ }
443
+ getItemStateTooltip(item) {
444
+ return !item.isRead ? "Non letto" : "";
445
+ }
446
+ find() {
447
+ this.searchParams.first = 0;
448
+ const paginator = this.paginator();
449
+ if (paginator) paginator.pageIndex = 0;
450
+ this.fetch();
451
+ }
452
+ fetch() {
453
+ this.searchParams.any = this.searchText() || void 0;
454
+ this.dialogService.busy("Caricamento in corso...");
455
+ this.supportService.notifications.queryNotifications(this.searchParams).pipe(finalize(() => this.dialogService.clearBusy())).subscribe((r) => {
456
+ if (!r.success) this.dialogService.error(r.message);
457
+ else {
458
+ this.items.set(r.value?.items ?? []);
459
+ this.total.set(r.value?.total ?? 0);
460
+ this.updateScroll();
461
+ }
462
+ });
463
+ }
464
+ fetchMore(e) {
465
+ const first = e.pageIndex * (this.searchParams.count ?? 25);
466
+ this.searchParams.first = first;
467
+ this.fetch();
468
+ }
469
+ mark(item, unmark = false) {
470
+ if (!item && !this.selection.all?.length) return;
471
+ const ids = item ? [item.id] : this.getSelectedIds();
472
+ if (!ids) return;
473
+ this.dialogService.busy("Aggiornamento in corso...");
474
+ this.supportService.notifications.markNotifications({
475
+ ids,
476
+ unmark
477
+ }).pipe(finalize(() => this.dialogService.clearBusy())).subscribe((r) => {
478
+ if (!r.success) this.dialogService.error(r.message);
479
+ else {
480
+ const idSet = new Set(ids);
481
+ this.items.update((list) => list.map((n) => idSet.has(n.id) ? {
482
+ ...n,
483
+ isRead: !unmark
484
+ } : n));
485
+ this.selection.clear();
486
+ this.supportService.notifications.countUnreadNotifications();
487
+ }
488
+ });
489
+ }
490
+ show(item) {
491
+ this.dialogService.open(SupportNotificationComponent, {
492
+ ariaLabel: "visualizza notifica",
493
+ autoFocus: "dialog",
494
+ restoreFocus: false,
495
+ disableClose: true,
496
+ data: { id: item.id },
497
+ minWidth: "375px",
498
+ maxWidth: "900px",
499
+ width: "99%",
500
+ height: "99%"
501
+ });
502
+ }
503
+ static {
504
+ this.ɵfac = i0.ɵɵngDeclareFactory({
505
+ minVersion: "12.0.0",
506
+ version: "22.2.1",
507
+ ngImport: i0,
508
+ type: SupportNotificationsBrowserComponent,
509
+ deps: [],
510
+ target: i0.ɵɵFactoryTarget.Component
511
+ });
512
+ }
513
+ static {
514
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
515
+ minVersion: "17.0.0",
516
+ version: "22.2.1",
517
+ type: SupportNotificationsBrowserComponent,
518
+ isStandalone: true,
519
+ selector: "ng-component",
520
+ host: { attributes: { "Bind": SystemUtils.generateUUID() } },
521
+ viewQueries: [{
522
+ propertyName: "paginator",
523
+ first: true,
524
+ predicate: ["paginator"],
525
+ descendants: true,
526
+ isSignal: true
527
+ }],
528
+ ngImport: i0,
529
+ template: "<div class=\"notifications-browser-fixed\">\n <div class=\"notifications-browser-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>Novità e informazioni</div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\n <mat-label>Cerca</mat-label>\n <input matInput #searchInput=\"matInput\" type=\"text\" [formField]=\"searchForm\"\n (keyup.enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\n @if (searchText()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"searchText.set('')\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <div fxFlexAlign=\"center\">\n @if (selection.hasValue()) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\n <mat-icon>clear</mat-icon>Deseleziona tutti\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(undefined, true)\">\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\n </button>\n <button mat-menu-item [attr.aria-label]=\"'Segna come già letto'\" (click)=\"mark(undefined)\">\n <mat-icon>flag</mat-icon>Segna come già letto\n </button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<mat-dialog-content id=\"notifications-browser-scrollable\">\n <div id=\"notifications-browser-scroller\">\n @if (total() === 0) {\n <div>\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\n </div>\n } @else {\n <div>\n @for (item of items(); track item.id; let i = $index) {\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\n [matContextMenuTriggerFor]=\"contextMenu\" [matContextMenuTriggerData]=\"{item: item}\">\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [class.news-selected]=\"selection.isSelected(item.id)\"\n [class.news-read]=\"item.isRead\">\n <div fxFlex=\"6px\" [class]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\n </div>\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\n [checked]=\"selection.isSelected(item.id)\">\n </mat-checkbox>\n }\n </div>\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\n <div class=\"info-1 uppercase\">\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\n <div>{{item.title}}</div>\n <div class=\"info-2 uppercase\">\n {{item.productNames}}\n @if (item.productModuleNames) {\n <span> | {{item.productModuleNames}}</span>\n }\n </div>\n </div>\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\"\n [hidden]=\"!(item.isOver || item.isMenuOpen || selection.isSelected(item.id))\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n </div>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n @if (item.isRead) {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\n <mat-icon>flag</mat-icon>Segna come da leggere\n </button>\n } @else {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da già letto'\" (click)=\"mark(item)\">\n <mat-icon>outlined_flag</mat-icon>Segna come già letto\n </button>\n }\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"notifications-browser-fixed\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend unread-bg\"></div>\n da leggere\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\n </div>\n </div>\n</mat-dialog-actions>",
530
+ 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}}.news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .legend:not(:first-of-type){margin-left:10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"],
531
+ dependencies: [
532
+ {
533
+ kind: "ngmodule",
534
+ type: FlexLayoutModule
535
+ },
536
+ {
537
+ kind: "directive",
538
+ type: i1.FxLayoutDirective,
539
+ 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] ",
540
+ inputs: [
541
+ "fxLayout",
542
+ "fxLayout.xs",
543
+ "fxLayout.sm",
544
+ "fxLayout.md",
545
+ "fxLayout.lg",
546
+ "fxLayout.xl",
547
+ "fxLayout.lt-sm",
548
+ "fxLayout.lt-md",
549
+ "fxLayout.lt-lg",
550
+ "fxLayout.lt-xl",
551
+ "fxLayout.gt-xs",
552
+ "fxLayout.gt-sm",
553
+ "fxLayout.gt-md",
554
+ "fxLayout.gt-lg"
555
+ ]
556
+ },
557
+ {
558
+ kind: "directive",
559
+ type: i1.FxFlexDirective,
560
+ 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] ",
561
+ inputs: [
562
+ "fxFlex",
563
+ "fxFlex.xs",
564
+ "fxFlex.sm",
565
+ "fxFlex.md",
566
+ "fxFlex.lg",
567
+ "fxFlex.xl",
568
+ "fxFlex.lt-sm",
569
+ "fxFlex.lt-md",
570
+ "fxFlex.lt-lg",
571
+ "fxFlex.lt-xl",
572
+ "fxFlex.gt-xs",
573
+ "fxFlex.gt-sm",
574
+ "fxFlex.gt-md",
575
+ "fxFlex.gt-lg"
576
+ ]
577
+ },
578
+ {
579
+ kind: "directive",
580
+ type: i1.FxLayoutAlignDirective,
581
+ 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] ",
582
+ inputs: [
583
+ "fxLayoutAlign",
584
+ "fxLayoutAlign.xs",
585
+ "fxLayoutAlign.sm",
586
+ "fxLayoutAlign.md",
587
+ "fxLayoutAlign.lg",
588
+ "fxLayoutAlign.xl",
589
+ "fxLayoutAlign.lt-sm",
590
+ "fxLayoutAlign.lt-md",
591
+ "fxLayoutAlign.lt-lg",
592
+ "fxLayoutAlign.lt-xl",
593
+ "fxLayoutAlign.gt-xs",
594
+ "fxLayoutAlign.gt-sm",
595
+ "fxLayoutAlign.gt-md",
596
+ "fxLayoutAlign.gt-lg"
597
+ ]
598
+ },
599
+ {
600
+ kind: "directive",
601
+ type: i1.FxLayoutGapDirective,
602
+ 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] ",
603
+ inputs: [
604
+ "fxLayoutGap",
605
+ "fxLayoutGap.xs",
606
+ "fxLayoutGap.sm",
607
+ "fxLayoutGap.md",
608
+ "fxLayoutGap.lg",
609
+ "fxLayoutGap.xl",
610
+ "fxLayoutGap.lt-sm",
611
+ "fxLayoutGap.lt-md",
612
+ "fxLayoutGap.lt-lg",
613
+ "fxLayoutGap.lt-xl",
614
+ "fxLayoutGap.gt-xs",
615
+ "fxLayoutGap.gt-sm",
616
+ "fxLayoutGap.gt-md",
617
+ "fxLayoutGap.gt-lg"
618
+ ]
619
+ },
620
+ {
621
+ kind: "directive",
622
+ type: i1.FxFlexAlignDirective,
623
+ 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] ",
624
+ inputs: [
625
+ "fxFlexAlign",
626
+ "fxFlexAlign.xs",
627
+ "fxFlexAlign.sm",
628
+ "fxFlexAlign.md",
629
+ "fxFlexAlign.lg",
630
+ "fxFlexAlign.xl",
631
+ "fxFlexAlign.lt-sm",
632
+ "fxFlexAlign.lt-md",
633
+ "fxFlexAlign.lt-lg",
634
+ "fxFlexAlign.lt-xl",
635
+ "fxFlexAlign.gt-xs",
636
+ "fxFlexAlign.gt-sm",
637
+ "fxFlexAlign.gt-md",
638
+ "fxFlexAlign.gt-lg"
639
+ ]
640
+ },
641
+ {
642
+ kind: "directive",
643
+ type: i1.FxFlexFillDirective,
644
+ 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] ",
645
+ inputs: [
646
+ "fxFlexFill",
647
+ "fxFill",
648
+ "fxFlexFill.xs",
649
+ "fxFlexFill.sm",
650
+ "fxFlexFill.md",
651
+ "fxFlexFill.lg",
652
+ "fxFlexFill.xl",
653
+ "fxFlexFill.lt-sm",
654
+ "fxFlexFill.lt-md",
655
+ "fxFlexFill.lt-lg",
656
+ "fxFlexFill.lt-xl",
657
+ "fxFlexFill.gt-xs",
658
+ "fxFlexFill.gt-sm",
659
+ "fxFlexFill.gt-md",
660
+ "fxFlexFill.gt-lg"
661
+ ]
662
+ },
663
+ {
664
+ kind: "directive",
665
+ type: MatDialogTitle,
666
+ selector: "[mat-dialog-title], [matDialogTitle]",
667
+ inputs: ["id"],
668
+ exportAs: ["matDialogTitle"]
669
+ },
670
+ {
671
+ kind: "ngmodule",
672
+ type: MatButtonModule
673
+ },
674
+ {
675
+ kind: "component",
676
+ type: i2.MatIconButton,
677
+ selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]",
678
+ exportAs: ["matButton", "matAnchor"]
679
+ },
680
+ {
681
+ kind: "ngmodule",
682
+ type: MatTooltipModule
683
+ },
684
+ {
685
+ kind: "directive",
686
+ type: i3.MatTooltip,
687
+ selector: "[matTooltip]",
688
+ inputs: [
689
+ "matTooltipPosition",
690
+ "matTooltipPositionAtOrigin",
691
+ "matTooltipDisabled",
692
+ "matTooltipShowDelay",
693
+ "matTooltipHideDelay",
694
+ "matTooltipTouchGestures",
695
+ "matTooltip",
696
+ "matTooltipClass"
697
+ ],
698
+ exportAs: ["matTooltip"]
699
+ },
700
+ {
701
+ kind: "directive",
702
+ type: MatDialogClose,
703
+ selector: "[mat-dialog-close], [matDialogClose]",
704
+ inputs: [
705
+ "aria-label",
706
+ "type",
707
+ "mat-dialog-close",
708
+ "matDialogClose"
709
+ ],
710
+ exportAs: ["matDialogClose"]
711
+ },
712
+ {
713
+ kind: "ngmodule",
714
+ type: MatIconModule
715
+ },
716
+ {
717
+ kind: "component",
718
+ type: i4.MatIcon,
719
+ selector: "mat-icon",
720
+ inputs: [
721
+ "color",
722
+ "inline",
723
+ "svgIcon",
724
+ "fontSet",
725
+ "fontIcon"
726
+ ],
727
+ exportAs: ["matIcon"]
728
+ },
729
+ {
730
+ kind: "ngmodule",
731
+ type: MatFormFieldModule
732
+ },
733
+ {
734
+ kind: "component",
735
+ type: i5.MatFormField,
736
+ selector: "mat-form-field",
737
+ inputs: [
738
+ "hideRequiredMarker",
739
+ "color",
740
+ "floatLabel",
741
+ "appearance",
742
+ "subscriptSizing",
743
+ "hintLabel"
744
+ ],
745
+ exportAs: ["matFormField"]
746
+ },
747
+ {
748
+ kind: "directive",
749
+ type: i5.MatLabel,
750
+ selector: "mat-label"
751
+ },
752
+ {
753
+ kind: "directive",
754
+ type: i5.MatSuffix,
755
+ selector: "[matSuffix], [matIconSuffix], [matTextSuffix]",
756
+ inputs: ["matTextSuffix"]
757
+ },
758
+ {
759
+ kind: "ngmodule",
760
+ type: MatInputModule
761
+ },
762
+ {
763
+ kind: "directive",
764
+ type: i6.MatInput,
765
+ selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]",
766
+ inputs: [
767
+ "disabled",
768
+ "id",
769
+ "placeholder",
770
+ "name",
771
+ "required",
772
+ "type",
773
+ "errorStateMatcher",
774
+ "aria-describedby",
775
+ "value",
776
+ "readonly",
777
+ "disabledInteractive"
778
+ ],
779
+ exportAs: ["matInput"]
780
+ },
781
+ {
782
+ kind: "directive",
783
+ type: FormField,
784
+ selector: "[formField]",
785
+ inputs: ["formField"],
786
+ exportAs: ["formField"]
787
+ },
788
+ {
789
+ kind: "ngmodule",
790
+ type: MatMenuModule
791
+ },
792
+ {
793
+ kind: "component",
794
+ type: i5$1.MatMenu,
795
+ selector: "mat-menu",
796
+ inputs: [
797
+ "backdropClass",
798
+ "aria-label",
799
+ "aria-labelledby",
800
+ "aria-describedby",
801
+ "xPosition",
802
+ "yPosition",
803
+ "overlapTrigger",
804
+ "hasBackdrop",
805
+ "class",
806
+ "classList"
807
+ ],
808
+ outputs: ["closed", "close"],
809
+ exportAs: ["matMenu"]
810
+ },
811
+ {
812
+ kind: "component",
813
+ type: i5$1.MatMenuItem,
814
+ selector: "[mat-menu-item]",
815
+ inputs: [
816
+ "role",
817
+ "disabled",
818
+ "disabledInteractive",
819
+ "disableRipple"
820
+ ],
821
+ exportAs: ["matMenuItem"]
822
+ },
823
+ {
824
+ kind: "directive",
825
+ type: i5$1.MatMenuContent,
826
+ selector: "ng-template[matMenuContent]"
827
+ },
828
+ {
829
+ kind: "directive",
830
+ type: i5$1.MatMenuTrigger,
831
+ selector: "[mat-menu-trigger-for], [matMenuTriggerFor]",
832
+ inputs: [
833
+ "mat-menu-trigger-for",
834
+ "matMenuTriggerFor",
835
+ "matMenuTriggerData",
836
+ "matMenuTriggerRestoreFocus"
837
+ ],
838
+ outputs: [
839
+ "menuOpened",
840
+ "onMenuOpen",
841
+ "menuClosed",
842
+ "onMenuClose"
843
+ ],
844
+ exportAs: ["matMenuTrigger"]
845
+ },
846
+ {
847
+ kind: "directive",
848
+ type: i5$1.MatContextMenuTrigger,
849
+ selector: "[matContextMenuTriggerFor]",
850
+ inputs: [
851
+ "matContextMenuTriggerFor",
852
+ "matContextMenuTriggerData",
853
+ "matContextMenuTriggerRestoreFocus",
854
+ "matContextMenuTriggerDisabled"
855
+ ],
856
+ outputs: ["menuOpened", "menuClosed"],
857
+ exportAs: ["matContextMenuTrigger"]
858
+ },
859
+ {
860
+ kind: "ngmodule",
861
+ type: MatBadgeModule
862
+ },
863
+ {
864
+ kind: "directive",
865
+ type: i8.MatBadge,
866
+ selector: "[matBadge]",
867
+ inputs: [
868
+ "matBadgeColor",
869
+ "matBadgeOverlap",
870
+ "matBadgeDisabled",
871
+ "matBadgePosition",
872
+ "matBadge",
873
+ "matBadgeDescription",
874
+ "matBadgeSize",
875
+ "matBadgeHidden"
876
+ ]
877
+ },
878
+ {
879
+ kind: "ngmodule",
880
+ type: MatDividerModule
881
+ },
882
+ {
883
+ kind: "component",
884
+ type: i9.MatDivider,
885
+ selector: "mat-divider",
886
+ inputs: ["vertical", "inset"]
887
+ },
888
+ {
889
+ kind: "directive",
890
+ type: MatDialogContent,
891
+ selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]"
892
+ },
893
+ {
894
+ kind: "ngmodule",
895
+ type: MatCheckboxModule
896
+ },
897
+ {
898
+ kind: "component",
899
+ type: i10.MatCheckbox,
900
+ selector: "mat-checkbox",
901
+ inputs: [
902
+ "aria-label",
903
+ "aria-labelledby",
904
+ "aria-describedby",
905
+ "aria-expanded",
906
+ "aria-controls",
907
+ "aria-owns",
908
+ "id",
909
+ "required",
910
+ "labelPosition",
911
+ "name",
912
+ "value",
913
+ "disableRipple",
914
+ "tabIndex",
915
+ "color",
916
+ "disabledInteractive",
917
+ "checked",
918
+ "disabled",
919
+ "indeterminate"
920
+ ],
921
+ outputs: ["change", "indeterminateChange"],
922
+ exportAs: ["matCheckbox"]
923
+ },
924
+ {
925
+ kind: "directive",
926
+ type: MatDialogActions,
927
+ selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",
928
+ inputs: ["align"]
929
+ },
930
+ {
931
+ kind: "ngmodule",
932
+ type: MatPaginatorModule
933
+ },
934
+ {
935
+ kind: "component",
936
+ type: i11.MatPaginator,
937
+ selector: "mat-paginator",
938
+ inputs: [
939
+ "color",
940
+ "pageIndex",
941
+ "length",
942
+ "pageSize",
943
+ "pageSizeOptions",
944
+ "hidePageSize",
945
+ "showFirstLastButtons",
946
+ "selectConfig",
947
+ "disabled"
948
+ ],
949
+ outputs: ["page"],
950
+ exportAs: ["matPaginator"]
951
+ },
952
+ {
953
+ kind: "pipe",
954
+ type: FormatPipe,
955
+ name: "format"
956
+ }
957
+ ],
958
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
959
+ });
960
+ }
961
+ };
962
+ i0.ɵɵngDeclareClassMetadata({
963
+ minVersion: "12.0.0",
964
+ version: "22.2.1",
965
+ ngImport: i0,
966
+ type: SupportNotificationsBrowserComponent,
967
+ decorators: [{
968
+ type: Component,
969
+ args: [{
970
+ host: { "Bind": SystemUtils.generateUUID() },
971
+ standalone: true,
972
+ changeDetection: ChangeDetectionStrategy.OnPush,
973
+ imports: [
974
+ FlexLayoutModule,
975
+ MatDialogTitle,
976
+ MatButtonModule,
977
+ MatTooltipModule,
978
+ MatDialogClose,
979
+ MatIconModule,
980
+ MatFormFieldModule,
981
+ MatInputModule,
982
+ FormField,
983
+ MatMenuModule,
984
+ MatBadgeModule,
985
+ MatDividerModule,
986
+ MatDialogContent,
987
+ MatCheckboxModule,
988
+ MatDialogActions,
989
+ MatPaginatorModule,
990
+ FormatPipe
991
+ ],
992
+ template: "<div class=\"notifications-browser-fixed\">\n <div class=\"notifications-browser-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\n <div fxFlex=\"*\">\n <div mat-dialog-title>Novità e informazioni</div>\n </div>\n <div fxLayoutAlign=\"end\">\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\n <mat-label>Cerca</mat-label>\n <input matInput #searchInput=\"matInput\" type=\"text\" [formField]=\"searchForm\"\n (keyup.enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\n @if (searchText()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"searchText.set('')\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\n <div fxFlexAlign=\"center\">\n @if (selection.hasValue()) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\n </button>\n }\n <mat-menu #menuSelections=\"matMenu\">\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\n <mat-icon>clear</mat-icon>Deseleziona tutti\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(undefined, true)\">\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\n </button>\n <button mat-menu-item [attr.aria-label]=\"'Segna come già letto'\" (click)=\"mark(undefined)\">\n <mat-icon>flag</mat-icon>Segna come già letto\n </button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<mat-dialog-content id=\"notifications-browser-scrollable\">\n <div id=\"notifications-browser-scroller\">\n @if (total() === 0) {\n <div>\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\n </div>\n } @else {\n <div>\n @for (item of items(); track item.id; let i = $index) {\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\n [matContextMenuTriggerFor]=\"contextMenu\" [matContextMenuTriggerData]=\"{item: item}\">\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [class.news-selected]=\"selection.isSelected(item.id)\"\n [class.news-read]=\"item.isRead\">\n <div fxFlex=\"6px\" [class]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\n </div>\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\n [checked]=\"selection.isSelected(item.id)\">\n </mat-checkbox>\n }\n </div>\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\n <div class=\"info-1 uppercase\">\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\n <div>{{item.title}}</div>\n <div class=\"info-2 uppercase\">\n {{item.productNames}}\n @if (item.productModuleNames) {\n <span> | {{item.productModuleNames}}</span>\n }\n </div>\n </div>\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\"\n [hidden]=\"!(item.isOver || item.isMenuOpen || selection.isSelected(item.id))\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n </div>\n }\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\n <ng-template matMenuContent let-item=\"item\">\n @if (item.isRead) {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\n <mat-icon>flag</mat-icon>Segna come da leggere\n </button>\n } @else {\n <button mat-menu-item [attr.aria-label]=\"'Segna come da già letto'\" (click)=\"mark(item)\">\n <mat-icon>outlined_flag</mat-icon>Segna come già letto\n </button>\n }\n </ng-template>\n </mat-menu>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"notifications-browser-fixed\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\n <!-- legend -->\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\n <div class=\"legend unread-bg\"></div>\n da leggere\n </div>\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\n </div>\n </div>\n</mat-dialog-actions>",
993
+ 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}}.news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .legend:not(:first-of-type){margin-left:10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"]
994
+ }]
995
+ }],
996
+ ctorParameters: () => [],
997
+ propDecorators: { paginator: [{
998
+ type: i0.ViewChild,
999
+ args: ["paginator", { isSignal: true }]
1000
+ }] }
1001
+ });
270
1002
  export { SupportNotificationsBrowserComponent };
271
- //# sourceMappingURL=arsedizioni-ars-utils-ui.notifications.mjs.map
1003
+
1004
+ //# sourceMappingURL=arsedizioni-ars-utils-ui.notifications.mjs.map