@arsedizioni/ars-utils 22.1.4 → 22.5.1
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/README.md +97 -10
- package/clipper.ui/clipper.scss +564 -0
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +1 -1
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +7 -3
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.date.mjs +609 -0
- package/fesm2022/arsedizioni-ars-utils-core.date.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +591 -0
- package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-core.mjs +270 -1449
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +1 -1
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +14 -3080
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +962 -0
- package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +506 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +763 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +184 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +825 -0
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +708 -0
- package/fesm2022/arsedizioni-ars-utils-ui.files.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +426 -0
- package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +531 -0
- package/fesm2022/arsedizioni-ars-utils-ui.help.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +62 -2222
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +1049 -0
- package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +263 -0
- package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +4 -3
- package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +246 -0
- package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs.map +1 -0
- package/fesm2022/arsedizioni-ars-utils.mjs +13 -12
- package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
- package/help/package.json +4 -0
- package/package.json +72 -14
- package/support.ui/package.json +4 -0
- package/tinymce/package.json +4 -0
- package/types/arsedizioni-ars-utils-clipper.common.d.ts +1 -2
- package/types/arsedizioni-ars-utils-clipper.ui.d.ts +3 -1
- package/types/arsedizioni-ars-utils-core.d.ts +684 -1004
- package/types/arsedizioni-ars-utils-core.date.d.ts +304 -0
- package/types/arsedizioni-ars-utils-core.markdown.d.ts +159 -0
- package/types/arsedizioni-ars-utils-ui.application.d.ts +10 -1377
- package/types/arsedizioni-ars-utils-ui.controls.d.ts +413 -0
- package/types/arsedizioni-ars-utils-ui.d.ts +198 -1206
- package/types/arsedizioni-ars-utils-ui.dialogs.auth.d.ts +224 -0
- package/types/arsedizioni-ars-utils-ui.dialogs.d.ts +376 -0
- package/types/arsedizioni-ars-utils-ui.dialogs.prompt.d.ts +47 -0
- package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts +309 -0
- package/types/arsedizioni-ars-utils-ui.files.d.ts +271 -0
- package/types/arsedizioni-ars-utils-ui.filters.d.ts +163 -0
- package/types/arsedizioni-ars-utils-ui.help.d.ts +220 -0
- package/types/arsedizioni-ars-utils-ui.navigation.d.ts +650 -0
- package/types/arsedizioni-ars-utils-ui.notifications.d.ts +73 -0
- package/types/arsedizioni-ars-utils-ui.tinymce.d.ts +63 -0
- package/types/arsedizioni-ars-utils.d.ts +4 -10
- package/ui.tinymce/README.md +12 -0
- package/ui.tinymce/langs/it.js +466 -0
- package/types/arsedizioni-ars-utils-core.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arsedizioni-ars-utils-ui.dialogs.mjs","sources":["../../../projects/ars-utils/ui.dialogs/busy/busy-dialog.component.ts","../../../projects/ars-utils/ui.dialogs/busy/busy-dialog.component.html","../../../projects/ars-utils/ui.dialogs/confirm/confirm-dialog.component.ts","../../../projects/ars-utils/ui.dialogs/confirm/confirm-dialog.component.html","../../../projects/ars-utils/ui.dialogs/info/info-dialog.component.ts","../../../projects/ars-utils/ui.dialogs/info/info-dialog.component.html","../../../projects/ars-utils/ui.dialogs/toast/toast.component.ts","../../../projects/ars-utils/ui.dialogs/toast/toast.component.html","../../../projects/ars-utils/ui.dialogs/delete/delete-dialog.component.ts","../../../projects/ars-utils/ui.dialogs/delete/delete-dialog.component.html","../../../projects/ars-utils/ui.dialogs/dialog.service.ts","../../../projects/ars-utils/ui.dialogs/public_api.ts","../../../projects/ars-utils/ui.dialogs/arsedizioni-ars-utils-ui.dialogs.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { MatIcon } from '@angular/material/icon';\n\n/**\n * Overlay dialog that blocks interaction while a background operation is in progress.\n * Supports four visual styles: progress bar, spinner, hourglass, and wait icon.\n */\n@Component({\n templateUrl: './busy-dialog.component.html',\n styleUrl: './busy-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexLayoutModule, MatProgressBarModule, MatProgressSpinnerModule, MatIcon, SafeHtmlPipe]\n})\nexport class BusyDialogComponent {\n /** Visual style of the busy indicator. */\n readonly type = signal<'bar' | 'spinner' | 'wait' | 'hourglass'>('bar');\n\n /** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */\n readonly progress = signal<number>(0);\n\n /** Progress mode passed to the Material progress components. */\n readonly progressMode = signal<'determinate' | 'indeterminate'>('indeterminate');\n\n /** Message displayed above the progress indicator. */\n readonly message = signal<string>('');\n\n /**\n * Updates the busy dialog state.\n * @param message - New message to display. Ignored when empty, preserving the previous text.\n * @param progress - Current progress value (0–100). A value > 0 forces `'determinate'` mode.\n * @param progressMode - Progress bar/spinner mode (default: `'indeterminate'`).\n * @param type - Visual style to use (default: `'bar'`).\n */\n set(\n message: string,\n progress: number,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar'\n ): void {\n if (message) {\n this.message.set(message);\n }\n if (type) {\n this.type.set(type);\n }\n this.progress.set(progress);\n this.progressMode.set(progress > 0 ? 'determinate' : progressMode);\n }\n}\n","@if(type() === 'hourglass') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n</div>\r\n} @else if (type() === 'wait') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n</div>\r\n} @else {\r\n<div class=\"busy-panel\">\r\n <div fxLayout=\"column\" fxFill>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n @if (type() === 'bar') {\r\n <div>\r\n <mat-progress-bar [mode]=\"progressMode()\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto; max-width: 350px;\"></mat-progress-bar>\r\n </div>\r\n } @else if (type() === 'spinner') {\r\n <div>\r\n <mat-progress-spinner [mode]=\"progressMode()\" diameter=\"70\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto;\"></mat-progress-spinner>\r\n </div>\r\n }\r\n @if (progress() > 0) {\r\n <div>\r\n <span style=\"font-size: smaller;\"><b>{{progress()}}%</b></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { DialogOption, DialogResult, FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ConfirmDialogOption extends DialogOption {}\n\nexport interface ConfirmDialogData {\n title?: string;\n message: string;\n okCaption?: string;\n cancelCaption?: string;\n otherCaption?: string;\n options?: ConfirmDialogOption[];\n details?: string;\n}\n\n@Component({\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexLayoutModule, MatCheckboxModule, FormsModule,\n MatDialogActions, MatButtonModule, SafeHtmlPipe]\n})\nexport class ConfirmDialogComponent {\n /** Emitted when the user makes a choice. Carries the selected result and any option state. */\n readonly choosen = output<DialogResult>();\n\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\n\n /** Dialog configuration, with sensible defaults applied at construction time. */\n protected readonly dialogData = signal<ConfirmDialogData>({\n title: 'Conferma',\n okCaption: 'Si',\n cancelCaption: 'No',\n message: '',\n ...((inject(MAT_DIALOG_DATA) as ConfirmDialogData | null) ?? {}),\n });\n\n constructor() {\n // Ensure optional captions always have a value even when the caller omits them\n this.dialogData.update(d => ({\n ...d,\n title: d.title ?? 'Conferma',\n okCaption: d.okCaption ?? 'Si',\n cancelCaption: d.cancelCaption ?? 'No',\n }));\n }\n\n /**\n * Confirms the dialog, emitting `'ok'` together with the current option selections.\n */\n ok(): void {\n this.choosen.emit({ result: 'ok', options: this.dialogData().options });\n this.dialogRef.close();\n }\n\n /**\n * Cancels the dialog, emitting `'cancel'`.\n */\n cancel(): void {\n this.choosen.emit({ result: 'cancel' });\n this.dialogRef.close();\n }\n\n /**\n * Triggers the tertiary action, emitting `'other'`.\n */\n other(): void {\n this.choosen.emit({ result: 'other' });\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().otherCaption) {\r\n <button mat-flat-button (click)=\"other()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().otherCaption}}</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, DestroyRef, inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { DialogService } from '../dialog.service';\n\nexport interface InfoDialogData {\n title?: string;\n message: string;\n details?: string;\n okCaption?: string;\n dismissAfter?: number;\n onNavigate?: (url: string) => void;\n}\n\n@Component({\n templateUrl: './info-dialog.component.html',\n styleUrl: './info-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, FlexLayoutModule,\n MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\n})\nexport class InfoDialogComponent {\n private readonly dialogService = inject(DialogService);\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\n private dismissTimer?: ReturnType<typeof setTimeout>;\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<InfoDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as InfoDialogData | null) ?? { message: '' };\n return { title: 'Informazioni', ...raw };\n })());\n\n constructor() {\n // Schedule auto-dismiss if configured; cancel it when the dialog is destroyed\n this.scheduleDismiss(this.dialogData().dismissAfter);\n inject(DestroyRef).onDestroy(() => clearTimeout(this.dismissTimer));\n }\n\n /**\n * (Re)schedules the auto-dismiss timer, cancelling any pending one so that\n * an earlier (shorter) timer can never close a newer message.\n * @param dismissAfter - Delay in milliseconds; no-op when falsy.\n */\n private scheduleDismiss(dismissAfter?: number): void {\n clearTimeout(this.dismissTimer);\n this.dismissTimer = undefined;\n if (dismissAfter) {\n this.dismissTimer = setTimeout(() => this.dialogRef.close(), dismissAfter);\n }\n }\n\n /**\n * Replaces the dialog data at runtime (e.g. after an async operation resolves).\n * Also re-schedules the auto-dismiss timer if `dismissAfter` is set.\n * @param data - The new dialog data to display.\n */\n public setData(data: InfoDialogData): void {\n this.dialogData.set({ title: 'Informazioni', ...data });\n this.scheduleDismiss(data.dismissAfter);\n }\n\n /**\n * Invokes the optional navigation callback provided by the caller.\n * @param url - The URL to navigate to.\n */\n protected navigate(url: string): void {\n this.dialogData().onNavigate?.(url);\n }\n\n /**\n * Copy to clipboard\n */\n protected async copy(): Promise<void> {\n const elem = document.getElementById('info-dialog-content');\n if (!elem) return;\n const htmlBlob = new Blob([elem.innerHTML], { type: 'text/html' });\n const textBlob = new Blob([elem.innerText], { type: 'text/plain' });\n try {\n const data = [\n new ClipboardItem({\n 'text/html': htmlBlob,\n 'text/plain': textBlob\n })\n ];\n window.focus(); // the Clipboard API requires the document to be focused\n await navigator.clipboard.write(data);\n this.dialogService.toast('Copiato negli appunti.');\n } catch (err) {\n this.dialogService.toast(`Errore copiando negli appunti: ${err}`);\n }\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill id=\"info-dialog-content\">\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <br>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <button mat-icon-button (click)=\"copy()\" matTooltip=\"Copia negli appunti\"><mat-icon>content_copy</mat-icon></button>\r\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial>{{dialogData().okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output, signal } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\n\nexport interface ToastData {\n message: string;\n icon?: string;\n actionCaption?: string;\n}\n\n@Component({\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexLayoutModule, MatIconModule, MatButtonModule, SafeHtmlPipe]\n})\nexport class ToastComponent {\n /** Emitted when the user clicks the optional action button. */\n readonly action = output<void>();\n\n /** Snack-bar payload with a safe fallback to an empty message when no data is injected. */\n protected readonly dialogData = signal<ToastData>(\n (inject(MAT_SNACK_BAR_DATA) as ToastData | null) ?? { message: '' }\n );\n\n /**\n * Emits the `action` event to notify the caller that the action button was clicked.\n */\n protected do(): void {\n this.action.emit();\n }\n}\n","<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData().icon) {\r\n <div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData().icon}}</mat-icon>\r\n </div>\r\n }\r\n <div fxFlex='*' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData().message) {\r\n <span [innerHTML]=\"dialogData().message | safeHtml\"></span>\r\n }\r\n </div>\r\n @if (dialogData().actionCaption) {\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <div style=\"padding-left: 20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"do()\"\r\n [innerHTML]=\"dialogData().actionCaption\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { DialogResult, FlexLayoutModule } from '@arsedizioni/ars-utils/ui';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nexport enum DeleteDialogConfirmMode {\n None = 0,\n Simple = 1,\n Strong = 2\n}\n\nexport interface DeleteDialogData {\n title?: string;\n message: string;\n confirmMode: DeleteDialogConfirmMode;\n okCaption?: string;\n cancelCaption?: string;\n details?: string;\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './delete-dialog.component.html',\n styleUrl: './delete-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexLayoutModule, MatCheckboxModule, FormsModule,\n MatDialogActions, MatButtonModule, MatFormFieldModule, MatInputModule, SafeHtmlPipe]\n})\nexport class DeleteDialogComponent {\n /** Emitted when the user makes a choice. Carries the selected result. */\n readonly choosen = output<DialogResult>();\n\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<DeleteDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as DeleteDialogData | null) ?? {};\n return {\n title: 'Attenzione',\n okCaption: 'Si',\n cancelCaption: 'No',\n confirmMode: DeleteDialogConfirmMode.None,\n message: '',\n ...raw,\n };\n })());\n\n /**\n * Whether the user has confirmed the deletion.\n * Starts as `true` for all modes except `Simple`, which requires explicit checkbox confirmation.\n */\n protected readonly confirmed = signal<boolean>(\n this.dialogData().confirmMode !== DeleteDialogConfirmMode.Simple\n );\n\n /** Current value typed into the strong-confirmation text field. */\n protected confirmValue?: string;\n\n /**\n * Confirms the deletion, emitting `'ok'` and closing the dialog.\n */\n ok(): void {\n this.choosen.emit({ result: 'ok' });\n this.dialogRef.close();\n }\n\n /**\n * Cancels the operation, emitting `'cancel'` and closing the dialog.\n */\n cancel(): void {\n this.choosen.emit({ result: 'cancel' });\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().confirmMode === 1) {\r\n <div>\r\n <mat-checkbox (change)=\"confirmed.set($event.checked)\" [checked]=\"confirmed()\">\r\n Confermo la cancellazione\r\n </mat-checkbox>\r\n </div>\r\n } @else if (dialogData().confirmMode === 2) {\r\n <p>Per confermare la cancellazione digita la parola <i><b>elimina</b></i>.</p>\r\n <mat-form-field style=\"width: 200px\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma</mat-label>\r\n <input matInput #field_confirm=\"ngModel\" [(ngModel)]=\"confirmValue\" name=\"field_confirm\" required\r\n [attr.aria-label]=\"'Digita la parola -elimina-'\">\r\n @if (field_confirm.invalid) {\r\n <mat-error>Digita la parola \"elimina\"</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <br>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\"\r\n [disabled]=\"f.form.invalid || (confirmValue && confirmValue.toLowerCase() !== 'elimina') || !confirmed()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\"\r\n (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { PlatformLocation } from '@angular/common';\nimport { ComponentRef, inject, Service } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\nimport { BusyDialogComponent } from './busy/busy-dialog.component';\nimport {\n ConfirmDialogComponent,\n ConfirmDialogData,\n ConfirmDialogOption\n} from './confirm/confirm-dialog.component';\nimport {\n InfoDialogComponent,\n InfoDialogData\n} from './info/info-dialog.component';\nimport { ToastComponent, ToastData } from './toast/toast.component';\nimport { UIService } from '@arsedizioni/ars-utils/ui';\nimport { DeleteDialogComponent, DeleteDialogConfirmMode, DeleteDialogData } from './delete/delete-dialog.component';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IDialogService {}\n\ninterface PopHistoryEntry {\n id: string;\n value: number;\n}\n\nexport class BusyTimer {\n private readonly subscription: Subscription;\n\n constructor(\n private readonly dialogService: DialogService,\n due: number = 100,\n message: string = 'Operazione in corso...'\n ) {\n this.subscription = timer(due).pipe(tap(() => this.dialogService.busy(message))).subscribe();\n }\n\n /** Dispose object */\n clear(): void {\n this.subscription.unsubscribe();\n this.dialogService.clearBusy();\n }\n}\n\n@Service()\nexport class DialogService extends UIService {\n\n /**\n * Shares the SAME `appearance` signal instance as the root `UIService`:\n * `uiService.setAppearance('outline')` is immediately visible here and in\n * every dialog opened by this service.\n */\n override readonly appearance = inject(UIService).appearance;\n\n private readonly dialog = inject(MatDialog);\n private readonly overlay = inject(Overlay);\n private readonly snackBar = inject(MatSnackBar);\n private readonly location = inject(PlatformLocation);\n\n private busyDialogRef?: OverlayRef;\n private busyComponentRef?: ComponentRef<BusyDialogComponent>;\n private clearBusyTimer?: ReturnType<typeof setTimeout>;\n private errorDialogRef?: MatDialogRef<InfoDialogComponent>;\n private readonly popHistory: PopHistoryEntry[] = [];\n private popState = true;\n private poppingState = false;\n\n constructor() {\n super();\n\n // Handle dialog close when back button is clicked\n this.location.onPopState(() => {\n if (!this.poppingState) {\n const count = this.dialog.openDialogs.length;\n if (count > 0) {\n // Disable pop state if needed\n this.popState = false;\n // Close dialog\n this.dialog.openDialogs[count - 1].close();\n }\n } else {\n this.poppingState = false;\n }\n });\n }\n\n /**\n * Lets the next `popstate` through without closing the topmost dialog.\n *\n * Back closing the dialog on top is the rule of this service, and its listener is registered in\n * the constructor — so nothing attached later can get in front of it. A caller that owns a\n * dismissable state of its own INSIDE a dialog (a full-screen editor, a picker covering the\n * dialog, a wizard step) needs Back to unwind that state first, and this is the only way to ask\n * for it: push a history entry, call this, and handle the pop.\n *\n * The suspension lasts exactly one `popstate` and is consumed whether or not the caller pushed\n * an entry, so it can not leave the service permanently deaf to the Back button.\n */\n suspendBackClose(): void {\n this.poppingState = true;\n }\n\n /**\n * Removes trailing `#` characters from the current URL (e.g. after a page reload).\n * @param resetPoppingState - When `true`, resets the internal popping-state flag.\n */\n clearUrl(resetPoppingState: boolean = false): void {\n const url = location.href;\n let l = url.length;\n while (l >= 0 && url[l - 1] === '#') l--;\n if (l < url.length)\n history.replaceState({}, '', url.substring(0, l));\n if (resetPoppingState)\n this.poppingState = false;\n }\n\n /**\n * Close all dialogs\n */\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n\n /**\n * Opens a Material dialog. Returns `null` when not running in a browser.\n * @param component - The component to open as a dialog.\n * @param config - The dialog configuration.\n * @returns The dialog reference, or `null` outside the browser.\n */\n open<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> | null {\n if (!SystemUtils.isBrowser()) return null;\n this.clearBusy();\n return this.openDialog(component, config);\n }\n\n\n /**\n * Internal helper that wraps `MatDialog.open`, subscribes to lifecycle hooks\n * and manages browser-history push/pop entries.\n * @param component - The component to open.\n * @param config - The dialog configuration.\n * @returns The dialog reference.\n */\n private openDialog<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> {\n // We will take care of navigation\n config.closeOnNavigation = false;\n const d = this.dialog.open(component, config);\n d.afterOpened().pipe(first()).subscribe(() => this.pushDialog(d.id));\n d.beforeClosed().pipe(first()).subscribe(() => this.popDialog(d.id));\n d.afterClosed().pipe(first()).subscribe(() => {\n // Final cleanup of middle objects\n this.errorDialogRef = undefined;\n });\n return d;\n }\n\n /**\n * Returns the element height including margins\n * @param element - element\n * @returns the height\n */\n private outerHeight(element: HTMLElement): number {\n if (!SystemUtils.isBrowser()) return 0;\n const height = element.offsetHeight;\n const style = window.getComputedStyle(element);\n return (['top', 'bottom'] as const)\n .map(side => parseInt(style.getPropertyValue(`margin-${side}`), 10))\n .reduce((total, margin) => total + margin, height);\n }\n\n /**\n * Return current dialog height\n */\n getCurrentDialogHeight(): number {\n if (!SystemUtils.isBrowser()) return 0;\n const count = this.popHistory.length;\n if (count > 0) {\n let id = this.popHistory[count - 1].id;\n let elem = document.getElementById(id);\n if (elem && elem.clientHeight > 0) return elem.clientHeight;\n }\n return 0;\n }\n\n /**\n * Returns the scrollable content area height for the topmost open dialog.\n * @param fixedPartsClassName - CSS class names of fixed (non-scrollable) elements whose heights are subtracted.\n * @param minimalHeight - Minimum height floor to use when the dialog height is smaller.\n * @returns The computed scrollable height in pixels.\n */\n getCurrentDialogScrollableHeight(\n fixedPartsClassName: string[],\n minimalHeight: number\n ): number {\n if (!SystemUtils.isBrowser()) return 0;\n let h = Math.max(this.getCurrentDialogHeight(), minimalHeight);\n if (fixedPartsClassName) {\n fixedPartsClassName.forEach(n => {\n const elems = document.getElementsByClassName(n);\n if (elems) {\n for (let i = 0; i < elems.length; i++) {\n h -= this.outerHeight(elems[i] as HTMLElement);\n }\n }\n });\n }\n return h;\n }\n\n /**\n * Push a dialog into the browser history\n */\n private pushDialog(id: string): void {\n if (!SystemUtils.isBrowser()) return;\n const index = history.length;\n history.pushState({ index }, '', location.href + '#');\n this.popHistory.push({ id, value: index });\n }\n\n /**\n * Pop a dialog from the history\n */\n private popDialog(id?: string): void {\n if (!SystemUtils.isBrowser()) return;\n if (this.popState) {\n this.poppingState = true;\n let popped = 1;\n if (id) {\n const p = this.popHistory.findIndex(n => n.id === id);\n if (p !== -1) {\n popped = this.popHistory[p].value - (history.state?.index ?? 0);\n popped = popped ? popped + 1 : 1;\n this.popHistory.splice(p, 1);\n }\n const url = location.href;\n let l = url.length;\n while (l >= 0 && url[l - 1] === '#' && popped > 0) {\n l--;\n popped--;\n }\n if (l < url.length)\n history.replaceState({}, '', url.substring(0, l));\n }\n }\n this.popState = true;\n }\n\n /**\n * Creates the CDK overlay used to host the busy indicator.\n * @returns The new `OverlayRef`.\n */\n private createBusy(): OverlayRef {\n return this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'busy-backdrop',\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n }\n\n /**\n * Clears the busy overlay after a short grace delay (lets very fast\n * operations avoid a visible flicker). The pending detach is cancelled by\n * any new `setBusy()` call, so it can never kill a freshly opened overlay.\n */\n clearBusy(): void {\n clearTimeout(this.clearBusyTimer);\n this.clearBusyTimer = setTimeout(() => {\n this.clearBusyTimer = undefined;\n this.busyDialogRef?.detach();\n this.busyComponentRef?.destroy();\n this.busyComponentRef = undefined;\n }, 500);\n }\n\n /**\n * Shows or updates the busy overlay.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\n * @param type - Visual style of the overlay. Defaults to `'bar'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created, `false` if an existing one was updated.\n */\n setBusy(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar',\n action?: Observable<unknown>\n ): boolean {\n // Cancel any pending clearBusy() detach: it must never kill this overlay\n clearTimeout(this.clearBusyTimer);\n this.clearBusyTimer = undefined;\n const exists = this.busyDialogRef?.hasAttached();\n if (exists) {\n this.busyComponentRef?.instance.set(message, progress, progressMode, type); // update existing\n } else {\n // Open new\n if (!this.busyDialogRef) {\n this.busyDialogRef = this.createBusy();\n }\n this.busyComponentRef = this.busyDialogRef.attach(new ComponentPortal(BusyDialogComponent));\n this.busyComponentRef.instance.set(message, progress, progressMode, type);\n if (action) {\n action\n .pipe(first())\n .subscribe(() => {\n this.clearBusy();\n });\n }\n }\n return !exists;\n }\n\n /**\n * Shows or updates the busy overlay using the progress-bar style.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busy(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, progress, progressMode, 'bar', action);\n }\n\n \n /**\n * Returns a `BusyTimer` that shows the busy overlay after a debounce delay.\n * @param message - Text to display. Defaults to `'Operazione in corso...'`.\n * @param due - Delay in milliseconds before the overlay appears. Defaults to `100`.\n * @returns A `BusyTimer` that must be disposed with `clear()` when the operation ends.\n */\n busyTimer(message: string = \"Operazione in corso...\", due: number = 100): BusyTimer {\n return new BusyTimer(this, due, message);\n }\n\n\n /**\n * Shows or updates the busy overlay using the hourglass style.\n * @param message - Text to display inside the overlay.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busyHourglass(\n message: string,\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, -1, 'indeterminate', 'hourglass', action);\n }\n\n /**\n * Shows or updates the busy overlay using the spinner style.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress mode. Defaults to `'indeterminate'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busySpinner(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, progress, progressMode, 'spinner', action);\n }\n\n /**\n * Shows a minimal wait spinner overlay.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n wait(action?: Observable<unknown>): boolean {\n return this.setBusy('', -1, 'indeterminate', 'wait', action);\n }\n\n\n /**\n * Opens an informational dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Informazioni'`.\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\n * @param details - Optional secondary details text.\n * @param onNavigate - Optional navigation callback invoked when the user clicks a link.\n * @returns The dialog reference, or `null` outside the browser.\n */\n info(\n message: string,\n title: string = 'Informazioni',\n okCaption: string = 'Ok',\n width: number = 500,\n dismissAfter?: number,\n details?: string,\n onNavigate?: (url: string) => void\n ): MatDialogRef<InfoDialogComponent> | null {\n this.clearBusy();\n return this.open(InfoDialogComponent, {\n ariaLabel: 'informazioni',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n okCaption,\n dismissAfter,\n details,\n onNavigate,\n appearance: this.appearance()\n } as InfoDialogData,\n closeOnNavigation: false,\n \n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n /**\n * Opens an error dialog. If one is already open, its content is updated in place.\n * @param message - HTML error message to display.\n * @param log - Optional technical log / stack trace shown in the details panel.\n * @param title - Dialog title. Defaults to `'Errore'`.\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\n * @returns The dialog reference, or `null` outside the browser.\n */\n error(\n message: string,\n log?: string,\n title: string = 'Errore',\n okCaption: string = 'Ok',\n width: number = 500,\n dismissAfter?: number,\n ): MatDialogRef<InfoDialogComponent> | null {\n this.clearBusy();\n if (this.errorDialogRef) {\n // Just change current error\n this.errorDialogRef.componentInstance.setData({\n message,\n title,\n details: log,\n okCaption,\n dismissAfter\n });\n return this.errorDialogRef;\n }\n const ref = this.open(InfoDialogComponent, {\n ariaLabel: 'errore',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n details: log,\n okCaption,\n dismissAfter,\n appearance: this.appearance()\n } as InfoDialogData,\n closeOnNavigation: false,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n this.errorDialogRef = ref ?? undefined;\n return ref;\n }\n\n /**\n * Shows a snack-bar toast notification.\n * @param message - HTML message to display.\n * @param duration - Visible duration in milliseconds. Defaults to `2000`.\n * @param icon - Material icon name shown beside the message. Defaults to `'check'`.\n * @param actionCaption - Optional label for the action button.\n * @returns The snack-bar reference.\n */\n toast(\n message: string,\n duration: number = 2000,\n icon: string = 'check',\n actionCaption?: string\n ): MatSnackBarRef<ToastComponent> {\n this.clearBusy();\n if (duration === -1) duration = 2000; // default\n const toastRef = this.snackBar.openFromComponent(ToastComponent, {\n duration,\n data: { message, icon, actionCaption } as ToastData\n });\n toastRef.instance.action.subscribe(() => toastRef.dismiss());\n return toastRef;\n }\n\n /**\n * Opens a confirmation dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Conferma'`.\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\n * @param otherCaption - Optional tertiary action button label.\n * @param options - Optional list of checkbox options shown to the user.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param details - Optional secondary details text.\n * @returns The dialog reference, or `null` outside the browser.\n */\n confirm(\n message: string,\n title: string = 'Conferma',\n okCaption: string = 'Si',\n cancelCaption: string = 'No',\n otherCaption?: string,\n options?: ConfirmDialogOption[],\n width: number = 500,\n details?: string\n ): MatDialogRef<ConfirmDialogComponent> | null {\n return this.open(ConfirmDialogComponent, {\n ariaLabel: 'conferma',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n okCaption,\n cancelCaption,\n otherCaption,\n options,\n details,\n appearance: this.appearance()\n } as ConfirmDialogData,\n closeOnNavigation: false,\n disableClose: true,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n /**\n * Opens a deletion-confirmation dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Attenzione'`.\n * @param confirmMode - Confirmation mode (none / checkbox / type-to-confirm). Defaults to `None`.\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param details - Optional secondary details text.\n * @returns The dialog reference, or `null` outside the browser.\n */\n delete(\n message: string,\n title: string = 'Attenzione',\n confirmMode: DeleteDialogConfirmMode = DeleteDialogConfirmMode.None,\n okCaption: string = 'Si',\n cancelCaption: string = 'No',\n width: number = 500,\n details?: string\n ): MatDialogRef<DeleteDialogComponent> | null {\n return this.open(DeleteDialogComponent, {\n ariaLabel: 'attenzione',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n confirmMode,\n okCaption,\n cancelCaption,\n details,\n appearance: this.appearance()\n } as DeleteDialogData,\n closeOnNavigation: false,\n disableClose: true,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n}\n\n","/*\n * Public API Surface of @arsedizioni/ars-utils/ui.dialogs\n */\nexport * from './dialog.service';\nexport * from './busy/busy-dialog.component';\nexport * from './confirm/confirm-dialog.component';\nexport * from './delete/delete-dialog.component';\nexport * from './info/info-dialog.component';\nexport * from './toast/toast.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i2"],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import * as i5 from '@angular/cdk/text-field';
|
|
2
|
+
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
3
|
+
import * as i2 from '@arsedizioni/ars-utils/ui';
|
|
4
|
+
import { PromptDialogType, FlexLayoutModule } from '@arsedizioni/ars-utils/ui';
|
|
5
|
+
import { DialogService } from '@arsedizioni/ars-utils/ui.dialogs';
|
|
6
|
+
import * as i0 from '@angular/core';
|
|
7
|
+
import { viewChild, output, inject, signal, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
8
|
+
import * as i1 from '@angular/forms';
|
|
9
|
+
import { FormsModule } from '@angular/forms';
|
|
10
|
+
import * as i6 from '@angular/material/button';
|
|
11
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
12
|
+
import * as i9 from '@angular/material/checkbox';
|
|
13
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
14
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
15
|
+
import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
|
|
16
|
+
import * as i3 from '@angular/material/form-field';
|
|
17
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
18
|
+
import * as i7 from '@angular/material/icon';
|
|
19
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
20
|
+
import * as i4 from '@angular/material/input';
|
|
21
|
+
import { MatInputModule } from '@angular/material/input';
|
|
22
|
+
import * as i8 from '@angular/material/select';
|
|
23
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
24
|
+
import { SystemUtils, SafeHtmlPipe, DateInterval, DateIntervalChangeDirective, TimeValidatorDirective } from '@arsedizioni/ars-utils/core';
|
|
25
|
+
import * as i5$1 from '@angular/material/datepicker';
|
|
26
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
27
|
+
|
|
28
|
+
class PromptDialogComponent {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.f = viewChild.required('f', /* @ts-ignore */
|
|
31
|
+
...(ngDevMode ? [{ debugName: "f" }] : /* istanbul ignore next */ []));
|
|
32
|
+
this.done = output();
|
|
33
|
+
this.dialogService = inject(DialogService);
|
|
34
|
+
this.dialogData = signal((() => {
|
|
35
|
+
const data = inject(MAT_DIALOG_DATA) ?? {};
|
|
36
|
+
return {
|
|
37
|
+
...data,
|
|
38
|
+
appearance: data.appearance ?? 'fill',
|
|
39
|
+
title: data.title ?? 'Inserisci dato',
|
|
40
|
+
type: data.type ?? PromptDialogType.Default,
|
|
41
|
+
okCaption: data.okCaption ?? 'Ok',
|
|
42
|
+
cancelCaption: data.cancelCaption ?? 'Annulla',
|
|
43
|
+
};
|
|
44
|
+
})(), /* @ts-ignore */
|
|
45
|
+
...(ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []));
|
|
46
|
+
this.value = this.dialogData().initialValue && this.dialogData().type !== PromptDialogType.List
|
|
47
|
+
? this.dialogData().initialValue
|
|
48
|
+
: undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Validates the form and emits the result, or shows an error if validation fails.
|
|
52
|
+
*/
|
|
53
|
+
ok() {
|
|
54
|
+
if (this.f().form.invalid) {
|
|
55
|
+
this.dialogService.error('Ci sono degli errori da correggere.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (this.dialogData().type === PromptDialogType.Date) {
|
|
59
|
+
const date = SystemUtils.parseDate(this.value);
|
|
60
|
+
if (!date || date.getFullYear() > 9999) {
|
|
61
|
+
this.dialogService.error('Data non valida.');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
this.done.emit({
|
|
66
|
+
value: this.value,
|
|
67
|
+
type: this.dialogData().type,
|
|
68
|
+
options: this.dialogData().options
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PromptDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: PromptDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, viewQueries: [{ propertyName: "f", first: true, predicate: ["f"], descendants: true, isSignal: true }], ngImport: i0, template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"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\" 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\"\r\n (click)=\"value = undefined\">\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\"\r\n [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\" 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\"\r\n (click)=\"value = undefined\">\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 matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\" [required]=\"dialogData().required\"\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\" maxlength=\"1000\"></textarea>\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"value = undefined\">\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 $index) {\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 style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number]:not([ngNoCva])[formControlName],input[type=number]:not([ngNoCva])[formControl],input[type=number]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i2.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i5.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
73
|
+
}
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PromptDialogComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexLayoutModule, MatFormFieldModule, MatInputModule,
|
|
77
|
+
MatButtonModule, MatIconModule, TextFieldModule, MatSelectModule, MatOptionModule, MatCheckboxModule, MatDialogActions,
|
|
78
|
+
MatDialogClose, SafeHtmlPipe], template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"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\" 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\"\r\n (click)=\"value = undefined\">\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\"\r\n [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\" 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\"\r\n (click)=\"value = undefined\">\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 matInput [(ngModel)]=\"value\" #_value=\"ngModel\" name=\"_value\" [required]=\"dialogData().required\"\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\" maxlength=\"1000\"></textarea>\r\n @if (value) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"value = undefined\">\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 $index) {\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 style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"] }]
|
|
79
|
+
}], propDecorators: { f: [{ type: i0.ViewChild, args: ['f', { isSignal: true }] }], done: [{ type: i0.Output, args: ["done"] }] } });
|
|
80
|
+
|
|
81
|
+
class PromptDateDialogComponent {
|
|
82
|
+
constructor() {
|
|
83
|
+
this.f = viewChild.required('f', /* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "f" }] : /* istanbul ignore next */ []));
|
|
85
|
+
this.done = output();
|
|
86
|
+
this.dialogService = inject(DialogService);
|
|
87
|
+
this.dialogData = signal((() => {
|
|
88
|
+
const data = inject(MAT_DIALOG_DATA) ?? {};
|
|
89
|
+
const type = (data.type === PromptDialogType.Date || data.type === PromptDialogType.DateInterval)
|
|
90
|
+
? data.type
|
|
91
|
+
: PromptDialogType.Date;
|
|
92
|
+
return {
|
|
93
|
+
...data,
|
|
94
|
+
appearance: data.appearance ?? 'fill',
|
|
95
|
+
title: data.title ?? 'Inserisci dato',
|
|
96
|
+
type,
|
|
97
|
+
okCaption: data.okCaption ?? 'Ok',
|
|
98
|
+
cancelCaption: data.cancelCaption ?? 'Annulla',
|
|
99
|
+
};
|
|
100
|
+
})(), /* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []));
|
|
102
|
+
this.value = (() => {
|
|
103
|
+
const d = this.dialogData();
|
|
104
|
+
if (d.type === PromptDialogType.DateInterval) {
|
|
105
|
+
return d.initialValue ? d.initialValue : new DateInterval();
|
|
106
|
+
}
|
|
107
|
+
return d.initialValue ? d.initialValue : undefined;
|
|
108
|
+
})();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Validates the form and emits the result, or shows an error if validation fails.
|
|
112
|
+
*/
|
|
113
|
+
ok() {
|
|
114
|
+
if (this.f().form.invalid) {
|
|
115
|
+
this.dialogService.error('Ci sono degli errori da correggere.');
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.done.emit({
|
|
119
|
+
value: this.dialogData().type === PromptDialogType.Date
|
|
120
|
+
? this.value
|
|
121
|
+
: this.value,
|
|
122
|
+
type: this.dialogData().type,
|
|
123
|
+
options: this.dialogData().options
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PromptDateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: PromptDateDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, viewQueries: [{ propertyName: "f", first: true, predicate: ["f"], descendants: true, isSignal: true }], ngImport: i0, template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"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\r\n </div>\r\n @if (dialogData().options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i2.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i5$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i5$1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i5$1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i5$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: DateIntervalChangeDirective, selector: "[dateIntervalChange]", inputs: ["dateIntervalChange", "end"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PromptDateDialogComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexLayoutModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, DateIntervalChangeDirective, MatButtonModule, MatIconModule,
|
|
132
|
+
MatCheckboxModule, MatDialogActions, MatDialogClose, SafeHtmlPipe], template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"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\r\n </div>\r\n @if (dialogData().options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"] }]
|
|
133
|
+
}], propDecorators: { f: [{ type: i0.ViewChild, args: ['f', { isSignal: true }] }], done: [{ type: i0.Output, args: ["done"] }] } });
|
|
134
|
+
|
|
135
|
+
class PromptTimeDialogComponent {
|
|
136
|
+
constructor() {
|
|
137
|
+
this.f = viewChild.required('f', /* @ts-ignore */
|
|
138
|
+
...(ngDevMode ? [{ debugName: "f" }] : /* istanbul ignore next */ []));
|
|
139
|
+
this.done = output();
|
|
140
|
+
this.dialogService = inject(DialogService);
|
|
141
|
+
this.dialogData = signal((() => {
|
|
142
|
+
const data = inject(MAT_DIALOG_DATA) ?? {};
|
|
143
|
+
return {
|
|
144
|
+
...data,
|
|
145
|
+
appearance: data.appearance ?? 'fill',
|
|
146
|
+
title: data.title ?? 'Inserisci dato',
|
|
147
|
+
type: PromptDialogType.Time,
|
|
148
|
+
okCaption: data.okCaption ?? 'Ok',
|
|
149
|
+
cancelCaption: data.cancelCaption ?? 'Annulla',
|
|
150
|
+
};
|
|
151
|
+
})(), /* @ts-ignore */
|
|
152
|
+
...(ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []));
|
|
153
|
+
this.value = this.dialogData().initialValue ?? undefined;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Validates the form and emits the result, or shows an error if validation fails.
|
|
157
|
+
*/
|
|
158
|
+
ok() {
|
|
159
|
+
if (this.f().form.invalid) {
|
|
160
|
+
this.dialogService.error('Ci sono degli errori da correggere.');
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.done.emit({ value: this.value, options: this.dialogData().options });
|
|
164
|
+
}
|
|
165
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PromptTimeDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
166
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: PromptTimeDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, viewQueries: [{ propertyName: "f", first: true, predicate: ["f"], descendants: true, isSignal: true }], ngImport: i0, template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"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\"\r\n [required]=\"dialogData().required\" 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 $index) {\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 style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i2.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.FxFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg] ", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i2.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: TimeValidatorDirective, selector: "[time]", inputs: ["slots"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
167
|
+
}
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PromptTimeDialogComponent, decorators: [{
|
|
169
|
+
type: Component,
|
|
170
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FormsModule, FlexLayoutModule,
|
|
171
|
+
MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, MatCheckboxModule,
|
|
172
|
+
MatDialogActions, MatDialogClose, TimeValidatorDirective, SafeHtmlPipe], template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"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\"\r\n [required]=\"dialogData().required\" 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 $index) {\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 style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" 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\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"] }]
|
|
173
|
+
}], propDecorators: { f: [{ type: i0.ViewChild, args: ['f', { isSignal: true }] }], done: [{ type: i0.Output, args: ["done"] }] } });
|
|
174
|
+
|
|
175
|
+
/*
|
|
176
|
+
* Public API Surface of @arsedizioni/ars-utils/ui.dialogs.prompt
|
|
177
|
+
*/
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Generated bundle index. Do not edit.
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
export { PromptDateDialogComponent, PromptDialogComponent, PromptTimeDialogComponent };
|
|
184
|
+
//# sourceMappingURL=arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map
|