@arsedizioni/ars-utils 22.5.17 → 22.5.18

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.
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-ui.filters.mjs","sources":["../../../projects/ars-utils/ui.filters/filters.ts","../../../projects/ars-utils/ui.filters/filter-bar/filter-bar.component.ts","../../../projects/ars-utils/ui.filters/filter-bar/filter-bar.component.html","../../../projects/ars-utils/ui.filters/public_api.ts","../../../projects/ars-utils/ui.filters/arsedizioni-ars-utils-ui.filters.ts"],"sourcesContent":["/** Constants identifying each filter group slot and text filter channels. */\nexport const Filters = {\n FLT_1: 1,\n FLT_2: 2,\n FLT_3: 3,\n FLT_4: 4,\n FLT_5: 5,\n FLT_TEXT: 96,\n FLT_TEXT_1: 97,\n FLT_TEXT_2: 98,\n FLT_TEXT_3: 99\n};\n\n/** Describes a top-level filter group with optional items or a custom action. */\nexport interface FilterGroup {\n group?: number;\n title?: string;\n tooltip?: string;\n items?: FilterItem[];\n action?: any;\n}\n/** A single selectable entry within a FilterGroup. */\nexport interface FilterItem {\n group?: number;\n title?: string;\n titleSelected?: string;\n description?: string;\n divider?: boolean;\n value?: any;\n}\n\n/** Event payload emitted when an active filter changes. */\nexport class CurrentFilterChanged {\n /** The updated filter state. */\n filter!: CurrentFilter;\n /** The group slot that changed (see Filters constants). */\n group!: number;\n}\n\n/** Holds the current state of all active filters for a filter-bar component. */\nexport class CurrentFilter {\n flt1?: any;\n flt1Name?: string;\n flt2?: any;\n flt2Name?: string;\n flt3?: any;\n flt3Name?: string;\n flt4?: any;\n flt4Name?: string;\n flt5?: any;\n flt5Name?: string;\n text?: string;\n text2?: string;\n text3?: string;\n\n /**\n * Returns true if any filter slot or text field is currently active.\n * @returns Whether at least one filter is applied.\n */\n filtered(): boolean {\n return (\n this.flt1 != null ||\n this.flt2 != null ||\n this.flt3 != null ||\n this.flt4 != null ||\n this.flt5 != null ||\n !!this.text?.length ||\n !!this.text2?.length ||\n !!this.text3?.length\n );\n }\n}\n\n/** Holds the selected value and display state for a single typed filter slot. */\nexport class CurrentFilterItem<T> {\n items?: any[];\n value?: T;\n enabled?: boolean = true;\n title?: string;\n selectedTitle?: string;\n\n /**\n * Reset the filter to its empty state.\n */\n public clear(): void {\n this.value = undefined;\n this.selectedTitle = undefined;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, inject, input, output, signal } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { CurrentFilter, CurrentFilterChanged, FilterGroup, FilterItem, Filters } from '../filters';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\n\n\n\n@Component({\n selector: \"filter-bar\",\n templateUrl: \"./filter-bar.component.html\",\n styleUrl: './filter-bar.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexLayoutModule, MatFormFieldModule, MatInputModule, FormsModule,\n MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, MatDividerModule, SafeHtmlPipe]\n})\nexport class FilterBarComponent {\n /** Emitted whenever any filter value changes. */\n readonly changed = output<CurrentFilterChanged>();\n\n /** The list of filter groups to display. */\n readonly filters = input<FilterGroup[]>();\n\n readonly canFilterByText = input<boolean>(false);\n readonly canFilterByText2 = input<boolean>(false);\n readonly canFilterByText3 = input<boolean>(false);\n\n /** Initial text values for the search inputs — synced into the model signals on change. */\n readonly initialText = input<string | undefined>(undefined);\n readonly initialText2 = input<string | undefined>(undefined);\n readonly initialText3 = input<string | undefined>(undefined);\n\n readonly textName = input<string>(\"testo\");\n readonly text2Name = input<string>(\"...\");\n readonly text3Name = input<string>(\"...\");\n readonly textLength = input<string>();\n readonly text2Length = input<string>();\n readonly text3Length = input<string>();\n readonly showTextSearchButton = input<boolean>(false);\n readonly appearance = input<'fill' | 'outline' | undefined>('outline');\n\n /** Two-way bindable text filter values. */\n protected readonly text = signal<string | undefined>(undefined);\n protected readonly text2 = signal<string | undefined>(undefined);\n protected readonly text3 = signal<string | undefined>(undefined);\n\n /** Filter group for slot 1, derived reactively from the `filters` input. */\n protected readonly flt1 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_1)\n );\n /** Filter group for slot 2, derived reactively from the `filters` input. */\n protected readonly flt2 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_2)\n );\n /** Filter group for slot 3, derived reactively from the `filters` input. */\n protected readonly flt3 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_3)\n );\n /** Filter group for slot 4, derived reactively from the `filters` input. */\n protected readonly flt4 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_4)\n );\n /** Filter group for slot 5, derived reactively from the `filters` input. */\n protected readonly flt5 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_5)\n );\n\n /** True when filter slot 1 has an action or item list. */\n protected readonly canFilterByFlt1 = computed(() => {\n const g = this.flt1(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 2 has an action or item list. */\n protected readonly canFilterByFlt2 = computed(() => {\n const g = this.flt2(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 3 has an action or item list. */\n protected readonly canFilterByFlt3 = computed(() => {\n const g = this.flt3(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 4 has an action or item list. */\n protected readonly canFilterByFlt4 = computed(() => {\n const g = this.flt4(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 5 has an action or item list. */\n protected readonly canFilterByFlt5 = computed(() => {\n const g = this.flt5(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n\n public readonly currentFilter: CurrentFilter = new CurrentFilter();\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n constructor() {\n // Sync the initialText inputs into the model signals whenever they change\n effect(() => {\n this.text.set(this.initialText());\n this.text2.set(this.initialText2());\n this.text3.set(this.initialText3());\n });\n }\n\n /**\n * No-op kept for API compatibility.\n * Filter groups are now computed reactively from the `filters()` input.\n */\n public initializeFilters(): void { }\n\n /**\n * Applies the selected filter item to the current filter state and emits the change.\n * @param filter - The filter item to apply.\n */\n applyFilter(filter: FilterItem): void {\n let changed = false;\n switch (filter.group) {\n case Filters.FLT_1:\n changed = this.currentFilter.flt1 !== filter.value;\n if (changed) {\n this.currentFilter.flt1 = filter.value;\n this.currentFilter.flt1Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_2:\n changed = this.currentFilter.flt2 !== filter.value;\n if (changed) {\n this.currentFilter.flt2 = filter.value;\n this.currentFilter.flt2Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_3:\n changed = this.currentFilter.flt3 !== filter.value;\n if (changed) {\n this.currentFilter.flt3 = filter.value;\n this.currentFilter.flt3Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_4:\n changed = this.currentFilter.flt4 !== filter.value;\n if (changed) {\n this.currentFilter.flt4 = filter.value;\n this.currentFilter.flt4Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_5:\n changed = this.currentFilter.flt5 !== filter.value;\n if (changed) {\n this.currentFilter.flt5 = filter.value;\n this.currentFilter.flt5Name = filter.titleSelected;\n }\n break;\n }\n\n if (changed) {\n this.cdr.markForCheck();\n this.changed.emit({ filter: this.currentFilter, group: filter.group });\n }\n }\n\n /**\n * Executes the action associated with a filter group, or clears the filter.\n * @param group - The filter group number.\n * @param clear - When `true`, clears the filter instead of triggering its action.\n */\n applyFilterAction(group: number, clear: boolean = false): void {\n if (!clear) {\n const g = this.getFilterGroup(group);\n if (g?.action) {\n g.action(this, g);\n }\n } else {\n this.clearFilter(group);\n }\n }\n\n /** Commits the current text inputs to the filter state and emits the change. */\n applyTextFilter(): void {\n this.currentFilter.text = this.text();\n this.currentFilter.text2 = this.text2();\n this.currentFilter.text3 = this.text3();\n this.changed.emit({\n filter: this.currentFilter,\n group: Filters.FLT_TEXT\n });\n }\n\n /**\n * Clears the active filter for the specified group and emits the change if it was set.\n * @param group - The filter group number to clear.\n */\n clearFilter(group: number): void {\n let changed = false;\n switch (group) {\n case Filters.FLT_1:\n changed = this.currentFilter.flt1 != undefined;\n if (changed) {\n this.currentFilter.flt1 = undefined;\n this.currentFilter.flt1Name = undefined;\n }\n break;\n case Filters.FLT_2:\n changed = this.currentFilter.flt2 != undefined;\n if (changed) {\n this.currentFilter.flt2 = undefined;\n this.currentFilter.flt2Name = undefined;\n }\n break;\n case Filters.FLT_3:\n changed = this.currentFilter.flt3 != undefined;\n if (changed) {\n this.currentFilter.flt3 = undefined;\n this.currentFilter.flt3Name = undefined;\n }\n break;\n case Filters.FLT_4:\n changed = this.currentFilter.flt4 != undefined;\n if (changed) {\n this.currentFilter.flt4 = undefined;\n this.currentFilter.flt4Name = undefined;\n }\n break;\n case Filters.FLT_5:\n changed = this.currentFilter.flt5 != undefined;\n if (changed) {\n this.currentFilter.flt5 = undefined;\n this.currentFilter.flt5Name = undefined;\n }\n break;\n }\n if (changed) {\n this.cdr.markForCheck();\n this.changed.emit({ filter: this.currentFilter, group: group });\n }\n }\n\n /** Resets all active filters and text inputs, then emits the change. */\n clearAllFilters(): void {\n this.currentFilter.flt1 = undefined;\n this.currentFilter.flt1Name = undefined;\n this.currentFilter.flt2 = undefined;\n this.currentFilter.flt2Name = undefined;\n this.currentFilter.flt3 = undefined;\n this.currentFilter.flt3Name = undefined;\n this.currentFilter.flt4 = undefined;\n this.currentFilter.flt4Name = undefined;\n this.currentFilter.flt5 = undefined;\n this.currentFilter.flt5Name = undefined;\n this.currentFilter.text = undefined;\n this.currentFilter.text2 = undefined;\n this.currentFilter.text3 = undefined;\n this.text.set(undefined);\n this.text2.set(undefined);\n this.text3.set(undefined);\n this.cdr.markForCheck();\n this.changed.emit({ filter: this.currentFilter, group: -1 });\n }\n\n /**\n * Returns `true` when more than one filter type is active, showing the \"clear all\" button.\n * @returns True when the clear-all button should be visible.\n */\n canClearAllFilters(): boolean {\n let count = 0;\n if (this.canFilterByText()) count++;\n if (this.canFilterByText2()) count++;\n if (this.canFilterByText3()) count++;\n if (this.canFilterByFlt1()) count++;\n if (this.canFilterByFlt2()) count++;\n if (this.canFilterByFlt3()) count++;\n if (this.canFilterByFlt4()) count++;\n if (this.canFilterByFlt5()) count++;\n return count > 1;\n }\n\n /**\n * Returns the filter group matching the given id, or `undefined` if not found.\n * @param id - The group id to look up.\n * @returns The matching `FilterGroup`, or `undefined`.\n */\n private getFilterGroup(id: number): FilterGroup | undefined {\n return this.filters()?.find(n => n.group === id);\n }\n\n /** Synchronises the filter bar display with the values currently stored in `currentFilter`. */\n syncFilter(): void {\n let g = this.getFilterGroup(Filters.FLT_1);\n if (g?.items) {\n this.currentFilter.flt1Name = undefined;\n if (this.currentFilter.flt1) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt1);\n if (gi) this.currentFilter.flt1Name = gi.titleSelected;\n else this.currentFilter.flt1 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_2);\n if (g?.items) {\n this.currentFilter.flt2Name = undefined;\n if (this.currentFilter.flt2) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt2);\n if (gi) this.currentFilter.flt2Name = gi.titleSelected;\n else this.currentFilter.flt2 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_3);\n if (g?.items) {\n this.currentFilter.flt3Name = undefined;\n if (this.currentFilter.flt3) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt3);\n if (gi) this.currentFilter.flt3Name = gi.titleSelected;\n else this.currentFilter.flt3 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_4);\n if (g?.items) {\n this.currentFilter.flt4Name = undefined;\n if (this.currentFilter.flt4) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt4);\n if (gi) this.currentFilter.flt4Name = gi.titleSelected;\n else this.currentFilter.flt4 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_5);\n if (g?.items) {\n this.currentFilter.flt5Name = undefined;\n if (this.currentFilter.flt5) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt5);\n if (gi) this.currentFilter.flt5Name = gi.titleSelected;\n else this.currentFilter.flt5 = undefined;\n }\n }\n\n this.text.set(this.currentFilter.text);\n this.text2.set(this.currentFilter.text2);\n this.text3.set(this.currentFilter.text3);\n this.cdr.markForCheck();\n }\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"filterbox\"\r\n [class.filterbox-filtered]=\"currentFilter.filtered()\">\r\n <div fxFlex=\"*\" fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\r\n @if (canFilterByText() || canFilterByText2() || canFilterByText3()) {\r\n <div fxFlex.lt-sm=\"100\" fxFlexAlign=\"center\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill style=\"padding:4px;\">\r\n @if (canFilterByText()) {\r\n <mat-form-field [style.width]=\"textLength() ?? '100%'\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{textName()}}...</mat-label>\r\n <input matInput name=\"_text\" [ngModel]=\"text()\" (ngModelChange)=\"text.set($event)\" maxlength=\"100\" #_text=\"ngModel\"\r\n (keyup.Enter)=\"applyTextFilter()\" matTooltip=\"Premi INVIO per avviare la ricerca\">\r\n @if (text()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"text.set(undefined); applyTextFilter();\" matTooltip=\"Azzera\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (showTextSearchButton()) {\r\n <button type=\"button\" matSuffix mat-icon-button aria-label=\"Trova\" (click)=\"applyTextFilter();\"\r\n matTooltip=\"Trova\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (canFilterByText2()) {\r\n <mat-form-field \r\n [style.width]=\"text2Length() ?? '100%'\" [appearance]=\"appearance()\"\r\n subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{text2Name()}}...</mat-label>\r\n <input matInput name=\"_text2\" [ngModel]=\"text2()\" (ngModelChange)=\"text2.set($event)\" maxlength=\"100\" #_text2=\"ngModel\"\r\n (keyup.Enter)=\"applyTextFilter()\" matTooltip=\"Premi INVIO per avviare la ricerca\">\r\n @if (text2()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"text2.set(undefined); applyTextFilter();\" matTooltip=\"Azzera\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (canFilterByText3()) {\r\n <mat-form-field [style.width]=\"text3Length() ?? '100%'\" [appearance]=\"appearance()\"\r\n subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{text3Name()}}...</mat-label>\r\n <input matInput name=\"_text3\" [ngModel]=\"text3()\" (ngModelChange)=\"text3.set($event)\" maxlength=\"100\" #_text3=\"ngModel\"\r\n (keyup.Enter)=\"applyTextFilter()\" matTooltip=\"Premi INVIO per avviare la ricerca\">\r\n @if (text3()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"text3.set(undefined); applyTextFilter();\" matTooltip=\"Azzera\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div fxFlex.lt-sm=\"100\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n @if (canFilterByFlt1() && flt1()?.action) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\"\r\n [attr.aria-label]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\" \r\n (click)=\"applyFilterAction(1, false)\">\r\n &nbsp;\r\n @if (!currentFilter.flt1) {\r\n <span>{{flt1()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt1Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt1) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\r\n (click)=\"applyFilterAction(1, true);\" class=\"small-icon-button\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n } @else if (canFilterByFlt1() && flt1()?.items) {\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\"\r\n [attr.aria-label]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt1\"\r\n >\r\n &nbsp;\r\n @if (!currentFilter.flt1) {\r\n <span>{{flt1()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt1Name | safeHtml\"></span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\r\n <mat-menu #menuApplyFilterFlt1=\"matMenu\">\r\n @for (f of flt1()!.items; track $index) {\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\r\n <span [innerHTML]=\"f.title | safeHtml\"></span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\r\n <button type=\"button\" mat-button (click)=\"clearFilter(flt1()!.items![0].group)\"\r\n aria-label=\"Azzera\">\r\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\r\n </button>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </button>\r\n }\r\n\r\n @if (canFilterByFlt2() && flt2()?.action) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\"\r\n [attr.aria-label]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\" \r\n (click)=\"applyFilterAction(2, false)\">\r\n &nbsp;\r\n @if (!currentFilter.flt2) {\r\n <span>{{flt2()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt2Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt2) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\r\n (click)=\"applyFilterAction(2, true);\" class=\"small-icon-button\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n } @else if (canFilterByFlt2() && flt2()?.items) {\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\"\r\n [attr.aria-label]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt2\"\r\n >\r\n &nbsp;\r\n @if (!currentFilter.flt2) {\r\n <span>{{flt2()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt2Name | safeHtml\"></span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\r\n <mat-menu #menuApplyFilterFlt2=\"matMenu\">\r\n @for (f of flt2()!.items; track $index) {\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\r\n <span [innerHTML]=\"f.title | safeHtml\"></span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\r\n <button type=\"button\" mat-button (click)=\"clearFilter(flt2()!.items![0].group)\"\r\n aria-label=\"Azzera\">\r\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\r\n </button>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </button>\r\n }\r\n\r\n @if (canFilterByFlt3() && flt3()?.action) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\"\r\n [attr.aria-label]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\" \r\n (click)=\"applyFilterAction(3, false)\">\r\n &nbsp;\r\n @if (!currentFilter.flt3) {\r\n <span>{{flt3()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt3Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt3) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\r\n (click)=\"applyFilterAction(3, true);\" class=\"small-icon-button\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n } @else if (canFilterByFlt3() && flt3()?.items) {\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\"\r\n [attr.aria-label]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt3\"\r\n >\r\n &nbsp;\r\n @if (!currentFilter.flt3) {\r\n <span>{{flt3()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt3Name | safeHtml\"></span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\r\n <mat-menu #menuApplyFilterFlt3=\"matMenu\">\r\n @for (f of flt3()!.items; track $index) {\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\r\n <span [innerHTML]=\"f.title | safeHtml\"></span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\r\n <button type=\"button\" mat-button (click)=\"clearFilter(flt3()!.items![0].group)\"\r\n aria-label=\"Azzera\">\r\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\r\n </button>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </button>\r\n }\r\n\r\n @if (canFilterByFlt4() && flt4()?.action) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\"\r\n [attr.aria-label]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\" \r\n (click)=\"applyFilterAction(4, false)\">\r\n &nbsp;\r\n @if (!currentFilter.flt4) {\r\n <span>{{flt4()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt4Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt4) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\r\n (click)=\"applyFilterAction(4, true);\" class=\"small-icon-button\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n } @else if (canFilterByFlt4() && flt4()?.items) {\r\n <button fxFlexAlign=\"center\" class=\"filterbox-button\" type=\"button\" mat-button [matTooltip]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\"\r\n [attr.aria-label]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt4\"\r\n >\r\n &nbsp;\r\n @if (!currentFilter.flt4) {\r\n <span>{{flt4()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt4Name | safeHtml\"></span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\r\n <mat-menu #menuApplyFilterFlt4=\"matMenu\">\r\n @for (f of flt4()!.items; track $index) {\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\r\n <span [innerHTML]=\"f.title | safeHtml\"></span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\r\n <button type=\"button\" mat-button (click)=\"clearFilter(flt4()!.items![0].group)\"\r\n aria-label=\"Azzera\">\r\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\r\n </button>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </button>\r\n }\r\n\r\n @if (canFilterByFlt5() && flt5()?.action) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\"\r\n [attr.aria-label]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\" \r\n (click)=\"applyFilterAction(5, false)\">\r\n &nbsp;\r\n @if (!currentFilter.flt5) {\r\n <span>{{flt5()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt5Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt5) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\r\n (click)=\"applyFilterAction(5, true);\" class=\"small-icon-button\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n } @else if (canFilterByFlt5() && flt5()?.items) {\r\n <button fxFlexAlign=\"center\" class=\"filterbox-button\" type=\"button\" mat-button [matTooltip]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\"\r\n [attr.aria-label]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt5\"\r\n >\r\n &nbsp;\r\n @if (!currentFilter.flt5) {\r\n <span>{{flt5()!.title}}</span>\r\n } @else {\r\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt5Name | safeHtml\"></span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\r\n <mat-menu #menuApplyFilterFlt5=\"matMenu\">\r\n @for (f of flt5()!.items; track $index) {\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\r\n <span [innerHTML]=\"f.title | safeHtml\"></span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\r\n <button type=\"button\" mat-button (click)=\"clearFilter(flt5()!.items![0].group)\"\r\n aria-label=\"Azzera\">\r\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\r\n </button>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n @if (currentFilter.filtered() && canClearAllFilters()) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera tutti i filtri\" aria-label=\"Azzera tutti i filtri\"\r\n (click)=\"clearAllFilters()\">\r\n <mat-icon>filter_alt_off</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n","/*\n * Public API Surface of @arsedizioni/ars-utils/ui.filters\n */\nexport * from './filters';\nexport * from './filter-bar/filter-bar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-ui.filters.mjs","sources":["../../../projects/ars-utils/ui.filters/filters.ts","../../../projects/ars-utils/ui.filters/filter-bar/filter-bar.component.ts","../../../projects/ars-utils/ui.filters/filter-bar/filter-bar.component.html","../../../projects/ars-utils/ui.filters/public_api.ts","../../../projects/ars-utils/ui.filters/arsedizioni-ars-utils-ui.filters.ts"],"sourcesContent":["/** Constants identifying each filter group slot and text filter channels. */\nexport const Filters = {\n FLT_1: 1,\n FLT_2: 2,\n FLT_3: 3,\n FLT_4: 4,\n FLT_5: 5,\n FLT_TEXT: 96,\n FLT_TEXT_1: 97,\n FLT_TEXT_2: 98,\n FLT_TEXT_3: 99\n};\n\n/** Describes a top-level filter group with optional items or a custom action. */\nexport interface FilterGroup {\n group?: number;\n title?: string;\n tooltip?: string;\n items?: FilterItem[];\n action?: any;\n}\n/** A single selectable entry within a FilterGroup. */\nexport interface FilterItem {\n group?: number;\n title?: string;\n titleSelected?: string;\n description?: string;\n divider?: boolean;\n value?: any;\n}\n\n/** Event payload emitted when an active filter changes. */\nexport class CurrentFilterChanged {\n /** The updated filter state. */\n filter!: CurrentFilter;\n /** The group slot that changed (see Filters constants). */\n group!: number;\n}\n\n/** Holds the current state of all active filters for a filter-bar component. */\nexport class CurrentFilter {\n flt1?: any;\n flt1Name?: string;\n flt2?: any;\n flt2Name?: string;\n flt3?: any;\n flt3Name?: string;\n flt4?: any;\n flt4Name?: string;\n flt5?: any;\n flt5Name?: string;\n text?: string;\n text2?: string;\n text3?: string;\n\n /**\n * Returns true if any filter slot or text field is currently active.\n * @returns Whether at least one filter is applied.\n */\n filtered(): boolean {\n return (\n this.flt1 != null ||\n this.flt2 != null ||\n this.flt3 != null ||\n this.flt4 != null ||\n this.flt5 != null ||\n !!this.text?.length ||\n !!this.text2?.length ||\n !!this.text3?.length\n );\n }\n}\n\n/** Holds the selected value and display state for a single typed filter slot. */\nexport class CurrentFilterItem<T> {\n items?: any[];\n value?: T;\n enabled?: boolean = true;\n title?: string;\n selectedTitle?: string;\n\n /**\n * Reset the filter to its empty state.\n */\n public clear(): void {\n this.value = undefined;\n this.selectedTitle = undefined;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, inject, input, output, signal } from \"@angular/core\";\nimport { FormField, form, maxLength } from '@angular/forms/signals';\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { CurrentFilter, CurrentFilterChanged, FilterGroup, FilterItem, Filters } from '../filters';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\n\n\n\n@Component({\n selector: \"filter-bar\",\n templateUrl: \"./filter-bar.component.html\",\n styleUrl: './filter-bar.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexLayoutModule, MatFormFieldModule, MatInputModule, FormField,\n MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, MatDividerModule, SafeHtmlPipe]\n})\nexport class FilterBarComponent {\n /** Emitted whenever any filter value changes. */\n readonly changed = output<CurrentFilterChanged>();\n\n /** The list of filter groups to display. */\n readonly filters = input<FilterGroup[]>();\n\n readonly canFilterByText = input<boolean>(false);\n readonly canFilterByText2 = input<boolean>(false);\n readonly canFilterByText3 = input<boolean>(false);\n\n /** Initial text values for the search inputs — synced into the model signals on change. */\n readonly initialText = input<string | undefined>(undefined);\n readonly initialText2 = input<string | undefined>(undefined);\n readonly initialText3 = input<string | undefined>(undefined);\n\n readonly textName = input<string>(\"testo\");\n readonly text2Name = input<string>(\"...\");\n readonly text3Name = input<string>(\"...\");\n readonly textLength = input<string>();\n readonly text2Length = input<string>();\n readonly text3Length = input<string>();\n readonly showTextSearchButton = input<boolean>(false);\n readonly appearance = input<'fill' | 'outline' | undefined>('outline');\n\n /**\n * Text filter values. Empty is represented as '' (never undefined) because the\n * signals back the [formField] bindings; it is normalized to undefined when\n * committed to the CurrentFilter.\n */\n protected readonly text = signal<string>('');\n protected readonly text2 = signal<string>('');\n protected readonly text3 = signal<string>('');\n\n /** Signal forms for the three text inputs (max 100 characters each). */\n protected readonly textForm = form(this.text, p => maxLength(p, 100));\n protected readonly text2Form = form(this.text2, p => maxLength(p, 100));\n protected readonly text3Form = form(this.text3, p => maxLength(p, 100));\n\n /** Filter group for slot 1, derived reactively from the `filters` input. */\n protected readonly flt1 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_1)\n );\n /** Filter group for slot 2, derived reactively from the `filters` input. */\n protected readonly flt2 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_2)\n );\n /** Filter group for slot 3, derived reactively from the `filters` input. */\n protected readonly flt3 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_3)\n );\n /** Filter group for slot 4, derived reactively from the `filters` input. */\n protected readonly flt4 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_4)\n );\n /** Filter group for slot 5, derived reactively from the `filters` input. */\n protected readonly flt5 = computed<FilterGroup | undefined>(() =>\n this.filters()?.find(n => n.group === Filters.FLT_5)\n );\n\n /** True when filter slot 1 has an action or item list. */\n protected readonly canFilterByFlt1 = computed(() => {\n const g = this.flt1(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 2 has an action or item list. */\n protected readonly canFilterByFlt2 = computed(() => {\n const g = this.flt2(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 3 has an action or item list. */\n protected readonly canFilterByFlt3 = computed(() => {\n const g = this.flt3(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 4 has an action or item list. */\n protected readonly canFilterByFlt4 = computed(() => {\n const g = this.flt4(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n /** True when filter slot 5 has an action or item list. */\n protected readonly canFilterByFlt5 = computed(() => {\n const g = this.flt5(); return !!(g?.action || (g?.items && g.items.length > 0));\n });\n\n public readonly currentFilter: CurrentFilter = new CurrentFilter();\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n constructor() {\n // Sync the initialText inputs into the model signals whenever they change\n effect(() => {\n this.text.set(this.initialText() ?? '');\n this.text2.set(this.initialText2() ?? '');\n this.text3.set(this.initialText3() ?? '');\n });\n }\n\n /**\n * No-op kept for API compatibility.\n * Filter groups are now computed reactively from the `filters()` input.\n */\n public initializeFilters(): void { }\n\n /**\n * Applies the selected filter item to the current filter state and emits the change.\n * @param filter - The filter item to apply.\n */\n applyFilter(filter: FilterItem): void {\n let changed = false;\n switch (filter.group) {\n case Filters.FLT_1:\n changed = this.currentFilter.flt1 !== filter.value;\n if (changed) {\n this.currentFilter.flt1 = filter.value;\n this.currentFilter.flt1Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_2:\n changed = this.currentFilter.flt2 !== filter.value;\n if (changed) {\n this.currentFilter.flt2 = filter.value;\n this.currentFilter.flt2Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_3:\n changed = this.currentFilter.flt3 !== filter.value;\n if (changed) {\n this.currentFilter.flt3 = filter.value;\n this.currentFilter.flt3Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_4:\n changed = this.currentFilter.flt4 !== filter.value;\n if (changed) {\n this.currentFilter.flt4 = filter.value;\n this.currentFilter.flt4Name = filter.titleSelected;\n }\n break;\n case Filters.FLT_5:\n changed = this.currentFilter.flt5 !== filter.value;\n if (changed) {\n this.currentFilter.flt5 = filter.value;\n this.currentFilter.flt5Name = filter.titleSelected;\n }\n break;\n }\n\n if (changed) {\n this.cdr.markForCheck();\n this.changed.emit({ filter: this.currentFilter, group: filter.group });\n }\n }\n\n /**\n * Executes the action associated with a filter group, or clears the filter.\n * @param group - The filter group number.\n * @param clear - When `true`, clears the filter instead of triggering its action.\n */\n applyFilterAction(group: number, clear: boolean = false): void {\n if (!clear) {\n const g = this.getFilterGroup(group);\n if (g?.action) {\n g.action(this, g);\n }\n } else {\n this.clearFilter(group);\n }\n }\n\n /** Commits the current text inputs to the filter state and emits the change. */\n applyTextFilter(): void {\n this.currentFilter.text = this.text() || undefined;\n this.currentFilter.text2 = this.text2() || undefined;\n this.currentFilter.text3 = this.text3() || undefined;\n this.changed.emit({\n filter: this.currentFilter,\n group: Filters.FLT_TEXT\n });\n }\n\n /**\n * Clears the active filter for the specified group and emits the change if it was set.\n * @param group - The filter group number to clear.\n */\n clearFilter(group: number): void {\n let changed = false;\n switch (group) {\n case Filters.FLT_1:\n changed = this.currentFilter.flt1 != undefined;\n if (changed) {\n this.currentFilter.flt1 = undefined;\n this.currentFilter.flt1Name = undefined;\n }\n break;\n case Filters.FLT_2:\n changed = this.currentFilter.flt2 != undefined;\n if (changed) {\n this.currentFilter.flt2 = undefined;\n this.currentFilter.flt2Name = undefined;\n }\n break;\n case Filters.FLT_3:\n changed = this.currentFilter.flt3 != undefined;\n if (changed) {\n this.currentFilter.flt3 = undefined;\n this.currentFilter.flt3Name = undefined;\n }\n break;\n case Filters.FLT_4:\n changed = this.currentFilter.flt4 != undefined;\n if (changed) {\n this.currentFilter.flt4 = undefined;\n this.currentFilter.flt4Name = undefined;\n }\n break;\n case Filters.FLT_5:\n changed = this.currentFilter.flt5 != undefined;\n if (changed) {\n this.currentFilter.flt5 = undefined;\n this.currentFilter.flt5Name = undefined;\n }\n break;\n }\n if (changed) {\n this.cdr.markForCheck();\n this.changed.emit({ filter: this.currentFilter, group: group });\n }\n }\n\n /** Resets all active filters and text inputs, then emits the change. */\n clearAllFilters(): void {\n this.currentFilter.flt1 = undefined;\n this.currentFilter.flt1Name = undefined;\n this.currentFilter.flt2 = undefined;\n this.currentFilter.flt2Name = undefined;\n this.currentFilter.flt3 = undefined;\n this.currentFilter.flt3Name = undefined;\n this.currentFilter.flt4 = undefined;\n this.currentFilter.flt4Name = undefined;\n this.currentFilter.flt5 = undefined;\n this.currentFilter.flt5Name = undefined;\n this.currentFilter.text = undefined;\n this.currentFilter.text2 = undefined;\n this.currentFilter.text3 = undefined;\n this.text.set('');\n this.text2.set('');\n this.text3.set('');\n this.cdr.markForCheck();\n this.changed.emit({ filter: this.currentFilter, group: -1 });\n }\n\n /**\n * Returns `true` when more than one filter type is active, showing the \"clear all\" button.\n * @returns True when the clear-all button should be visible.\n */\n canClearAllFilters(): boolean {\n let count = 0;\n if (this.canFilterByText()) count++;\n if (this.canFilterByText2()) count++;\n if (this.canFilterByText3()) count++;\n if (this.canFilterByFlt1()) count++;\n if (this.canFilterByFlt2()) count++;\n if (this.canFilterByFlt3()) count++;\n if (this.canFilterByFlt4()) count++;\n if (this.canFilterByFlt5()) count++;\n return count > 1;\n }\n\n /**\n * Returns the filter group matching the given id, or `undefined` if not found.\n * @param id - The group id to look up.\n * @returns The matching `FilterGroup`, or `undefined`.\n */\n private getFilterGroup(id: number): FilterGroup | undefined {\n return this.filters()?.find(n => n.group === id);\n }\n\n /** Synchronises the filter bar display with the values currently stored in `currentFilter`. */\n syncFilter(): void {\n let g = this.getFilterGroup(Filters.FLT_1);\n if (g?.items) {\n this.currentFilter.flt1Name = undefined;\n if (this.currentFilter.flt1) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt1);\n if (gi) this.currentFilter.flt1Name = gi.titleSelected;\n else this.currentFilter.flt1 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_2);\n if (g?.items) {\n this.currentFilter.flt2Name = undefined;\n if (this.currentFilter.flt2) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt2);\n if (gi) this.currentFilter.flt2Name = gi.titleSelected;\n else this.currentFilter.flt2 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_3);\n if (g?.items) {\n this.currentFilter.flt3Name = undefined;\n if (this.currentFilter.flt3) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt3);\n if (gi) this.currentFilter.flt3Name = gi.titleSelected;\n else this.currentFilter.flt3 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_4);\n if (g?.items) {\n this.currentFilter.flt4Name = undefined;\n if (this.currentFilter.flt4) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt4);\n if (gi) this.currentFilter.flt4Name = gi.titleSelected;\n else this.currentFilter.flt4 = undefined;\n }\n }\n\n g = this.getFilterGroup(Filters.FLT_5);\n if (g?.items) {\n this.currentFilter.flt5Name = undefined;\n if (this.currentFilter.flt5) {\n const gi = g.items.find(n => n.value === this.currentFilter.flt5);\n if (gi) this.currentFilter.flt5Name = gi.titleSelected;\n else this.currentFilter.flt5 = undefined;\n }\n }\n\n this.text.set(this.currentFilter.text ?? '');\n this.text2.set(this.currentFilter.text2 ?? '');\n this.text3.set(this.currentFilter.text3 ?? '');\n this.cdr.markForCheck();\n }\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"filterbox\"\n [class.filterbox-filtered]=\"currentFilter.filtered()\">\n <div fxFlex=\"*\" fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n @if (canFilterByText() || canFilterByText2() || canFilterByText3()) {\n <div fxFlex.lt-sm=\"100\" fxFlexAlign=\"center\">\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill style=\"padding:4px;\">\n @if (canFilterByText()) {\n <mat-form-field [style.width]=\"textLength() ?? '100%'\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\n <mat-label>Cerca per {{textName()}}...</mat-label>\n <input matInput [formField]=\"textForm\"\n (keyup.enter)=\"applyTextFilter()\" matTooltip=\"Premi INVIO per avviare la ricerca\">\n @if (text()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"text.set(''); applyTextFilter();\" matTooltip=\"Azzera\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (showTextSearchButton()) {\n <button type=\"button\" matSuffix mat-icon-button aria-label=\"Trova\" (click)=\"applyTextFilter();\"\n matTooltip=\"Trova\">\n <mat-icon>search</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n @if (canFilterByText2()) {\n <mat-form-field \n [style.width]=\"text2Length() ?? '100%'\" [appearance]=\"appearance()\"\n subscriptSizing=\"dynamic\">\n <mat-label>Cerca per {{text2Name()}}...</mat-label>\n <input matInput [formField]=\"text2Form\"\n (keyup.enter)=\"applyTextFilter()\" matTooltip=\"Premi INVIO per avviare la ricerca\">\n @if (text2()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"text2.set(''); applyTextFilter();\" matTooltip=\"Azzera\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n @if (canFilterByText3()) {\n <mat-form-field [style.width]=\"text3Length() ?? '100%'\" [appearance]=\"appearance()\"\n subscriptSizing=\"dynamic\">\n <mat-label>Cerca per {{text3Name()}}...</mat-label>\n <input matInput [formField]=\"text3Form\"\n (keyup.enter)=\"applyTextFilter()\" matTooltip=\"Premi INVIO per avviare la ricerca\">\n @if (text3()) {\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\n (click)=\"text3.set(''); applyTextFilter();\" matTooltip=\"Azzera\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n </div>\n </div>\n }\n <div fxFlex.lt-sm=\"100\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\n @if (canFilterByFlt1() && flt1()?.action) {\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\"\n [attr.aria-label]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\" \n (click)=\"applyFilterAction(1, false)\">\n &nbsp;\n @if (!currentFilter.flt1) {\n <span>{{flt1()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt1Name | safeHtml\"></span>\n }\n </button>\n @if (currentFilter.flt1) {\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\n (click)=\"applyFilterAction(1, true);\" class=\"small-icon-button\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n </div>\n } @else if (canFilterByFlt1() && flt1()?.items) {\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\"\n [attr.aria-label]=\"flt1()!.tooltip || 'Filtra per ' + flt1()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt1\"\n >\n &nbsp;\n @if (!currentFilter.flt1) {\n <span>{{flt1()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt1Name | safeHtml\"></span>\n }\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\n <mat-menu #menuApplyFilterFlt1=\"matMenu\">\n @for (f of flt1()!.items; track $index) {\n @if (f.divider) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\n <span [innerHTML]=\"f.title | safeHtml\"></span>\n </button>\n }\n <mat-divider></mat-divider>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\n <button type=\"button\" mat-button (click)=\"clearFilter(flt1()!.items![0].group)\"\n aria-label=\"Azzera\">\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\n </button>\n </div>\n </div>\n </mat-menu>\n </button>\n }\n\n @if (canFilterByFlt2() && flt2()?.action) {\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\"\n [attr.aria-label]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\" \n (click)=\"applyFilterAction(2, false)\">\n &nbsp;\n @if (!currentFilter.flt2) {\n <span>{{flt2()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt2Name | safeHtml\"></span>\n }\n </button>\n @if (currentFilter.flt2) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\n (click)=\"applyFilterAction(2, true);\" class=\"small-icon-button\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n </div>\n } @else if (canFilterByFlt2() && flt2()?.items) {\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\"\n [attr.aria-label]=\"flt2()!.tooltip || 'Filtra per ' + flt2()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt2\"\n >\n &nbsp;\n @if (!currentFilter.flt2) {\n <span>{{flt2()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt2Name | safeHtml\"></span>\n }\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\n <mat-menu #menuApplyFilterFlt2=\"matMenu\">\n @for (f of flt2()!.items; track $index) {\n @if (f.divider) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\n <span [innerHTML]=\"f.title | safeHtml\"></span>\n </button>\n }\n <mat-divider></mat-divider>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\n <button type=\"button\" mat-button (click)=\"clearFilter(flt2()!.items![0].group)\"\n aria-label=\"Azzera\">\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\n </button>\n </div>\n </div>\n </mat-menu>\n </button>\n }\n\n @if (canFilterByFlt3() && flt3()?.action) {\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\"\n [attr.aria-label]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\" \n (click)=\"applyFilterAction(3, false)\">\n &nbsp;\n @if (!currentFilter.flt3) {\n <span>{{flt3()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt3Name | safeHtml\"></span>\n }\n </button>\n @if (currentFilter.flt3) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\n (click)=\"applyFilterAction(3, true);\" class=\"small-icon-button\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n </div>\n } @else if (canFilterByFlt3() && flt3()?.items) {\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\"\n [attr.aria-label]=\"flt3()!.tooltip || 'Filtra per ' + flt3()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt3\"\n >\n &nbsp;\n @if (!currentFilter.flt3) {\n <span>{{flt3()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt3Name | safeHtml\"></span>\n }\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\n <mat-menu #menuApplyFilterFlt3=\"matMenu\">\n @for (f of flt3()!.items; track $index) {\n @if (f.divider) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\n <span [innerHTML]=\"f.title | safeHtml\"></span>\n </button>\n }\n <mat-divider></mat-divider>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\n <button type=\"button\" mat-button (click)=\"clearFilter(flt3()!.items![0].group)\"\n aria-label=\"Azzera\">\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\n </button>\n </div>\n </div>\n </mat-menu>\n </button>\n }\n\n @if (canFilterByFlt4() && flt4()?.action) {\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\"\n [attr.aria-label]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\" \n (click)=\"applyFilterAction(4, false)\">\n &nbsp;\n @if (!currentFilter.flt4) {\n <span>{{flt4()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt4Name | safeHtml\"></span>\n }\n </button>\n @if (currentFilter.flt4) {\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\n (click)=\"applyFilterAction(4, true);\" class=\"small-icon-button\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n </div>\n } @else if (canFilterByFlt4() && flt4()?.items) {\n <button fxFlexAlign=\"center\" class=\"filterbox-button\" type=\"button\" mat-button [matTooltip]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\"\n [attr.aria-label]=\"flt4()!.tooltip || 'Filtra per ' + flt4()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt4\"\n >\n &nbsp;\n @if (!currentFilter.flt4) {\n <span>{{flt4()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt4Name | safeHtml\"></span>\n }\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\n <mat-menu #menuApplyFilterFlt4=\"matMenu\">\n @for (f of flt4()!.items; track $index) {\n @if (f.divider) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\n <span [innerHTML]=\"f.title | safeHtml\"></span>\n </button>\n }\n <mat-divider></mat-divider>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\n <button type=\"button\" mat-button (click)=\"clearFilter(flt4()!.items![0].group)\"\n aria-label=\"Azzera\">\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\n </button>\n </div>\n </div>\n </mat-menu>\n </button>\n }\n\n @if (canFilterByFlt5() && flt5()?.action) {\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <button type=\"button\" class=\"filterbox-button\" mat-button [matTooltip]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\"\n [attr.aria-label]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\" \n (click)=\"applyFilterAction(5, false)\">\n &nbsp;\n @if (!currentFilter.flt5) {\n <span>{{flt5()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt5Name | safeHtml\"></span>\n }\n </button>\n @if (currentFilter.flt5) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera\" aria-label=\"Azzera\"\n (click)=\"applyFilterAction(5, true);\" class=\"small-icon-button\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n </div>\n } @else if (canFilterByFlt5() && flt5()?.items) {\n <button fxFlexAlign=\"center\" class=\"filterbox-button\" type=\"button\" mat-button [matTooltip]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\"\n [attr.aria-label]=\"flt5()!.tooltip || 'Filtra per ' + flt5()!.title\" [matMenuTriggerFor]=\"menuApplyFilterFlt5\"\n >\n &nbsp;\n @if (!currentFilter.flt5) {\n <span>{{flt5()!.title}}</span>\n } @else {\n <span class=\"filterbox-selected\" [innerHtml]=\"currentFilter.flt5Name | safeHtml\"></span>\n }\n <mat-icon class=\"icon-menu-drop-down\">expand_more</mat-icon>\n <mat-menu #menuApplyFilterFlt5=\"matMenu\">\n @for (f of flt5()!.items; track $index) {\n @if (f.divider) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"applyFilter(f)\" [attr.aria-label]=\"f.description\" style=\"min-width: 200px\">\n <span [innerHTML]=\"f.title | safeHtml\"></span>\n </button>\n }\n <mat-divider></mat-divider>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\n <div fxLayoutAlign=\"end\" style=\"width: 100%; min-width: 200px; padding: 4px 4px 0 4px;\">\n <button type=\"button\" mat-button (click)=\"clearFilter(flt5()!.items![0].group)\"\n aria-label=\"Azzera\">\n <mat-icon style=\"font-size:18px; height: 18px; width:18px;\">clear</mat-icon> Azzera\n </button>\n </div>\n </div>\n </mat-menu>\n </button>\n }\n </div>\n </div>\n </div>\n <div>\n @if (currentFilter.filtered() && canClearAllFilters()) {\n <button type=\"button\" mat-icon-button matTooltip=\"Azzera tutti i filtri\" aria-label=\"Azzera tutti i filtri\"\n (click)=\"clearAllFilters()\">\n <mat-icon>filter_alt_off</mat-icon>\n </button>\n }\n </div>\n</div>\n","/*\n * Public API Surface of @arsedizioni/ars-utils/ui.filters\n */\nexport * from './filters';\nexport * from './filter-bar/filter-bar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,16 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, signal, ChangeDetectionStrategy, Component, viewChild, DestroyRef, afterNextRender } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import * as i7 from '@angular/forms';
5
- import { FormsModule } from '@angular/forms';
6
- import * as i9 from '@angular/material/badge';
4
+ import { form, maxLength, FormField } from '@angular/forms/signals';
5
+ import * as i8 from '@angular/material/badge';
7
6
  import { MatBadgeModule } from '@angular/material/badge';
8
7
  import * as i2 from '@angular/material/button';
9
8
  import { MatButtonModule } from '@angular/material/button';
10
- import * as i11 from '@angular/material/checkbox';
9
+ import * as i10 from '@angular/material/checkbox';
11
10
  import { MatCheckboxModule } from '@angular/material/checkbox';
12
11
  import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogClose, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
13
- import * as i10 from '@angular/material/divider';
12
+ import * as i9 from '@angular/material/divider';
14
13
  import { MatDividerModule } from '@angular/material/divider';
15
14
  import * as i5 from '@angular/material/form-field';
16
15
  import { MatFormFieldModule } from '@angular/material/form-field';
@@ -18,9 +17,9 @@ import * as i4 from '@angular/material/icon';
18
17
  import { MatIconModule } from '@angular/material/icon';
19
18
  import * as i6 from '@angular/material/input';
20
19
  import { MatInputModule } from '@angular/material/input';
21
- import * as i8 from '@angular/material/menu';
20
+ import * as i7 from '@angular/material/menu';
22
21
  import { MatMenuModule } from '@angular/material/menu';
23
- import * as i12 from '@angular/material/paginator';
22
+ import * as i11 from '@angular/material/paginator';
24
23
  import { MatPaginatorModule } from '@angular/material/paginator';
25
24
  import * as i3 from '@angular/material/tooltip';
26
25
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -80,7 +79,7 @@ class SupportNotificationComponent {
80
79
  }
81
80
  }
82
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: SupportNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", 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: i8.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: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i8.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 }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", 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 }); }
84
83
  }
