@arsedizioni/ars-utils 22.6.85 → 22.6.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +3158 -3344
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +7616 -4772
  4. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  5. package/fesm2022/arsedizioni-ars-utils-core.date.mjs +321 -702
  6. package/fesm2022/arsedizioni-ars-utils-core.date.mjs.map +1 -1
  7. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +445 -590
  8. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs.map +1 -1
  9. package/fesm2022/arsedizioni-ars-utils-core.mjs +1735 -2370
  10. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs +1280 -1470
  12. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs.map +1 -1
  13. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +1097 -1528
  14. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  15. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +198 -294
  16. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  17. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs +115 -117
  18. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs.map +1 -1
  19. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +1607 -613
  20. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs +840 -367
  22. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs.map +1 -1
  23. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +1634 -651
  24. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs.map +1 -1
  25. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +1255 -792
  26. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs.map +1 -1
  27. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +1410 -357
  28. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map +1 -1
  29. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +2401 -944
  30. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs.map +1 -1
  31. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +1553 -741
  32. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs.map +1 -1
  33. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +901 -430
  34. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs.map +1 -1
  35. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +737 -530
  36. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs.map +1 -1
  37. package/fesm2022/arsedizioni-ars-utils-ui.mjs +6638 -1755
  38. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  39. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +1479 -1207
  40. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs.map +1 -1
  41. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +1003 -270
  42. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs.map +1 -1
  43. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +497 -278
  44. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  45. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs +48 -52
  46. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs.map +1 -1
  47. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs +464 -704
  48. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs.map +1 -1
  49. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +724 -657
  50. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs.map +1 -1
  51. package/fesm2022/arsedizioni-ars-utils.mjs +3 -19
  52. package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
  53. package/package.json +1 -1
  54. package/types/arsedizioni-ars-utils-clipper.common.d.ts +1151 -1163
  55. package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1588 -1426
  56. package/types/arsedizioni-ars-utils-core.d.ts +1169 -1172
  57. package/types/arsedizioni-ars-utils-core.date.d.ts +204 -208
  58. package/types/arsedizioni-ars-utils-core.markdown.d.ts +128 -126
  59. package/types/arsedizioni-ars-utils-core.validators.d.ts +270 -236
  60. package/types/arsedizioni-ars-utils-evolution.common.d.ts +1054 -1067
  61. package/types/arsedizioni-ars-utils-support.common.d.ts +225 -234
  62. package/types/arsedizioni-ars-utils-ui.controls.d.ts +440 -278
  63. package/types/arsedizioni-ars-utils-ui.controls.date.d.ts +24 -28
  64. package/types/arsedizioni-ars-utils-ui.controls.tree.d.ts +172 -136
  65. package/types/arsedizioni-ars-utils-ui.d.ts +2035 -821
  66. package/types/arsedizioni-ars-utils-ui.dialogs.auth.d.ts +327 -322
  67. package/types/arsedizioni-ars-utils-ui.dialogs.d.ts +343 -347
  68. package/types/arsedizioni-ars-utils-ui.dialogs.prompt.d.ts +167 -167
  69. package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts +373 -367
  70. package/types/arsedizioni-ars-utils-ui.files.d.ts +335 -283
  71. package/types/arsedizioni-ars-utils-ui.filters.d.ts +232 -160
  72. package/types/arsedizioni-ars-utils-ui.help.d.ts +204 -211
  73. package/types/arsedizioni-ars-utils-ui.navigation.d.ts +811 -646
  74. package/types/arsedizioni-ars-utils-ui.notifications.d.ts +74 -78
  75. package/types/arsedizioni-ars-utils-ui.oauth.d.ts +102 -62
  76. package/types/arsedizioni-ars-utils-ui.paginator.d.ts +19 -22
  77. package/types/arsedizioni-ars-utils-ui.shell.d.ts +376 -382
  78. package/types/arsedizioni-ars-utils-ui.tinymce.d.ts +244 -231
  79. package/types/arsedizioni-ars-utils.d.ts +1 -3
@@ -1 +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 { 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
+ {"version":3,"file":"arsedizioni-ars-utils-ui.filters.mjs","names":[],"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"],"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"],"mappings":"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"}