@arsedizioni/ars-utils 18.4.21 → 18.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +5 -1
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +4 -0
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/package.json +1 -1
- package/ui.application/ui/components/file-input/file-input.component.d.ts +1 -1
- package/ui.application/ui/components/filter-bar/filter-bar.component.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arsedizioni-ars-utils-ui.application.mjs","sources":["../../../projects/ars-utils/ui.application/ui/directives/resize-table-column.directive.ts","../../../projects/ars-utils/ui.application/ui/definitions.ts","../../../projects/ars-utils/ui.application/ui/filters.ts","../../../projects/ars-utils/ui.application/ui/dialogs/send-to/send-to-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/send-to/send-to-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select-file/select-file-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select-file/select-file-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/prompt/prompt-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt/prompt-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select/select-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select/select-dialog.component.html","../../../projects/ars-utils/ui.application/ui/services/applicationDialog.service.ts","../../../projects/ars-utils/ui.application/ui/ui.module.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.html","../../../projects/ars-utils/ui.application/ui/components/file-input/file-input.component.ts","../../../projects/ars-utils/ui.application/ui/components/file-input/file-input.component.html","../../../projects/ars-utils/ui.application/ui/components/file-preview/file-preview.component.ts","../../../projects/ars-utils/ui.application/ui/components/file-preview/file-preview.component.html","../../../projects/ars-utils/ui.application/ui/components/filter-bar/filter-bar.component.ts","../../../projects/ars-utils/ui.application/ui/components/filter-bar/filter-bar.component.html","../../../projects/ars-utils/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.ts","../../../projects/ars-utils/ui.application/ui/components/button-selector/button-selector.component.ts","../../../projects/ars-utils/ui.application/ui/components/button-selector/button-selector.component.html","../../../projects/ars-utils/ui.application/ui/components/chips-selector/chips-selector.component.ts","../../../projects/ars-utils/ui.application/ui/components/chips-selector/chips-selector.component.html","../../../projects/ars-utils/ui.application/ui/components/button-toggle/button-toggle.component.ts","../../../projects/ars-utils/ui.application/ui/components/button-toggle/button-toggle.component.html","../../../projects/ars-utils/ui.application/public_api.ts","../../../projects/ars-utils/ui.application/arsedizioni-ars-utils-ui.application.ts"],"sourcesContent":["import { Directive, OnInit, Renderer2, Input, ElementRef, inject } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n standalone: true\r\n})\r\nexport class ResizeTableColumnDirective implements OnInit {\r\n @Input(\"resizeColumn\") resizable: boolean;\r\n @Input() index: number;\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private startX: number;\r\n private startWidth: number;\r\n private column: HTMLElement = this.elementRef.nativeElement;\r\n private table: HTMLElement;\r\n private pressed: boolean;\r\n\r\n\r\n ngOnInit() {\r\n if (this.resizable) {\r\n const row = this.renderer.parentNode(this.column);\r\n const thead = this.renderer.parentNode(row);\r\n this.table = this.renderer.parentNode(thead);\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n this.renderer.appendChild(this.column, resizer);\r\n this.renderer.listen(resizer, \"mousedown\", this.onMouseDown);\r\n this.renderer.listen(this.table, \"mousemove\", this.onMouseMove);\r\n this.renderer.listen(\"document\", \"mouseup\", this.onMouseUp);\r\n }\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n this.pressed = true;\r\n this.startX = event.pageX;\r\n this.startWidth = this.column.offsetWidth;\r\n };\r\n\r\n onMouseMove = (event: MouseEvent) => {\r\n const offset = 35;\r\n if (this.pressed && event.buttons) {\r\n this.renderer.addClass(this.table, \"resizing\");\r\n\r\n // Calculate width of column\r\n let width =\r\n this.startWidth + (event.pageX - this.startX - offset);\r\n\r\n const tableCells = Array.from(this.table.querySelectorAll(\".mat-row\")).map(\r\n (row: any) => row.querySelectorAll(\".mat-cell\").item(this.index)\r\n );\r\n\r\n // Set table header width\r\n this.renderer.setStyle(this.column, \"width\", `${width}px`);\r\n\r\n // Set table cells width\r\n for (const cell of tableCells) {\r\n this.renderer.setStyle(cell, \"width\", `${width}px`);\r\n }\r\n }\r\n };\r\n\r\n onMouseUp = () => {\r\n if (this.pressed) {\r\n this.pressed = false;\r\n this.renderer.removeClass(this.table, \"resizing\");\r\n }\r\n };\r\n}\r\n","import { Searchable, SearchBag } from '@arsedizioni/ars-utils/core';\r\n\r\n\r\nexport interface SelectDialogResult {\r\n selectedItems: any[];\r\n}\r\n\r\nexport interface SelectDialogLookup {\r\n items: any[];\r\n filter?: string;\r\n params?: any;\r\n owner?: any;\r\n}\r\n\r\nexport interface SelectDialogFilter {\r\n items: any[];\r\n filter?: string;\r\n filterOption?: any;\r\n owner?: any;\r\n}\r\n\r\nexport interface SelectDialogAppend {\r\n items: any[];\r\n owner?: any;\r\n}\r\n\r\nexport interface SelectDialogDelete {\r\n items: any[];\r\n selectedItems: any[];\r\n}\r\n\r\nexport interface SelectFile {\r\n file: any;\r\n options?: any;\r\n}\r\n\r\nexport interface SelectDialogData {\r\n title: string;\r\n description?: string;\r\n okCaption?: string;\r\n maxItems?: number;\r\n multi?: boolean;\r\n mustSelect?: boolean;\r\n width?: number;\r\n filter?: string;\r\n filters?: any;\r\n items?: any;\r\n lookupFields?: any;\r\n lookupOnInit?: boolean;\r\n emptyMessage?: string;\r\n canLookupWithOptions?: boolean;\r\n canLookup?: boolean;\r\n canDelete?: boolean;\r\n canAppend?: boolean;\r\n canEdit?: boolean;\r\n canView?: boolean;\r\n canFilter?: boolean;\r\n canPaginate?:boolean;\r\n pageSize?: number;\r\n appearance?: string;\r\n header?: string;\r\n}\r\n\r\n\r\nexport interface SelectTreeDialogData {\r\n title: string;\r\n description?: string;\r\n okCaption?: string;\r\n nodes?: any;\r\n initialFilter?: string;\r\n appearance?: string;\r\n}\r\n\r\nexport interface SelectFileDialogData {\r\n title: string;\r\n description?: string;\r\n okCaption?: string;\r\n helpLink?: string;\r\n helpCaption?: string;\r\n options?: any;\r\n appearance?: string;\r\n}\r\n\r\nexport class SelectableItem implements Searchable {\r\n bag: any;\r\n template: string;\r\n\r\n /**\r\n * Searchable\r\n */\r\n searchBag: SearchBag;\r\n}\r\n\r\nexport class ItemNode {\r\n id: string;\r\n name: string;\r\n count?: number;\r\n parent?: ItemNode;\r\n children?: ItemNode[];\r\n bag: any;\r\n}\r\n\r\nexport class SelectableNode extends ItemNode implements Searchable {\r\n expandable: boolean;\r\n level: number;\r\n\r\n /**\r\n * Searchable\r\n */\r\n searchBag: SearchBag;\r\n\r\n constructor(item: ItemNode, level: number) {\r\n super();\r\n\r\n // Flattened implementation\r\n this.expandable = item.children && item.children.length > 0;\r\n this.level = level;\r\n\r\n // Data\r\n this.id = item.id;\r\n this.name = item.name;\r\n this.count = item.count;\r\n this.parent = item.parent;\r\n this.bag = item.bag;\r\n this.children = item.children;\r\n }\r\n}\r\n\r\nexport interface SendToDialogResult {\r\n recipients: string;\r\n subject: string;\r\n text: string;\r\n options?: any | null\r\n}\r\n\r\nexport interface PromptDialogResult {\r\n value?: string | null;\r\n options?: any | null;\r\n}\r\n\r\nexport enum PromptDialogType {\r\n Default = 0,\r\n Date = 1,\r\n Number = 2,\r\n Text = 3,\r\n DateInterval = 4,\r\n List = 5,\r\n Time = 6\r\n\r\n}\r\n\r\nexport interface PromptDialogData {\r\n title: string;\r\n type: PromptDialogType;\r\n description?: string | null;\r\n okCaption?: string | null;\r\n cancelCaption?: string | null;\r\n initialValue?: any | null;\r\n minValue?: number | null;\r\n maxValue?: number | null;\r\n required?: boolean | null;\r\n appearance?: string | null;\r\n options?: any | null;\r\n}\r\n\r\nexport interface PromptTimeDialogData extends PromptDialogData {\r\n slots?: string | null;\r\n}","export const Filters = {\r\n FLT_1: 1,\r\n FLT_2: 2,\r\n FLT_3: 3,\r\n FLT_4: 4,\r\n FLT_5: 5,\r\n FLT_TEXT: 96,\r\n FLT_TEXT_1: 97,\r\n FLT_TEXT_2: 98,\r\n FLT_TEXT_3: 99\r\n};\r\n\r\nexport interface FilterGroup {\r\n group?: number | null;\r\n title?: string | null;\r\n tooltip?: string | null;\r\n items?: FilterItem[] | null;\r\n action?: any | null;\r\n}\r\nexport interface FilterItem {\r\n group?: number | null;\r\n title?: string | null;\r\n titleSelected?: string | null;\r\n description?: string | null;\r\n divider?: boolean | null;\r\n value?: any | null;\r\n}\r\n\r\nexport class CurrentFilterChanged {\r\n filter: CurrentFilter;\r\n group: number;\r\n}\r\n\r\nexport class CurrentFilter {\r\n flt1?: any | null;\r\n flt1Name?: string | null;;\r\n flt2?: any | null;\r\n flt2Name?: string | null;\r\n flt3?: any | null;\r\n flt3Name?: string | null;\r\n flt4?: any | null;\r\n flt4Name?: string | null;\r\n flt5?: any | null;\r\n flt5Name?: string | null;\r\n text?: string | null;\r\n text2?: string | null;\r\n text3?: string | null;\r\n\r\n /**\r\n * Update filtered value\r\n */\r\n filtered(): boolean {\r\n return (\r\n (this.flt1 !== null && this.flt1 !== undefined) ||\r\n (this.flt2 !== null && this.flt2 !== undefined) ||\r\n (this.flt3 !== null && this.flt3 !== undefined) ||\r\n (this.flt4 !== null && this.flt4 !== undefined) ||\r\n (this.flt5 !== null && this.flt5 !== undefined) ||\r\n (this.text !== null && this.text !== undefined && this.text.length > 0) ||\r\n (this.text2 !== null && this.text2 !== undefined && this.text2.length > 0) ||\r\n (this.text3 !== null && this.text3 !== undefined && this.text3.length > 0)\r\n );\r\n }\r\n}\r\n\r\nexport class CurrentFilterItem<T> {\r\n items?: any[] = undefined;\r\n value?: T | null = null;\r\n enabled?: boolean | null = true;\r\n title?: string | null = null;\r\n selectedTitle?: string | null = null;\r\n\r\n public clear() {\r\n this.value = null;\r\n this.selectedTitle = null;\r\n }\r\n}\r\n","import { TextFieldModule } from \"@angular/cdk/text-field\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, inject } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { EmailsValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from \"@ngbracket/ngx-layout/flex\";\r\nimport { SendToDialogResult } from \"../../definitions\";\r\n\r\nexport interface SendToDialogData {\r\n count: number;\r\n title?: string | null;\r\n info?: string| null;\r\n appearance?: string| null;\r\n allowPopulate?: boolean| null;\r\n options?: any| null;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: \"./send-to-dialog.component.html\",\r\n styleUrls: [\"./send-to-dialog.component.scss\"],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n FlexModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n TextFieldModule,\r\n EmailsValidatorDirective,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatCheckboxModule,\r\n MatDialogActions,\r\n MatDialogClose,\r\n ],\r\n})\r\nexport class SendToDialogComponent implements OnInit {\r\n @Output() done = new EventEmitter<SendToDialogResult>();\r\n @Output() populate = new EventEmitter<SendToDialogResult>();\r\n\r\n protected dialogData: SendToDialogData = inject(MAT_DIALOG_DATA);\r\n protected item: SendToDialogResult = {\r\n recipients: null,\r\n subject: null,\r\n text: null,\r\n options: null\r\n };\r\n\r\n ngOnInit(): void {\r\n this.dialogData = this.dialogData || { count: 0, appearance: 'fill' };\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.count) {\r\n this.dialogData.count = 0;\r\n }\r\n if (!this.dialogData.title && this.dialogData.count) {\r\n this.dialogData.title =\r\n this.dialogData.count === 1\r\n ? \"Invia documento a...\"\r\n : \"Invia \" + this.dialogData.count + \" documenti a...\";\r\n }\r\n }\r\n\r\n /**\r\n * Submit\r\n */\r\n protected ok() {\r\n // Add selected options\r\n this.item.options = this.dialogData.options;\r\n this.done.emit(this.item);\r\n }\r\n\r\n /**\r\n * Populate recipients\r\n */\r\n protected populateRecipients() {\r\n this.populate.emit(this.item);\r\n }\r\n}","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n<span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n} @else {\r\n<span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n}\r\n</div>\r\n<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <p>{{dialogData.info}}</p>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxFill>\r\n <mat-form-field [appearance]=\"dialogData.appearance\">\r\n <mat-label >Destinatari</mat-label>\r\n <textarea matInput\r\n [(ngModel)]=\"item.recipients\" name=\"recipients\" maxlength=\"1024\" #recipients=\"ngModel\" cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\" emails required></textarea>\r\n @if (item.recipients) {\r\n<button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix\r\n aria-label=\"Azzera\" (click)=\"item.recipients = null;\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n}\r\n @if (dialogData.allowPopulate) {\r\n<button type=\"button\" type=\"button\" tabindex=\"-1\" mat-icon-button\r\n matSuffix aria-label=\"Popola\" (click)=\"populateRecipients()\" matTooltip=\"Popola\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n}\r\n <mat-hint align=\"start\">Separati da punto e virgola</mat-hint>\r\n <mat-hint align=\"end\">{{recipients.value?.length || 0}}/1024 </mat-hint>\r\n @if (recipients.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"dialogData.appearance\">\r\n <mat-label >Oggetto</mat-label>\r\n <input matInput\r\n name=\"subject\" [(ngModel)]=\"item.subject\" #subject=\"ngModel\" maxlength=\"200\" required />\r\n @if (subject.invalid) {\r\n<mat-error>Obbligatorio.</mat-error>\r\n}\r\n <mat-hint align=\"end\">{{subject.value?.length || 0}}/200 </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"dialogData.appearance\">\r\n <mat-label >Testo</mat-label>\r\n <textarea matInput \r\n [(ngModel)]=\"item.text\" name=\"text\" maxlength=\"1000\" #text=\"ngModel\" cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\" required></textarea>\r\n <mat-hint align=\"end\">{{text.value?.length || 0}}/1024 </mat-hint>\r\n @if (subject.invalid) {\r\n<mat-error>Obbligatorio.</mat-error>\r\n}\r\n </mat-form-field>\r\n </div>\r\n @if (dialogData.options) {\r\n<div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n}\r\n </div>\r\n}\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" fxFill >\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">Invia</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>\r\n","import { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter, Injectable,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { BehaviorSubject, Observable, Subject, of as observableOf } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ItemNode, SelectDialogResult, SelectTreeDialogData, SelectableNode } from '../../definitions';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\n@Injectable()\r\nexport class TreeDataSource implements OnDestroy {\r\n dataChange = new BehaviorSubject<ItemNode[]>([]);\r\n\r\n get data(): ItemNode[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataChange.unsubscribe();\r\n }\r\n\r\n /**\r\n * Initialzie the data source\r\n * @param data : data\r\n */\r\n initialize(data: ItemNode[]) {\r\n this.dataChange.next(data);\r\n }\r\n\r\n /**\r\n * Find a node by id recursively\r\n * @param node: the source node\r\n * @param id : the id to search for\r\n */\r\n findNode(node: ItemNode, id: string): ItemNode {\r\n let children;\r\n if (node && node.id === id) return node;\r\n if (node) children = node.children;\r\n else if (this.data && this.data.length > 0)\r\n children = this.data[0].children;\r\n if (children) {\r\n let _n = null;\r\n children.some(n => {\r\n if (n.id === id) {\r\n _n = n;\r\n return true;\r\n }\r\n _n = this.findNode(n, id);\r\n if (_n) return true;\r\n return false;\r\n });\r\n return _n;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Remove a node\r\n * @param id : the node id to remove\r\n */\r\n removeNode(id: string) {\r\n let n = this.findNode(null, id);\r\n if (!n) return;\r\n if (n.parent) {\r\n const p = n.parent.children.findIndex(n => n.id === id);\r\n if (p != -1) {\r\n n.parent.children.splice(p, 1);\r\n if (n.parent.count > 0) n.parent.count--;\r\n }\r\n } else {\r\n const p = this.data.findIndex(n => n.id === id);\r\n if (p != -1) {\r\n this.data.splice(p, 1);\r\n }\r\n }\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Insert a new node\r\n * @param node : the new node\r\n */\r\n insertNode(node: ItemNode) {\r\n if (node.parent) {\r\n node.parent.children.unshift(node);\r\n node.parent.count++;\r\n } else this.data.unshift(node);\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Rename a node\r\n * @param id : the node id\r\n * @param name : the new node name\r\n */\r\n renameNode(id: string, name: string): ItemNode {\r\n let n = this.findNode(null, id);\r\n if (n) {\r\n n.name = name;\r\n this.dataChange.next(this.data);\r\n }\r\n return n;\r\n }\r\n\r\n /**\r\n * Update data\r\n */\r\n update() {\r\n this.dataChange.next(this.data);\r\n }\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './select-tree-dialog.component.html',\r\n styleUrls: ['./select-tree-dialog.component.scss'],\r\n providers: [TreeDataSource],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, FlexLayoutModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, \r\n MatIconModule, MatTooltipModule, MatDialogContent, MatTreeModule, NgClass, MatDialogActions, \r\n MatDialogClose, SafeHtmlPipe]\r\n})\r\nexport class SelectTreeDialogComponent implements OnInit, OnDestroy {\r\n @Output() done = new EventEmitter<SelectDialogResult>();\r\n\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private dialogRef = inject(MatDialogRef<SelectTreeDialogComponent>);\r\n protected dialogData: SelectTreeDialogData = inject(MAT_DIALOG_DATA);\r\n private tree = inject(TreeDataSource);\r\n private treeFlattener: MatTreeFlattener<ItemNode, SelectableNode>;\r\n protected treeControl: FlatTreeControl<SelectableNode>;\r\n protected treeData: MatTreeFlatDataSource<ItemNode, SelectableNode>;\r\n protected currentNode: ItemNode;\r\n\r\n // Used for array filtering\r\n protected filterText: string = '';\r\n protected filteredItems: SelectableNode[] = [];\r\n protected filterIndex: number = -1;\r\n\r\n /**\r\n * Manage flat tree view\r\n */\r\n private getChildren = (node: ItemNode): Observable<ItemNode[]> =>\r\n observableOf(node.children);\r\n private getLevel = (node: SelectableNode) => node.level;\r\n private isExpandable = (node: SelectableNode) => node.expandable;\r\n protected hasChild = (_: number, _node: SelectableNode) => _node.expandable;\r\n protected transformer = (item: ItemNode, level: number) => {\r\n return new SelectableNode(item, level);\r\n };\r\n\r\n ngOnInit() {\r\n this.dialogData = this.dialogData || { appearance: 'outline', title: 'Seleziona', okCaption: 'Ok' };\r\n this.treeFlattener = new MatTreeFlattener(\r\n this.transformer,\r\n this.getLevel,\r\n this.isExpandable,\r\n this.getChildren\r\n );\r\n this.treeControl = new FlatTreeControl<SelectableNode>(\r\n this.getLevel,\r\n this.isExpandable\r\n );\r\n this.treeData = new MatTreeFlatDataSource(\r\n this.treeControl,\r\n this.treeFlattener\r\n );\r\n this.tree.dataChange\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe(data => (this.treeData.data = data));\r\n if (this.dialogData.nodes) {\r\n this.tree.initialize(this.dialogData.nodes);\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Seleziona';\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = 'OK';\r\n }\r\n if (this.dialogData.initialFilter) {\r\n this.doFilter(this.dialogData.initialFilter);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n ok() {\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ selectedItems: [this.currentNode] });\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Select a node\r\n * @param e : the event\r\n * @param node : the\r\n */\r\n protected select(e: any, node: SelectableNode) {\r\n if (e) e.stopPropagation();\r\n if (node) {\r\n this.currentNode = node;\r\n }\r\n }\r\n\r\n /**\r\n * Clear filter\r\n */\r\n protected clearFilter() {\r\n this.filterText = '';\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param text : the text to filter\r\n */\r\n protected doFilter(text: string = null) {\r\n if (text) this.filterText = text;\r\n this.filteredItems = [];\r\n this.filterIndex = -1;\r\n if (this.filterText) {\r\n this.treeControl.dataNodes.forEach(n => {\r\n if (n.name.indexOf(this.filterText) != -1) {\r\n this.filteredItems.push(n);\r\n }\r\n });\r\n\r\n if (this.filteredItems.length > 0) {\r\n this.nextFiltered();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Goto next filtered item\r\n */\r\n protected nextFiltered() {\r\n if (!SystemUtils.isBrowser()) return;\r\n if (this.filteredItems.length === 0) return;\r\n this.filterIndex++;\r\n if (this.filterIndex === this.filteredItems.length) this.filterIndex = 0;\r\n let node = this.filteredItems[this.filterIndex];\r\n this.currentNode = node;\r\n this.expand(node);\r\n let elem = document.getElementById(node.id);\r\n if (elem) elem.scrollIntoView();\r\n }\r\n\r\n /**\r\n * Expand a node and all its parents\r\n * @param node : the selectable node to expand\r\n */\r\n protected expand(node: SelectableNode) {\r\n this.treeControl.expand(node);\r\n let _n = node.parent;\r\n while (_n) {\r\n this.treeControl.dataNodes.some(n => {\r\n if (n.id === _n.id) {\r\n this.treeControl.expand(n);\r\n _n = _n.parent;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n","<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, EventEmitter, Output, inject, signal } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { SelectFile, SelectFileDialogData } from '../../definitions';\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './select-picture-dialog.component.html',\r\n styleUrls: ['./select-picture-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FlexModule, MatButtonModule, MatCheckboxModule, FormsModule, \r\n MatDialogActions, MatDialogClose, SafeHtmlPipe]\r\n})\r\nexport class SelectPictureDialogComponent {\r\n @Output() done = new EventEmitter<SelectFile>();\r\n\r\n private dialogRef = inject(MatDialogRef<SelectPictureDialogComponent>);\r\n protected dialogData : SelectFileDialogData = inject(MAT_DIALOG_DATA); \r\n\r\n protected file: File | null = null;\r\n protected filePreview = signal<any>(null);\r\n\r\n\r\n /**\r\n * Update preview\r\n * @param e : the event\r\n */\r\n update(e: any) {\r\n if (e.target.files) {\r\n this.file = e.target.files[0];\r\n const reader = new FileReader();\r\n reader.onload = (_e: any) => {\r\n this.filePreview.set((_e.target as FileReader).result);\r\n };\r\n reader.readAsDataURL(e.target.files[0]);\r\n }\r\n }\r\n\r\n /**\r\n * Format size\r\n * @param size the file size\r\n */\r\n size(size: number) {\r\n return SystemUtils.formatFileSize(size);\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n ok() {\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ file: this.file, options: this.dialogData.options });\r\n }, 500);\r\n }\r\n}\r\n\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div class=\"selectpicture-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <input #_file type=\"file\" [hidden]=\"true\" accept=\"image/*\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n @if (file) {\r\n <div class=\"selectpicture-info\">\r\n <img [src]=\"filePreview()\" class=\"preview\"><br />\r\n <span class=\"small truncated\"><i>{{file.name}}</i></span>\r\n <div><span class=\"small truncated\">Dimensioni: <i>{{size(file.size)}}</i></span></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button mat-dialog-close cdkFocusInitial color=\"primary\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Output, inject, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { ArsCoreModule, SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { SelectFile, SelectFileDialogData } from '../../definitions';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './select-file-dialog.component.html',\r\n styleUrls: ['./select-file-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FlexModule, MatButtonModule, MatCheckboxModule, FormsModule, \r\n MatDialogActions, MatDialogClose, ArsCoreModule, SafeHtmlPipe, NgClass]\r\n})\r\nexport class SelectFileDialogComponent {\r\n @Output() done = new EventEmitter<SelectFile>();\r\n private dialogRef = inject(MatDialogRef<SelectFileDialogComponent>);\r\n protected dialogData : SelectFileDialogData = inject(MAT_DIALOG_DATA); \r\n \r\n protected file: File | null = null;\r\n protected fileClass = signal<'selectfile-file' | 'selectfile-file-drop'>('selectfile-file');\r\n\r\n\r\n /**\r\n * Update preview\r\n * @param e : the event\r\n */\r\n protected update(e: any) {\r\n if (e.target.files) {\r\n this.file = e.target.files[0];\r\n }\r\n }\r\n\r\n /**\r\n * Format size\r\n * @param size the file size\r\n */\r\n protected size(size: number) {\r\n return SystemUtils.formatFileSize(size);\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n protected ok() {\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ file: this.file, options: this.dialogData.options });\r\n }, 500);\r\n }\r\n\r\n @HostListener(\"dragover\", [\"$event\"]) onDragOver(event: any) {\r\n this.fileClass.set(\"selectfile-file-drop\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"dragenter\", [\"$event\"]) onDragEnter(event: any) {\r\n this.fileClass.set(\"selectfile-file-drop\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"dragend\", [\"$event\"]) onDragEnd(event: any) {\r\n this.fileClass.set(\"selectfile-file\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"dragleave\", [\"$event\"]) onDragLeave(event: any) {\r\n this.fileClass.set(\"selectfile-file\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"drop\", [\"$event\"]) onDrop(event: any) {\r\n this.fileClass.set(\"selectfile-file\");\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer.files) {\r\n this.addFiles(event.dataTransfer.files);\r\n }\r\n }\r\n\r\n /**\r\n * Add files\r\n * @param files : the files to add\r\n */\r\n private addFiles(files: FileList) {\r\n if (files.length > 0) {\r\n this.file = files[0];\r\n }\r\n }\r\n}\r\n\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div style=\"padding: 0 24px 24px 24px\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div draggable=\"true\" [ngClass]=\"fileClass\" fxFlexAlign=\"center\">\r\n <div style=\"text-align: center\">\r\n <input #_file type=\"file\" [hidden]=\"true\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n </div>\r\n @if (file) {\r\n <div class=\"selectfile-info\">\r\n <div class=\"small\"><i>{{file.name}}</i></div>\r\n <div class=\"small\">Dimensioni: <i>{{size(file.size)}}</i></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if (dialogData.helpLink) {\r\n <a mat-button href=\"{{dialogData.helpLink}}\" target=\"_blank\" color=\"primary\">{{dialogData.helpCaption}}</a>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule, NgForm } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { PromptDialogData, PromptDialogResult, PromptDialogType } from '../../definitions';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './prompt-dialog.component.html',\r\n styleUrls: ['./prompt-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule, MatFormFieldModule, MatInputModule, \r\n MatButtonModule, MatIconModule, TextFieldModule, MatSelectModule, MatOptionModule, MatCheckboxModule, MatDialogActions, MatDialogClose]\r\n})\r\nexport class PromptDialogComponent implements OnInit {\r\n @ViewChild('f') f!: NgForm;\r\n @Output() done = new EventEmitter<PromptDialogResult>();\r\n\r\n private dialogService = inject(DialogService);\r\n\r\n protected dialogData: PromptDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Inserisci dato', type: PromptDialogType.Default }\r\n\r\n protected value: any | null = null;\r\n\r\n ngOnInit(): void {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Inserisci dato';\r\n }\r\n if (!this.dialogData.type) {\r\n this.dialogData.type = PromptDialogType.Default;\r\n }\r\n if (!this.dialogData.okCaption) { \r\n this.dialogData.okCaption = 'Ok';\r\n }\r\n if (!this.dialogData.cancelCaption){ \r\n this.dialogData.cancelCaption = 'Annulla';\r\n }\r\n if (this.dialogData.initialValue && this.dialogData.type !== PromptDialogType.List){\r\n this.value = this.dialogData.initialValue;\r\n }\r\n }\r\n\r\n /**\r\n * Done\r\n */\r\n protected ok() {\r\n if (this.f.form.invalid) {\r\n this.dialogService.error(\"Ci sono degli errori da correggere.\");\r\n return;\r\n }\r\n this.done.emit({ value: this.value, options: this.dialogData.options });\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxFill>\r\n @if (!dialogData.type) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"text\" cdkFocusInitial matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\"\r\n [required]=\"dialogData.required\" maxlength=\"200\">\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\" (click)=\"value = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 1) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"date\" matInput [(ngModel)]=\"value\" name=\"_value\" #_value=\"ngModel\" [required]=\"dialogData.required\">\r\n @if (_value.invalid) {\r\n <mat-error>Data non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 2) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"number\" cdkFocusInitial matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\"\r\n [required]=\"dialogData.required\" [min]=\"dialogData.minValue\" [max]=\"dialogData.maxValue\">\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\" (click)=\"value = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 3) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <textarea cdkFocusInitial matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\"\r\n [required]=\"dialogData.required\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\"\r\n maxlength=\"1000\"></textarea>\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\" (click)=\"value = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-hint align=\"end\">{{_value.value?.length || 0}}/1000 </mat-hint>\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 5) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <mat-select [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\" [required]=\"dialogData.required\">\r\n @for (i of dialogData.initialValue; track i) {\r\n <mat-option [value]=\"i.value\">\r\n {{i.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" \r\n (click)=\"ok()\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\"\r\n >{{dialogData.cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter, OnInit,\r\n Output,\r\n ViewChild,\r\n inject,\r\n signal\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxChange, MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatOptionModule } from \"@angular/material/core\";\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from \"@angular/material/dialog\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatListModule, MatSelectionList, MatSelectionListChange } from \"@angular/material/list\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { SafeHtmlPipe, SearchFilterPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport {\r\n SelectDialogAppend,\r\n SelectDialogData,\r\n SelectDialogDelete,\r\n SelectDialogFilter,\r\n SelectDialogLookup,\r\n SelectDialogResult,\r\n SelectableItem,\r\n} from \"../../definitions\";\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: \"./select-dialog.component.html\",\r\n styleUrls: [\"./select-dialog.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n FlexLayoutModule,\r\n MatDialogTitle,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatDividerModule,\r\n MatCheckboxModule,\r\n MatDialogContent,\r\n MatListModule,\r\n MatDialogActions,\r\n MatDialogClose,\r\n MatPaginatorModule,\r\n SearchFilterPipe,\r\n SafeHtmlPipe\r\n ],\r\n})\r\nexport class SelectDialogComponent implements OnInit {\r\n @ViewChild('paginator') paginator!: MatPaginator;\r\n @ViewChild(\"selection\") selection!: MatSelectionList;\r\n\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private dialogRef = inject(MatDialogRef<SelectDialogComponent>);\r\n protected dialogData: SelectDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'outline', title: 'Seleziona' };\r\n\r\n @Output() done = new EventEmitter<SelectDialogResult>();\r\n @Output() edit = new EventEmitter<SelectableItem>();\r\n @Output() view = new EventEmitter<SelectableItem>();\r\n @Output() append = new EventEmitter<SelectDialogAppend>();\r\n @Output() delete = new EventEmitter<SelectDialogDelete>();\r\n @Output() lookup = new EventEmitter<SelectDialogLookup>();\r\n @Output() lookupOptions = new EventEmitter();\r\n @Output() filter = new EventEmitter<SelectDialogFilter>();\r\n\r\n protected canEdit = signal<boolean>(false);\r\n protected canView = signal<boolean>(false);\r\n protected canAppend = signal<boolean>(false);\r\n protected canDelete = signal<boolean>(false);\r\n protected canPaginate = signal<boolean>(false);\r\n\r\n // Handle submit button activity\r\n protected okDisabled = signal<boolean>(true);\r\n\r\n // Used for array filtering\r\n protected filterText: string = \"\";\r\n protected filterOptions: any = [];\r\n protected filterOptionsInfo: string = \"Tutto\";\r\n\r\n // Used to sincronize lookup fields and params\r\n protected lookupField: string = \"\";\r\n private lookupParams: any | null;\r\n\r\n\r\n // Used to display selected elements\r\n protected selectionInfo = signal<string>(null);\r\n protected selectionMasterIndeterminate = signal<boolean>(false);\r\n protected selectionMasterChecked = signal<boolean>(false);\r\n\r\n ngOnInit() {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'outline';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Seleziona';\r\n }\r\n if (this.dialogData.multi && !this.dialogData.items) {\r\n this.dialogData.multi = true;\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = \"Ok\";\r\n }\r\n this.canAppend.set(this.dialogData.canAppend);\r\n if (this.dialogData.canLookup) {\r\n this.dialogData.items = [];\r\n if (this.dialogData.lookupFields && this.dialogData.lookupFields.length > 0) {\r\n this.lookupField = this.dialogData.lookupFields[0].value;\r\n }\r\n if (this.dialogData.canFilter) {\r\n this.filterOptions = this.dialogData.filters;\r\n }\r\n if (this.dialogData.canPaginate) {\r\n this.canPaginate.set(this.dialogData.canPaginate);\r\n if (!this.dialogData.pageSize) {\r\n this.dialogData.pageSize = 100\r\n }\r\n }\r\n }\r\n this.okDisabled.set(this.dialogData.mustSelect);\r\n\r\n // Apply filter if exists\r\n if (this.dialogData.filter || this.dialogData.lookupOnInit) {\r\n this.doFilter(this.dialogData.filter);\r\n }\r\n }\r\n\r\n /**\r\n * Mark for check\r\n */\r\n notifyChanges() {\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Check if every element are selected\r\n */\r\n private isAllSelected() {\r\n return (\r\n this.selection &&\r\n this.selection.selectedOptions &&\r\n this.selection.selectedOptions.selected &&\r\n this.selection.selectedOptions.selected.length === this.dialogData.items.length\r\n );\r\n }\r\n\r\n /**\r\n * Checks if exists a selection\r\n */\r\n private hasSelection() {\r\n return (\r\n this.selection &&\r\n this.selection.selectedOptions &&\r\n this.selection.selectedOptions.selected &&\r\n this.selection.selectedOptions.selected.length > 0\r\n );\r\n }\r\n\r\n /**\r\n * Master selection toggle\r\n * @param e: the event\r\n */\r\n protected masterSelectionToggle(e: MatCheckboxChange) {\r\n if (e.checked)\r\n // Deselect if not allselected so that toggle makes the right choice\r\n this.selection.selectAll();\r\n else this.selection.deselectAll();\r\n this.selectionMasterIndeterminate.set(false);\r\n this.selectionMasterChecked.set(e.checked);\r\n this.okDisabled.set(\r\n this.dialogData.mustSelect &&\r\n (!this.selection || this.selection.selectedOptions.selected.length === 0));\r\n this.updateSelectionInfo();\r\n }\r\n\r\n /**\r\n * Handle selection/deselection of an item\r\n * @param e: the event\r\n */\r\n protected select(e: MatSelectionListChange) {\r\n if (!this.dialogData.multi) {\r\n this.selection.deselectAll();\r\n if (e.options?.length > 0)\r\n e.options[0].selected = true;\r\n this.okDisabled.set(false);\r\n } else {\r\n this.okDisabled.set(\r\n this.dialogData.mustSelect &&\r\n (!this.selection ||\r\n this.selection.selectedOptions.selected.length === 0));\r\n }\r\n\r\n // Update editors\r\n this.canAppend.set(this.dialogData.canAppend);\r\n this.canEdit.set(\r\n this.dialogData.canEdit &&\r\n this.selection &&\r\n this.selection.selectedOptions.selected.length === 1);\r\n this.canView.set(\r\n this.dialogData.canView &&\r\n this.selection &&\r\n this.selection.selectedOptions.selected.length === 1);\r\n this.canDelete.set(\r\n this.dialogData.canDelete &&\r\n this.selection &&\r\n this.selection.selectedOptions.selected.length > 0);\r\n this.selectionMasterIndeterminate.set(\r\n !this.isAllSelected() && this.hasSelection());\r\n this.selectionMasterChecked.set(this.hasSelection());\r\n this.updateSelectionInfo();\r\n }\r\n\r\n /**\r\n * Update selection info\r\n */\r\n private updateSelectionInfo() {\r\n // Update selection info\r\n if (this.selection && this.selection.selectedOptions.selected.length > 0 && this.dialogData.multi) {\r\n this.selectionInfo.set(\r\n this.selection.selectedOptions.selected.length +\r\n \" / \" +\r\n this.selection.options.length);\r\n } else {\r\n this.selectionInfo.set(null);\r\n }\r\n }\r\n\r\n /**\r\n * Clear current selection\r\n */\r\n clearSelection() {\r\n this.selectionMasterIndeterminate.set(false);\r\n this.selectionMasterChecked.set(false);\r\n this.selection.deselectAll();\r\n this.selectionInfo.set(null);\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n protected ok() {\r\n if (!this.okDisabled()) {\r\n // Multi selection\r\n const selectedItems: any = [];\r\n this.selection.selectedOptions.selected.forEach((element) => {\r\n selectedItems.push(element.value);\r\n });\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ selectedItems: selectedItems });\r\n }, 500);\r\n }\r\n }\r\n\r\n /**\r\n * Clear filter\r\n */\r\n protected clearFilter() {\r\n this.filterText = \"\";\r\n }\r\n\r\n\r\n /**\r\n * Show filter options\r\n */\r\n protected showFilterOptions() {\r\n if (this.lookupOptions) {\r\n this.lookupOptions.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param text : the string to filter to\r\n */\r\n protected doFilter(text: string = null, e: any = null) {\r\n if (text) {\r\n this.filterText = text;\r\n }\r\n if (this.dialogData.canLookup) {\r\n if (!e || e.keyCode === 13) {\r\n this.lookup.emit({ items: this.dialogData.items, filter: this.filterText, owner: this });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter using filter options\r\n * @param filterOption : the current filter option\r\n */\r\n protected doFilterByOptions(filterOption: any) {\r\n if (this.dialogData.canLookup && this.dialogData.canFilter) {\r\n this.filter.emit({\r\n items: this.dialogData.items,\r\n filter: this.filterText,\r\n filterOption: filterOption,\r\n owner: this,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter. This is accessible from public\r\n * @param params : the object with current parameters\r\n */\r\n doLookup(params: any) {\r\n if (this.dialogData.canLookup) {\r\n this.lookupParams = params;\r\n this.lookupParams.first = 0;\r\n this.lookup.emit({ items: this.dialogData.items, params: this.lookupParams, owner: this });\r\n }\r\n }\r\n\r\n /**\r\n * Update lookup paginatro\r\n * @param total : the new total items\r\n */\r\n protected updateLookupPaginator(total: number) {\r\n if (this.canPaginate()) {\r\n if (this.paginator) {\r\n this.paginator.pageIndex = 0;\r\n this.paginator.length = total ?? 0;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param e : the MatPaginator PageEvent data\r\n */\r\n protected doLookupPage(e: any) {\r\n if (this.dialogData.canLookup && this.dialogData.canPaginate) {\r\n this.clearSelection();\r\n this.lookupParams.first = e.pageIndex * (this.dialogData.pageSize ?? 0);\r\n this.lookup.emit({ items: this.dialogData.items, params: this.lookupParams, owner: this });\r\n }\r\n }\r\n\r\n /**\r\n * Append\r\n */\r\n protected doAppend() {\r\n this.append.emit({ items: this.dialogData.items, owner: this } as SelectDialogAppend);\r\n }\r\n\r\n /**\r\n * Edit\r\n */\r\n protected doEdit() {\r\n if (this.selection.selectedOptions.selected?.length > 0) {\r\n this.edit.emit(this.selection.selectedOptions.selected[0].value);\r\n }\r\n }\r\n\r\n /**\r\n * View\r\n */\r\n protected doView() {\r\n if (this.selection.selectedOptions.selected?.length > 0) {\r\n this.view.emit(this.selection.selectedOptions.selected[0].value);\r\n }\r\n }\r\n\r\n /**\r\n * Delete\r\n */\r\n protected doDelete() {\r\n let selectedItems: any = [];\r\n this.selection.selectedOptions.selected.forEach((element) => {\r\n selectedItems.push(element.value);\r\n });\r\n this.delete.emit({\r\n items: this.dialogData.items,\r\n selectedItems: selectedItems,\r\n } as SelectDialogDelete);\r\n this.canDelete.set(false);\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div class=\"selectfile-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill>\r\n @if (!dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup.Enter)=\"doFilter()\" matInput\r\n title=\"{{dialogData.canLookup ? 'Digita il testo e premi invio' : 'Digita il testo'}}\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (!dialogData.canLookupWithOptions && dialogData.canLookup && dialogData.lookupFields) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Come...</mat-label>\r\n <mat-select [(value)]=\"lookupField\">\r\n @for (field of dialogData.lookupFields; track field) {\r\n <mat-option [value]=\"field.value\">\r\n {{field.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button aria-label=\"Ricerca\" (click)=\"showFilterOptions()\">\r\n <mat-icon>search</mat-icon>Ricerca\r\n </button>\r\n </div>\r\n }\r\n @if (dialogData.canLookup && dialogData.canFilter) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"white-space:nowrap\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button matTooltip=\"Filtra\" [attr.aria-label]=\"'Filtra'\"\r\n [matMenuTriggerFor]=\"menuFilter\" color=\"primary\">\r\n <mat-icon>filter_alt</mat-icon> {{filterOptionsInfo}} <mat-icon class=\"icon-menu-drop-down\">\r\n arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #menuFilter=\"matMenu\" class=\"mat-menu-300\">\r\n @for (f of filterOptions; track f) {\r\n\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (f.groupName) {\r\n <span style='font-size:small; padding: 2px 4px;'><i><b>{{f.groupName}}</b></i></span>\r\n }\r\n @if (!f.groupName && !f.divider) {\r\n <button mat-menu-item (click)=\"doFilterByOptions(f)\" [attr.aria-label]=\"f.description\">\r\n @if (f.radio && f.value) {\r\n <span style=\"padding-left:40px\"></span>\r\n }\r\n <mat-icon>{{f.icon}}</mat-icon> {{f.title}}\r\n </button>\r\n }\r\n\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n @if (canEdit() || canAppend() || canView() || canDelete()) {\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n @if (canAppend()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doAppend()\">\r\n <mat-icon aria-label=\"Aggiungi\" matTooltip=\"Aggiungi\">add</mat-icon>\r\n </button>\r\n }\r\n @if (canEdit()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doEdit()\">\r\n <mat-icon aria-label=\"Modifica\" matTooltip=\"Modifica\">edit</mat-icon>\r\n </button>\r\n }\r\n @if (canView()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doView()\">\r\n <mat-icon aria-label=\"Mostra\" matTooltip=\"Mostra\">visibility</mat-icon>\r\n </button>\r\n }\r\n @if (canDelete()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doDelete()\">\r\n <mat-icon aria-label=\"Elimina\" matTooltip=\"Elimina\">delete</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if ((dialogData.multi || dialogData.header) && dialogData.items?.length > 0) {\r\n <div>\r\n <div fxLayout=\"row\" fxFalyoutGap=\"10px\" fxFill style=\"padding-top: 10px;\">\r\n <div fxFlex=\"72px\" fxFlexAlign=\"center\" style=\"padding-left: 8px;\">\r\n @if (dialogData.multi) {\r\n <mat-checkbox (change)=\"$event ? masterSelectionToggle($event) : null\"\r\n [indeterminate]=\"selectionMasterIndeterminate()\" [checked]=\"selectionMasterChecked()\"\r\n [attr.aria-label]=\"'Seleziona/deseleziona tutto'\" matTooltip=\"Seleziona/deseleziona tutto\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if (dialogData.header) {\r\n <div [innerHtml]=\"dialogData.header | safeHtml\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n @if (dialogData.canLookup && (!dialogData.items || dialogData.items.length == 0)) {\r\n <div class=\"message\"><i>\r\n @if (!dialogData.emptyMessage) {\r\n <span>Nessun elemento da visualizzare.<br>Esegui una nuova ricerca o modifica quella\r\n esistente.\r\n @if (dialogData.maxItems > 0) {\r\n <span>Saranno mostrati al massimo {{dialogData.maxItems}} elementi.</span>\r\n }\r\n </span>\r\n } @else {\r\n <span [innerHtml]=\"dialogData.emptyMessage | safeHtml\"></span>\r\n }\r\n </i>\r\n </div>\r\n }\r\n <mat-selection-list #selection (selectionChange)=\"select($event)\" dense hideSingleSelectionIndicator=\"true\">\r\n @for (item of (dialogData.items | search: (!dialogData.canLookup ? filterText : '')); track item) {\r\n <mat-list-option [value]=\"item\" [selected]=\"item.selected\" checkboxPosition=\"before\" >\r\n <div [innerHtml]=\"item.template | safeHtml\"></div>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"10px\" fxFill>\r\n <div style=\"padding-left:20px\">\r\n @if (selectionInfo()) {\r\n <span class=\"small\">selezione: </span><span class=\"bold\">{{selectionInfo()}}</span>\r\n }\r\n </div>\r\n <div fxFlexAlign=\"center\">\r\n @if (canPaginate()) {\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"dialogData.pageSize\" [showFirstLastButtons]=\"true\"\r\n (page)=\"doLookupPage($event)\" [length]=\"dialogData.items?.length ?? 0\"></mat-paginator>\r\n\r\n }\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"okDisabled()\">\r\n <span>{{dialogData.mustSelect ? dialogData.okCaption : 'Chiudi'}}</span>\r\n </button>\r\n @if (dialogData.mustSelect) {\r\n <button mat-stroked-button mat-dialog-close cdkFocusInitial color=\"primary\">\r\n <span>Annulla</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { Injectable } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { SendToDialogComponent } from '../dialogs/send-to/send-to-dialog.component';\r\nimport { SelectTreeDialogComponent } from '../dialogs/select-tree/select-tree-dialog.component';\r\nimport { PromptDialogData, SelectDialogData, SelectFileDialogData, SelectTreeDialogData } from '../definitions';\r\nimport { SelectPictureDialogComponent } from '../dialogs/select-picture/select-picture-dialog.component';\r\nimport { SelectFileDialogComponent } from '../dialogs/select-file/select-file-dialog.component';\r\nimport { PromptDialogComponent } from '../dialogs/prompt/prompt-dialog.component';\r\nimport { SelectDialogComponent } from '../dialogs/select/select-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApplicationDialogService extends DialogService {\r\n\r\n /**\r\n* Sent to\r\n* @param title : title\r\n* @param allowPopulate: true if the populate fuction is allowed\r\n* @param count : elements to send or null\r\n* @param options : checkable option list\r\n* @param width: the preferred width\r\n*/\r\n sendTo(\r\n title: string = 'Invia per email',\r\n allowPopulate: boolean = false,\r\n count: number | null = null,\r\n options: any | null = null,\r\n width: number = 500\r\n ): MatDialogRef<SendToDialogComponent, any> {\r\n return this.open(SendToDialogComponent, {\r\n ariaLabel: 'invia per email',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n count: count,\r\n appearance: 'fill',\r\n allowPopulate: allowPopulate,\r\n options: options\r\n },\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Select a tree node\r\n * @param nodes : tree nodes\r\n * @param title : title\r\n * @param description : description\r\n * @param initialFilter : initial filter\r\n * @param width: the preferred width\r\n * @param okCaption : ok catpion button\r\n */\r\n selectTree(\r\n nodes: any,\r\n title: string = 'Seleziona un elemento',\r\n description: string | null = null,\r\n initialFilter: string | null = null,\r\n width: number = 800,\r\n okCaption: string = 'Ok'\r\n ): MatDialogRef<SelectTreeDialogComponent, any> {\r\n return this.open(SelectTreeDialogComponent, {\r\n ariaLabel: 'seleziona un elemento',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n description: description,\r\n initialFilter: initialFilter,\r\n okCaption: okCaption,\r\n nodes: nodes,\r\n appearance: 'outline'\r\n } as SelectTreeDialogData,\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n /**\r\n * Display a select a picture dialog\r\n * @param title : dialog title\r\n * @param descritpion : brief description\r\n * @param okCaption : ok button caption\r\n * @param options : checkable option list\r\n * @param width: the preferred width\r\n */\r\n selectPicture(\r\n title: string = 'Seleziona immagine',\r\n descritpion: string | null = null,\r\n okCaption: string = 'Ok',\r\n options: any | null = null,\r\n width: number = 600\r\n ): MatDialogRef<SelectPictureDialogComponent, any> {\r\n return this.open(SelectPictureDialogComponent, {\r\n ariaLabel: 'seleziona immagine',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n description: descritpion,\r\n okCaption: okCaption,\r\n options: options,\r\n appearance: 'fill'\r\n } as SelectFileDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Display a select a file dialog\r\n * @param title : dialog title\r\n * @param descritpion : brief description\r\n * @param okCaption : ok button caption\r\n * @param helpLink : help link url\r\n * @param helpCaption : help link caption\r\n * @param options : checkable option list\r\n * @param width: the preferred width\r\n */\r\n selectFile(\r\n title: string = 'Seleziona file',\r\n descritpion: string | null = null,\r\n okCaption: string = 'Ok',\r\n helpLink: string | null = null,\r\n helpCaption: string | null = null,\r\n options: any | null = null,\r\n width: number = 600\r\n ): MatDialogRef<SelectFileDialogComponent, any> {\r\n return this.open(SelectFileDialogComponent, {\r\n ariaLabel: 'seleziona file',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n description: descritpion,\r\n okCaption: okCaption,\r\n helpLink: helpLink,\r\n helpCaption: helpCaption,\r\n options: options,\r\n appearance: 'fill'\r\n } as SelectFileDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Display a multipourpose selection and CRUD dialog\r\n * @param data : the dialog configuration model\r\n * @param disableClose : dialog disable close param\r\n * @param closeOnNavigation : dialog close on navigation param\r\n */\r\n select(data: SelectDialogData, \r\n disableClose: boolean = true,\r\n closeOnNavigation: boolean = true\r\n ): MatDialogRef<SelectDialogComponent, any> {\r\n if (!data.appearance) data.appearance = 'outline';\r\n return this.open(SelectDialogComponent, {\r\n ariaLabel: 'seleziona',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: data,\r\n closeOnNavigation: closeOnNavigation,\r\n disableClose: disableClose,\r\n minWidth: '375px',\r\n maxWidth: (data.width ? data.width : 800) + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Prompt user to insert a value\r\n * @param title : the dialog title\r\n * @param type : the input type: 0 = text, 1 = date, 2 = number\r\n * @param description : the placeholder description\r\n * @param initialValue : the initial value\r\n * @param okCaption : ok button caption\r\n * @param cancelCaption : cancel button caption\r\n * @param options : checkable option list\r\n * @param width: the preferred width\r\n */\r\n prompt(\r\n title: string,\r\n type: number = 0,\r\n description: string,\r\n initialValue: any | null = null,\r\n okCaption: string = 'Ok',\r\n cancelCaption: string = 'Annulla',\r\n options: any | null = null,\r\n width: number = 500\r\n ): MatDialogRef<PromptDialogComponent> {\r\n return this.open(PromptDialogComponent, {\r\n ariaLabel: 'inserisci valore',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n type: type,\r\n description: description,\r\n initialValue: initialValue,\r\n okCaption: okCaption,\r\n cancelCaption: cancelCaption,\r\n appearance: 'fill',\r\n options: options\r\n } as PromptDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { PaginatorIntl } from '@arsedizioni/ars-utils/ui';\r\nimport { ResizeTableColumnDirective } from './directives/resize-table-column.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n ResizeTableColumnDirective,\r\n ],\r\n exports: [\r\n ResizeTableColumnDirective,\r\n ],\r\n providers: [\r\n { provide: MatPaginatorIntl, useClass: PaginatorIntl }\r\n ]\r\n})\r\nexport class ArsUIApplicationModule { }\r\n\r\nexport * from \"./definitions\";\r\nexport * from \"./filters\";\r\nexport * from \"./services/applicationDialog.service\";\r\n\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule, NgForm } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { DateInterval, DateIntervalChangeDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { PromptDialogData, PromptDialogResult, PromptDialogType } from '../../definitions';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './prompt-date-dialog.component.html',\r\n styleUrls: ['./prompt-date-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, DateIntervalChangeDirective, MatButtonModule, MatIconModule, \r\n MatCheckboxModule, MatDialogActions, MatDialogClose]\r\n})\r\nexport class PromptDateDialogComponent implements OnInit {\r\n @ViewChild('f') f!: NgForm;\r\n @Output() done = new EventEmitter<PromptDialogResult>();\r\n private dialogService = inject(DialogService);\r\n\r\n protected dialogData: PromptDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Inserisci dato', type: PromptDialogType.Default }\r\n\r\n protected value: any | null = null;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Inserisci dato';\r\n }\r\n if (!this.dialogData.type) {\r\n this.dialogData.type = PromptDialogType.Default;\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = 'Ok';\r\n }\r\n if (!this.dialogData.cancelCaption) {\r\n this.dialogData.cancelCaption = 'Annulla';\r\n }\r\n if (this.dialogData.type !== PromptDialogType.Date && this.dialogData.type !== PromptDialogType.DateInterval) {\r\n this.dialogData.type = PromptDialogType.Date;\r\n }\r\n if (this.dialogData.type === PromptDialogType.DateInterval) {\r\n this.value = new DateInterval();\r\n }\r\n if (this.dialogData.initialValue) {\r\n this.value = this.dialogData.initialValue;\r\n }\r\n }\r\n\r\n /**\r\n * Done\r\n */\r\n ok() {\r\n if (this.f.form.invalid) {\r\n this.dialogService.error(\"Ci sono degli errori da correggere.\");\r\n return;\r\n }\r\n this.done.emit({ value: this.value, options: this.dialogData.options });\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxFill>\r\n @if (dialogData.type === 1) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input matInput [matDatepicker]=\"picker\" [(ngModel)]=\"value\" name=\"_value\" #_value=\"ngModel\"\r\n [required]=\"dialogData.required\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n @if (_value.invalid) {\r\n <mat-error>Data non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 4) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"picker\" min=\"1750-01-01\" [required]=\"dialogData.required\">\r\n <input matStartDate [(ngModel)]=\"value.from\" [dateIntervalChange]=\"value\" #rangeFrom1=\"ngModel\"\r\n name=\"rangeFrom1\" placeholder=\"Da data\">\r\n <input matEndDate [(ngModel)]=\"value.to\" [dateIntervalChange]=\"value\" [end]=\"true\" #rangeTo1=\"ngModel\"\r\n name=\"rangeTo1\" placeholder=\"A data\">\r\n </mat-date-range-input>\r\n @if (value.from || value.to) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"value.clear()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n @if (rangeFrom1.invalid || rangeTo1.invalid) {\r\n <mat-error>Intervallo non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <br>\r\n\r\n }\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">{{dialogData.cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule, NgForm } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SystemUtils, TimeValidatorDirective } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { PromptDialogResult, PromptDialogType, PromptTimeDialogData } from '../../definitions';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './prompt-time-dialog.component.html',\r\n styleUrls: ['./prompt-time-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule,\r\n MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule,\r\n MatDialogActions, MatDialogClose, TimeValidatorDirective]\r\n})\r\nexport class PromptTimeDialogComponent implements OnInit {\r\n @ViewChild('f') f!: NgForm;\r\n @Output() done = new EventEmitter<PromptDialogResult>();\r\n private dialogService = inject(DialogService);\r\n\r\n protected dialogData: PromptTimeDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Inserisci dato', type: PromptDialogType.Default }\r\n\r\n protected value: any | null = null;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Inserisci dato';\r\n }\r\n if (!this.dialogData.type) {\r\n this.dialogData.type = PromptDialogType.Default;\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = 'Ok';\r\n }\r\n if (!this.dialogData.cancelCaption) {\r\n this.dialogData.cancelCaption = 'Annulla';\r\n }\r\n if (this.dialogData.type !== PromptDialogType.Time) {\r\n this.dialogData.type = PromptDialogType.Time;\r\n }\r\n if (this.dialogData.initialValue) {\r\n this.value = this.dialogData.initialValue;\r\n }\r\n }\r\n\r\n /**\r\n * Done\r\n */\r\n ok() {\r\n if (this.f.form.invalid) {\r\n this.dialogService.error(\"Ci sono degli errori da correggere.\");\r\n return;\r\n }\r\n this.done.emit({ value: this.value, options: this.dialogData.options });\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\" fxFill>\r\n <div fxFlex=\"45\" fxFlex.xs=\"100\" fxFlexAlign=\"start\">\r\n <div>\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"time\" matInput [(ngModel)]=\"value\" name=\"_value\" #_value=\"ngModel\" [required]=\"dialogData.required\"\r\n time [slots]=\"dialogData.slots\">\r\n @if (_value.invalid) {\r\n <mat-error>Ora non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div fxFlex=\"45\" fxFlex.xs=\"100\" fxFlexAlign=\"start\">\r\n @if(this.dialogData.slots) {\r\n <div class=\"small bold uppercase\">Orari disponibili:</div>\r\n <ul class=\"small\">\r\n @for (s of this.dialogData.slots.replaceAll('-', ' - ').split('|'); track s) {\r\n <li>{{s}}</li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" \r\n (click)=\"ok()\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\"\r\n >{{dialogData.cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DoCheck, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, Optional, Output, Renderer2, Self, SimpleChanges, ViewChild, inject, input } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, FormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FileInfo, FileSizeValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { Subject } from 'rxjs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { UIService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Component({\r\n selector: 'file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: FileInputComponent }],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatFormFieldModule, MatInputModule, FormsModule, FileSizeValidatorDirective, MatButtonModule, \r\n MatIconModule, MatTooltipModule]\r\n})\r\nexport class FileInputComponent\r\n implements\r\n OnDestroy,\r\n AfterViewInit,\r\n DoCheck,\r\n OnChanges,\r\n MatFormFieldControl<FileInfo>,\r\n ControlValueAccessor {\r\n\r\n @ViewChild('__file') __file!: ElementRef;\r\n\r\n private renderer = inject(Renderer2);\r\n private uiService = inject(UIService);\r\n\r\n // Initialize\r\n static nextId = 0;\r\n readonly stateChanges = new Subject<void>();\r\n private previousNativeValue: any;\r\n controlType: string = 'file-input';\r\n focused = false;\r\n protected fileSize: number;\r\n \r\n protected canCapture: boolean = false;\r\n\r\n private _value: FileInfo = new FileInfo();\r\n set value(value: FileInfo) {\r\n this._value = value;\r\n this.propagateChange(this._value);\r\n this.stateChanges.next();\r\n this.changed.emit(this._value);\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n get size() {\r\n return this._value && this._value.file.size;\r\n }\r\n\r\n private _required: boolean = false;\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _disabled: boolean = false;\r\n @Input()\r\n get disabled() {\r\n if (this.ngControl && this.ngControl.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n private _placeholder: string = '';\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n @Input() fileName: string | null = null;\r\n maxSizeMb = input<number>(5);\r\n minSizeMb = input<number>(0);\r\n isNew = input<boolean>(false);\r\n canPreview = input<boolean>(false);\r\n appearance = input<'fill' | 'outline' | null>(this.uiService.appearance);\r\n accept = input<string>();\r\n get empty(): boolean {\r\n return !this._value || !this._value.file;\r\n }\r\n get errorState() {\r\n return this.ngControl.errors != null && this.ngControl.touched;\r\n }\r\n @HostBinding() id = `${this.controlType}-${FileInputComponent.nextId++}`;\r\n @HostBinding('class.floating')\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n @HostBinding('attr.aria-describedBy') describedBy = '';\r\n\r\n @Output() changed = new EventEmitter<FileInfo>();\r\n @Output() download = new EventEmitter();\r\n @Output() preview = new EventEmitter();\r\n\r\n private propagateChange: (_: any) => void = (_: any) => { };\r\n private propagateTouched: () => void = () => { };\r\n\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n async ngAfterViewInit() {\r\n await this.setupDevices();\r\n }\r\n\r\n /**\r\n * Setup capture devices \r\n */\r\n async setupDevices() {\r\n this.canCapture = false;\r\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n try {\r\n const stream = await navigator.mediaDevices.getUserMedia({\r\n video: true\r\n });\r\n if (stream) {\r\n this.canCapture = true;\r\n }\r\n } catch { }\r\n }\r\n if (!this.placeholder) {\r\n this.placeholder =\r\n this.canCapture\r\n ? \"Seleziona file o acquisisci con fotocamera\"\r\n : \"Seleziona file\"\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngDoCheck() {\r\n this.updateInputDirtyCheck();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.currentValue != changes.previousValue) {\r\n this.propagateChange(changes.currentValue);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n this.renderer.setProperty(elem, 'disabled', isDisabled);\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n elem.focus();\r\n this.propagateTouched();\r\n }\r\n }\r\n }\r\n\r\n protected updateInputDirtyCheck() {\r\n const newValue = this._value;\r\n if (this.previousNativeValue !== newValue) {\r\n this.previousNativeValue = newValue;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Select a file\r\n * @param e : event\r\n */\r\n protected selectFile(e: any) {\r\n if (e.target.files) {\r\n let f = e.target.files[0];\r\n this.fileName = f.name;\r\n this.fileSize = Math.round(f.size / (1024 * 1024));\r\n let fileInfo = new FileInfo();\r\n fileInfo.file = f;\r\n fileInfo.valid =\r\n (!this.maxSizeMb || this.fileSize <= this.maxSizeMb()) &&\r\n (!this.minSizeMb || this.fileSize >= this.minSizeMb());\r\n this.writeValue(fileInfo);\r\n }\r\n }\r\n\r\n /**\r\n * Check if a file has been selected\r\n */\r\n protected hasFile(): boolean {\r\n return this._value && this._value.file;\r\n }\r\n\r\n /**\r\n * Clear file\r\n */\r\n protected clearFile() {\r\n if (this.hasFile()) {\r\n this.fileName = null;\r\n this.fileSize = 0;\r\n let fi = new FileInfo();\r\n fi.file = null;\r\n fi.valid = !this.required\r\n this.writeValue(fi);\r\n this.__file.nativeElement.value = null;\r\n }\r\n }\r\n\r\n /**\r\n * Download\r\n */\r\n protected downloadFile() {\r\n if (!this.isNew()) this.download.emit();\r\n }\r\n\r\n /**\r\n * Preview\r\n */\r\n protected previewFile() {\r\n if (!this.isNew() && this.canPreview()) this.preview.emit();\r\n }\r\n}\r\n","<mat-form-field style=\"width:100%\" [appearance]=\"appearance()\">\r\n <mat-label>{{placeholder}}</mat-label>\r\n <input type=\"file\" [hidden]=\"true\" [accept]=\"accept()\" (change)=\"selectFile($event)\" #__file />\r\n <input name=\"_fileName\" #_fileName=\"ngModel\" [(ngModel)]=\"fileName\" [id]=\"id\" matInput readonly [required]=\"required\"\r\n fileSize [size]=\"fileSize\" [maxSizeMb]=\"maxSizeMb()\" [minSizeMb]=\"minSizeMb()\" [disabled]=\"disabled\" />\r\n @if (hasFile()) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"clearFile()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (!disabled) {\r\n <button type=\"button\" type=\"button\" mat-icon-button matSuffix (click)=\"__file.click()\" aria-label=\"Seleziona file\"\r\n matTooltip=\"Seleziona\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n }\r\n @if (!isNew() && canPreview()) {\r\n <button type=\"button\" mat-icon-button matSuffix (click)=\"previewFile()\" aria-label=\"Anteprima\" matTooltip=\"Anteprima\">\r\n <mat-icon>preview</mat-icon>\r\n </button>\r\n }\r\n @if (!isNew()) {\r\n <button type=\"button\" mat-icon-button matSuffix (click)=\"downloadFile()\" aria-label=\"Scarica file\"\r\n matTooltip=\"Scarica\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\r\n }\r\n @if (hasFile() && fileSize > 0) {\r\n <mat-hint align=\"left\">{{fileSize}} MB</mat-hint>\r\n }\r\n @if (hasFile() && fileSize == 0) {\r\n <mat-hint align=\"left\">\r\n < 1 MB</mat-hint>\r\n } @if (maxSizeMb()) {\r\n <mat-hint align=\"end\">Massimo {{maxSizeMb()}} MB\r\n </mat-hint>\r\n }\r\n @if (_fileName.invalid && !hasFile()) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n @if (_fileName.invalid && hasFile()) {\r\n <mat-error>Dimensione non consentita.</mat-error>\r\n }\r\n</mat-form-field>","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, OnInit, OnDestroy, ChangeDetectionStrategy, inject, signal, AfterViewInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { fromEvent, takeUntil, Subject, debounceTime } from 'rxjs';\r\nimport { SafeUrlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { NgStyle } from '@angular/common';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\nexport interface FilePreviewDialogData {\r\n url?: string | null;\r\n embed?: boolean | null;\r\n authToken?: string | null;\r\n}\r\n\r\n\r\n@Component({\r\n templateUrl: './file-preview.component.html',\r\n styleUrls: ['./file-preview.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogContent, NgStyle, FlexLayoutModule, MatDialogActions, MatButtonModule, MatTooltipModule,\r\n MatDialogClose, SafeUrlPipe]\r\n})\r\nexport class FilePreviewComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private httpClient = inject(HttpClient);\r\n private dialogService = inject(DialogService);\r\n protected dialogData: FilePreviewDialogData = inject(MAT_DIALOG_DATA);\r\n protected url = signal(null);\r\n\r\n\r\n ngOnInit() {\r\n if (this.dialogData) {\r\n if (!this.dialogData.embed) {\r\n this.httpClient.get(\r\n this.dialogData.url,\r\n {\r\n headers:\r\n this.dialogData.authToken\r\n ? new HttpHeaders().set(\"Authorization\", this.dialogData.authToken)\r\n : new HttpHeaders(),\r\n responseType: 'blob'\r\n }\r\n ).subscribe(\r\n (res: any) => {\r\n this.url.set(URL.createObjectURL(res));\r\n });\r\n } else {\r\n this.url.set('https://view.officeapps.live.com/op/embed.aspx?src=' + encodeURIComponent(this.dialogData.url));\r\n }\r\n }\r\n\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n this.resize();\r\n });\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n this.url.set(null);\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.resize();\r\n }\r\n\r\n /**\r\n * Resize \r\n */\r\n private resize() {\r\n setTimeout(() => {\r\n let elem = document.getElementById('file-preview-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['file-preview-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n }\r\n } else {\r\n this.resize();\r\n }\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Download manually\r\n */\r\n download() {\r\n window.open(this.url(), '_blank');\r\n }\r\n\r\n /**\r\n * Troubles with pdf?\r\n */\r\n troubles() {\r\n this.dialogService.info(\r\n \"<p>Se non riesci a visualizzare l'anteprima dei file PDF probabilmente devi abilitare un'impostazione del tuo browser.</p>\" +\r\n \"<b>Per Google Chrome</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'><i>impostazioni > privacy e sicurezza > impostazioni sito > documenti PDF</i></p>\" +\r\n \"<b>Per Microsoft Chrome</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'><i>impostazioni > cookie e autorizzazioni sito > documenti PDF</i></p>\" +\r\n \"<b>Per Mozilla Firefox</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'><i>impostazioni > generale > applicazioni</i></p>\" +\r\n \"<b>Altri browser</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'>Fate riferimento alla documentazione specifica del vostro browser.</p>\",\r\n \"Problemi con lee anteprime dei file PDF?\"\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\n","<mat-dialog-content class=\"file-preview\" id=\"file-preview-scrollable\">\r\n <div class=\"content\">\r\n @if (!url) {\r\n <div class=\"loading\">Caricamento in corso...</div>\r\n } @else {\r\n <iframe class=\"iframe\" onload=\"scrollTo(0,0)\" [src]=\"url() | safeUrl\"></iframe>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions id=\"file-preview-fixed\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <button mat-stroked-button color=\"primary\" (click)=\"troubles()\"\r\n matTooltip=\"Fai click se non riesci a visualizzare l'anteprima dei file PDF\">Problemi con i PDF?</button>\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-stroked-button color=\"primary\" (click)=\"download()\">Scarica</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { NgClass, NgStyle } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, OnInit, Output, effect, inject, input, signal } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { CurrentFilter, CurrentFilterChanged, FilterGroup, FilterItem, Filters } from '../../filters';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"filter-bar\",\r\n templateUrl: \"./filter-bar.component.html\",\r\n styleUrls: [\"./filter-bar.component.scss\"],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, NgStyle, FlexLayoutModule, MatFormFieldModule, MatInputModule, FormsModule,\r\n MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, MatDividerModule, SafeHtmlPipe]\r\n})\r\nexport class FilterBarComponent implements OnInit {\r\n @Output() changed = new EventEmitter<CurrentFilterChanged>();\r\n private changeDetector = inject(ChangeDetectorRef);\r\n\r\n filters = input<any>();\r\n canFilterByFlt1 = signal<boolean>(false);\r\n canFilterByFlt2 = signal<boolean>(false);\r\n canFilterByFlt3 = signal<boolean>(false);\r\n canFilterByFlt4 = signal<boolean>(false);\r\n canFilterByFlt5 = signal<boolean>(false);\r\n canFilterByText = input<boolean>(false);\r\n canFilterByText2 = input<boolean>(false);\r\n canFilterByText3 = input<boolean>(false);\r\n initialText = input<string>(null);\r\n initialText2 = input<string>(null);\r\n initialText3 = input<string>(null);\r\n textName = input<string>(\"testo\");\r\n text2Name = input<string>(\"...\");\r\n text3Name = input<string>(\"...\");\r\n textLength = input<string>();\r\n text2Length = input<string>();\r\n text3Length = input<string>();\r\n showTextSearchButton = input<boolean>(false);\r\n appearance = input<'fill' | 'outline' | null>('outline');\r\n\r\n\r\n protected text: string | null = null;\r\n protected text2: string | null = null;\r\n protected text3: string | null = null;\r\n protected flt1: FilterGroup;\r\n protected flt2: FilterGroup;\r\n protected flt3: FilterGroup;\r\n protected flt4: FilterGroup;\r\n protected flt5: FilterGroup;\r\n\r\n public readonly currentFilter: CurrentFilter = new CurrentFilter();\r\n\r\n constructor() {\r\n effect(() => {\r\n this.text = this.initialText();\r\n this.text2 = this.initialText2();\r\n this.text3 = this.initialText3();\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeFilters();\r\n }\r\n\r\n\r\n /**\r\n * Initialize filters\r\n */\r\n initializeFilters() {\r\n if (!this.filters()) return;\r\n this.filters().forEach((n: any) => {\r\n switch (n.group) {\r\n case Filters.FLT_1:\r\n this.flt1 = n;\r\n this.canFilterByFlt1.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_2:\r\n this.flt2 = n;\r\n this.canFilterByFlt2.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_3:\r\n this.flt3 = n;\r\n this.canFilterByFlt3.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_4:\r\n this.flt4 = n;\r\n this.canFilterByFlt4.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_5:\r\n this.flt5 = n;\r\n this.canFilterByFlt5.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Apply a filter\r\n * @param filter : the filter to apply\r\n */\r\n applyFilter(filter: FilterItem) {\r\n let changed = false;\r\n switch (filter.group) {\r\n case Filters.FLT_1:\r\n changed = this.currentFilter.flt1 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt1 = filter.value;\r\n this.currentFilter.flt1Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_2:\r\n changed = this.currentFilter.flt2 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt2 = filter.value;\r\n this.currentFilter.flt2Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_3:\r\n changed = this.currentFilter.flt3 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt3 = filter.value;\r\n this.currentFilter.flt3Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_4:\r\n changed = this.currentFilter.flt4 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt4 = filter.value;\r\n this.currentFilter.flt4Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_5:\r\n changed = this.currentFilter.flt5 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt5 = filter.value;\r\n this.currentFilter.flt5Name = filter.titleSelected;\r\n }\r\n break;\r\n }\r\n\r\n if (changed) {\r\n this.changed.emit({ filter: this.currentFilter, group: filter.group });\r\n }\r\n\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Apply a filter action\r\n * @param filter : the filter to apply\r\n * @param clear : true if the filter mus be removed\r\n * @param event : the click event\r\n */\r\n applyFilterAction(group: number, clear: boolean = false, event: any = null) {\r\n if (!clear) {\r\n const g = this.getFilterGroup(group);\r\n if (g.action) {\r\n g.action(this, g, event);\r\n }\r\n } else {\r\n this.clearFilter(group);\r\n }\r\n \r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Apply text filter\r\n */\r\n applyTextFilter() {\r\n this.currentFilter.text = this.text;\r\n this.currentFilter.text2 = this.text2;\r\n this.currentFilter.text3 = this.text3;\r\n this.changed.emit({\r\n filter: this.currentFilter,\r\n group: Filters.FLT_TEXT\r\n });\r\n \r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Clear a filter\r\n * @param group : the filter group\r\n */\r\n clearFilter(group: number) {\r\n let changed = false;\r\n switch (group) {\r\n case Filters.FLT_1:\r\n changed = this.currentFilter.flt1 != null;\r\n if (changed) {\r\n this.currentFilter.flt1 = null;\r\n this.currentFilter.flt1Name = null;\r\n }\r\n break;\r\n case Filters.FLT_2:\r\n changed = this.currentFilter.flt2 != null;\r\n if (changed) {\r\n this.currentFilter.flt2 = null;\r\n this.currentFilter.flt2Name = null;\r\n }\r\n break;\r\n case Filters.FLT_3:\r\n changed = this.currentFilter.flt3 != null;\r\n if (changed) {\r\n this.currentFilter.flt3 = null;\r\n this.currentFilter.flt3Name = null;\r\n }\r\n break;\r\n case Filters.FLT_4:\r\n changed = this.currentFilter.flt4 != null;\r\n if (changed) {\r\n this.currentFilter.flt4 = null;\r\n this.currentFilter.flt4Name = null;\r\n }\r\n break;\r\n case Filters.FLT_5:\r\n changed = this.currentFilter.flt5 != null;\r\n if (changed) {\r\n this.currentFilter.flt5 = null;\r\n this.currentFilter.flt5Name = null;\r\n }\r\n break;\r\n }\r\n if (changed) {\r\n this.changed.emit({ filter: this.currentFilter, group: group });\r\n }\r\n }\r\n\r\n /**\r\n * Clear all filters\r\n */\r\n clearAllFilters() {\r\n this.currentFilter.flt1 = null;\r\n this.currentFilter.flt1Name = null;\r\n this.currentFilter.flt2 = null;\r\n this.currentFilter.flt2Name = null;\r\n this.currentFilter.flt3 = null;\r\n this.currentFilter.flt3Name = null;\r\n this.currentFilter.flt4 = null;\r\n this.currentFilter.flt4Name = null;\r\n this.currentFilter.flt5 = null;\r\n this.currentFilter.flt5Name = null;\r\n this.currentFilter.text = null;\r\n this.currentFilter.text2 = null;\r\n this.currentFilter.text3 = null;\r\n this.text = null;\r\n this.text2 = null;\r\n this.text3 = null;\r\n this.changed.emit({ filter: this.currentFilter, group: -1 });\r\n }\r\n\r\n /**\r\n * Check if can clear all filters button cab be showed\r\n */\r\n canClearAllFilters(): boolean {\r\n let count = 0;\r\n if (this.canFilterByText) count++;\r\n if (this.canFilterByText2) count++;\r\n if (this.canFilterByText3) count++;\r\n if (this.canFilterByFlt1) count++;\r\n if (this.canFilterByFlt2) count++;\r\n if (this.canFilterByFlt3) count++;\r\n if (this.canFilterByFlt4) count++;\r\n if (this.canFilterByFlt5) count++;\r\n return count > 1;\r\n }\r\n\r\n /**\r\n * Get the filter group\r\n * @param id : the filter id\r\n */\r\n private getFilterGroup(id: number): FilterGroup {\r\n return this.filters().find((n: any) => n.group === id);\r\n }\r\n\r\n /**\r\n * Update filter bar using current search params\r\n * @param params : search params\r\n */\r\n syncFilter() {\r\n let g = this.getFilterGroup(Filters.FLT_1);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt1Name = null;\r\n if (this.currentFilter.flt1) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt1);\r\n if (gi) this.currentFilter.flt1Name = gi.titleSelected;\r\n else this.currentFilter.flt1 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_2);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt2Name = null;\r\n if (this.currentFilter.flt2) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt2);\r\n if (gi) this.currentFilter.flt2Name = gi.titleSelected;\r\n else this.currentFilter.flt2 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_3);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt3Name = null;\r\n if (this.currentFilter.flt3) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt3);\r\n if (gi) this.currentFilter.flt3Name = gi.titleSelected;\r\n else this.currentFilter.flt3 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_4);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt4Name = null;\r\n if (this.currentFilter.flt4) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt4);\r\n if (gi) this.currentFilter.flt4Name = gi.titleSelected;\r\n else this.currentFilter.flt4 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_5);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt5Name = null;\r\n if (this.currentFilter.flt5) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt5);\r\n if (gi) this.currentFilter.flt5Name = gi.titleSelected;\r\n else this.currentFilter.flt5 = null;\r\n }\r\n }\r\n }\r\n\r\n this.text = this.currentFilter.text;\r\n this.text2 = this.currentFilter.text2;\r\n this.text3 = this.currentFilter.text3;\r\n\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"filterbox\"\r\n[ngClass]=\"{'filterbox-filtered': currentFilter.filtered()}\">\r\n <div fxFlex=\"100\" 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 [ngStyle]=\"{'width': textLength() ?? '100%'}\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{textName()}}...</mat-label>\r\n <input matInput name=\"_text\" [(ngModel)]=\"text\" 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 = ''; 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 [ngStyle]=\"{'width': text2Length() ?? '100%'}\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{text2Name()}}...</mat-label>\r\n <input matInput name=\"_text2\" [(ngModel)]=\"text2\" 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 = ''; 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 [ngStyle]=\"{'width': text3Length() ?? '100%'}\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{text3Name()}}...</mat-label>\r\n <input matInput name=\"_text3\" [(ngModel)]=\"text3\" 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 = ''; 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\" fxLayoutGap=\"10px\" fxFill >\r\n @if (canFilterByFlt1() && flt1 && flt1.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt1.tooltip || 'Filtra per ' + flt1.title\"\r\n [attr.aria-label]=\"flt1.tooltip || 'Filtra per ' + flt1.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(1, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt1) {\r\n <span style=\"font-weight: 200 !important\">{{flt1.title}}</span>\r\n } @else {\r\n <span [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\"\r\n aria-label=\"'Azzera'\" (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 && flt1.items) {\r\n <button fxFlexAlign=\"center\" type=\"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 color=\"primary\" style=\"height:56px;\" >\r\n \r\n @if (!currentFilter.flt1) {\r\n <span style=\"font-weight: 200 !important\">{{flt1.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt1.items[0].group)\"\r\n attr.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 && flt2.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt2.tooltip || 'Filtra per ' + flt2.title\"\r\n [attr.aria-label]=\"flt2.tooltip || 'Filtra per ' + flt2.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(2, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt2) {\r\n <span style=\"font-weight: 200 !important\">{{flt2.title}}</span>\r\n } @else {\r\n <span [innerHtml]=\"currentFilter.flt2Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt2) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt2() && flt2 && flt2.items) {\r\n <button fxFlexAlign=\"center\" type=\"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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt2) {\r\n <span style=\"font-weight: 200 !important\">{{flt2.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt2.items[0].group)\"\r\n attr.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 && flt3.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt3.tooltip || 'Filtra per ' + flt3.title\"\r\n [attr.aria-label]=\"flt3.tooltip || 'Filtra per ' + flt3.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(3, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt3) {\r\n <span style=\"font-weight: 200 !important\">{{flt3.title}}</span>\r\n } @else {\r\n <span [innerHtml]=\"currentFilter.flt3Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt3) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt3() && flt3 && flt3.items) {\r\n <button fxFlexAlign=\"center\" type=\"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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt3) {\r\n <span style=\"font-weight: 200 !important\">{{flt3.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt3.items[0].group)\"\r\n attr.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 && flt4.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt4.tooltip || 'Filtra per ' + flt4.title\"\r\n [attr.aria-label]=\"flt4.tooltip || 'Filtra per ' + flt4.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(4, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt4) {\r\n <span style=\"font-weight: 200 !important\">{{flt4.title}}</span>\r\n } @else {\r\n <span [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\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt4() && flt4 && flt4.items) {\r\n <button fxFlexAlign=\"center\" 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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt4) {\r\n <span style=\"font-weight: 200 !important\">{{flt4.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt4.items[0].group)\"\r\n attr.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 && flt5.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt5.tooltip || 'Filtra per ' + flt5.title\"\r\n [attr.aria-label]=\"flt5.tooltip || 'Filtra per ' + flt5.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(5, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt5) {\r\n <span style=\"font-weight: 200 !important\">{{flt5.title}}</span>\r\n } @else {\r\n <span [innerHtml]=\"currentFilter.flt5Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt5) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt5() && flt5 && flt5.items) {\r\n <button fxFlexAlign=\"center\" 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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt5) {\r\n <span style=\"font-weight: 200 !important\">{{flt5.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt5.items[0].group)\"\r\n attr.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 </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\" attr.aria-label=\"Azzera tutti i filtri\"\r\n (click)=\"clearAllFilters()\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, inject } from '@angular/core';\r\nimport { MatCalendar } from '@angular/material/datepicker';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n template: '<div></div>',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarEmptyHeader<D> implements OnDestroy {\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private calendar = inject(MatCalendar<D>);\r\n private changeDetector = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this.calendar.stateChanges\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe(() => this.changeDetector.markForCheck());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Optional, Output, Renderer2, Self, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { NameValueItem, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'button-selector',\r\n standalone: true,\r\n imports: [NgStyle, NgClass, FlexLayoutModule, MatIconModule, MatButtonModule,\r\n MatMenuModule],\r\n templateUrl: './button-selector.component.html',\r\n styleUrl: './button-selector.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonSelectorComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n @Output() changed = new EventEmitter<NameValueItem<any> | null>();\r\n @Output() selected = new EventEmitter<NameValueItem<any> | null>();\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private stateChanges = new Subject<void>();\r\n private focused = false;\r\n\r\n private _value: NameValueItem<any> | null = null\r\n set value(value: NameValueItem<any> | null) {\r\n this._value = value;\r\n this.propagateChange(this._value);\r\n this.stateChanges.next();\r\n this.changed.emit(this._value);\r\n this.current.set(this._value);\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n private _disabled: boolean = false;\r\n @Input()\r\n get disabled() {\r\n if (this.ngControl && this.ngControl.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n private propagateChange: (_: any) => void = (_: any) => { };\r\n private propagateTouched: () => void = () => { };\r\n\r\n @HostBinding() id = `button-selector--${SystemUtils.generateUUID()}`;\r\n @HostBinding('attr.aria-describedBy') describedBy = '';\r\n\r\n private renderer = inject(Renderer2);\r\n\r\n protected current = signal<NameValueItem<any> | null>(null);\r\n\r\n width = input<number>(-1);\r\n border = input<number>(-1);\r\n borderRadius = input<string>(\"9999px\");\r\n label = input<string | null>(null);\r\n labelSelected = input<string | null>(null);\r\n options = input<NameValueItem<any>[]>([]);\r\n autoSelect = input<boolean>(false);\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.autoSelect()) {\r\n const options = this.options();\r\n if (options && options.length > 0 && options[0].value) {\r\n this.current.set(options[0]);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n this.renderer.setProperty(elem, 'disabled', isDisabled);\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n elem.focus();\r\n this.propagateTouched();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Select an element\r\n * @param item : the item to select\r\n * @param notify: true if selection notification must be rised. Default is true\r\n */\r\n select(item: NameValueItem<any>, notify: boolean = true) {\r\n this.writeValue(item);\r\n if (notify) {\r\n this.selected.emit(item);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Reset value\r\n */\r\n reset() {\r\n this.writeValue(null);\r\n }\r\n}\r\n","<button mat-stroked-button class=\"menu-selector-button\" [ngStyle]=\"{\r\n 'border': border() >= 0 ? border() : 'auto',\r\n 'border-radius': borderRadius(),\r\n 'height': border() <= 0 ? '40px' : 'auto',\r\n 'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')\r\n}\" [attr.aria-label]=\"label()\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if(current()) {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n <div class=\"x-small \">{{labelSelected() ?? label()}}</div>\r\n <div fxHide.xs class=\"small\" >{{current()?.shortName ?? current()?.name ?? ''}}</div>\r\n <div fxHide.gt-xs class=\"x-small truncated\" style=\"max-width: 120px;\"><div>{{current()?.shortName ?? current()?.name ?? ''}}</div></div>\r\n </div>\r\n } @else {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n {{label()}}</div>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </div>\r\n </div>\r\n</button>\r\n<mat-menu #optionsMenu=\"matMenu\">\r\n @for (o of options(); track $index) {\r\n <button mat-menu-item (click)=\"select(o)\" [disabled]=\"o.disabled\">\r\n {{o.name}}\r\n @if(o.bag) {\r\n ({{o.bag}})\r\n }\r\n </button>\r\n }\r\n</mat-menu>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, EventEmitter, HostBinding, inject, Input, input, OnDestroy, OnInit, Optional, Output, Renderer2, Self, Signal, signal } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NameValueItem, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { debounceTime, fromEvent, Subject, takeUntil } from 'rxjs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ButtonSelectorComponent } from '../button-selector/button-selector.component';\r\n\r\n\r\n@Component({\r\n selector: 'chips-selector',\r\n standalone: true,\r\n imports: [NgStyle, NgClass, FlexLayoutModule, FormsModule, MatFormFieldModule, MatSelectModule,\r\n MatChipsModule, MatIconModule, MatButtonModule, MatBadgeModule, MatTooltipModule,\r\n ButtonSelectorComponent\r\n ],\r\n templateUrl: './chips-selector.component.html',\r\n styleUrl: './chips-selector.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChipsSelectorComponent implements OnInit, OnDestroy, AfterContentInit, ControlValueAccessor {\r\n\r\n @Output() changed = new EventEmitter<NameValueItem<any>[] | null>();\r\n protected containerId: string = `chips-selector-container--${SystemUtils.generateUUID()}`;\r\n protected containerWidth = signal(-6);\r\n private focused: boolean = false;\r\n private stateChanges: Subject<void> = new Subject<void>();\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private changesEnabled = false;\r\n\r\n options = input<NameValueItem<any>[]>([]);\r\n collapsedWidth = input<number>(-1);\r\n collapsedDisplayMode = input<'dropdown' | 'button'>('dropdown');\r\n collapseAt = input<number>(-1);\r\n collapseAtContainer = input<boolean>(false);\r\n label = input<string>('');\r\n multiple = input<boolean>(false);\r\n mode = input<'collapsed' | 'dinamyc'>('dinamyc');\r\n collapsed: Signal<boolean> = computed(() => {\r\n const cw = this.containerWidth();\r\n const mw = this.collapseAt();\r\n return this.mode() === 'collapsed' || (mw === -1 || (cw > 0 && mw > 0 && cw < mw));\r\n })\r\n\r\n\r\n\r\n private _value: NameValueItem<any>[] | null = []\r\n set value(value: NameValueItem<any>[] | null) {\r\n this._value = value;\r\n this.propagateChange(this._value);\r\n this.stateChanges.next();\r\n if (this.changesEnabled) {\r\n this.changed.emit(this._value);\r\n }\r\n this.selection = [];\r\n this.singleSelection = null;\r\n if (this._value) {\r\n this.options().forEach(n => {\r\n if (this._value?.findIndex((x: any) => x.value === n.value) !== -1) {\r\n this.selection.push(n);\r\n }\r\n });\r\n if (this.selection.length > 0) {\r\n this.singleSelection = this.selection[0]\r\n }\r\n }\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n get empty(): boolean {\r\n return !this._value || this._value?.length === 0;\r\n }\r\n get errorState() {\r\n return this.ngControl.errors != null && this.ngControl.touched;\r\n }\r\n\r\n private _required: boolean = false;\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n private _disabled: boolean = false;\r\n @Input()\r\n get disabled() {\r\n if (this.ngControl && this.ngControl.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n private _placeholder: string = '';\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n\r\n private propagateChange: (_: any) => void = (_: any) => { };\r\n private propagateTouched: () => void = () => { };\r\n\r\n @HostBinding() id = `chips-selector--${SystemUtils.generateUUID()}`;\r\n @HostBinding('class.floating')\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n @HostBinding('attr.aria-describedBy') describedBy = '';\r\n\r\n private renderer = inject(Renderer2);\r\n\r\n protected selection: NameValueItem<any>[] = [];\r\n protected singleSelection: NameValueItem<any> | null = null;\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n if (this.collapseAt() > 0) {\r\n // Close the options menu if open\r\n this.updateContainerWidth();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n setTimeout(() => {\r\n this.updateContainerWidth();\r\n this.changesEnabled = true;\r\n this.changeDetector.markForCheck();\r\n }, 250);\r\n }\r\n\r\n /**\r\n * Update container width\r\n */\r\n private updateContainerWidth() {\r\n const elem = document.getElementById(this.containerId);\r\n if (elem && elem.clientWidth > 0) {\r\n this.containerWidth.set(\r\n this.collapseAtContainer()\r\n ? (elem?.clientWidth ?? -1)\r\n : (window.innerWidth ?? -1));\r\n } else {\r\n setTimeout(() => {\r\n this.updateContainerWidth();\r\n }, 100)\r\n }\r\n }\r\n\r\n /**\r\n * Update current value with a little delay\r\n */\r\n updateValue() {\r\n setTimeout(() => {\r\n const value =\r\n !this.multiple() && this.collapsed() && this.collapsedDisplayMode() === \"button\"\r\n ? this.singleSelection\r\n : this.selection;\r\n if (Array.isArray(value)) {\r\n this.writeValue(value);\r\n } else {\r\n this.writeValue([value]);\r\n }\r\n }, 250);\r\n }\r\n \r\n writeValue(value: any): void {\r\n if (this.value !== value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n this.renderer.setProperty(elem, 'disabled', isDisabled);\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n elem.focus();\r\n this.propagateTouched();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear selection\r\n * @param e : the click event\r\n */\r\n clear(e: Event) {\r\n this.writeValue([]);\r\n e.stopPropagation();\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Select single element\r\n * @param item : the item to select\r\n */\r\n select(item: NameValueItem<any> | null) {\r\n if (item) {\r\n this.writeValue([item]);\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n}\r\n","<div [id]=\"containerId\" class=\"chips-selector\">\r\n @if(containerWidth() > 0) {\r\n @if(collapsed()) {\r\n @if(collapsedDisplayMode() === 'dropdown') {\r\n <mat-form-field [ngStyle]=\"{'min-width': collapsedWidth() > 0 ? collapsedWidth()+'.px' : '100%'}\"\r\n subscriptSizing=\"dynamic\">\r\n @if(label()) {\r\n <mat-label>{{label()}}</mat-label>\r\n }\r\n <mat-select [(ngModel)]=\"selection\" [multiple]=\"multiple()\" (selectionChange)=\"updateValue()\">\r\n <mat-select-trigger>\r\n @if (value && (value.length || 0) > 0) {\r\n {{value[0].shortName ?? value[0].name}}\r\n }\r\n @if (value && (value.length || 0) > 1) {\r\n <span class=\"collapsed-additional-selection\">\r\n (+{{(value.length || 0) - 1}} {{value.length === 2 ? 'altro' : 'altri'}})\r\n </span>\r\n }\r\n </mat-select-trigger>\r\n @for (o of options(); track o.value) {\r\n <mat-option [value]=\"o\" [disabled]=\"o.disabled\">\r\n {{o.name}}\r\n @if(o.bag) {\r\n ({{o.bag}});\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (value && (value.length || 0) > 0) {\r\n <button matSuffix tabindex=\"-1\" mat-icon-button aria-label=\"Pulisci\" (click)=\"clear($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n <button-selector [label]=\"label()\" [options]=\"options()\" [width]=\"collapsedWidth()\" [(ngModel)]=\"singleSelection\"\r\n name=\"value\" (selected)=\"updateValue()\" ></button-selector>\r\n\r\n }\r\n } @else {\r\n <mat-chip-listbox [multiple]=\"multiple()\" [(ngModel)]=\"selection\" (change)=\"updateValue()\">\r\n @for (o of options(); track o.value) {\r\n <mat-chip-option [matBadge]=\"o.bag\" [matTooltip]=\"o.bagInfo ?? ''\" [value]=\"o\" [disabled]=\"o.disabled\">{{o.shortName ??\r\n o.name}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n }\r\n }\r\n</div>","import { NgClass, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output, Signal, computed, input } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\nexport interface ButtonToggleInfo {\r\n value: boolean,\r\n toggled: boolean\r\n}\r\n\r\n@Component({\r\n selector: 'button-toggle',\r\n standalone: true,\r\n imports: [NgStyle, NgClass, FlexLayoutModule, MatIconModule, MatButtonModule, SafeHtmlPipe],\r\n templateUrl: './button-toggle.component.html',\r\n styleUrl: './button-toggle.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonToggleComponent {\r\n\r\n @Output() changed = new EventEmitter<ButtonToggleInfo>();\r\n\r\n protected current: Signal<boolean> = computed(() => {\r\n return this.value();\r\n })\r\n\r\n toggled: boolean = false;\r\n\r\n value = input<boolean>(false);\r\n width = input<number>(-1);\r\n border = input<number>(-1);\r\n labelOn = input<string | null>(null);\r\n labelOff = input<string | null>(null);\r\n iconOn = input<string | null>(null);\r\n iconOff = input<string | null>(null);\r\n cssClass = input<string | null>(null);\r\n cssClassSmall = input<string | null>(null);\r\n\r\n protected label: Signal<string> = computed(() => {\r\n return this.value() ? this.labelOn() ?? '' : this.labelOff() ?? '';\r\n })\r\n\r\n protected icon: Signal<string> = computed(() => {\r\n return this.value() ? this.iconOn() ?? '' : this.iconOff() ?? '';\r\n })\r\n\r\n /**\r\n * Toggle the button\r\n */\r\n toggle() {\r\n this.toggled = !(this.value());\r\n this.changed.emit({ value: this.value(), toggled: this.toggled });\r\n }\r\n\r\n}\r\n","<button mat-stroked-button [ngStyle]=\"{\r\n 'border': border() >= 0 ? border() : 'auto',\r\n 'height': border() <= 0 ? '40px' : 'auto',\r\n 'min-width.px': width() > 0 ? width() : 'auto', \r\n 'mxn-width.px': width() > 0 ? width() : 'auto' \r\n}\" [class]=\"cssClass()\" [attr.aria-label]=\"label()\" (click)=\"toggle()\" [ngClass]=\"{'button-on': value() === true}\" [ngClass.xs]=\"cssClassSmall()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"center center\" fxFill>\r\n @if(icon()) {\r\n <div fxFlex=\"24px\"><mat-icon>{{icon()}}</mat-icon></div>\r\n }\r\n <div fxFlex=\"*\" [innerHtml]=\"label() | safeHtml\"></div>\r\n </div>\r\n</button>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/dialogs/prompt/prompt-dialog.component';\r\nexport * from './ui/dialogs/prompt-date/prompt-date-dialog.component';\r\nexport * from './ui/dialogs/prompt-time/prompt-time-dialog.component';\r\nexport * from './ui/dialogs/select-file/select-file-dialog.component';\r\nexport * from './ui/dialogs/select-picture/select-picture-dialog.component';\r\nexport * from './ui/dialogs/select-tree/select-tree-dialog.component';\r\nexport * from './ui/dialogs/select/select-dialog.component';\r\nexport * from './ui/dialogs/send-to/send-to-dialog.component';\r\nexport * from './ui/components/file-input/file-input.component';\r\nexport * from './ui/components/file-preview/file-preview.component';\r\nexport * from './ui/components/filter-bar/filter-bar.component';\r\nexport * from './ui/components/calendar-empty-header/calendar-empy-header.component';\r\nexport * from './ui/components/chips-selector/chips-selector.component';\r\nexport * from './ui/components/button-selector/button-selector.component';\r\nexport * from './ui/components/button-toggle/button-toggle.component';\r\nexport * from './ui/directives/resize-table-column.directive';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i9","observableOf","i1","i3","i4","i5","i8","i10","i6","i12","takeUntil","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"arsedizioni-ars-utils-ui.application.mjs","sources":["../../../projects/ars-utils/ui.application/ui/directives/resize-table-column.directive.ts","../../../projects/ars-utils/ui.application/ui/definitions.ts","../../../projects/ars-utils/ui.application/ui/filters.ts","../../../projects/ars-utils/ui.application/ui/dialogs/send-to/send-to-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/send-to/send-to-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select-file/select-file-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select-file/select-file-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/prompt/prompt-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt/prompt-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/select/select-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/select/select-dialog.component.html","../../../projects/ars-utils/ui.application/ui/services/applicationDialog.service.ts","../../../projects/ars-utils/ui.application/ui/ui.module.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.html","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.ts","../../../projects/ars-utils/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.html","../../../projects/ars-utils/ui.application/ui/components/file-input/file-input.component.ts","../../../projects/ars-utils/ui.application/ui/components/file-input/file-input.component.html","../../../projects/ars-utils/ui.application/ui/components/file-preview/file-preview.component.ts","../../../projects/ars-utils/ui.application/ui/components/file-preview/file-preview.component.html","../../../projects/ars-utils/ui.application/ui/components/filter-bar/filter-bar.component.ts","../../../projects/ars-utils/ui.application/ui/components/filter-bar/filter-bar.component.html","../../../projects/ars-utils/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.ts","../../../projects/ars-utils/ui.application/ui/components/button-selector/button-selector.component.ts","../../../projects/ars-utils/ui.application/ui/components/button-selector/button-selector.component.html","../../../projects/ars-utils/ui.application/ui/components/chips-selector/chips-selector.component.ts","../../../projects/ars-utils/ui.application/ui/components/chips-selector/chips-selector.component.html","../../../projects/ars-utils/ui.application/ui/components/button-toggle/button-toggle.component.ts","../../../projects/ars-utils/ui.application/ui/components/button-toggle/button-toggle.component.html","../../../projects/ars-utils/ui.application/public_api.ts","../../../projects/ars-utils/ui.application/arsedizioni-ars-utils-ui.application.ts"],"sourcesContent":["import { Directive, OnInit, Renderer2, Input, ElementRef, inject } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n standalone: true\r\n})\r\nexport class ResizeTableColumnDirective implements OnInit {\r\n @Input(\"resizeColumn\") resizable: boolean;\r\n @Input() index: number;\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private startX: number;\r\n private startWidth: number;\r\n private column: HTMLElement = this.elementRef.nativeElement;\r\n private table: HTMLElement;\r\n private pressed: boolean;\r\n\r\n\r\n ngOnInit() {\r\n if (this.resizable) {\r\n const row = this.renderer.parentNode(this.column);\r\n const thead = this.renderer.parentNode(row);\r\n this.table = this.renderer.parentNode(thead);\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n this.renderer.appendChild(this.column, resizer);\r\n this.renderer.listen(resizer, \"mousedown\", this.onMouseDown);\r\n this.renderer.listen(this.table, \"mousemove\", this.onMouseMove);\r\n this.renderer.listen(\"document\", \"mouseup\", this.onMouseUp);\r\n }\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n this.pressed = true;\r\n this.startX = event.pageX;\r\n this.startWidth = this.column.offsetWidth;\r\n };\r\n\r\n onMouseMove = (event: MouseEvent) => {\r\n const offset = 35;\r\n if (this.pressed && event.buttons) {\r\n this.renderer.addClass(this.table, \"resizing\");\r\n\r\n // Calculate width of column\r\n let width =\r\n this.startWidth + (event.pageX - this.startX - offset);\r\n\r\n const tableCells = Array.from(this.table.querySelectorAll(\".mat-row\")).map(\r\n (row: any) => row.querySelectorAll(\".mat-cell\").item(this.index)\r\n );\r\n\r\n // Set table header width\r\n this.renderer.setStyle(this.column, \"width\", `${width}px`);\r\n\r\n // Set table cells width\r\n for (const cell of tableCells) {\r\n this.renderer.setStyle(cell, \"width\", `${width}px`);\r\n }\r\n }\r\n };\r\n\r\n onMouseUp = () => {\r\n if (this.pressed) {\r\n this.pressed = false;\r\n this.renderer.removeClass(this.table, \"resizing\");\r\n }\r\n };\r\n}\r\n","import { Searchable, SearchBag } from '@arsedizioni/ars-utils/core';\r\n\r\n\r\nexport interface SelectDialogResult {\r\n selectedItems: any[];\r\n}\r\n\r\nexport interface SelectDialogLookup {\r\n items: any[];\r\n filter?: string;\r\n params?: any;\r\n owner?: any;\r\n}\r\n\r\nexport interface SelectDialogFilter {\r\n items: any[];\r\n filter?: string;\r\n filterOption?: any;\r\n owner?: any;\r\n}\r\n\r\nexport interface SelectDialogAppend {\r\n items: any[];\r\n owner?: any;\r\n}\r\n\r\nexport interface SelectDialogDelete {\r\n items: any[];\r\n selectedItems: any[];\r\n}\r\n\r\nexport interface SelectFile {\r\n file: any;\r\n options?: any;\r\n}\r\n\r\nexport interface SelectDialogData {\r\n title: string;\r\n description?: string;\r\n okCaption?: string;\r\n maxItems?: number;\r\n multi?: boolean;\r\n mustSelect?: boolean;\r\n width?: number;\r\n filter?: string;\r\n filters?: any;\r\n items?: any;\r\n lookupFields?: any;\r\n lookupOnInit?: boolean;\r\n emptyMessage?: string;\r\n canLookupWithOptions?: boolean;\r\n canLookup?: boolean;\r\n canDelete?: boolean;\r\n canAppend?: boolean;\r\n canEdit?: boolean;\r\n canView?: boolean;\r\n canFilter?: boolean;\r\n canPaginate?:boolean;\r\n pageSize?: number;\r\n appearance?: string;\r\n header?: string;\r\n}\r\n\r\n\r\nexport interface SelectTreeDialogData {\r\n title: string;\r\n description?: string;\r\n okCaption?: string;\r\n nodes?: any;\r\n initialFilter?: string;\r\n appearance?: string;\r\n}\r\n\r\nexport interface SelectFileDialogData {\r\n title: string;\r\n description?: string;\r\n okCaption?: string;\r\n helpLink?: string;\r\n helpCaption?: string;\r\n options?: any;\r\n appearance?: string;\r\n}\r\n\r\nexport class SelectableItem implements Searchable {\r\n bag: any;\r\n template: string;\r\n\r\n /**\r\n * Searchable\r\n */\r\n searchBag: SearchBag;\r\n}\r\n\r\nexport class ItemNode {\r\n id: string;\r\n name: string;\r\n count?: number;\r\n parent?: ItemNode;\r\n children?: ItemNode[];\r\n bag: any;\r\n}\r\n\r\nexport class SelectableNode extends ItemNode implements Searchable {\r\n expandable: boolean;\r\n level: number;\r\n\r\n /**\r\n * Searchable\r\n */\r\n searchBag: SearchBag;\r\n\r\n constructor(item: ItemNode, level: number) {\r\n super();\r\n\r\n // Flattened implementation\r\n this.expandable = item.children && item.children.length > 0;\r\n this.level = level;\r\n\r\n // Data\r\n this.id = item.id;\r\n this.name = item.name;\r\n this.count = item.count;\r\n this.parent = item.parent;\r\n this.bag = item.bag;\r\n this.children = item.children;\r\n }\r\n}\r\n\r\nexport interface SendToDialogResult {\r\n recipients: string;\r\n subject: string;\r\n text: string;\r\n options?: any | null\r\n}\r\n\r\nexport interface PromptDialogResult {\r\n value?: string | null;\r\n options?: any | null;\r\n}\r\n\r\nexport enum PromptDialogType {\r\n Default = 0,\r\n Date = 1,\r\n Number = 2,\r\n Text = 3,\r\n DateInterval = 4,\r\n List = 5,\r\n Time = 6\r\n\r\n}\r\n\r\nexport interface PromptDialogData {\r\n title: string;\r\n type: PromptDialogType;\r\n description?: string | null;\r\n okCaption?: string | null;\r\n cancelCaption?: string | null;\r\n initialValue?: any | null;\r\n minValue?: number | null;\r\n maxValue?: number | null;\r\n required?: boolean | null;\r\n appearance?: string | null;\r\n options?: any | null;\r\n}\r\n\r\nexport interface PromptTimeDialogData extends PromptDialogData {\r\n slots?: string | null;\r\n}","export const Filters = {\r\n FLT_1: 1,\r\n FLT_2: 2,\r\n FLT_3: 3,\r\n FLT_4: 4,\r\n FLT_5: 5,\r\n FLT_TEXT: 96,\r\n FLT_TEXT_1: 97,\r\n FLT_TEXT_2: 98,\r\n FLT_TEXT_3: 99\r\n};\r\n\r\nexport interface FilterGroup {\r\n group?: number | null;\r\n title?: string | null;\r\n tooltip?: string | null;\r\n items?: FilterItem[] | null;\r\n action?: any | null;\r\n}\r\nexport interface FilterItem {\r\n group?: number | null;\r\n title?: string | null;\r\n titleSelected?: string | null;\r\n description?: string | null;\r\n divider?: boolean | null;\r\n value?: any | null;\r\n}\r\n\r\nexport class CurrentFilterChanged {\r\n filter: CurrentFilter;\r\n group: number;\r\n}\r\n\r\nexport class CurrentFilter {\r\n flt1?: any | null;\r\n flt1Name?: string | null;;\r\n flt2?: any | null;\r\n flt2Name?: string | null;\r\n flt3?: any | null;\r\n flt3Name?: string | null;\r\n flt4?: any | null;\r\n flt4Name?: string | null;\r\n flt5?: any | null;\r\n flt5Name?: string | null;\r\n text?: string | null;\r\n text2?: string | null;\r\n text3?: string | null;\r\n\r\n /**\r\n * Update filtered value\r\n */\r\n filtered(): boolean {\r\n return (\r\n (this.flt1 !== null && this.flt1 !== undefined) ||\r\n (this.flt2 !== null && this.flt2 !== undefined) ||\r\n (this.flt3 !== null && this.flt3 !== undefined) ||\r\n (this.flt4 !== null && this.flt4 !== undefined) ||\r\n (this.flt5 !== null && this.flt5 !== undefined) ||\r\n (this.text !== null && this.text !== undefined && this.text.length > 0) ||\r\n (this.text2 !== null && this.text2 !== undefined && this.text2.length > 0) ||\r\n (this.text3 !== null && this.text3 !== undefined && this.text3.length > 0)\r\n );\r\n }\r\n}\r\n\r\nexport class CurrentFilterItem<T> {\r\n items?: any[] = undefined;\r\n value?: T | null = null;\r\n enabled?: boolean | null = true;\r\n title?: string | null = null;\r\n selectedTitle?: string | null = null;\r\n\r\n public clear() {\r\n this.value = null;\r\n this.selectedTitle = null;\r\n }\r\n}\r\n","import { TextFieldModule } from \"@angular/cdk/text-field\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, inject } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { EmailsValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from \"@ngbracket/ngx-layout/flex\";\r\nimport { SendToDialogResult } from \"../../definitions\";\r\n\r\nexport interface SendToDialogData {\r\n count: number;\r\n title?: string | null;\r\n info?: string| null;\r\n appearance?: string| null;\r\n allowPopulate?: boolean| null;\r\n options?: any| null;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: \"./send-to-dialog.component.html\",\r\n styleUrls: [\"./send-to-dialog.component.scss\"],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n FlexModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n TextFieldModule,\r\n EmailsValidatorDirective,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatCheckboxModule,\r\n MatDialogActions,\r\n MatDialogClose,\r\n ],\r\n})\r\nexport class SendToDialogComponent implements OnInit {\r\n @Output() done = new EventEmitter<SendToDialogResult>();\r\n @Output() populate = new EventEmitter<SendToDialogResult>();\r\n\r\n protected dialogData: SendToDialogData = inject(MAT_DIALOG_DATA);\r\n protected item: SendToDialogResult = {\r\n recipients: null,\r\n subject: null,\r\n text: null,\r\n options: null\r\n };\r\n\r\n ngOnInit(): void {\r\n this.dialogData = this.dialogData || { count: 0, appearance: 'fill' };\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.count) {\r\n this.dialogData.count = 0;\r\n }\r\n if (!this.dialogData.title && this.dialogData.count) {\r\n this.dialogData.title =\r\n this.dialogData.count === 1\r\n ? \"Invia documento a...\"\r\n : \"Invia \" + this.dialogData.count + \" documenti a...\";\r\n }\r\n }\r\n\r\n /**\r\n * Submit\r\n */\r\n protected ok() {\r\n // Add selected options\r\n this.item.options = this.dialogData.options;\r\n this.done.emit(this.item);\r\n }\r\n\r\n /**\r\n * Populate recipients\r\n */\r\n protected populateRecipients() {\r\n this.populate.emit(this.item);\r\n }\r\n}","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n<span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n} @else {\r\n<span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n}\r\n</div>\r\n<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <p>{{dialogData.info}}</p>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxFill>\r\n <mat-form-field [appearance]=\"dialogData.appearance\">\r\n <mat-label >Destinatari</mat-label>\r\n <textarea matInput\r\n [(ngModel)]=\"item.recipients\" name=\"recipients\" maxlength=\"1024\" #recipients=\"ngModel\" cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\" emails required></textarea>\r\n @if (item.recipients) {\r\n<button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix\r\n aria-label=\"Azzera\" (click)=\"item.recipients = null;\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n}\r\n @if (dialogData.allowPopulate) {\r\n<button type=\"button\" type=\"button\" tabindex=\"-1\" mat-icon-button\r\n matSuffix aria-label=\"Popola\" (click)=\"populateRecipients()\" matTooltip=\"Popola\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n}\r\n <mat-hint align=\"start\">Separati da punto e virgola</mat-hint>\r\n <mat-hint align=\"end\">{{recipients.value?.length || 0}}/1024 </mat-hint>\r\n @if (recipients.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"dialogData.appearance\">\r\n <mat-label >Oggetto</mat-label>\r\n <input matInput\r\n name=\"subject\" [(ngModel)]=\"item.subject\" #subject=\"ngModel\" maxlength=\"200\" required />\r\n @if (subject.invalid) {\r\n<mat-error>Obbligatorio.</mat-error>\r\n}\r\n <mat-hint align=\"end\">{{subject.value?.length || 0}}/200 </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"dialogData.appearance\">\r\n <mat-label >Testo</mat-label>\r\n <textarea matInput \r\n [(ngModel)]=\"item.text\" name=\"text\" maxlength=\"1000\" #text=\"ngModel\" cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\" required></textarea>\r\n <mat-hint align=\"end\">{{text.value?.length || 0}}/1024 </mat-hint>\r\n @if (subject.invalid) {\r\n<mat-error>Obbligatorio.</mat-error>\r\n}\r\n </mat-form-field>\r\n </div>\r\n @if (dialogData.options) {\r\n<div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n}\r\n </div>\r\n}\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxLayoutAlign=\"end\" fxFill >\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">Invia</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>\r\n","import { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter, Injectable,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { BehaviorSubject, Observable, Subject, of as observableOf } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ItemNode, SelectDialogResult, SelectTreeDialogData, SelectableNode } from '../../definitions';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\n@Injectable()\r\nexport class TreeDataSource implements OnDestroy {\r\n dataChange = new BehaviorSubject<ItemNode[]>([]);\r\n\r\n get data(): ItemNode[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataChange.unsubscribe();\r\n }\r\n\r\n /**\r\n * Initialzie the data source\r\n * @param data : data\r\n */\r\n initialize(data: ItemNode[]) {\r\n this.dataChange.next(data);\r\n }\r\n\r\n /**\r\n * Find a node by id recursively\r\n * @param node: the source node\r\n * @param id : the id to search for\r\n */\r\n findNode(node: ItemNode, id: string): ItemNode {\r\n let children;\r\n if (node && node.id === id) return node;\r\n if (node) children = node.children;\r\n else if (this.data && this.data.length > 0)\r\n children = this.data[0].children;\r\n if (children) {\r\n let _n = null;\r\n children.some(n => {\r\n if (n.id === id) {\r\n _n = n;\r\n return true;\r\n }\r\n _n = this.findNode(n, id);\r\n if (_n) return true;\r\n return false;\r\n });\r\n return _n;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Remove a node\r\n * @param id : the node id to remove\r\n */\r\n removeNode(id: string) {\r\n let n = this.findNode(null, id);\r\n if (!n) return;\r\n if (n.parent) {\r\n const p = n.parent.children.findIndex(n => n.id === id);\r\n if (p != -1) {\r\n n.parent.children.splice(p, 1);\r\n if (n.parent.count > 0) n.parent.count--;\r\n }\r\n } else {\r\n const p = this.data.findIndex(n => n.id === id);\r\n if (p != -1) {\r\n this.data.splice(p, 1);\r\n }\r\n }\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Insert a new node\r\n * @param node : the new node\r\n */\r\n insertNode(node: ItemNode) {\r\n if (node.parent) {\r\n node.parent.children.unshift(node);\r\n node.parent.count++;\r\n } else this.data.unshift(node);\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Rename a node\r\n * @param id : the node id\r\n * @param name : the new node name\r\n */\r\n renameNode(id: string, name: string): ItemNode {\r\n let n = this.findNode(null, id);\r\n if (n) {\r\n n.name = name;\r\n this.dataChange.next(this.data);\r\n }\r\n return n;\r\n }\r\n\r\n /**\r\n * Update data\r\n */\r\n update() {\r\n this.dataChange.next(this.data);\r\n }\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './select-tree-dialog.component.html',\r\n styleUrls: ['./select-tree-dialog.component.scss'],\r\n providers: [TreeDataSource],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, FlexLayoutModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, \r\n MatIconModule, MatTooltipModule, MatDialogContent, MatTreeModule, NgClass, MatDialogActions, \r\n MatDialogClose, SafeHtmlPipe]\r\n})\r\nexport class SelectTreeDialogComponent implements OnInit, OnDestroy {\r\n @Output() done = new EventEmitter<SelectDialogResult>();\r\n\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private dialogRef = inject(MatDialogRef<SelectTreeDialogComponent>);\r\n protected dialogData: SelectTreeDialogData = inject(MAT_DIALOG_DATA);\r\n private tree = inject(TreeDataSource);\r\n private treeFlattener: MatTreeFlattener<ItemNode, SelectableNode>;\r\n protected treeControl: FlatTreeControl<SelectableNode>;\r\n protected treeData: MatTreeFlatDataSource<ItemNode, SelectableNode>;\r\n protected currentNode: ItemNode;\r\n\r\n // Used for array filtering\r\n protected filterText: string = '';\r\n protected filteredItems: SelectableNode[] = [];\r\n protected filterIndex: number = -1;\r\n\r\n /**\r\n * Manage flat tree view\r\n */\r\n private getChildren = (node: ItemNode): Observable<ItemNode[]> =>\r\n observableOf(node.children);\r\n private getLevel = (node: SelectableNode) => node.level;\r\n private isExpandable = (node: SelectableNode) => node.expandable;\r\n protected hasChild = (_: number, _node: SelectableNode) => _node.expandable;\r\n protected transformer = (item: ItemNode, level: number) => {\r\n return new SelectableNode(item, level);\r\n };\r\n\r\n ngOnInit() {\r\n this.dialogData = this.dialogData || { appearance: 'outline', title: 'Seleziona', okCaption: 'Ok' };\r\n this.treeFlattener = new MatTreeFlattener(\r\n this.transformer,\r\n this.getLevel,\r\n this.isExpandable,\r\n this.getChildren\r\n );\r\n this.treeControl = new FlatTreeControl<SelectableNode>(\r\n this.getLevel,\r\n this.isExpandable\r\n );\r\n this.treeData = new MatTreeFlatDataSource(\r\n this.treeControl,\r\n this.treeFlattener\r\n );\r\n this.tree.dataChange\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe(data => (this.treeData.data = data));\r\n if (this.dialogData.nodes) {\r\n this.tree.initialize(this.dialogData.nodes);\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Seleziona';\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = 'OK';\r\n }\r\n if (this.dialogData.initialFilter) {\r\n this.doFilter(this.dialogData.initialFilter);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n ok() {\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ selectedItems: [this.currentNode] });\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Select a node\r\n * @param e : the event\r\n * @param node : the\r\n */\r\n protected select(e: any, node: SelectableNode) {\r\n if (e) e.stopPropagation();\r\n if (node) {\r\n this.currentNode = node;\r\n }\r\n }\r\n\r\n /**\r\n * Clear filter\r\n */\r\n protected clearFilter() {\r\n this.filterText = '';\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param text : the text to filter\r\n */\r\n protected doFilter(text: string = null) {\r\n if (text) this.filterText = text;\r\n this.filteredItems = [];\r\n this.filterIndex = -1;\r\n if (this.filterText) {\r\n this.treeControl.dataNodes.forEach(n => {\r\n if (n.name.indexOf(this.filterText) != -1) {\r\n this.filteredItems.push(n);\r\n }\r\n });\r\n\r\n if (this.filteredItems.length > 0) {\r\n this.nextFiltered();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Goto next filtered item\r\n */\r\n protected nextFiltered() {\r\n if (!SystemUtils.isBrowser()) return;\r\n if (this.filteredItems.length === 0) return;\r\n this.filterIndex++;\r\n if (this.filterIndex === this.filteredItems.length) this.filterIndex = 0;\r\n let node = this.filteredItems[this.filterIndex];\r\n this.currentNode = node;\r\n this.expand(node);\r\n let elem = document.getElementById(node.id);\r\n if (elem) elem.scrollIntoView();\r\n }\r\n\r\n /**\r\n * Expand a node and all its parents\r\n * @param node : the selectable node to expand\r\n */\r\n protected expand(node: SelectableNode) {\r\n this.treeControl.expand(node);\r\n let _n = node.parent;\r\n while (_n) {\r\n this.treeControl.dataNodes.some(n => {\r\n if (n.id === _n.id) {\r\n this.treeControl.expand(n);\r\n _n = _n.parent;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n","<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, EventEmitter, Output, inject, signal } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { SelectFile, SelectFileDialogData } from '../../definitions';\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './select-picture-dialog.component.html',\r\n styleUrls: ['./select-picture-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FlexModule, MatButtonModule, MatCheckboxModule, FormsModule, \r\n MatDialogActions, MatDialogClose, SafeHtmlPipe]\r\n})\r\nexport class SelectPictureDialogComponent {\r\n @Output() done = new EventEmitter<SelectFile>();\r\n\r\n private dialogRef = inject(MatDialogRef<SelectPictureDialogComponent>);\r\n protected dialogData : SelectFileDialogData = inject(MAT_DIALOG_DATA); \r\n\r\n protected file: File | null = null;\r\n protected filePreview = signal<any>(null);\r\n\r\n\r\n /**\r\n * Update preview\r\n * @param e : the event\r\n */\r\n update(e: any) {\r\n if (e.target.files) {\r\n this.file = e.target.files[0];\r\n const reader = new FileReader();\r\n reader.onload = (_e: any) => {\r\n this.filePreview.set((_e.target as FileReader).result);\r\n };\r\n reader.readAsDataURL(e.target.files[0]);\r\n }\r\n }\r\n\r\n /**\r\n * Format size\r\n * @param size the file size\r\n */\r\n size(size: number) {\r\n return SystemUtils.formatFileSize(size);\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n ok() {\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ file: this.file, options: this.dialogData.options });\r\n }, 500);\r\n }\r\n}\r\n\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div class=\"selectpicture-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <input #_file type=\"file\" [hidden]=\"true\" accept=\"image/*\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n @if (file) {\r\n <div class=\"selectpicture-info\">\r\n <img [src]=\"filePreview()\" class=\"preview\"><br />\r\n <span class=\"small truncated\"><i>{{file.name}}</i></span>\r\n <div><span class=\"small truncated\">Dimensioni: <i>{{size(file.size)}}</i></span></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button mat-dialog-close cdkFocusInitial color=\"primary\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Output, inject, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { ArsCoreModule, SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { SelectFile, SelectFileDialogData } from '../../definitions';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './select-file-dialog.component.html',\r\n styleUrls: ['./select-file-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FlexModule, MatButtonModule, MatCheckboxModule, FormsModule, \r\n MatDialogActions, MatDialogClose, ArsCoreModule, SafeHtmlPipe, NgClass]\r\n})\r\nexport class SelectFileDialogComponent {\r\n @Output() done = new EventEmitter<SelectFile>();\r\n private dialogRef = inject(MatDialogRef<SelectFileDialogComponent>);\r\n protected dialogData : SelectFileDialogData = inject(MAT_DIALOG_DATA); \r\n \r\n protected file: File | null = null;\r\n protected fileClass = signal<'selectfile-file' | 'selectfile-file-drop'>('selectfile-file');\r\n\r\n\r\n /**\r\n * Update preview\r\n * @param e : the event\r\n */\r\n protected update(e: any) {\r\n if (e.target.files) {\r\n this.file = e.target.files[0];\r\n }\r\n }\r\n\r\n /**\r\n * Format size\r\n * @param size the file size\r\n */\r\n protected size(size: number) {\r\n return SystemUtils.formatFileSize(size);\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n protected ok() {\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ file: this.file, options: this.dialogData.options });\r\n }, 500);\r\n }\r\n\r\n @HostListener(\"dragover\", [\"$event\"]) onDragOver(event: any) {\r\n this.fileClass.set(\"selectfile-file-drop\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"dragenter\", [\"$event\"]) onDragEnter(event: any) {\r\n this.fileClass.set(\"selectfile-file-drop\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"dragend\", [\"$event\"]) onDragEnd(event: any) {\r\n this.fileClass.set(\"selectfile-file\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"dragleave\", [\"$event\"]) onDragLeave(event: any) {\r\n this.fileClass.set(\"selectfile-file\");\r\n event.preventDefault();\r\n }\r\n @HostListener(\"drop\", [\"$event\"]) onDrop(event: any) {\r\n this.fileClass.set(\"selectfile-file\");\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer.files) {\r\n this.addFiles(event.dataTransfer.files);\r\n }\r\n }\r\n\r\n /**\r\n * Add files\r\n * @param files : the files to add\r\n */\r\n private addFiles(files: FileList) {\r\n if (files.length > 0) {\r\n this.file = files[0];\r\n }\r\n }\r\n}\r\n\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div style=\"padding: 0 24px 24px 24px\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div draggable=\"true\" [ngClass]=\"fileClass\" fxFlexAlign=\"center\">\r\n <div style=\"text-align: center\">\r\n <input #_file type=\"file\" [hidden]=\"true\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n </div>\r\n @if (file) {\r\n <div class=\"selectfile-info\">\r\n <div class=\"small\"><i>{{file.name}}</i></div>\r\n <div class=\"small\">Dimensioni: <i>{{size(file.size)}}</i></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if (dialogData.helpLink) {\r\n <a mat-button href=\"{{dialogData.helpLink}}\" target=\"_blank\" color=\"primary\">{{dialogData.helpCaption}}</a>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule, NgForm } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { PromptDialogData, PromptDialogResult, PromptDialogType } from '../../definitions';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './prompt-dialog.component.html',\r\n styleUrls: ['./prompt-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule, MatFormFieldModule, MatInputModule, \r\n MatButtonModule, MatIconModule, TextFieldModule, MatSelectModule, MatOptionModule, MatCheckboxModule, MatDialogActions, MatDialogClose]\r\n})\r\nexport class PromptDialogComponent implements OnInit {\r\n @ViewChild('f') f!: NgForm;\r\n @Output() done = new EventEmitter<PromptDialogResult>();\r\n\r\n private dialogService = inject(DialogService);\r\n\r\n protected dialogData: PromptDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Inserisci dato', type: PromptDialogType.Default }\r\n\r\n protected value: any | null = null;\r\n\r\n ngOnInit(): void {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Inserisci dato';\r\n }\r\n if (!this.dialogData.type) {\r\n this.dialogData.type = PromptDialogType.Default;\r\n }\r\n if (!this.dialogData.okCaption) { \r\n this.dialogData.okCaption = 'Ok';\r\n }\r\n if (!this.dialogData.cancelCaption){ \r\n this.dialogData.cancelCaption = 'Annulla';\r\n }\r\n if (this.dialogData.initialValue && this.dialogData.type !== PromptDialogType.List){\r\n this.value = this.dialogData.initialValue;\r\n }\r\n }\r\n\r\n /**\r\n * Done\r\n */\r\n protected ok() {\r\n if (this.f.form.invalid) {\r\n this.dialogService.error(\"Ci sono degli errori da correggere.\");\r\n return;\r\n }\r\n this.done.emit({ value: this.value, options: this.dialogData.options });\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxFill>\r\n @if (!dialogData.type) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"text\" cdkFocusInitial matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\"\r\n [required]=\"dialogData.required\" maxlength=\"200\">\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\" (click)=\"value = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 1) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"date\" matInput [(ngModel)]=\"value\" name=\"_value\" #_value=\"ngModel\" [required]=\"dialogData.required\">\r\n @if (_value.invalid) {\r\n <mat-error>Data non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 2) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"number\" cdkFocusInitial matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\"\r\n [required]=\"dialogData.required\" [min]=\"dialogData.minValue\" [max]=\"dialogData.maxValue\">\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\" (click)=\"value = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 3) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <textarea cdkFocusInitial matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\"\r\n [required]=\"dialogData.required\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\"\r\n maxlength=\"1000\"></textarea>\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\" (click)=\"value = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-hint align=\"end\">{{_value.value?.length || 0}}/1000 </mat-hint>\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 5) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <mat-select [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\" [required]=\"dialogData.required\">\r\n @for (i of dialogData.initialValue; track i) {\r\n <mat-option [value]=\"i.value\">\r\n {{i.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (_value.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" \r\n (click)=\"ok()\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\"\r\n >{{dialogData.cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter, OnInit,\r\n Output,\r\n ViewChild,\r\n inject,\r\n signal\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxChange, MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatOptionModule } from \"@angular/material/core\";\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from \"@angular/material/dialog\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatListModule, MatSelectionList, MatSelectionListChange } from \"@angular/material/list\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { SafeHtmlPipe, SearchFilterPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport {\r\n SelectDialogAppend,\r\n SelectDialogData,\r\n SelectDialogDelete,\r\n SelectDialogFilter,\r\n SelectDialogLookup,\r\n SelectDialogResult,\r\n SelectableItem,\r\n} from \"../../definitions\";\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: \"./select-dialog.component.html\",\r\n styleUrls: [\"./select-dialog.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n FlexLayoutModule,\r\n MatDialogTitle,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatDividerModule,\r\n MatCheckboxModule,\r\n MatDialogContent,\r\n MatListModule,\r\n MatDialogActions,\r\n MatDialogClose,\r\n MatPaginatorModule,\r\n SearchFilterPipe,\r\n SafeHtmlPipe\r\n ],\r\n})\r\nexport class SelectDialogComponent implements OnInit {\r\n @ViewChild('paginator') paginator!: MatPaginator;\r\n @ViewChild(\"selection\") selection!: MatSelectionList;\r\n\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private dialogRef = inject(MatDialogRef<SelectDialogComponent>);\r\n protected dialogData: SelectDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'outline', title: 'Seleziona' };\r\n\r\n @Output() done = new EventEmitter<SelectDialogResult>();\r\n @Output() edit = new EventEmitter<SelectableItem>();\r\n @Output() view = new EventEmitter<SelectableItem>();\r\n @Output() append = new EventEmitter<SelectDialogAppend>();\r\n @Output() delete = new EventEmitter<SelectDialogDelete>();\r\n @Output() lookup = new EventEmitter<SelectDialogLookup>();\r\n @Output() lookupOptions = new EventEmitter();\r\n @Output() filter = new EventEmitter<SelectDialogFilter>();\r\n\r\n protected canEdit = signal<boolean>(false);\r\n protected canView = signal<boolean>(false);\r\n protected canAppend = signal<boolean>(false);\r\n protected canDelete = signal<boolean>(false);\r\n protected canPaginate = signal<boolean>(false);\r\n\r\n // Handle submit button activity\r\n protected okDisabled = signal<boolean>(true);\r\n\r\n // Used for array filtering\r\n protected filterText: string = \"\";\r\n protected filterOptions: any = [];\r\n protected filterOptionsInfo: string = \"Tutto\";\r\n\r\n // Used to sincronize lookup fields and params\r\n protected lookupField: string = \"\";\r\n private lookupParams: any | null;\r\n\r\n\r\n // Used to display selected elements\r\n protected selectionInfo = signal<string>(null);\r\n protected selectionMasterIndeterminate = signal<boolean>(false);\r\n protected selectionMasterChecked = signal<boolean>(false);\r\n\r\n ngOnInit() {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'outline';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Seleziona';\r\n }\r\n if (this.dialogData.multi && !this.dialogData.items) {\r\n this.dialogData.multi = true;\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = \"Ok\";\r\n }\r\n this.canAppend.set(this.dialogData.canAppend);\r\n if (this.dialogData.canLookup) {\r\n this.dialogData.items = [];\r\n if (this.dialogData.lookupFields && this.dialogData.lookupFields.length > 0) {\r\n this.lookupField = this.dialogData.lookupFields[0].value;\r\n }\r\n if (this.dialogData.canFilter) {\r\n this.filterOptions = this.dialogData.filters;\r\n }\r\n if (this.dialogData.canPaginate) {\r\n this.canPaginate.set(this.dialogData.canPaginate);\r\n if (!this.dialogData.pageSize) {\r\n this.dialogData.pageSize = 100\r\n }\r\n }\r\n }\r\n this.okDisabled.set(this.dialogData.mustSelect);\r\n\r\n // Apply filter if exists\r\n if (this.dialogData.filter || this.dialogData.lookupOnInit) {\r\n this.doFilter(this.dialogData.filter);\r\n }\r\n }\r\n\r\n /**\r\n * Mark for check\r\n */\r\n notifyChanges() {\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Check if every element are selected\r\n */\r\n private isAllSelected() {\r\n return (\r\n this.selection &&\r\n this.selection.selectedOptions &&\r\n this.selection.selectedOptions.selected &&\r\n this.selection.selectedOptions.selected.length === this.dialogData.items.length\r\n );\r\n }\r\n\r\n /**\r\n * Checks if exists a selection\r\n */\r\n private hasSelection() {\r\n return (\r\n this.selection &&\r\n this.selection.selectedOptions &&\r\n this.selection.selectedOptions.selected &&\r\n this.selection.selectedOptions.selected.length > 0\r\n );\r\n }\r\n\r\n /**\r\n * Master selection toggle\r\n * @param e: the event\r\n */\r\n protected masterSelectionToggle(e: MatCheckboxChange) {\r\n if (e.checked)\r\n // Deselect if not allselected so that toggle makes the right choice\r\n this.selection.selectAll();\r\n else this.selection.deselectAll();\r\n this.selectionMasterIndeterminate.set(false);\r\n this.selectionMasterChecked.set(e.checked);\r\n this.okDisabled.set(\r\n this.dialogData.mustSelect &&\r\n (!this.selection || this.selection.selectedOptions.selected.length === 0));\r\n this.updateSelectionInfo();\r\n }\r\n\r\n /**\r\n * Handle selection/deselection of an item\r\n * @param e: the event\r\n */\r\n protected select(e: MatSelectionListChange) {\r\n if (!this.dialogData.multi) {\r\n this.selection.deselectAll();\r\n if (e.options?.length > 0)\r\n e.options[0].selected = true;\r\n this.okDisabled.set(false);\r\n } else {\r\n this.okDisabled.set(\r\n this.dialogData.mustSelect &&\r\n (!this.selection ||\r\n this.selection.selectedOptions.selected.length === 0));\r\n }\r\n\r\n // Update editors\r\n this.canAppend.set(this.dialogData.canAppend);\r\n this.canEdit.set(\r\n this.dialogData.canEdit &&\r\n this.selection &&\r\n this.selection.selectedOptions.selected.length === 1);\r\n this.canView.set(\r\n this.dialogData.canView &&\r\n this.selection &&\r\n this.selection.selectedOptions.selected.length === 1);\r\n this.canDelete.set(\r\n this.dialogData.canDelete &&\r\n this.selection &&\r\n this.selection.selectedOptions.selected.length > 0);\r\n this.selectionMasterIndeterminate.set(\r\n !this.isAllSelected() && this.hasSelection());\r\n this.selectionMasterChecked.set(this.hasSelection());\r\n this.updateSelectionInfo();\r\n }\r\n\r\n /**\r\n * Update selection info\r\n */\r\n private updateSelectionInfo() {\r\n // Update selection info\r\n if (this.selection && this.selection.selectedOptions.selected.length > 0 && this.dialogData.multi) {\r\n this.selectionInfo.set(\r\n this.selection.selectedOptions.selected.length +\r\n \" / \" +\r\n this.selection.options.length);\r\n } else {\r\n this.selectionInfo.set(null);\r\n }\r\n }\r\n\r\n /**\r\n * Clear current selection\r\n */\r\n clearSelection() {\r\n this.selectionMasterIndeterminate.set(false);\r\n this.selectionMasterChecked.set(false);\r\n this.selection.deselectAll();\r\n this.selectionInfo.set(null);\r\n }\r\n\r\n /**\r\n * Submit selection\r\n */\r\n protected ok() {\r\n if (!this.okDisabled()) {\r\n // Multi selection\r\n const selectedItems: any = [];\r\n this.selection.selectedOptions.selected.forEach((element) => {\r\n selectedItems.push(element.value);\r\n });\r\n this.dialogRef.close();\r\n setTimeout(() => {\r\n this.done.emit({ selectedItems: selectedItems });\r\n }, 500);\r\n }\r\n }\r\n\r\n /**\r\n * Clear filter\r\n */\r\n protected clearFilter() {\r\n this.filterText = \"\";\r\n }\r\n\r\n\r\n /**\r\n * Show filter options\r\n */\r\n protected showFilterOptions() {\r\n if (this.lookupOptions) {\r\n this.lookupOptions.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param text : the string to filter to\r\n */\r\n protected doFilter(text: string = null, e: any = null) {\r\n if (text) {\r\n this.filterText = text;\r\n }\r\n if (this.dialogData.canLookup) {\r\n if (!e || e.keyCode === 13) {\r\n this.lookup.emit({ items: this.dialogData.items, filter: this.filterText, owner: this });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter using filter options\r\n * @param filterOption : the current filter option\r\n */\r\n protected doFilterByOptions(filterOption: any) {\r\n if (this.dialogData.canLookup && this.dialogData.canFilter) {\r\n this.filter.emit({\r\n items: this.dialogData.items,\r\n filter: this.filterText,\r\n filterOption: filterOption,\r\n owner: this,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter. This is accessible from public\r\n * @param params : the object with current parameters\r\n */\r\n doLookup(params: any) {\r\n if (this.dialogData.canLookup) {\r\n this.lookupParams = params;\r\n this.lookupParams.first = 0;\r\n this.lookup.emit({ items: this.dialogData.items, params: this.lookupParams, owner: this }); \r\n }\r\n }\r\n\r\n /**\r\n * Update lookup paginatro\r\n * @param total : the new total items\r\n */\r\n protected updateLookupPaginator(total: number) {\r\n if (this.canPaginate()) {\r\n if (this.paginator) {\r\n this.paginator.pageIndex = 0;\r\n this.paginator.length = total ?? 0;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param e : the MatPaginator PageEvent data\r\n */\r\n protected doLookupPage(e: any) {\r\n if (this.dialogData.canLookup && this.dialogData.canPaginate) {\r\n this.clearSelection();\r\n this.lookupParams.first = e.pageIndex * (this.dialogData.pageSize ?? 0);\r\n this.lookup.emit({ items: this.dialogData.items, params: this.lookupParams, owner: this });\r\n }\r\n }\r\n\r\n /**\r\n * Append\r\n */\r\n protected doAppend() {\r\n this.append.emit({ items: this.dialogData.items, owner: this } as SelectDialogAppend);\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Edit\r\n */\r\n protected doEdit() {\r\n if (this.selection.selectedOptions.selected?.length > 0) {\r\n this.edit.emit(this.selection.selectedOptions.selected[0].value);\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * View\r\n */\r\n protected doView() {\r\n if (this.selection.selectedOptions.selected?.length > 0) {\r\n this.view.emit(this.selection.selectedOptions.selected[0].value);\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * Delete\r\n */\r\n protected doDelete() {\r\n let selectedItems: any = [];\r\n this.selection.selectedOptions.selected.forEach((element) => {\r\n selectedItems.push(element.value);\r\n });\r\n this.delete.emit({\r\n items: this.dialogData.items,\r\n selectedItems: selectedItems,\r\n } as SelectDialogDelete);\r\n this.changeDetector.markForCheck();\r\n this.canDelete.set(false);\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div class=\"selectfile-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill>\r\n @if (!dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup.Enter)=\"doFilter()\" matInput\r\n title=\"{{dialogData.canLookup ? 'Digita il testo e premi invio' : 'Digita il testo'}}\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (!dialogData.canLookupWithOptions && dialogData.canLookup && dialogData.lookupFields) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Come...</mat-label>\r\n <mat-select [(value)]=\"lookupField\">\r\n @for (field of dialogData.lookupFields; track field) {\r\n <mat-option [value]=\"field.value\">\r\n {{field.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button aria-label=\"Ricerca\" (click)=\"showFilterOptions()\">\r\n <mat-icon>search</mat-icon>Ricerca\r\n </button>\r\n </div>\r\n }\r\n @if (dialogData.canLookup && dialogData.canFilter) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"white-space:nowrap\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button matTooltip=\"Filtra\" [attr.aria-label]=\"'Filtra'\"\r\n [matMenuTriggerFor]=\"menuFilter\" color=\"primary\">\r\n <mat-icon>filter_alt</mat-icon> {{filterOptionsInfo}} <mat-icon class=\"icon-menu-drop-down\">\r\n arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #menuFilter=\"matMenu\" class=\"mat-menu-300\">\r\n @for (f of filterOptions; track f) {\r\n\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (f.groupName) {\r\n <span style='font-size:small; padding: 2px 4px;'><i><b>{{f.groupName}}</b></i></span>\r\n }\r\n @if (!f.groupName && !f.divider) {\r\n <button mat-menu-item (click)=\"doFilterByOptions(f)\" [attr.aria-label]=\"f.description\">\r\n @if (f.radio && f.value) {\r\n <span style=\"padding-left:40px\"></span>\r\n }\r\n <mat-icon>{{f.icon}}</mat-icon> {{f.title}}\r\n </button>\r\n }\r\n\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n @if (canEdit() || canAppend() || canView() || canDelete()) {\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n @if (canAppend()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doAppend()\">\r\n <mat-icon aria-label=\"Aggiungi\" matTooltip=\"Aggiungi\">add</mat-icon>\r\n </button>\r\n }\r\n @if (canEdit()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doEdit()\">\r\n <mat-icon aria-label=\"Modifica\" matTooltip=\"Modifica\">edit</mat-icon>\r\n </button>\r\n }\r\n @if (canView()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doView()\">\r\n <mat-icon aria-label=\"Mostra\" matTooltip=\"Mostra\">visibility</mat-icon>\r\n </button>\r\n }\r\n @if (canDelete()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doDelete()\">\r\n <mat-icon aria-label=\"Elimina\" matTooltip=\"Elimina\">delete</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if ((dialogData.multi || dialogData.header) && dialogData.items?.length > 0) {\r\n <div>\r\n <div fxLayout=\"row\" fxFalyoutGap=\"10px\" fxFill style=\"padding-top: 10px;\">\r\n <div fxFlex=\"72px\" fxFlexAlign=\"center\" style=\"padding-left: 8px;\">\r\n @if (dialogData.multi) {\r\n <mat-checkbox (change)=\"$event ? masterSelectionToggle($event) : null\"\r\n [indeterminate]=\"selectionMasterIndeterminate()\" [checked]=\"selectionMasterChecked()\"\r\n [attr.aria-label]=\"'Seleziona/deseleziona tutto'\" matTooltip=\"Seleziona/deseleziona tutto\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if (dialogData.header) {\r\n <div [innerHtml]=\"dialogData.header | safeHtml\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n @if (dialogData.canLookup && (!dialogData.items || dialogData.items.length == 0)) {\r\n <div class=\"message\"><i>\r\n @if (!dialogData.emptyMessage) {\r\n <span>Nessun elemento da visualizzare.<br>Esegui una nuova ricerca o modifica quella\r\n esistente.\r\n @if (dialogData.maxItems > 0) {\r\n <span>Saranno mostrati al massimo {{dialogData.maxItems}} elementi.</span>\r\n }\r\n </span>\r\n } @else {\r\n <span [innerHtml]=\"dialogData.emptyMessage | safeHtml\"></span>\r\n }\r\n </i>\r\n </div>\r\n }\r\n <mat-selection-list #selection (selectionChange)=\"select($event)\" dense hideSingleSelectionIndicator=\"true\">\r\n @for (item of (dialogData.items | search: (!dialogData.canLookup ? filterText : '')); track item) {\r\n <mat-list-option [value]=\"item\" [selected]=\"item.selected\" checkboxPosition=\"before\" >\r\n <div [innerHtml]=\"item.template | safeHtml\"></div>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"10px\" fxFill>\r\n <div style=\"padding-left:20px\">\r\n @if (selectionInfo()) {\r\n <span class=\"small\">selezione: </span><span class=\"bold\">{{selectionInfo()}}</span>\r\n }\r\n </div>\r\n <div fxFlexAlign=\"center\">\r\n @if (canPaginate()) {\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"dialogData.pageSize\" [showFirstLastButtons]=\"true\"\r\n (page)=\"doLookupPage($event)\" [length]=\"dialogData.items?.length ?? 0\"></mat-paginator>\r\n\r\n }\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"okDisabled()\">\r\n <span>{{dialogData.mustSelect ? dialogData.okCaption : 'Chiudi'}}</span>\r\n </button>\r\n @if (dialogData.mustSelect) {\r\n <button mat-stroked-button mat-dialog-close cdkFocusInitial color=\"primary\">\r\n <span>Annulla</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { Injectable } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { SendToDialogComponent } from '../dialogs/send-to/send-to-dialog.component';\r\nimport { SelectTreeDialogComponent } from '../dialogs/select-tree/select-tree-dialog.component';\r\nimport { PromptDialogData, SelectDialogData, SelectFileDialogData, SelectTreeDialogData } from '../definitions';\r\nimport { SelectPictureDialogComponent } from '../dialogs/select-picture/select-picture-dialog.component';\r\nimport { SelectFileDialogComponent } from '../dialogs/select-file/select-file-dialog.component';\r\nimport { PromptDialogComponent } from '../dialogs/prompt/prompt-dialog.component';\r\nimport { SelectDialogComponent } from '../dialogs/select/select-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApplicationDialogService extends DialogService {\r\n\r\n /**\r\n* Sent to\r\n* @param title : title\r\n* @param allowPopulate: true if the populate fuction is allowed\r\n* @param count : elements to send or null\r\n* @param options : checkable option list\r\n* @param width: the preferred width\r\n*/\r\n sendTo(\r\n title: string = 'Invia per email',\r\n allowPopulate: boolean = false,\r\n count: number | null = null,\r\n options: any | null = null,\r\n width: number = 500\r\n ): MatDialogRef<SendToDialogComponent, any> {\r\n return this.open(SendToDialogComponent, {\r\n ariaLabel: 'invia per email',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n count: count,\r\n appearance: 'fill',\r\n allowPopulate: allowPopulate,\r\n options: options\r\n },\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Select a tree node\r\n * @param nodes : tree nodes\r\n * @param title : title\r\n * @param description : description\r\n * @param initialFilter : initial filter\r\n * @param width: the preferred width\r\n * @param okCaption : ok catpion button\r\n */\r\n selectTree(\r\n nodes: any,\r\n title: string = 'Seleziona un elemento',\r\n description: string | null = null,\r\n initialFilter: string | null = null,\r\n width: number = 800,\r\n okCaption: string = 'Ok'\r\n ): MatDialogRef<SelectTreeDialogComponent, any> {\r\n return this.open(SelectTreeDialogComponent, {\r\n ariaLabel: 'seleziona un elemento',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n description: description,\r\n initialFilter: initialFilter,\r\n okCaption: okCaption,\r\n nodes: nodes,\r\n appearance: 'outline'\r\n } as SelectTreeDialogData,\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n /**\r\n * Display a select a picture dialog\r\n * @param title : dialog title\r\n * @param descritpion : brief description\r\n * @param okCaption : ok button caption\r\n * @param options : checkable option list\r\n * @param width: the preferred width\r\n */\r\n selectPicture(\r\n title: string = 'Seleziona immagine',\r\n descritpion: string | null = null,\r\n okCaption: string = 'Ok',\r\n options: any | null = null,\r\n width: number = 600\r\n ): MatDialogRef<SelectPictureDialogComponent, any> {\r\n return this.open(SelectPictureDialogComponent, {\r\n ariaLabel: 'seleziona immagine',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n description: descritpion,\r\n okCaption: okCaption,\r\n options: options,\r\n appearance: 'fill'\r\n } as SelectFileDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Display a select a file dialog\r\n * @param title : dialog title\r\n * @param descritpion : brief description\r\n * @param okCaption : ok button caption\r\n * @param helpLink : help link url\r\n * @param helpCaption : help link caption\r\n * @param options : checkable option list\r\n * @param width: the preferred width\r\n */\r\n selectFile(\r\n title: string = 'Seleziona file',\r\n descritpion: string | null = null,\r\n okCaption: string = 'Ok',\r\n helpLink: string | null = null,\r\n helpCaption: string | null = null,\r\n options: any | null = null,\r\n width: number = 600\r\n ): MatDialogRef<SelectFileDialogComponent, any> {\r\n return this.open(SelectFileDialogComponent, {\r\n ariaLabel: 'seleziona file',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n description: descritpion,\r\n okCaption: okCaption,\r\n helpLink: helpLink,\r\n helpCaption: helpCaption,\r\n options: options,\r\n appearance: 'fill'\r\n } as SelectFileDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Display a multipourpose selection and CRUD dialog\r\n * @param data : the dialog configuration model\r\n * @param disableClose : dialog disable close param\r\n * @param closeOnNavigation : dialog close on navigation param\r\n */\r\n select(data: SelectDialogData, \r\n disableClose: boolean = true,\r\n closeOnNavigation: boolean = true\r\n ): MatDialogRef<SelectDialogComponent, any> {\r\n if (!data.appearance) data.appearance = 'outline';\r\n return this.open(SelectDialogComponent, {\r\n ariaLabel: 'seleziona',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: data,\r\n closeOnNavigation: closeOnNavigation,\r\n disableClose: disableClose,\r\n minWidth: '375px',\r\n maxWidth: (data.width ? data.width : 800) + 'px',\r\n width: '99%'\r\n });\r\n }\r\n\r\n /**\r\n * Prompt user to insert a value\r\n * @param title : the dialog title\r\n * @param type : the input type: 0 = text, 1 = date, 2 = number\r\n * @param description : the placeholder description\r\n * @param initialValue : the initial value\r\n * @param okCaption : ok button caption\r\n * @param cancelCaption : cancel button caption\r\n * @param options : checkable option list\r\n * @param width: the preferred width\r\n */\r\n prompt(\r\n title: string,\r\n type: number = 0,\r\n description: string,\r\n initialValue: any | null = null,\r\n okCaption: string = 'Ok',\r\n cancelCaption: string = 'Annulla',\r\n options: any | null = null,\r\n width: number = 500\r\n ): MatDialogRef<PromptDialogComponent> {\r\n return this.open(PromptDialogComponent, {\r\n ariaLabel: 'inserisci valore',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n title: title,\r\n type: type,\r\n description: description,\r\n initialValue: initialValue,\r\n okCaption: okCaption,\r\n cancelCaption: cancelCaption,\r\n appearance: 'fill',\r\n options: options\r\n } as PromptDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: width + 'px',\r\n width: '99%'\r\n });\r\n }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { PaginatorIntl } from '@arsedizioni/ars-utils/ui';\r\nimport { ResizeTableColumnDirective } from './directives/resize-table-column.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n ResizeTableColumnDirective,\r\n ],\r\n exports: [\r\n ResizeTableColumnDirective,\r\n ],\r\n providers: [\r\n { provide: MatPaginatorIntl, useClass: PaginatorIntl }\r\n ]\r\n})\r\nexport class ArsUIApplicationModule { }\r\n\r\nexport * from \"./definitions\";\r\nexport * from \"./filters\";\r\nexport * from \"./services/applicationDialog.service\";\r\n\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule, NgForm } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { DateInterval, DateIntervalChangeDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { PromptDialogData, PromptDialogResult, PromptDialogType } from '../../definitions';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './prompt-date-dialog.component.html',\r\n styleUrls: ['./prompt-date-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, DateIntervalChangeDirective, MatButtonModule, MatIconModule, \r\n MatCheckboxModule, MatDialogActions, MatDialogClose]\r\n})\r\nexport class PromptDateDialogComponent implements OnInit {\r\n @ViewChild('f') f!: NgForm;\r\n @Output() done = new EventEmitter<PromptDialogResult>();\r\n private dialogService = inject(DialogService);\r\n\r\n protected dialogData: PromptDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Inserisci dato', type: PromptDialogType.Default }\r\n\r\n protected value: any | null = null;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Inserisci dato';\r\n }\r\n if (!this.dialogData.type) {\r\n this.dialogData.type = PromptDialogType.Default;\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = 'Ok';\r\n }\r\n if (!this.dialogData.cancelCaption) {\r\n this.dialogData.cancelCaption = 'Annulla';\r\n }\r\n if (this.dialogData.type !== PromptDialogType.Date && this.dialogData.type !== PromptDialogType.DateInterval) {\r\n this.dialogData.type = PromptDialogType.Date;\r\n }\r\n if (this.dialogData.type === PromptDialogType.DateInterval) {\r\n this.value = new DateInterval();\r\n }\r\n if (this.dialogData.initialValue) {\r\n this.value = this.dialogData.initialValue;\r\n }\r\n }\r\n\r\n /**\r\n * Done\r\n */\r\n ok() {\r\n if (this.f.form.invalid) {\r\n this.dialogService.error(\"Ci sono degli errori da correggere.\");\r\n return;\r\n }\r\n this.done.emit({ value: this.value, options: this.dialogData.options });\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxFill>\r\n @if (dialogData.type === 1) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input matInput [matDatepicker]=\"picker\" [(ngModel)]=\"value\" name=\"_value\" #_value=\"ngModel\"\r\n [required]=\"dialogData.required\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n @if (_value.invalid) {\r\n <mat-error>Data non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.type === 4) {\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"picker\" min=\"1750-01-01\" [required]=\"dialogData.required\">\r\n <input matStartDate [(ngModel)]=\"value.from\" [dateIntervalChange]=\"value\" #rangeFrom1=\"ngModel\"\r\n name=\"rangeFrom1\" placeholder=\"Da data\">\r\n <input matEndDate [(ngModel)]=\"value.to\" [dateIntervalChange]=\"value\" [end]=\"true\" #rangeTo1=\"ngModel\"\r\n name=\"rangeTo1\" placeholder=\"A data\">\r\n </mat-date-range-input>\r\n @if (value.from || value.to) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"value.clear()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n @if (rangeFrom1.invalid || rangeTo1.invalid) {\r\n <mat-error>Intervallo non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <br>\r\n\r\n }\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">{{dialogData.cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule, NgForm } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SystemUtils, TimeValidatorDirective } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { PromptDialogResult, PromptDialogType, PromptTimeDialogData } from '../../definitions';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './prompt-time-dialog.component.html',\r\n styleUrls: ['./prompt-time-dialog.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexModule,\r\n MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule,\r\n MatDialogActions, MatDialogClose, TimeValidatorDirective]\r\n})\r\nexport class PromptTimeDialogComponent implements OnInit {\r\n @ViewChild('f') f!: NgForm;\r\n @Output() done = new EventEmitter<PromptDialogResult>();\r\n private dialogService = inject(DialogService);\r\n\r\n protected dialogData: PromptTimeDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Inserisci dato', type: PromptDialogType.Default }\r\n\r\n protected value: any | null = null;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.dialogData.appearance) {\r\n this.dialogData.appearance = 'fill';\r\n }\r\n if (!this.dialogData.title) {\r\n this.dialogData.title = 'Inserisci dato';\r\n }\r\n if (!this.dialogData.type) {\r\n this.dialogData.type = PromptDialogType.Default;\r\n }\r\n if (!this.dialogData.okCaption) {\r\n this.dialogData.okCaption = 'Ok';\r\n }\r\n if (!this.dialogData.cancelCaption) {\r\n this.dialogData.cancelCaption = 'Annulla';\r\n }\r\n if (this.dialogData.type !== PromptDialogType.Time) {\r\n this.dialogData.type = PromptDialogType.Time;\r\n }\r\n if (this.dialogData.initialValue) {\r\n this.value = this.dialogData.initialValue;\r\n }\r\n }\r\n\r\n /**\r\n * Done\r\n */\r\n ok() {\r\n if (this.f.form.invalid) {\r\n this.dialogService.error(\"Ci sono degli errori da correggere.\");\r\n return;\r\n }\r\n this.done.emit({ value: this.value, options: this.dialogData.options });\r\n }\r\n}\r\n","<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\" fxFill>\r\n <div fxFlex=\"45\" fxFlex.xs=\"100\" fxFlexAlign=\"start\">\r\n <div>\r\n <mat-form-field [appearance]=\"dialogData.appearance\" style=\"width: 100%;\">\r\n <mat-label>{{dialogData.description}}</mat-label>\r\n <input type=\"time\" matInput [(ngModel)]=\"value\" name=\"_value\" #_value=\"ngModel\" [required]=\"dialogData.required\"\r\n time [slots]=\"dialogData.slots\">\r\n @if (_value.invalid) {\r\n <mat-error>Ora non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div fxFlex=\"45\" fxFlex.xs=\"100\" fxFlexAlign=\"start\">\r\n @if(this.dialogData.slots) {\r\n <div class=\"small bold uppercase\">Orari disponibili:</div>\r\n <ul class=\"small\">\r\n @for (s of this.dialogData.slots.replaceAll('-', ' - ').split('|'); track s) {\r\n <li>{{s}}</li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" \r\n (click)=\"ok()\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\"\r\n >{{dialogData.cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DoCheck, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, Optional, Output, Renderer2, Self, SimpleChanges, ViewChild, inject, input } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, FormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FileInfo, FileSizeValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { Subject } from 'rxjs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { UIService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Component({\r\n selector: 'file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: FileInputComponent }],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatFormFieldModule, MatInputModule, FormsModule, FileSizeValidatorDirective, MatButtonModule, \r\n MatIconModule, MatTooltipModule]\r\n})\r\nexport class FileInputComponent\r\n implements\r\n OnDestroy,\r\n AfterViewInit,\r\n DoCheck,\r\n OnChanges,\r\n MatFormFieldControl<FileInfo>,\r\n ControlValueAccessor {\r\n\r\n @ViewChild('__file') __file!: ElementRef;\r\n\r\n private renderer = inject(Renderer2);\r\n private uiService = inject(UIService);\r\n\r\n // Initialize\r\n static nextId = 0;\r\n readonly stateChanges = new Subject<void>();\r\n private previousNativeValue: any;\r\n controlType: string = 'file-input';\r\n focused = false;\r\n protected fileSize: number;\r\n \r\n protected canCapture: boolean = false;\r\n\r\n private _value: FileInfo = new FileInfo();\r\n set value(value: FileInfo) {\r\n this._value = value;\r\n this.propagateChange(this._value);\r\n this.stateChanges.next();\r\n this.changed.emit(this._value);\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n get size() {\r\n return this._value && this._value.file.size;\r\n }\r\n\r\n private _required: boolean = false;\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _disabled: boolean = false;\r\n @Input()\r\n get disabled() {\r\n if (this.ngControl && this.ngControl.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n private _placeholder: string = '';\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n @Input() fileName: string | null = null;\r\n maxSizeMb = input<number>(5);\r\n minSizeMb = input<number>(0);\r\n isNew = input<boolean>(false);\r\n canPreview = input<boolean>(false);\r\n appearance = input<'fill' | 'outline' | null>(this.uiService.appearance);\r\n accept = input<string>();\r\n get empty(): boolean {\r\n return !this._value || !this._value.file;\r\n }\r\n get errorState() {\r\n return this.ngControl.errors != null && this.ngControl.touched;\r\n }\r\n @HostBinding() id = `${this.controlType}-${FileInputComponent.nextId++}`;\r\n @HostBinding('class.floating')\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n @HostBinding('attr.aria-describedBy') describedBy = '';\r\n\r\n @Output() changed = new EventEmitter<FileInfo>();\r\n @Output() download = new EventEmitter();\r\n @Output() preview = new EventEmitter();\r\n\r\n private propagateChange: (_: any) => void = (_: any) => { };\r\n private propagateTouched: () => void = () => { };\r\n\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n async ngAfterViewInit() {\r\n await this.setupDevices();\r\n }\r\n\r\n /**\r\n * Setup capture devices \r\n */\r\n async setupDevices() {\r\n this.canCapture = false;\r\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n try {\r\n const stream = await navigator.mediaDevices.getUserMedia({\r\n video: true\r\n });\r\n if (stream) {\r\n this.canCapture = true;\r\n }\r\n } catch { }\r\n }\r\n if (!this.placeholder) {\r\n this.placeholder =\r\n this.canCapture\r\n ? \"Seleziona file o acquisisci con fotocamera\"\r\n : \"Seleziona file\"\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngDoCheck() {\r\n this.updateInputDirtyCheck();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.currentValue != changes.previousValue) {\r\n this.propagateChange(changes.currentValue);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n this.renderer.setProperty(elem, 'disabled', isDisabled);\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n elem.focus();\r\n this.propagateTouched();\r\n }\r\n }\r\n }\r\n\r\n protected updateInputDirtyCheck() {\r\n const newValue = this._value;\r\n if (this.previousNativeValue !== newValue) {\r\n this.previousNativeValue = newValue;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Select a file\r\n * @param e : event\r\n */\r\n protected selectFile(e: any) {\r\n if (e.target.files) {\r\n let f = e.target.files[0];\r\n this.fileName = f.name;\r\n this.fileSize = Math.round(f.size / (1024 * 1024));\r\n let fileInfo = new FileInfo();\r\n fileInfo.file = f;\r\n fileInfo.valid =\r\n (!this.maxSizeMb || this.fileSize <= this.maxSizeMb()) &&\r\n (!this.minSizeMb || this.fileSize >= this.minSizeMb());\r\n this.writeValue(fileInfo);\r\n }\r\n }\r\n\r\n /**\r\n * Check if a file has been selected\r\n */\r\n protected hasFile(): boolean {\r\n return this._value && this._value.file;\r\n }\r\n\r\n /**\r\n * Clear file\r\n */\r\n protected clearFile() {\r\n if (this.hasFile()) {\r\n this.fileName = null;\r\n this.fileSize = 0;\r\n let fi = new FileInfo();\r\n fi.file = null;\r\n fi.valid = !this.required\r\n this.writeValue(fi);\r\n this.__file.nativeElement.value = null;\r\n }\r\n }\r\n\r\n /**\r\n * Download\r\n */\r\n protected downloadFile() {\r\n if (!this.isNew()) this.download.emit();\r\n }\r\n\r\n /**\r\n * Preview\r\n */\r\n protected previewFile() {\r\n if (!this.isNew() && this.canPreview()) this.preview.emit();\r\n }\r\n}\r\n","<mat-form-field style=\"width:100%\" [appearance]=\"appearance()\">\r\n <mat-label>{{placeholder}}</mat-label>\r\n <input type=\"file\" [hidden]=\"true\" [accept]=\"accept()\" (change)=\"selectFile($event)\" #__file />\r\n <input name=\"_fileName\" #_fileName=\"ngModel\" [(ngModel)]=\"fileName\" [id]=\"id\" matInput readonly [required]=\"required\"\r\n fileSize [size]=\"fileSize\" [maxSizeMb]=\"maxSizeMb()\" [minSizeMb]=\"minSizeMb()\" [disabled]=\"disabled\" />\r\n @if (hasFile()) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"clearFile()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (!disabled) {\r\n <button type=\"button\" type=\"button\" mat-icon-button matSuffix (click)=\"__file.click()\" aria-label=\"Seleziona file\"\r\n matTooltip=\"Seleziona\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n }\r\n @if (!isNew() && canPreview()) {\r\n <button type=\"button\" mat-icon-button matSuffix (click)=\"previewFile()\" aria-label=\"Anteprima\" matTooltip=\"Anteprima\">\r\n <mat-icon>preview</mat-icon>\r\n </button>\r\n }\r\n @if (!isNew()) {\r\n <button type=\"button\" mat-icon-button matSuffix (click)=\"downloadFile()\" aria-label=\"Scarica file\"\r\n matTooltip=\"Scarica\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\r\n }\r\n @if (hasFile() && fileSize > 0) {\r\n <mat-hint align=\"left\">{{fileSize}} MB</mat-hint>\r\n }\r\n @if (hasFile() && fileSize == 0) {\r\n <mat-hint align=\"left\">\r\n < 1 MB</mat-hint>\r\n } @if (maxSizeMb()) {\r\n <mat-hint align=\"end\">Massimo {{maxSizeMb()}} MB\r\n </mat-hint>\r\n }\r\n @if (_fileName.invalid && !hasFile()) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n @if (_fileName.invalid && hasFile()) {\r\n <mat-error>Dimensione non consentita.</mat-error>\r\n }\r\n</mat-form-field>","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, OnInit, OnDestroy, ChangeDetectionStrategy, inject, signal, AfterViewInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { fromEvent, takeUntil, Subject, debounceTime } from 'rxjs';\r\nimport { SafeUrlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { NgStyle } from '@angular/common';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\nexport interface FilePreviewDialogData {\r\n url?: string | null;\r\n embed?: boolean | null;\r\n authToken?: string | null;\r\n}\r\n\r\n\r\n@Component({\r\n templateUrl: './file-preview.component.html',\r\n styleUrls: ['./file-preview.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogContent, NgStyle, FlexLayoutModule, MatDialogActions, MatButtonModule, MatTooltipModule,\r\n MatDialogClose, SafeUrlPipe]\r\n})\r\nexport class FilePreviewComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private httpClient = inject(HttpClient);\r\n private dialogService = inject(DialogService);\r\n protected dialogData: FilePreviewDialogData = inject(MAT_DIALOG_DATA);\r\n protected url = signal(null);\r\n\r\n\r\n ngOnInit() {\r\n if (this.dialogData) {\r\n if (!this.dialogData.embed) {\r\n this.httpClient.get(\r\n this.dialogData.url,\r\n {\r\n headers:\r\n this.dialogData.authToken\r\n ? new HttpHeaders().set(\"Authorization\", this.dialogData.authToken)\r\n : new HttpHeaders(),\r\n responseType: 'blob'\r\n }\r\n ).subscribe(\r\n (res: any) => {\r\n this.url.set(URL.createObjectURL(res));\r\n });\r\n } else {\r\n this.url.set('https://view.officeapps.live.com/op/embed.aspx?src=' + encodeURIComponent(this.dialogData.url));\r\n }\r\n }\r\n\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n this.resize();\r\n });\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n this.url.set(null);\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.resize();\r\n }\r\n\r\n /**\r\n * Resize \r\n */\r\n private resize() {\r\n setTimeout(() => {\r\n let elem = document.getElementById('file-preview-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['file-preview-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n }\r\n } else {\r\n this.resize();\r\n }\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Download manually\r\n */\r\n download() {\r\n window.open(this.url(), '_blank');\r\n }\r\n\r\n /**\r\n * Troubles with pdf?\r\n */\r\n troubles() {\r\n this.dialogService.info(\r\n \"<p>Se non riesci a visualizzare l'anteprima dei file PDF probabilmente devi abilitare un'impostazione del tuo browser.</p>\" +\r\n \"<b>Per Google Chrome</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'><i>impostazioni > privacy e sicurezza > impostazioni sito > documenti PDF</i></p>\" +\r\n \"<b>Per Microsoft Chrome</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'><i>impostazioni > cookie e autorizzazioni sito > documenti PDF</i></p>\" +\r\n \"<b>Per Mozilla Firefox</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'><i>impostazioni > generale > applicazioni</i></p>\" +\r\n \"<b>Altri browser</b><br>\" +\r\n \"<p class='small' style='padding-left:10px'>Fate riferimento alla documentazione specifica del vostro browser.</p>\",\r\n \"Problemi con lee anteprime dei file PDF?\"\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\n","<mat-dialog-content class=\"file-preview\" id=\"file-preview-scrollable\">\r\n <div class=\"content\">\r\n @if (!url) {\r\n <div class=\"loading\">Caricamento in corso...</div>\r\n } @else {\r\n <iframe class=\"iframe\" onload=\"scrollTo(0,0)\" [src]=\"url() | safeUrl\"></iframe>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions id=\"file-preview-fixed\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <button mat-stroked-button color=\"primary\" (click)=\"troubles()\"\r\n matTooltip=\"Fai click se non riesci a visualizzare l'anteprima dei file PDF\">Problemi con i PDF?</button>\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-stroked-button color=\"primary\" (click)=\"download()\">Scarica</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { NgClass, NgStyle } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, OnInit, Output, effect, inject, input, signal } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { CurrentFilter, CurrentFilterChanged, FilterGroup, FilterItem, Filters } from '../../filters';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"filter-bar\",\r\n templateUrl: \"./filter-bar.component.html\",\r\n styleUrls: [\"./filter-bar.component.scss\"],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, NgStyle, FlexLayoutModule, MatFormFieldModule, MatInputModule, FormsModule,\r\n MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, MatDividerModule, SafeHtmlPipe]\r\n})\r\nexport class FilterBarComponent implements OnInit {\r\n @Output() changed = new EventEmitter<CurrentFilterChanged>();\r\n private changeDetector = inject(ChangeDetectorRef);\r\n\r\n filters = input<any>();\r\n canFilterByFlt1 = signal<boolean>(false);\r\n canFilterByFlt2 = signal<boolean>(false);\r\n canFilterByFlt3 = signal<boolean>(false);\r\n canFilterByFlt4 = signal<boolean>(false);\r\n canFilterByFlt5 = signal<boolean>(false);\r\n canFilterByText = input<boolean>(false);\r\n canFilterByText2 = input<boolean>(false);\r\n canFilterByText3 = input<boolean>(false);\r\n initialText = input<string>(null);\r\n initialText2 = input<string>(null);\r\n initialText3 = input<string>(null);\r\n textName = input<string>(\"testo\");\r\n text2Name = input<string>(\"...\");\r\n text3Name = input<string>(\"...\");\r\n textLength = input<string>();\r\n text2Length = input<string>();\r\n text3Length = input<string>();\r\n showTextSearchButton = input<boolean>(false);\r\n appearance = input<'fill' | 'outline' | null>('outline');\r\n\r\n\r\n protected text: string | null = null;\r\n protected text2: string | null = null;\r\n protected text3: string | null = null;\r\n protected flt1: FilterGroup;\r\n protected flt2: FilterGroup;\r\n protected flt3: FilterGroup;\r\n protected flt4: FilterGroup;\r\n protected flt5: FilterGroup;\r\n\r\n public readonly currentFilter: CurrentFilter = new CurrentFilter();\r\n\r\n constructor() {\r\n effect(() => {\r\n this.text = this.initialText();\r\n this.text2 = this.initialText2();\r\n this.text3 = this.initialText3();\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeFilters();\r\n }\r\n\r\n\r\n /**\r\n * Initialize filters\r\n */\r\n initializeFilters() {\r\n if (!this.filters()) return;\r\n this.filters().forEach((n: any) => {\r\n switch (n.group) {\r\n case Filters.FLT_1:\r\n this.flt1 = n;\r\n this.canFilterByFlt1.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_2:\r\n this.flt2 = n;\r\n this.canFilterByFlt2.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_3:\r\n this.flt3 = n;\r\n this.canFilterByFlt3.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_4:\r\n this.flt4 = n;\r\n this.canFilterByFlt4.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n case Filters.FLT_5:\r\n this.flt5 = n;\r\n this.canFilterByFlt5.set(n.action || (n.items && n.items.length > 0));\r\n break;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Apply a filter\r\n * @param filter : the filter to apply\r\n */\r\n applyFilter(filter: FilterItem) {\r\n let changed = false;\r\n switch (filter.group) {\r\n case Filters.FLT_1:\r\n changed = this.currentFilter.flt1 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt1 = filter.value;\r\n this.currentFilter.flt1Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_2:\r\n changed = this.currentFilter.flt2 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt2 = filter.value;\r\n this.currentFilter.flt2Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_3:\r\n changed = this.currentFilter.flt3 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt3 = filter.value;\r\n this.currentFilter.flt3Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_4:\r\n changed = this.currentFilter.flt4 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt4 = filter.value;\r\n this.currentFilter.flt4Name = filter.titleSelected;\r\n }\r\n break;\r\n case Filters.FLT_5:\r\n changed = this.currentFilter.flt5 != filter.value;\r\n if (changed) {\r\n this.currentFilter.flt5 = filter.value;\r\n this.currentFilter.flt5Name = filter.titleSelected;\r\n }\r\n break;\r\n }\r\n\r\n if (changed) {\r\n this.changed.emit({ filter: this.currentFilter, group: filter.group });\r\n }\r\n\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Apply a filter action\r\n * @param filter : the filter to apply\r\n * @param clear : true if the filter mus be removed\r\n * @param event : the click event\r\n */\r\n applyFilterAction(group: number, clear: boolean = false, event: any = null) {\r\n if (!clear) {\r\n const g = this.getFilterGroup(group);\r\n if (g.action) {\r\n g.action(this, g, event);\r\n }\r\n } else {\r\n this.clearFilter(group);\r\n }\r\n \r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Apply text filter\r\n */\r\n applyTextFilter() {\r\n this.currentFilter.text = this.text;\r\n this.currentFilter.text2 = this.text2;\r\n this.currentFilter.text3 = this.text3;\r\n this.changed.emit({\r\n filter: this.currentFilter,\r\n group: Filters.FLT_TEXT\r\n });\r\n \r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Clear a filter\r\n * @param group : the filter group\r\n */\r\n clearFilter(group: number) {\r\n let changed = false;\r\n switch (group) {\r\n case Filters.FLT_1:\r\n changed = this.currentFilter.flt1 != null;\r\n if (changed) {\r\n this.currentFilter.flt1 = null;\r\n this.currentFilter.flt1Name = null;\r\n }\r\n break;\r\n case Filters.FLT_2:\r\n changed = this.currentFilter.flt2 != null;\r\n if (changed) {\r\n this.currentFilter.flt2 = null;\r\n this.currentFilter.flt2Name = null;\r\n }\r\n break;\r\n case Filters.FLT_3:\r\n changed = this.currentFilter.flt3 != null;\r\n if (changed) {\r\n this.currentFilter.flt3 = null;\r\n this.currentFilter.flt3Name = null;\r\n }\r\n break;\r\n case Filters.FLT_4:\r\n changed = this.currentFilter.flt4 != null;\r\n if (changed) {\r\n this.currentFilter.flt4 = null;\r\n this.currentFilter.flt4Name = null;\r\n }\r\n break;\r\n case Filters.FLT_5:\r\n changed = this.currentFilter.flt5 != null;\r\n if (changed) {\r\n this.currentFilter.flt5 = null;\r\n this.currentFilter.flt5Name = null;\r\n }\r\n break;\r\n }\r\n if (changed) {\r\n this.changed.emit({ filter: this.currentFilter, group: group });\r\n }\r\n }\r\n\r\n /**\r\n * Clear all filters\r\n */\r\n clearAllFilters() {\r\n this.currentFilter.flt1 = null;\r\n this.currentFilter.flt1Name = null;\r\n this.currentFilter.flt2 = null;\r\n this.currentFilter.flt2Name = null;\r\n this.currentFilter.flt3 = null;\r\n this.currentFilter.flt3Name = null;\r\n this.currentFilter.flt4 = null;\r\n this.currentFilter.flt4Name = null;\r\n this.currentFilter.flt5 = null;\r\n this.currentFilter.flt5Name = null;\r\n this.currentFilter.text = null;\r\n this.currentFilter.text2 = null;\r\n this.currentFilter.text3 = null;\r\n this.text = null;\r\n this.text2 = null;\r\n this.text3 = null;\r\n this.changed.emit({ filter: this.currentFilter, group: -1 });\r\n }\r\n\r\n /**\r\n * Check if can clear all filters button cab be showed\r\n */\r\n canClearAllFilters(): boolean {\r\n let count = 0;\r\n if (this.canFilterByText) count++;\r\n if (this.canFilterByText2) count++;\r\n if (this.canFilterByText3) count++;\r\n if (this.canFilterByFlt1) count++;\r\n if (this.canFilterByFlt2) count++;\r\n if (this.canFilterByFlt3) count++;\r\n if (this.canFilterByFlt4) count++;\r\n if (this.canFilterByFlt5) count++;\r\n return count > 1;\r\n }\r\n\r\n /**\r\n * Get the filter group\r\n * @param id : the filter id\r\n */\r\n private getFilterGroup(id: number): FilterGroup {\r\n return this.filters().find((n: any) => n.group === id);\r\n }\r\n\r\n /**\r\n * Update filter bar using current search params\r\n * @param params : search params\r\n */\r\n syncFilter() {\r\n let g = this.getFilterGroup(Filters.FLT_1);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt1Name = null;\r\n if (this.currentFilter.flt1) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt1);\r\n if (gi) this.currentFilter.flt1Name = gi.titleSelected;\r\n else this.currentFilter.flt1 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_2);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt2Name = null;\r\n if (this.currentFilter.flt2) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt2);\r\n if (gi) this.currentFilter.flt2Name = gi.titleSelected;\r\n else this.currentFilter.flt2 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_3);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt3Name = null;\r\n if (this.currentFilter.flt3) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt3);\r\n if (gi) this.currentFilter.flt3Name = gi.titleSelected;\r\n else this.currentFilter.flt3 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_4);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt4Name = null;\r\n if (this.currentFilter.flt4) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt4);\r\n if (gi) this.currentFilter.flt4Name = gi.titleSelected;\r\n else this.currentFilter.flt4 = null;\r\n }\r\n }\r\n }\r\n\r\n g = this.getFilterGroup(Filters.FLT_5);\r\n if (g) {\r\n if (g.items) {\r\n this.currentFilter.flt5Name = null;\r\n if (this.currentFilter.flt5) {\r\n const gi = g.items.find(n => n.value === this.currentFilter.flt5);\r\n if (gi) this.currentFilter.flt5Name = gi.titleSelected;\r\n else this.currentFilter.flt5 = null;\r\n }\r\n }\r\n }\r\n\r\n this.text = this.currentFilter.text;\r\n this.text2 = this.currentFilter.text2;\r\n this.text3 = this.currentFilter.text3;\r\n\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"filterbox\"\r\n[ngClass]=\"{'filterbox-filtered': currentFilter.filtered()}\">\r\n <div fxFlex=\"100\" 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 [ngStyle]=\"{'width': textLength() ?? '100%'}\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{textName()}}...</mat-label>\r\n <input matInput name=\"_text\" [(ngModel)]=\"text\" 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 = ''; 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 [ngStyle]=\"{'width': text2Length() ?? '100%'}\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{text2Name()}}...</mat-label>\r\n <input matInput name=\"_text2\" [(ngModel)]=\"text2\" 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 = ''; 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 [ngStyle]=\"{'width': text3Length() ?? '100%'}\" [appearance]=\"appearance()\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca per {{text3Name()}}...</mat-label>\r\n <input matInput name=\"_text3\" [(ngModel)]=\"text3\" 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 = ''; 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\" fxLayoutGap=\"10px\" fxFill >\r\n @if (canFilterByFlt1() && flt1 && flt1.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt1.tooltip || 'Filtra per ' + flt1.title\"\r\n [attr.aria-label]=\"flt1.tooltip || 'Filtra per ' + flt1.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(1, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt1) {\r\n <span style=\"font-weight: 200 !important\">{{flt1.title}}</span>\r\n } @else {\r\n <span [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\"\r\n aria-label=\"'Azzera'\" (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 && flt1.items) {\r\n <button fxFlexAlign=\"center\" type=\"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 color=\"primary\" style=\"height:56px;\" >\r\n \r\n @if (!currentFilter.flt1) {\r\n <span style=\"font-weight: 200 !important\">{{flt1.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt1.items[0].group)\"\r\n attr.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 && flt2.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt2.tooltip || 'Filtra per ' + flt2.title\"\r\n [attr.aria-label]=\"flt2.tooltip || 'Filtra per ' + flt2.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(2, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt2) {\r\n <span style=\"font-weight: 200 !important\">{{flt2.title}}</span>\r\n } @else {\r\n <span [innerHtml]=\"currentFilter.flt2Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt2) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt2() && flt2 && flt2.items) {\r\n <button fxFlexAlign=\"center\" type=\"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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt2) {\r\n <span style=\"font-weight: 200 !important\">{{flt2.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt2.items[0].group)\"\r\n attr.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 && flt3.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt3.tooltip || 'Filtra per ' + flt3.title\"\r\n [attr.aria-label]=\"flt3.tooltip || 'Filtra per ' + flt3.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(3, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt3) {\r\n <span style=\"font-weight: 200 !important\">{{flt3.title}}</span>\r\n } @else {\r\n <span [innerHtml]=\"currentFilter.flt3Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt3) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt3() && flt3 && flt3.items) {\r\n <button fxFlexAlign=\"center\" type=\"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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt3) {\r\n <span style=\"font-weight: 200 !important\">{{flt3.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt3.items[0].group)\"\r\n attr.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 && flt4.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt4.tooltip || 'Filtra per ' + flt4.title\"\r\n [attr.aria-label]=\"flt4.tooltip || 'Filtra per ' + flt4.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(4, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt4) {\r\n <span style=\"font-weight: 200 !important\">{{flt4.title}}</span>\r\n } @else {\r\n <span [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\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt4() && flt4 && flt4.items) {\r\n <button fxFlexAlign=\"center\" 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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt4) {\r\n <span style=\"font-weight: 200 !important\">{{flt4.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt4.items[0].group)\"\r\n attr.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 && flt5.action) {\r\n <div fxLayout=\"row\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button\r\n [matTooltip]=\"flt5.tooltip || 'Filtra per ' + flt5.title\"\r\n [attr.aria-label]=\"flt5.tooltip || 'Filtra per ' + flt5.title\" color=\"primary\"\r\n (click)=\"applyFilterAction(5, false)\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt5) {\r\n <span style=\"font-weight: 200 !important\">{{flt5.title}}</span>\r\n } @else {\r\n <span [innerHtml]=\"currentFilter.flt5Name | safeHtml\"></span>\r\n }\r\n </button>\r\n @if (currentFilter.flt5) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button matTooltip=\"Azzera\"\r\n aria-label=\"'Azzera'\" (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 }\r\n @if (canFilterByFlt5() && flt5 && flt5.items) {\r\n <button fxFlexAlign=\"center\" 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 color=\"primary\" style=\"height:56px;\">\r\n \r\n @if (!currentFilter.flt5) {\r\n <span style=\"font-weight: 200 !important\">{{flt5.title}}</span>\r\n } @else {\r\n <span [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 f) {\r\n\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 }\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 color=\"primary\" (click)=\"clearFilter(flt5.items[0].group)\"\r\n attr.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 </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\" attr.aria-label=\"Azzera tutti i filtri\"\r\n (click)=\"clearAllFilters()\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, inject } from '@angular/core';\r\nimport { MatCalendar } from '@angular/material/datepicker';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n template: '<div></div>',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarEmptyHeader<D> implements OnDestroy {\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private calendar = inject(MatCalendar<D>);\r\n private changeDetector = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this.calendar.stateChanges\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe(() => this.changeDetector.markForCheck());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Optional, Output, Renderer2, Self, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { NameValueItem, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'button-selector',\r\n standalone: true,\r\n imports: [NgStyle, NgClass, FlexLayoutModule, MatIconModule, MatButtonModule,\r\n MatMenuModule],\r\n templateUrl: './button-selector.component.html',\r\n styleUrl: './button-selector.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonSelectorComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n @Output() changed = new EventEmitter<NameValueItem<any> | null>();\r\n @Output() selected = new EventEmitter<NameValueItem<any> | null>();\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private stateChanges = new Subject<void>();\r\n private focused = false;\r\n\r\n private _value: NameValueItem<any> | null = null\r\n set value(value: NameValueItem<any> | null) {\r\n this._value = value;\r\n this.propagateChange(this._value);\r\n this.stateChanges.next();\r\n this.changed.emit(this._value);\r\n this.current.set(this._value);\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n private _disabled: boolean = false;\r\n @Input()\r\n get disabled() {\r\n if (this.ngControl && this.ngControl.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n private propagateChange: (_: any) => void = (_: any) => { };\r\n private propagateTouched: () => void = () => { };\r\n\r\n @HostBinding() id = `button-selector--${SystemUtils.generateUUID()}`;\r\n @HostBinding('attr.aria-describedBy') describedBy = '';\r\n\r\n private renderer = inject(Renderer2);\r\n\r\n protected current = signal<NameValueItem<any> | null>(null);\r\n\r\n width = input<number>(-1);\r\n border = input<number>(-1);\r\n borderRadius = input<string>(\"9999px\");\r\n label = input<string | null>(null);\r\n labelSelected = input<string | null>(null);\r\n options = input<NameValueItem<any>[]>([]);\r\n autoSelect = input<boolean>(false);\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.autoSelect()) {\r\n const options = this.options();\r\n if (options && options.length > 0 && options[0].value) {\r\n this.current.set(options[0]);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n this.renderer.setProperty(elem, 'disabled', isDisabled);\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n elem.focus();\r\n this.propagateTouched();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Select an element\r\n * @param item : the item to select\r\n * @param notify: true if selection notification must be rised. Default is true\r\n */\r\n select(item: NameValueItem<any>, notify: boolean = true) {\r\n this.writeValue(item);\r\n if (notify) {\r\n this.selected.emit(item);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Reset value\r\n */\r\n reset() {\r\n this.writeValue(null);\r\n }\r\n}\r\n","<button mat-stroked-button class=\"menu-selector-button\" [ngStyle]=\"{\r\n 'border': border() >= 0 ? border() : 'auto',\r\n 'border-radius': borderRadius(),\r\n 'height': border() <= 0 ? '40px' : 'auto',\r\n 'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')\r\n}\" [attr.aria-label]=\"label()\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if(current()) {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n <div class=\"x-small \">{{labelSelected() ?? label()}}</div>\r\n <div fxHide.xs class=\"small\" >{{current()?.shortName ?? current()?.name ?? ''}}</div>\r\n <div fxHide.gt-xs class=\"x-small truncated\" style=\"max-width: 120px;\"><div>{{current()?.shortName ?? current()?.name ?? ''}}</div></div>\r\n </div>\r\n } @else {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n {{label()}}</div>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </div>\r\n </div>\r\n</button>\r\n<mat-menu #optionsMenu=\"matMenu\">\r\n @for (o of options(); track $index) {\r\n <button mat-menu-item (click)=\"select(o)\" [disabled]=\"o.disabled\">\r\n {{o.name}}\r\n @if(o.bag) {\r\n ({{o.bag}})\r\n }\r\n </button>\r\n }\r\n</mat-menu>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, EventEmitter, HostBinding, inject, Input, input, OnDestroy, OnInit, Optional, Output, Renderer2, Self, Signal, signal } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NameValueItem, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { debounceTime, fromEvent, Subject, takeUntil } from 'rxjs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ButtonSelectorComponent } from '../button-selector/button-selector.component';\r\n\r\n\r\n@Component({\r\n selector: 'chips-selector',\r\n standalone: true,\r\n imports: [NgStyle, NgClass, FlexLayoutModule, FormsModule, MatFormFieldModule, MatSelectModule,\r\n MatChipsModule, MatIconModule, MatButtonModule, MatBadgeModule, MatTooltipModule,\r\n ButtonSelectorComponent\r\n ],\r\n templateUrl: './chips-selector.component.html',\r\n styleUrl: './chips-selector.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChipsSelectorComponent implements OnInit, OnDestroy, AfterContentInit, ControlValueAccessor {\r\n\r\n @Output() changed = new EventEmitter<NameValueItem<any>[] | null>();\r\n protected containerId: string = `chips-selector-container--${SystemUtils.generateUUID()}`;\r\n protected containerWidth = signal(-6);\r\n private focused: boolean = false;\r\n private stateChanges: Subject<void> = new Subject<void>();\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private changesEnabled = false;\r\n\r\n options = input<NameValueItem<any>[]>([]);\r\n collapsedWidth = input<number>(-1);\r\n collapsedDisplayMode = input<'dropdown' | 'button'>('dropdown');\r\n collapseAt = input<number>(-1);\r\n collapseAtContainer = input<boolean>(false);\r\n label = input<string>('');\r\n multiple = input<boolean>(false);\r\n mode = input<'collapsed' | 'dinamyc'>('dinamyc');\r\n collapsed: Signal<boolean> = computed(() => {\r\n const cw = this.containerWidth();\r\n const mw = this.collapseAt();\r\n return this.mode() === 'collapsed' || (mw === -1 || (cw > 0 && mw > 0 && cw < mw));\r\n })\r\n\r\n\r\n\r\n private _value: NameValueItem<any>[] | null = []\r\n set value(value: NameValueItem<any>[] | null) {\r\n this._value = value;\r\n this.propagateChange(this._value);\r\n this.stateChanges.next();\r\n if (this.changesEnabled) {\r\n this.changed.emit(this._value);\r\n }\r\n this.selection = [];\r\n this.singleSelection = null;\r\n if (this._value) {\r\n this.options().forEach(n => {\r\n if (this._value?.findIndex((x: any) => x.value === n.value) !== -1) {\r\n this.selection.push(n);\r\n }\r\n });\r\n if (this.selection.length > 0) {\r\n this.singleSelection = this.selection[0]\r\n }\r\n }\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n get empty(): boolean {\r\n return !this._value || this._value?.length === 0;\r\n }\r\n get errorState() {\r\n return this.ngControl.errors != null && this.ngControl.touched;\r\n }\r\n\r\n private _required: boolean = false;\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n private _disabled: boolean = false;\r\n @Input()\r\n get disabled() {\r\n if (this.ngControl && this.ngControl.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n private _placeholder: string = '';\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n\r\n private propagateChange: (_: any) => void = (_: any) => { };\r\n private propagateTouched: () => void = () => { };\r\n\r\n @HostBinding() id = `chips-selector--${SystemUtils.generateUUID()}`;\r\n @HostBinding('class.floating')\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n @HostBinding('attr.aria-describedBy') describedBy = '';\r\n\r\n private renderer = inject(Renderer2);\r\n\r\n protected selection: NameValueItem<any>[] = [];\r\n protected singleSelection: NameValueItem<any> | null = null;\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n if (this.collapseAt() > 0) {\r\n // Close the options menu if open\r\n this.updateContainerWidth();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n setTimeout(() => {\r\n this.updateContainerWidth();\r\n this.changesEnabled = true;\r\n this.changeDetector.markForCheck();\r\n }, 250);\r\n }\r\n\r\n /**\r\n * Update container width\r\n */\r\n private updateContainerWidth() {\r\n const elem = document.getElementById(this.containerId);\r\n if (elem && elem.clientWidth > 0) {\r\n this.containerWidth.set(\r\n this.collapseAtContainer()\r\n ? (elem?.clientWidth ?? -1)\r\n : (window.innerWidth ?? -1));\r\n } else {\r\n setTimeout(() => {\r\n this.updateContainerWidth();\r\n }, 100)\r\n }\r\n }\r\n\r\n /**\r\n * Update current value with a little delay\r\n */\r\n updateValue() {\r\n setTimeout(() => {\r\n const value =\r\n !this.multiple() && this.collapsed() && this.collapsedDisplayMode() === \"button\"\r\n ? this.singleSelection\r\n : this.selection;\r\n if (Array.isArray(value)) {\r\n this.writeValue(value);\r\n } else {\r\n this.writeValue([value]);\r\n }\r\n }, 250);\r\n }\r\n \r\n writeValue(value: any): void {\r\n if (this.value !== value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n this.renderer.setProperty(elem, 'disabled', isDisabled);\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n if (!SystemUtils.isBrowser()) return;\r\n let elem = document.getElementById(this.id);\r\n if (elem) {\r\n elem.focus();\r\n this.propagateTouched();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear selection\r\n * @param e : the click event\r\n */\r\n clear(e: Event) {\r\n this.writeValue([]);\r\n e.stopPropagation();\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Select single element\r\n * @param item : the item to select\r\n */\r\n select(item: NameValueItem<any> | null) {\r\n if (item) {\r\n this.writeValue([item]);\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n}\r\n","<div [id]=\"containerId\" class=\"chips-selector\">\r\n @if(containerWidth() > 0) {\r\n @if(collapsed()) {\r\n @if(collapsedDisplayMode() === 'dropdown') {\r\n <mat-form-field [ngStyle]=\"{'min-width': collapsedWidth() > 0 ? collapsedWidth()+'.px' : '100%'}\"\r\n subscriptSizing=\"dynamic\">\r\n @if(label()) {\r\n <mat-label>{{label()}}</mat-label>\r\n }\r\n <mat-select [(ngModel)]=\"selection\" [multiple]=\"multiple()\" (selectionChange)=\"updateValue()\">\r\n <mat-select-trigger>\r\n @if (value && (value.length || 0) > 0) {\r\n {{value[0].shortName ?? value[0].name}}\r\n }\r\n @if (value && (value.length || 0) > 1) {\r\n <span class=\"collapsed-additional-selection\">\r\n (+{{(value.length || 0) - 1}} {{value.length === 2 ? 'altro' : 'altri'}})\r\n </span>\r\n }\r\n </mat-select-trigger>\r\n @for (o of options(); track o.value) {\r\n <mat-option [value]=\"o\" [disabled]=\"o.disabled\">\r\n {{o.name}}\r\n @if(o.bag) {\r\n ({{o.bag}});\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (value && (value.length || 0) > 0) {\r\n <button matSuffix tabindex=\"-1\" mat-icon-button aria-label=\"Pulisci\" (click)=\"clear($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n <button-selector [label]=\"label()\" [options]=\"options()\" [width]=\"collapsedWidth()\" [(ngModel)]=\"singleSelection\"\r\n name=\"value\" (selected)=\"updateValue()\" ></button-selector>\r\n\r\n }\r\n } @else {\r\n <mat-chip-listbox [multiple]=\"multiple()\" [(ngModel)]=\"selection\" (change)=\"updateValue()\">\r\n @for (o of options(); track o.value) {\r\n <mat-chip-option [matBadge]=\"o.bag\" [matTooltip]=\"o.bagInfo ?? ''\" [value]=\"o\" [disabled]=\"o.disabled\">{{o.shortName ??\r\n o.name}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n }\r\n }\r\n</div>","import { NgClass, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output, Signal, computed, input } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n\r\nexport interface ButtonToggleInfo {\r\n value: boolean,\r\n toggled: boolean\r\n}\r\n\r\n@Component({\r\n selector: 'button-toggle',\r\n standalone: true,\r\n imports: [NgStyle, NgClass, FlexLayoutModule, MatIconModule, MatButtonModule, SafeHtmlPipe],\r\n templateUrl: './button-toggle.component.html',\r\n styleUrl: './button-toggle.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonToggleComponent {\r\n\r\n @Output() changed = new EventEmitter<ButtonToggleInfo>();\r\n\r\n protected current: Signal<boolean> = computed(() => {\r\n return this.value();\r\n })\r\n\r\n toggled: boolean = false;\r\n\r\n value = input<boolean>(false);\r\n width = input<number>(-1);\r\n border = input<number>(-1);\r\n labelOn = input<string | null>(null);\r\n labelOff = input<string | null>(null);\r\n iconOn = input<string | null>(null);\r\n iconOff = input<string | null>(null);\r\n cssClass = input<string | null>(null);\r\n cssClassSmall = input<string | null>(null);\r\n\r\n protected label: Signal<string> = computed(() => {\r\n return this.value() ? this.labelOn() ?? '' : this.labelOff() ?? '';\r\n })\r\n\r\n protected icon: Signal<string> = computed(() => {\r\n return this.value() ? this.iconOn() ?? '' : this.iconOff() ?? '';\r\n })\r\n\r\n /**\r\n * Toggle the button\r\n */\r\n toggle() {\r\n this.toggled = !(this.value());\r\n this.changed.emit({ value: this.value(), toggled: this.toggled });\r\n }\r\n\r\n}\r\n","<button mat-stroked-button [ngStyle]=\"{\r\n 'border': border() >= 0 ? border() : 'auto',\r\n 'height': border() <= 0 ? '40px' : 'auto',\r\n 'min-width.px': width() > 0 ? width() : 'auto', \r\n 'mxn-width.px': width() > 0 ? width() : 'auto' \r\n}\" [class]=\"cssClass()\" [attr.aria-label]=\"label()\" (click)=\"toggle()\" [ngClass]=\"{'button-on': value() === true}\" [ngClass.xs]=\"cssClassSmall()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"center center\" fxFill>\r\n @if(icon()) {\r\n <div fxFlex=\"24px\"><mat-icon>{{icon()}}</mat-icon></div>\r\n }\r\n <div fxFlex=\"*\" [innerHtml]=\"label() | safeHtml\"></div>\r\n </div>\r\n</button>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/dialogs/prompt/prompt-dialog.component';\r\nexport * from './ui/dialogs/prompt-date/prompt-date-dialog.component';\r\nexport * from './ui/dialogs/prompt-time/prompt-time-dialog.component';\r\nexport * from './ui/dialogs/select-file/select-file-dialog.component';\r\nexport * from './ui/dialogs/select-picture/select-picture-dialog.component';\r\nexport * from './ui/dialogs/select-tree/select-tree-dialog.component';\r\nexport * from './ui/dialogs/select/select-dialog.component';\r\nexport * from './ui/dialogs/send-to/send-to-dialog.component';\r\nexport * from './ui/components/file-input/file-input.component';\r\nexport * from './ui/components/file-preview/file-preview.component';\r\nexport * from './ui/components/filter-bar/filter-bar.component';\r\nexport * from './ui/components/calendar-empty-header/calendar-empy-header.component';\r\nexport * from './ui/components/chips-selector/chips-selector.component';\r\nexport * from './ui/components/button-selector/button-selector.component';\r\nexport * from './ui/components/button-toggle/button-toggle.component';\r\nexport * from './ui/directives/resize-table-column.directive';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i9","observableOf","i1","i3","i4","i5","i8","i10","i6","i12","takeUntil","i7"],"mappings":"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"}
|