85
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: SupportNotificationComponent, decorators: [{
86
85
  type: Component,
@@ -102,6 +101,13 @@ class SupportNotificationsBrowserComponent {
102
101
  first: 0,
103
102
  count: 25
104
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
+ });
105
111
  this.total = signal(-1, /* @ts-ignore */
106
112
  ...(ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []));
107
113
  this.items = signal([], /* @ts-ignore */
@@ -174,6 +180,8 @@ class SupportNotificationsBrowserComponent {
174
180
  * Fetches the current page of notifications from the server.
175
181
  */
176
182
  fetch() {
183
+ // Commit the live search text to the query parameters at fetch time.
184
+ this.searchParams.any = this.searchText() || undefined;
177
185
  this.dialogService.busy('Caricamento in corso...');
178
186
  this.supportService.notifications.queryNotifications(this.searchParams)
179
187
  .pipe(finalize(() => this.dialogService.clearBusy()))
@@ -242,13 +250,13 @@ class SupportNotificationsBrowserComponent {
242
250
  });
243
251
  }
244
252
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: SupportNotificationsBrowserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
245
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", 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\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>Novit\u00E0 e informazioni</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [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 style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection.hasValue()) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(undefined, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(undefined)\">\r\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n [matContextMenuTriggerFor]=\"contextMenu\" [matContextMenuTriggerData]=\"{item: item}\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [class.news-selected]=\"selection.isSelected(item.id)\"\r\n [class.news-read]=\"item.isRead\">\r\n <div fxFlex=\"6px\" [class]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\r\n [checked]=\"selection.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModuleNames) {\r\n <span> | {{item.productModuleNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\"\r\n [hidden]=\"!(item.isOver || item.isMenuOpen || selection.isSelected(item.id))\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n } @else {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\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: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.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: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i8.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: i8.MatContextMenuTrigger, selector: "[matContextMenuTriggerFor]", inputs: ["matContextMenuTriggerFor", "matContextMenuTriggerData", "matContextMenuTriggerRestoreFocus", "matContextMenuTriggerDisabled"], outputs: ["menuOpened", "menuClosed"], exportAs: ["matContextMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i10.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: i11.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: i12.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 }); }
253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", 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 }); }
246
254
  }
247
255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: SupportNotificationsBrowserComponent, decorators: [{
248
256
  type: Component,
249
257
  args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FlexLayoutModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose,
250
- MatIconModule, MatFormFieldModule, MatInputModule, FormsModule, MatMenuModule, MatBadgeModule, MatDividerModule, MatDialogContent,
251
- MatCheckboxModule, MatDialogActions, MatPaginatorModule, FormatPipe], template: "<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>Novit\u00E0 e informazioni</div>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [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 style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection.hasValue()) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(undefined, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(undefined)\">\r\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n [matContextMenuTriggerFor]=\"contextMenu\" [matContextMenuTriggerData]=\"{item: item}\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [class.news-selected]=\"selection.isSelected(item.id)\"\r\n [class.news-read]=\"item.isRead\">\r\n <div fxFlex=\"6px\" [class]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\r\n [checked]=\"selection.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModuleNames) {\r\n <span> | {{item.productModuleNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\"\r\n [hidden]=\"!(item.isOver || item.isMenuOpen || selection.isSelected(item.id))\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n } @else {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\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"] }]
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"] }]
252
260
  }], ctorParameters: () => [], propDecorators: { paginator: [{ type: i0.ViewChild, args: ['paginator', { isSignal: true }] }] } });
253
261
 
254
262
  /*