@arsedizioni/ars-utils 22.6.85 → 22.6.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +3158 -3344
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +7616 -4772
  4. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  5. package/fesm2022/arsedizioni-ars-utils-core.date.mjs +321 -702
  6. package/fesm2022/arsedizioni-ars-utils-core.date.mjs.map +1 -1
  7. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +445 -590
  8. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs.map +1 -1
  9. package/fesm2022/arsedizioni-ars-utils-core.mjs +1735 -2370
  10. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs +1280 -1470
  12. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs.map +1 -1
  13. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +1097 -1528
  14. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  15. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +198 -294
  16. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  17. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs +115 -117
  18. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs.map +1 -1
  19. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +1607 -613
  20. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs +840 -367
  22. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs.map +1 -1
  23. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +1634 -651
  24. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs.map +1 -1
  25. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +1255 -792
  26. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs.map +1 -1
  27. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +1410 -357
  28. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map +1 -1
  29. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +2401 -944
  30. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs.map +1 -1
  31. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +1553 -741
  32. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs.map +1 -1
  33. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +901 -430
  34. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs.map +1 -1
  35. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +737 -530
  36. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs.map +1 -1
  37. package/fesm2022/arsedizioni-ars-utils-ui.mjs +6638 -1755
  38. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  39. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +1479 -1207
  40. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs.map +1 -1
  41. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +1003 -270
  42. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs.map +1 -1
  43. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +497 -278
  44. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  45. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs +48 -52
  46. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs.map +1 -1
  47. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs +464 -704
  48. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs.map +1 -1
  49. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +724 -657
  50. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs.map +1 -1
  51. package/fesm2022/arsedizioni-ars-utils.mjs +3 -19
  52. package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
  53. package/package.json +1 -1
  54. package/types/arsedizioni-ars-utils-clipper.common.d.ts +1151 -1163
  55. package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1588 -1426
  56. package/types/arsedizioni-ars-utils-core.d.ts +1169 -1172
  57. package/types/arsedizioni-ars-utils-core.date.d.ts +204 -208
  58. package/types/arsedizioni-ars-utils-core.markdown.d.ts +128 -126
  59. package/types/arsedizioni-ars-utils-core.validators.d.ts +270 -236
  60. package/types/arsedizioni-ars-utils-evolution.common.d.ts +1054 -1067
  61. package/types/arsedizioni-ars-utils-support.common.d.ts +225 -234
  62. package/types/arsedizioni-ars-utils-ui.controls.d.ts +440 -278
  63. package/types/arsedizioni-ars-utils-ui.controls.date.d.ts +24 -28
  64. package/types/arsedizioni-ars-utils-ui.controls.tree.d.ts +172 -136
  65. package/types/arsedizioni-ars-utils-ui.d.ts +2035 -821
  66. package/types/arsedizioni-ars-utils-ui.dialogs.auth.d.ts +327 -322
  67. package/types/arsedizioni-ars-utils-ui.dialogs.d.ts +343 -347
  68. package/types/arsedizioni-ars-utils-ui.dialogs.prompt.d.ts +167 -167
  69. package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts +373 -367
  70. package/types/arsedizioni-ars-utils-ui.files.d.ts +335 -283
  71. package/types/arsedizioni-ars-utils-ui.filters.d.ts +232 -160
  72. package/types/arsedizioni-ars-utils-ui.help.d.ts +204 -211
  73. package/types/arsedizioni-ars-utils-ui.navigation.d.ts +811 -646
  74. package/types/arsedizioni-ars-utils-ui.notifications.d.ts +74 -78
  75. package/types/arsedizioni-ars-utils-ui.oauth.d.ts +102 -62
  76. package/types/arsedizioni-ars-utils-ui.paginator.d.ts +19 -22
  77. package/types/arsedizioni-ars-utils-ui.shell.d.ts +376 -382
  78. package/types/arsedizioni-ars-utils-ui.tinymce.d.ts +244 -231
  79. package/types/arsedizioni-ars-utils.d.ts +1 -3
@@ -1,358 +1,1411 @@
1
- import * as i4 from '@angular/cdk/text-field';
2
- import { TextFieldModule } from '@angular/cdk/text-field';
3
- import * as i1 from '@arsedizioni/ars-utils/ui';
4
- import { PromptDialogType, FlexLayoutModule } from '@arsedizioni/ars-utils/ui';
5
- import { ShellService } from '@arsedizioni/ars-utils/ui.shell';
6
- import * as i0 from '@angular/core';
7
- import { output, inject, signal, ChangeDetectionStrategy, Component, DestroyRef } from '@angular/core';
8
- import { form, required, min, max, maxLength, FormField, FormRoot } from '@angular/forms/signals';
9
- import { SignalsUtils, notEmpty, time } from '@arsedizioni/ars-utils/core.validators';
10
- import * as i5 from '@angular/material/button';
11
- import { MatButtonModule } from '@angular/material/button';
12
- import * as i8 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 i2 from '@angular/material/form-field';
17
- import { MatFormFieldModule } from '@angular/material/form-field';
18
- import * as i6 from '@angular/material/icon';
19
- import { MatIconModule } from '@angular/material/icon';
20
- import * as i3 from '@angular/material/input';
21
- import { MatInputModule } from '@angular/material/input';
22
- import * as i7 from '@angular/material/select';
23
- import { MatSelectModule } from '@angular/material/select';
24
- import { DtoUtils, SystemUtils, SafeHtmlPipe, DateInterval } from '@arsedizioni/ars-utils/core';
25
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
26
- import * as i4$1 from '@angular/material/datepicker';
27
- import { MatDatepickerModule } from '@angular/material/datepicker';
28
- import { MatDatepickerParseErrorFixDirective } from '@arsedizioni/ars-utils/ui.controls.date';
29
- import { Subject } from 'rxjs';
30
- import { debounceTime } from 'rxjs/operators';
31
-
32
- /** Neutral form model: it declares every field the form owns and its empty value. */
33
- const _EMPTY_ITEM$2 = { value: '' };
34
- class PromptDialogComponent {
35
- constructor() {
36
- /** Error text of a field: the message declared in the schema, or the shared fallback. */
37
- this.getErrorMessage = SignalsUtils.getFieldErrorMessage;
38
- this.done = output();
39
- this.dialogService = inject(ShellService);
40
- this.dialogData = signal((() => {
41
- const data = inject(MAT_DIALOG_DATA) ?? {};
42
- return {
43
- ...data,
44
- appearance: data.appearance ?? 'fill',
45
- title: data.title ?? 'Inserisci dato',
46
- type: data.type ?? PromptDialogType.Default,
47
- okCaption: data.okCaption ?? 'Ok',
48
- cancelCaption: data.cancelCaption ?? 'Annulla',
49
- };
50
- })(), /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []));
52
- /** Model backing the signal form. `value` type depends on the prompt type. */
53
- this.model = signal(this.toForm(), /* @ts-ignore */
54
- ...(ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []));
55
- /**
56
- * Signal form for the prompt value. Validators mirror the previous template-driven
57
- * form: `required` follows the dialog data, `min`/`max` apply to the Number type.
58
- */
59
- this.form = form(this.model, p => {
60
- // The value path is typed as `any` because its shape depends on the prompt type.
61
- const value = p.value;
62
- required(value, { when: () => !!this.dialogData().required });
63
- notEmpty(value, { when: () => !!this.dialogData().required });
64
- min(value, () => this.dialogData().type === PromptDialogType.Number ? this.dialogData().minValue : undefined);
65
- max(value, () => this.dialogData().type === PromptDialogType.Number ? this.dialogData().maxValue : undefined);
66
- maxLength(value, () => {
67
- switch (this.dialogData().type) {
68
- case PromptDialogType.Default: return 200;
69
- case PromptDialogType.Text: return 1000;
70
- default: return undefined;
71
- }
72
- });
73
- });
74
- }
75
- /**
76
- * Builds the form model from the value carried by the dialog data.
77
- *
78
- * Ad-hoc because the empty value follows the prompt type: native inputs bound via
79
- * `[formField]` report an empty number or an unselected option as `null`, while a
80
- * text, date or textarea input reports `''`. The list type never takes an initial
81
- * value: its options are matched by the template.
82
- * @returns A fresh form model.
83
- */
84
- toForm() {
85
- const data = this.dialogData();
86
- const empty = data.type === PromptDialogType.Number || data.type === PromptDialogType.List
87
- ? { ..._EMPTY_ITEM$2, value: null }
88
- : _EMPTY_ITEM$2;
89
- return DtoUtils.toForm(empty, data.initialValue && data.type !== PromptDialogType.List ? { value: data.initialValue } : undefined);
90
- }
91
- /**
92
- * Builds the dialog result from the current form model.
93
- *
94
- * Ad-hoc because the result also carries the prompt type and the caller's `options`,
95
- * which are not part of the form model; the value itself goes through
96
- * {@link DtoUtils.toPayload}, so an input left empty travels as absent instead of as
97
- * an empty string or a `null`.
98
- * @returns The result to emit through `done`.
99
- */
100
- toPayload() {
101
- const data = this.dialogData();
102
- return { ...DtoUtils.toPayload(this.model()), type: data.type, options: data.options };
103
- }
104
- /**
105
- * Validates the form and emits the result, or shows an error if validation fails.
106
- */
107
- ok() {
108
- if (this.form().invalid()) {
109
- this.form().markAsTouched();
110
- this.dialogService.error('Ci sono degli errori da correggere.');
111
- return;
112
- }
113
- if (this.dialogData().type === PromptDialogType.Date) {
114
- const date = SystemUtils.parseDate(this.form.value().value());
115
- if (!date || date.getFullYear() > 9999) {
116
- this.dialogService.error('Data non valida.');
117
- return;
118
- }
119
- }
120
- this.done.emit(this.toPayload());
121
- }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PromptDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: PromptDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, ngImport: i0, template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors(), '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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value() !== null && form.value().value() !== undefined) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\"\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\"></textarea>\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-hint align=\"end\">{{$any(form.value().value())?.length || 0}}/1000 </mat-hint>\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\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 (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.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: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: FormRoot, selector: "form[formRoot]", inputs: ["formRoot"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.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: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.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: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.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 }); }
124
- }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PromptDialogComponent, decorators: [{
126
- type: Component,
127
- args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FormField, FormRoot, FlexLayoutModule, MatFormFieldModule, MatInputModule,
128
- MatButtonModule, MatIconModule, TextFieldModule, MatSelectModule, MatOptionModule, MatCheckboxModule, MatDialogActions,
129
- MatDialogClose, SafeHtmlPipe], template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors(), '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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value() !== null && form.value().value() !== undefined) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\"\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\"></textarea>\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-hint align=\"end\">{{$any(form.value().value())?.length || 0}}/1000 </mat-hint>\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\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 (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"] }]
130
- }], propDecorators: { done: [{ type: i0.Output, args: ["done"] }] } });
131
-
132
- /** Neutral form model: it declares every field the form owns and its empty value. */
133
- const _EMPTY_ITEM$1 = { date: null, from: null, to: null };
134
- class PromptDateDialogComponent {
135
- /**
136
- * Error text for a date range: whichever end is in error speaks for the pair.
137
- * @param from - Errors of the start field, from `f.from().errors()`.
138
- * @param to - Errors of the end field, from `f.to().errors()`.
139
- * @returns The text to show under the range, or `undefined` when neither end is in error.
140
- */
141
- rangeErrorMessage(from, to) {
142
- return SignalsUtils.getFieldErrorMessage(from.length ? from : to, 'Intervallo non valido.');
143
- }
144
- /**
145
- * Builds the form model from the value carried by the dialog data: a `Date` for the
146
- * single-date type, a {@link DateInterval} for the date-interval one.
147
- * @returns A fresh form model, empty when the dialog was opened without a value.
148
- */
149
- toForm() {
150
- const d = this.dialogData();
151
- if (d.type === PromptDialogType.DateInterval) {
152
- const interval = d.initialValue;
153
- return DtoUtils.toForm(_EMPTY_ITEM$1, { from: interval?.from, to: interval?.to });
154
- }
155
- return DtoUtils.toForm(_EMPTY_ITEM$1, { date: d.initialValue });
156
- }
157
- /**
158
- * Builds the dialog result from the current form model.
159
- *
160
- * Ad-hoc because the two prompt types produce different values out of the same model
161
- * — a `Date` or a {@link DateInterval} — and because the result also carries the type
162
- * and the caller's `options`, which are not part of the form model. The dates
163
- * themselves go through {@link DtoUtils.toPayload}, so a bound left empty travels as
164
- * absent instead of as `null`.
165
- * @returns The result to emit through `done`.
166
- */
167
- toPayload() {
168
- const d = this.dialogData();
169
- const dto = DtoUtils.toPayload(this.model());
170
- return {
171
- value: d.type === PromptDialogType.Date ? dto.date : new DateInterval(dto.from, dto.to),
172
- type: d.type,
173
- options: d.options
174
- };
175
- }
176
- constructor() {
177
- /** Error text of a field: the message declared in the schema, or the shared fallback. */
178
- this.getErrorMessage = SignalsUtils.getFieldErrorMessage;
179
- this.done = output();
180
- this.dialogService = inject(ShellService);
181
- this.dialogData = signal((() => {
182
- const data = inject(MAT_DIALOG_DATA) ?? {};
183
- const type = (data.type === PromptDialogType.Date || data.type === PromptDialogType.DateInterval)
184
- ? data.type
185
- : PromptDialogType.Date;
186
- return {
187
- ...data,
188
- appearance: data.appearance ?? 'fill',
189
- title: data.title ?? 'Inserisci dato',
190
- type,
191
- okCaption: data.okCaption ?? 'Ok',
192
- cancelCaption: data.cancelCaption ?? 'Annulla',
193
- };
194
- })(), /* @ts-ignore */
195
- ...(ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []));
196
- /**
197
- * Model backing the signal form: `date` serves the single-date type, while
198
- * `from`/`to` serve the date-interval type. Empty values are `null` (not
199
- * `undefined`) because signal forms only build child fields for keys whose
200
- * value is defined, and Material's datepicker accessors report an empty
201
- * input as `null` anyway; values are normalized to `undefined` on emit.
202
- */
203
- this.model = signal(this.toForm(), /* @ts-ignore */
204
- ...(ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []));
205
- /**
206
- * Signal form for the date value(s). `required` follows the dialog data and only
207
- * applies to the fields of the active prompt type; the datepicker's own parse
208
- * validators are picked up through the ControlValueAccessor interop.
209
- */
210
- this.form = form(this.model, p => {
211
- required(p.date, { when: () => !!this.dialogData().required && this.dialogData().type === PromptDialogType.Date });
212
- required(p.from, { when: () => !!this.dialogData().required && this.dialogData().type === PromptDialogType.DateInterval });
213
- required(p.to, { when: () => !!this.dialogData().required && this.dialogData().type === PromptDialogType.DateInterval });
214
- });
215
- /** Debounced stream of keyup events on the interval inputs (shorthand typing support). */
216
- this.intervalKeyup = new Subject();
217
- // Same behavior as DateIntervalChangeDirective, rewired to the signal form:
218
- // shorthand strings (e.g. "d/m") typed in either input are debounced, parsed
219
- // with SystemUtils.changeDateInterval and written back into the form fields.
220
- this.intervalKeyup
221
- .pipe(debounceTime(100), takeUntilDestroyed(inject(DestroyRef)))
222
- .subscribe(({ event, end }) => {
223
- const value = event.target?.value;
224
- if (value !== undefined) {
225
- const m = this.model();
226
- const interval = new DateInterval(m.from ?? undefined, m.to ?? undefined);
227
- SystemUtils.changeDateInterval(value, interval, end, event.key === ' ');
228
- this.model.update(cur => ({ ...cur, from: interval.from ?? null, to: interval.to ?? null }));
229
- }
230
- });
231
- }
232
- /**
233
- * Blocks the space key on the interval inputs; it is reserved as the
234
- * "copy the other bound" shortcut handled by onIntervalKeyup.
235
- * @param event - The keydown event from the start or end date input.
236
- */
237
- onIntervalKeydown(event) {
238
- if (event.key === ' ') {
239
- event.preventDefault();
240
- event.stopPropagation();
241
- }
242
- }
243
- /**
244
- * Forwards keyup events of the interval inputs to the debounced shorthand parser.
245
- * @param event - The keyup event from the start or end date input.
246
- * @param end - `true` when the event comes from the end-date input.
247
- */
248
- onIntervalKeyup(event, end) {
249
- this.intervalKeyup.next({ event, end });
250
- }
251
- /**
252
- * Clears both bounds of the date interval.
253
- */
254
- clearInterval() {
255
- this.model.update(cur => ({ ...cur, from: null, to: null }));
256
- }
257
- /**
258
- * Validates the form and emits the result, or shows an error if validation fails.
259
- */
260
- ok() {
261
- if (this.form().invalid()) {
262
- this.form().markAsTouched();
263
- this.dialogService.error('Ci sono degli errori da correggere.');
264
- return;
265
- }
266
- this.done.emit(this.toPayload());
267
- }
268
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PromptDateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
269
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: PromptDateDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, ngImport: i0, template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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\" [formField]=\"form.date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n @if (form.date().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.date().errors(), '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 [formField]=\"form.from\" placeholder=\"Da data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, false)\">\r\n <input matEndDate [formField]=\"form.to\" placeholder=\"A data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, true)\">\r\n </mat-date-range-input>\r\n @if (form.from().value() || form.to().value()) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"clearInterval()\">\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 (form.from().invalid() || form.to().invalid()) {\r\n <mat-error>{{ rangeErrorMessage(form.from().errors(), form.to().errors()) }}</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]=\"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>\r\n", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.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: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: FormRoot, selector: "form[formRoot]", inputs: ["formRoot"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: i4$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i4$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i4$1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i4$1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i4$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: MatDatepickerParseErrorFixDirective, selector: "input[matDatepicker], input[matStartDate], input[matEndDate]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.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: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.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 }); }
270
- }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PromptDateDialogComponent, decorators: [{
272
- type: Component,
273
- args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FormField, FormRoot, FlexLayoutModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, MatDatepickerParseErrorFixDirective, MatButtonModule, MatIconModule,
274
- 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 [formRoot]=\"form\" 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\" [formField]=\"form.date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n @if (form.date().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.date().errors(), '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 [formField]=\"form.from\" placeholder=\"Da data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, false)\">\r\n <input matEndDate [formField]=\"form.to\" placeholder=\"A data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, true)\">\r\n </mat-date-range-input>\r\n @if (form.from().value() || form.to().value()) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"clearInterval()\">\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 (form.from().invalid() || form.to().invalid()) {\r\n <mat-error>{{ rangeErrorMessage(form.from().errors(), form.to().errors()) }}</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]=\"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>\r\n", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"] }]
275
- }], ctorParameters: () => [], propDecorators: { done: [{ type: i0.Output, args: ["done"] }] } });
276
-
277
- /** Neutral form model: it declares every field the form owns and its empty value. */
278
- const _EMPTY_ITEM = { value: '' };
279
- class PromptTimeDialogComponent {
280
- constructor() {
281
- /** Error text of a field: the message declared in the schema, or the shared fallback. */
282
- this.getErrorMessage = SignalsUtils.getFieldErrorMessage;
283
- this.done = output();
284
- this.dialogService = inject(ShellService);
285
- this.dialogData = signal((() => {
286
- const data = inject(MAT_DIALOG_DATA) ?? {};
287
- return {
288
- ...data,
289
- appearance: data.appearance ?? 'fill',
290
- title: data.title ?? 'Inserisci dato',
291
- type: PromptDialogType.Time,
292
- okCaption: data.okCaption ?? 'Ok',
293
- cancelCaption: data.cancelCaption ?? 'Annulla',
294
- };
295
- })(), /* @ts-ignore */
296
- ...(ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []));
297
- /** Model backing the signal form. The value is a `"HH:MM"` time string. */
298
- this.model = signal(this.toForm(), /* @ts-ignore */
299
- ...(ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []));
300
- /**
301
- * Signal form for the time value: `required` follows the dialog data and the
302
- * time validator enforces format and the optional allowed slots.
303
- */
304
- this.form = form(this.model, p => {
305
- required(p.value, { when: () => !!this.dialogData().required });
306
- notEmpty(p.value, { when: () => !!this.dialogData().required });
307
- time(p.value, () => this.dialogData().slots);
308
- });
309
- }
310
- /**
311
- * Builds the form model from the value carried by the dialog data.
312
- * @returns A fresh form model, empty when the dialog was opened without a value.
313
- */
314
- toForm() {
315
- return DtoUtils.toForm(_EMPTY_ITEM, { value: this.dialogData().initialValue });
316
- }
317
- /**
318
- * Builds the dialog result from the current form model.
319
- *
320
- * Ad-hoc because the result also carries the caller's `options`, which are not part
321
- * of the form model; the time itself goes through {@link DtoUtils.toPayload}, so an
322
- * empty input travels as absent instead of as an empty string.
323
- * @returns The result to emit through `done`.
324
- */
325
- toPayload() {
326
- return { ...DtoUtils.toPayload(this.model()), options: this.dialogData().options };
327
- }
328
- /**
329
- * Validates the form and emits the result, or shows an error if validation fails.
330
- */
331
- ok() {
332
- if (this.form().invalid()) {
333
- this.form().markAsTouched();
334
- this.dialogService.error('Ci sono degli errori da correggere.');
335
- return;
336
- }
337
- this.done.emit(this.toPayload());
338
- }
339
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PromptTimeDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
340
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: PromptTimeDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, ngImport: i0, template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"form.value\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.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: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: FormRoot, selector: "form[formRoot]", inputs: ["formRoot"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.FxFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg] ", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: i5.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: i8.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 }); }
341
- }
342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PromptTimeDialogComponent, decorators: [{
343
- type: Component,
344
- args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FormField, FormRoot, FlexLayoutModule,
345
- MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, MatCheckboxModule,
346
- MatDialogActions, MatDialogClose, SafeHtmlPipe], template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"form.value\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-content{padding:0 24px 24px!important}\n"] }]
347
- }], propDecorators: { done: [{ type: i0.Output, args: ["done"] }] } });
348
-
349
- /*
350
- * Public API Surface of @arsedizioni/ars-utils/ui.dialogs.prompt
351
- */
352
-
353
- /**
354
- * Generated bundle index. Do not edit.
355
- */
356
-
1
+ import * as i4$1 from "@angular/cdk/text-field";
2
+ import { TextFieldModule } from "@angular/cdk/text-field";
3
+ import * as i1 from "@arsedizioni/ars-utils/ui";
4
+ import { FlexLayoutModule, PromptDialogType } from "@arsedizioni/ars-utils/ui";
5
+ import { ShellService } from "@arsedizioni/ars-utils/ui.shell";
6
+ import * as i0 from "@angular/core";
7
+ import { ChangeDetectionStrategy, Component, DestroyRef, inject, output, signal } from "@angular/core";
8
+ import { FormField, FormRoot, form, max, maxLength, min, required } from "@angular/forms/signals";
9
+ import { SignalsUtils, notEmpty, time } from "@arsedizioni/ars-utils/core.validators";
10
+ import * as i5 from "@angular/material/button";
11
+ import { MatButtonModule } from "@angular/material/button";
12
+ import * as i8 from "@angular/material/checkbox";
13
+ import { MatCheckboxModule } from "@angular/material/checkbox";
14
+ import { MatOptionModule } from "@angular/material/core";
15
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from "@angular/material/dialog";
16
+ import * as i2 from "@angular/material/form-field";
17
+ import { MatFormFieldModule } from "@angular/material/form-field";
18
+ import * as i6 from "@angular/material/icon";
19
+ import { MatIconModule } from "@angular/material/icon";
20
+ import * as i3 from "@angular/material/input";
21
+ import { MatInputModule } from "@angular/material/input";
22
+ import * as i7 from "@angular/material/select";
23
+ import { MatSelectModule } from "@angular/material/select";
24
+ import { DateInterval, DtoUtils, SafeHtmlPipe, SystemUtils } from "@arsedizioni/ars-utils/core";
25
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
26
+ import * as i4 from "@angular/material/datepicker";
27
+ import { MatDatepickerModule } from "@angular/material/datepicker";
28
+ import { MatDatepickerParseErrorFixDirective } from "@arsedizioni/ars-utils/ui.controls.date";
29
+ import { Subject } from "rxjs";
30
+ import { debounceTime } from "rxjs/operators";
31
+ const _EMPTY_ITEM$2 = { value: "" };
32
+ var PromptDialogComponent = class PromptDialogComponent {
33
+ constructor() {
34
+ this.getErrorMessage = SignalsUtils.getFieldErrorMessage;
35
+ this.done = output();
36
+ this.dialogService = inject(ShellService);
37
+ this.dialogData = signal((() => {
38
+ const data = inject(MAT_DIALOG_DATA) ?? {};
39
+ return {
40
+ ...data,
41
+ appearance: data.appearance ?? "fill",
42
+ title: data.title ?? "Inserisci dato",
43
+ type: data.type ?? PromptDialogType.Default,
44
+ okCaption: data.okCaption ?? "Ok",
45
+ cancelCaption: data.cancelCaption ?? "Annulla"
46
+ };
47
+ })(), ...ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []);
48
+ this.model = signal(this.toForm(), ...ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []);
49
+ this.form = form(this.model, (p) => {
50
+ const value = p.value;
51
+ required(value, { when: () => !!this.dialogData().required });
52
+ notEmpty(value, { when: () => !!this.dialogData().required });
53
+ min(value, () => this.dialogData().type === PromptDialogType.Number ? this.dialogData().minValue : void 0);
54
+ max(value, () => this.dialogData().type === PromptDialogType.Number ? this.dialogData().maxValue : void 0);
55
+ maxLength(value, () => {
56
+ switch (this.dialogData().type) {
57
+ case PromptDialogType.Default: return 200;
58
+ case PromptDialogType.Text: return 1e3;
59
+ default: return;
60
+ }
61
+ });
62
+ });
63
+ }
64
+ toForm() {
65
+ const data = this.dialogData();
66
+ const empty = data.type === PromptDialogType.Number || data.type === PromptDialogType.List ? {
67
+ ..._EMPTY_ITEM$2,
68
+ value: null
69
+ } : _EMPTY_ITEM$2;
70
+ return DtoUtils.toForm(empty, data.initialValue && data.type !== PromptDialogType.List ? { value: data.initialValue } : void 0);
71
+ }
72
+ toPayload() {
73
+ const data = this.dialogData();
74
+ return {
75
+ ...DtoUtils.toPayload(this.model()),
76
+ type: data.type,
77
+ options: data.options
78
+ };
79
+ }
80
+ ok() {
81
+ if (this.form().invalid()) {
82
+ this.form().markAsTouched();
83
+ this.dialogService.error("Ci sono degli errori da correggere.");
84
+ return;
85
+ }
86
+ if (this.dialogData().type === PromptDialogType.Date) {
87
+ const date = SystemUtils.parseDate(this.form.value().value());
88
+ if (!date || date.getFullYear() > 9999) {
89
+ this.dialogService.error("Data non valida.");
90
+ return;
91
+ }
92
+ }
93
+ this.done.emit(this.toPayload());
94
+ }
95
+ static {
96
+ this.ɵfac = i0.ɵɵngDeclareFactory({
97
+ minVersion: "12.0.0",
98
+ version: "22.2.1",
99
+ ngImport: i0,
100
+ type: PromptDialogComponent,
101
+ deps: [],
102
+ target: i0.ɵɵFactoryTarget.Component
103
+ });
104
+ }
105
+ static {
106
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
107
+ minVersion: "17.0.0",
108
+ version: "22.2.1",
109
+ type: PromptDialogComponent,
110
+ isStandalone: true,
111
+ selector: "ng-component",
112
+ outputs: { done: "done" },
113
+ ngImport: i0,
114
+ template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors(), '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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value() !== null && form.value().value() !== undefined) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\"\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\"></textarea>\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-hint align=\"end\">{{$any(form.value().value())?.length || 0}}/1000 </mat-hint>\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\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 (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n",
115
+ 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"],
116
+ dependencies: [
117
+ {
118
+ kind: "directive",
119
+ type: MatDialogTitle,
120
+ selector: "[mat-dialog-title], [matDialogTitle]",
121
+ inputs: ["id"],
122
+ exportAs: ["matDialogTitle"]
123
+ },
124
+ {
125
+ kind: "directive",
126
+ type: MatDialogContent,
127
+ selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]"
128
+ },
129
+ {
130
+ kind: "directive",
131
+ type: FormField,
132
+ selector: "[formField]",
133
+ inputs: ["formField"],
134
+ exportAs: ["formField"]
135
+ },
136
+ {
137
+ kind: "directive",
138
+ type: FormRoot,
139
+ selector: "form[formRoot]",
140
+ inputs: ["formRoot"]
141
+ },
142
+ {
143
+ kind: "ngmodule",
144
+ type: FlexLayoutModule
145
+ },
146
+ {
147
+ kind: "directive",
148
+ type: i1.FxLayoutDirective,
149
+ 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] ",
150
+ inputs: [
151
+ "fxLayout",
152
+ "fxLayout.xs",
153
+ "fxLayout.sm",
154
+ "fxLayout.md",
155
+ "fxLayout.lg",
156
+ "fxLayout.xl",
157
+ "fxLayout.lt-sm",
158
+ "fxLayout.lt-md",
159
+ "fxLayout.lt-lg",
160
+ "fxLayout.lt-xl",
161
+ "fxLayout.gt-xs",
162
+ "fxLayout.gt-sm",
163
+ "fxLayout.gt-md",
164
+ "fxLayout.gt-lg"
165
+ ]
166
+ },
167
+ {
168
+ kind: "directive",
169
+ type: i1.FxFlexDirective,
170
+ 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] ",
171
+ inputs: [
172
+ "fxFlex",
173
+ "fxFlex.xs",
174
+ "fxFlex.sm",
175
+ "fxFlex.md",
176
+ "fxFlex.lg",
177
+ "fxFlex.xl",
178
+ "fxFlex.lt-sm",
179
+ "fxFlex.lt-md",
180
+ "fxFlex.lt-lg",
181
+ "fxFlex.lt-xl",
182
+ "fxFlex.gt-xs",
183
+ "fxFlex.gt-sm",
184
+ "fxFlex.gt-md",
185
+ "fxFlex.gt-lg"
186
+ ]
187
+ },
188
+ {
189
+ kind: "directive",
190
+ type: i1.FxLayoutAlignDirective,
191
+ 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] ",
192
+ inputs: [
193
+ "fxLayoutAlign",
194
+ "fxLayoutAlign.xs",
195
+ "fxLayoutAlign.sm",
196
+ "fxLayoutAlign.md",
197
+ "fxLayoutAlign.lg",
198
+ "fxLayoutAlign.xl",
199
+ "fxLayoutAlign.lt-sm",
200
+ "fxLayoutAlign.lt-md",
201
+ "fxLayoutAlign.lt-lg",
202
+ "fxLayoutAlign.lt-xl",
203
+ "fxLayoutAlign.gt-xs",
204
+ "fxLayoutAlign.gt-sm",
205
+ "fxLayoutAlign.gt-md",
206
+ "fxLayoutAlign.gt-lg"
207
+ ]
208
+ },
209
+ {
210
+ kind: "directive",
211
+ type: i1.FxLayoutGapDirective,
212
+ 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] ",
213
+ inputs: [
214
+ "fxLayoutGap",
215
+ "fxLayoutGap.xs",
216
+ "fxLayoutGap.sm",
217
+ "fxLayoutGap.md",
218
+ "fxLayoutGap.lg",
219
+ "fxLayoutGap.xl",
220
+ "fxLayoutGap.lt-sm",
221
+ "fxLayoutGap.lt-md",
222
+ "fxLayoutGap.lt-lg",
223
+ "fxLayoutGap.lt-xl",
224
+ "fxLayoutGap.gt-xs",
225
+ "fxLayoutGap.gt-sm",
226
+ "fxLayoutGap.gt-md",
227
+ "fxLayoutGap.gt-lg"
228
+ ]
229
+ },
230
+ {
231
+ kind: "directive",
232
+ type: i1.FxFlexFillDirective,
233
+ 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] ",
234
+ inputs: [
235
+ "fxFlexFill",
236
+ "fxFill",
237
+ "fxFlexFill.xs",
238
+ "fxFlexFill.sm",
239
+ "fxFlexFill.md",
240
+ "fxFlexFill.lg",
241
+ "fxFlexFill.xl",
242
+ "fxFlexFill.lt-sm",
243
+ "fxFlexFill.lt-md",
244
+ "fxFlexFill.lt-lg",
245
+ "fxFlexFill.lt-xl",
246
+ "fxFlexFill.gt-xs",
247
+ "fxFlexFill.gt-sm",
248
+ "fxFlexFill.gt-md",
249
+ "fxFlexFill.gt-lg"
250
+ ]
251
+ },
252
+ {
253
+ kind: "ngmodule",
254
+ type: MatFormFieldModule
255
+ },
256
+ {
257
+ kind: "component",
258
+ type: i2.MatFormField,
259
+ selector: "mat-form-field",
260
+ inputs: [
261
+ "hideRequiredMarker",
262
+ "color",
263
+ "floatLabel",
264
+ "appearance",
265
+ "subscriptSizing",
266
+ "hintLabel"
267
+ ],
268
+ exportAs: ["matFormField"]
269
+ },
270
+ {
271
+ kind: "directive",
272
+ type: i2.MatLabel,
273
+ selector: "mat-label"
274
+ },
275
+ {
276
+ kind: "directive",
277
+ type: i2.MatHint,
278
+ selector: "mat-hint",
279
+ inputs: ["align", "id"]
280
+ },
281
+ {
282
+ kind: "directive",
283
+ type: i2.MatError,
284
+ selector: "mat-error, [matError]",
285
+ inputs: ["id"]
286
+ },
287
+ {
288
+ kind: "directive",
289
+ type: i2.MatSuffix,
290
+ selector: "[matSuffix], [matIconSuffix], [matTextSuffix]",
291
+ inputs: ["matTextSuffix"]
292
+ },
293
+ {
294
+ kind: "ngmodule",
295
+ type: MatInputModule
296
+ },
297
+ {
298
+ kind: "directive",
299
+ type: i3.MatInput,
300
+ selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]",
301
+ inputs: [
302
+ "disabled",
303
+ "id",
304
+ "placeholder",
305
+ "name",
306
+ "required",
307
+ "type",
308
+ "errorStateMatcher",
309
+ "aria-describedby",
310
+ "value",
311
+ "readonly",
312
+ "disabledInteractive"
313
+ ],
314
+ exportAs: ["matInput"]
315
+ },
316
+ {
317
+ kind: "directive",
318
+ type: i4$1.CdkTextareaAutosize,
319
+ selector: "textarea[cdkTextareaAutosize]",
320
+ inputs: [
321
+ "cdkAutosizeMinRows",
322
+ "cdkAutosizeMaxRows",
323
+ "cdkTextareaAutosize",
324
+ "placeholder"
325
+ ],
326
+ exportAs: ["cdkTextareaAutosize"]
327
+ },
328
+ {
329
+ kind: "ngmodule",
330
+ type: MatButtonModule
331
+ },
332
+ {
333
+ kind: "component",
334
+ type: i5.MatButton,
335
+ 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] ",
336
+ inputs: ["matButton"],
337
+ exportAs: ["matButton", "matAnchor"]
338
+ },
339
+ {
340
+ kind: "component",
341
+ type: i5.MatIconButton,
342
+ selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]",
343
+ exportAs: ["matButton", "matAnchor"]
344
+ },
345
+ {
346
+ kind: "ngmodule",
347
+ type: MatIconModule
348
+ },
349
+ {
350
+ kind: "component",
351
+ type: i6.MatIcon,
352
+ selector: "mat-icon",
353
+ inputs: [
354
+ "color",
355
+ "inline",
356
+ "svgIcon",
357
+ "fontSet",
358
+ "fontIcon"
359
+ ],
360
+ exportAs: ["matIcon"]
361
+ },
362
+ {
363
+ kind: "ngmodule",
364
+ type: TextFieldModule
365
+ },
366
+ {
367
+ kind: "ngmodule",
368
+ type: MatSelectModule
369
+ },
370
+ {
371
+ kind: "component",
372
+ type: i7.MatSelect,
373
+ selector: "mat-select",
374
+ inputs: [
375
+ "aria-describedby",
376
+ "panelClass",
377
+ "disabled",
378
+ "disableRipple",
379
+ "tabIndex",
380
+ "hideSingleSelectionIndicator",
381
+ "placeholder",
382
+ "required",
383
+ "multiple",
384
+ "disableOptionCentering",
385
+ "compareWith",
386
+ "value",
387
+ "aria-label",
388
+ "aria-labelledby",
389
+ "errorStateMatcher",
390
+ "typeaheadDebounceInterval",
391
+ "sortComparator",
392
+ "id",
393
+ "panelWidth",
394
+ "canSelectNullableOptions"
395
+ ],
396
+ outputs: [
397
+ "openedChange",
398
+ "opened",
399
+ "closed",
400
+ "selectionChange",
401
+ "valueChange"
402
+ ],
403
+ exportAs: ["matSelect"]
404
+ },
405
+ {
406
+ kind: "component",
407
+ type: i7.MatOption,
408
+ selector: "mat-option",
409
+ inputs: [
410
+ "value",
411
+ "id",
412
+ "disabled"
413
+ ],
414
+ outputs: ["onSelectionChange"],
415
+ exportAs: ["matOption"]
416
+ },
417
+ {
418
+ kind: "ngmodule",
419
+ type: MatOptionModule
420
+ },
421
+ {
422
+ kind: "ngmodule",
423
+ type: MatCheckboxModule
424
+ },
425
+ {
426
+ kind: "component",
427
+ type: i8.MatCheckbox,
428
+ selector: "mat-checkbox",
429
+ inputs: [
430
+ "aria-label",
431
+ "aria-labelledby",
432
+ "aria-describedby",
433
+ "aria-expanded",
434
+ "aria-controls",
435
+ "aria-owns",
436
+ "id",
437
+ "required",
438
+ "labelPosition",
439
+ "name",
440
+ "value",
441
+ "disableRipple",
442
+ "tabIndex",
443
+ "color",
444
+ "disabledInteractive",
445
+ "checked",
446
+ "disabled",
447
+ "indeterminate"
448
+ ],
449
+ outputs: ["change", "indeterminateChange"],
450
+ exportAs: ["matCheckbox"]
451
+ },
452
+ {
453
+ kind: "directive",
454
+ type: MatDialogActions,
455
+ selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",
456
+ inputs: ["align"]
457
+ },
458
+ {
459
+ kind: "directive",
460
+ type: MatDialogClose,
461
+ selector: "[mat-dialog-close], [matDialogClose]",
462
+ inputs: [
463
+ "aria-label",
464
+ "type",
465
+ "mat-dialog-close",
466
+ "matDialogClose"
467
+ ],
468
+ exportAs: ["matDialogClose"]
469
+ },
470
+ {
471
+ kind: "pipe",
472
+ type: SafeHtmlPipe,
473
+ name: "safeHtml"
474
+ }
475
+ ],
476
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
477
+ });
478
+ }
479
+ };
480
+ i0.ɵɵngDeclareClassMetadata({
481
+ minVersion: "12.0.0",
482
+ version: "22.2.1",
483
+ ngImport: i0,
484
+ type: PromptDialogComponent,
485
+ decorators: [{
486
+ type: Component,
487
+ args: [{
488
+ standalone: true,
489
+ changeDetection: ChangeDetectionStrategy.OnPush,
490
+ imports: [
491
+ MatDialogTitle,
492
+ MatDialogContent,
493
+ FormField,
494
+ FormRoot,
495
+ FlexLayoutModule,
496
+ MatFormFieldModule,
497
+ MatInputModule,
498
+ MatButtonModule,
499
+ MatIconModule,
500
+ TextFieldModule,
501
+ MatSelectModule,
502
+ MatOptionModule,
503
+ MatCheckboxModule,
504
+ MatDialogActions,
505
+ MatDialogClose,
506
+ SafeHtmlPipe
507
+ ],
508
+ template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors(), '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 [formField]=\"$any(form.value)\">\r\n @if (form.value().value() !== null && form.value().value() !== undefined) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\"\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"1\" cdkAutosizeMaxRows=\"10\"></textarea>\r\n @if (form.value().value()) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"form.value().value.set('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-hint align=\"end\">{{$any(form.value().value())?.length || 0}}/1000 </mat-hint>\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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 [formField]=\"$any(form.value)\">\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 (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n",
509
+ 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"]
510
+ }]
511
+ }],
512
+ propDecorators: { done: [{
513
+ type: i0.Output,
514
+ args: ["done"]
515
+ }] }
516
+ });
517
+ const _EMPTY_ITEM$1 = {
518
+ date: null,
519
+ from: null,
520
+ to: null
521
+ };
522
+ var PromptDateDialogComponent = class PromptDateDialogComponent {
523
+ rangeErrorMessage(from, to) {
524
+ return SignalsUtils.getFieldErrorMessage(from.length ? from : to, "Intervallo non valido.");
525
+ }
526
+ toForm() {
527
+ const d = this.dialogData();
528
+ if (d.type === PromptDialogType.DateInterval) {
529
+ const interval = d.initialValue;
530
+ return DtoUtils.toForm(_EMPTY_ITEM$1, {
531
+ from: interval?.from,
532
+ to: interval?.to
533
+ });
534
+ }
535
+ return DtoUtils.toForm(_EMPTY_ITEM$1, { date: d.initialValue });
536
+ }
537
+ toPayload() {
538
+ const d = this.dialogData();
539
+ const dto = DtoUtils.toPayload(this.model());
540
+ return {
541
+ value: d.type === PromptDialogType.Date ? dto.date : new DateInterval(dto.from, dto.to),
542
+ type: d.type,
543
+ options: d.options
544
+ };
545
+ }
546
+ constructor() {
547
+ this.getErrorMessage = SignalsUtils.getFieldErrorMessage;
548
+ this.done = output();
549
+ this.dialogService = inject(ShellService);
550
+ this.dialogData = signal((() => {
551
+ const data = inject(MAT_DIALOG_DATA) ?? {};
552
+ const type = data.type === PromptDialogType.Date || data.type === PromptDialogType.DateInterval ? data.type : PromptDialogType.Date;
553
+ return {
554
+ ...data,
555
+ appearance: data.appearance ?? "fill",
556
+ title: data.title ?? "Inserisci dato",
557
+ type,
558
+ okCaption: data.okCaption ?? "Ok",
559
+ cancelCaption: data.cancelCaption ?? "Annulla"
560
+ };
561
+ })(), ...ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []);
562
+ this.model = signal(this.toForm(), ...ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []);
563
+ this.form = form(this.model, (p) => {
564
+ required(p.date, { when: () => !!this.dialogData().required && this.dialogData().type === PromptDialogType.Date });
565
+ required(p.from, { when: () => !!this.dialogData().required && this.dialogData().type === PromptDialogType.DateInterval });
566
+ required(p.to, { when: () => !!this.dialogData().required && this.dialogData().type === PromptDialogType.DateInterval });
567
+ });
568
+ this.intervalKeyup = new Subject();
569
+ this.intervalKeyup.pipe(debounceTime(100), takeUntilDestroyed(inject(DestroyRef))).subscribe(({ event, end }) => {
570
+ const value = event.target?.value;
571
+ if (value !== void 0) {
572
+ const m = this.model();
573
+ const interval = new DateInterval(m.from ?? void 0, m.to ?? void 0);
574
+ SystemUtils.changeDateInterval(value, interval, end, event.key === " ");
575
+ this.model.update((cur) => ({
576
+ ...cur,
577
+ from: interval.from ?? null,
578
+ to: interval.to ?? null
579
+ }));
580
+ }
581
+ });
582
+ }
583
+ onIntervalKeydown(event) {
584
+ if (event.key === " ") {
585
+ event.preventDefault();
586
+ event.stopPropagation();
587
+ }
588
+ }
589
+ onIntervalKeyup(event, end) {
590
+ this.intervalKeyup.next({
591
+ event,
592
+ end
593
+ });
594
+ }
595
+ clearInterval() {
596
+ this.model.update((cur) => ({
597
+ ...cur,
598
+ from: null,
599
+ to: null
600
+ }));
601
+ }
602
+ ok() {
603
+ if (this.form().invalid()) {
604
+ this.form().markAsTouched();
605
+ this.dialogService.error("Ci sono degli errori da correggere.");
606
+ return;
607
+ }
608
+ this.done.emit(this.toPayload());
609
+ }
610
+ static {
611
+ this.ɵfac = i0.ɵɵngDeclareFactory({
612
+ minVersion: "12.0.0",
613
+ version: "22.2.1",
614
+ ngImport: i0,
615
+ type: PromptDateDialogComponent,
616
+ deps: [],
617
+ target: i0.ɵɵFactoryTarget.Component
618
+ });
619
+ }
620
+ static {
621
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
622
+ minVersion: "17.0.0",
623
+ version: "22.2.1",
624
+ type: PromptDateDialogComponent,
625
+ isStandalone: true,
626
+ selector: "ng-component",
627
+ outputs: { done: "done" },
628
+ ngImport: i0,
629
+ template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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\" [formField]=\"form.date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n @if (form.date().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.date().errors(), '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 [formField]=\"form.from\" placeholder=\"Da data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, false)\">\r\n <input matEndDate [formField]=\"form.to\" placeholder=\"A data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, true)\">\r\n </mat-date-range-input>\r\n @if (form.from().value() || form.to().value()) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"clearInterval()\">\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 (form.from().invalid() || form.to().invalid()) {\r\n <mat-error>{{ rangeErrorMessage(form.from().errors(), form.to().errors()) }}</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]=\"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>\r\n",
630
+ 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"],
631
+ dependencies: [
632
+ {
633
+ kind: "directive",
634
+ type: MatDialogTitle,
635
+ selector: "[mat-dialog-title], [matDialogTitle]",
636
+ inputs: ["id"],
637
+ exportAs: ["matDialogTitle"]
638
+ },
639
+ {
640
+ kind: "directive",
641
+ type: MatDialogContent,
642
+ selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]"
643
+ },
644
+ {
645
+ kind: "directive",
646
+ type: FormField,
647
+ selector: "[formField]",
648
+ inputs: ["formField"],
649
+ exportAs: ["formField"]
650
+ },
651
+ {
652
+ kind: "directive",
653
+ type: FormRoot,
654
+ selector: "form[formRoot]",
655
+ inputs: ["formRoot"]
656
+ },
657
+ {
658
+ kind: "ngmodule",
659
+ type: FlexLayoutModule
660
+ },
661
+ {
662
+ kind: "directive",
663
+ type: i1.FxLayoutDirective,
664
+ 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] ",
665
+ inputs: [
666
+ "fxLayout",
667
+ "fxLayout.xs",
668
+ "fxLayout.sm",
669
+ "fxLayout.md",
670
+ "fxLayout.lg",
671
+ "fxLayout.xl",
672
+ "fxLayout.lt-sm",
673
+ "fxLayout.lt-md",
674
+ "fxLayout.lt-lg",
675
+ "fxLayout.lt-xl",
676
+ "fxLayout.gt-xs",
677
+ "fxLayout.gt-sm",
678
+ "fxLayout.gt-md",
679
+ "fxLayout.gt-lg"
680
+ ]
681
+ },
682
+ {
683
+ kind: "directive",
684
+ type: i1.FxFlexDirective,
685
+ 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] ",
686
+ inputs: [
687
+ "fxFlex",
688
+ "fxFlex.xs",
689
+ "fxFlex.sm",
690
+ "fxFlex.md",
691
+ "fxFlex.lg",
692
+ "fxFlex.xl",
693
+ "fxFlex.lt-sm",
694
+ "fxFlex.lt-md",
695
+ "fxFlex.lt-lg",
696
+ "fxFlex.lt-xl",
697
+ "fxFlex.gt-xs",
698
+ "fxFlex.gt-sm",
699
+ "fxFlex.gt-md",
700
+ "fxFlex.gt-lg"
701
+ ]
702
+ },
703
+ {
704
+ kind: "directive",
705
+ type: i1.FxLayoutAlignDirective,
706
+ 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] ",
707
+ inputs: [
708
+ "fxLayoutAlign",
709
+ "fxLayoutAlign.xs",
710
+ "fxLayoutAlign.sm",
711
+ "fxLayoutAlign.md",
712
+ "fxLayoutAlign.lg",
713
+ "fxLayoutAlign.xl",
714
+ "fxLayoutAlign.lt-sm",
715
+ "fxLayoutAlign.lt-md",
716
+ "fxLayoutAlign.lt-lg",
717
+ "fxLayoutAlign.lt-xl",
718
+ "fxLayoutAlign.gt-xs",
719
+ "fxLayoutAlign.gt-sm",
720
+ "fxLayoutAlign.gt-md",
721
+ "fxLayoutAlign.gt-lg"
722
+ ]
723
+ },
724
+ {
725
+ kind: "directive",
726
+ type: i1.FxLayoutGapDirective,
727
+ 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] ",
728
+ inputs: [
729
+ "fxLayoutGap",
730
+ "fxLayoutGap.xs",
731
+ "fxLayoutGap.sm",
732
+ "fxLayoutGap.md",
733
+ "fxLayoutGap.lg",
734
+ "fxLayoutGap.xl",
735
+ "fxLayoutGap.lt-sm",
736
+ "fxLayoutGap.lt-md",
737
+ "fxLayoutGap.lt-lg",
738
+ "fxLayoutGap.lt-xl",
739
+ "fxLayoutGap.gt-xs",
740
+ "fxLayoutGap.gt-sm",
741
+ "fxLayoutGap.gt-md",
742
+ "fxLayoutGap.gt-lg"
743
+ ]
744
+ },
745
+ {
746
+ kind: "directive",
747
+ type: i1.FxFlexFillDirective,
748
+ 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] ",
749
+ inputs: [
750
+ "fxFlexFill",
751
+ "fxFill",
752
+ "fxFlexFill.xs",
753
+ "fxFlexFill.sm",
754
+ "fxFlexFill.md",
755
+ "fxFlexFill.lg",
756
+ "fxFlexFill.xl",
757
+ "fxFlexFill.lt-sm",
758
+ "fxFlexFill.lt-md",
759
+ "fxFlexFill.lt-lg",
760
+ "fxFlexFill.lt-xl",
761
+ "fxFlexFill.gt-xs",
762
+ "fxFlexFill.gt-sm",
763
+ "fxFlexFill.gt-md",
764
+ "fxFlexFill.gt-lg"
765
+ ]
766
+ },
767
+ {
768
+ kind: "ngmodule",
769
+ type: MatFormFieldModule
770
+ },
771
+ {
772
+ kind: "component",
773
+ type: i2.MatFormField,
774
+ selector: "mat-form-field",
775
+ inputs: [
776
+ "hideRequiredMarker",
777
+ "color",
778
+ "floatLabel",
779
+ "appearance",
780
+ "subscriptSizing",
781
+ "hintLabel"
782
+ ],
783
+ exportAs: ["matFormField"]
784
+ },
785
+ {
786
+ kind: "directive",
787
+ type: i2.MatLabel,
788
+ selector: "mat-label"
789
+ },
790
+ {
791
+ kind: "directive",
792
+ type: i2.MatError,
793
+ selector: "mat-error, [matError]",
794
+ inputs: ["id"]
795
+ },
796
+ {
797
+ kind: "directive",
798
+ type: i2.MatSuffix,
799
+ selector: "[matSuffix], [matIconSuffix], [matTextSuffix]",
800
+ inputs: ["matTextSuffix"]
801
+ },
802
+ {
803
+ kind: "ngmodule",
804
+ type: MatInputModule
805
+ },
806
+ {
807
+ kind: "directive",
808
+ type: i3.MatInput,
809
+ selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]",
810
+ inputs: [
811
+ "disabled",
812
+ "id",
813
+ "placeholder",
814
+ "name",
815
+ "required",
816
+ "type",
817
+ "errorStateMatcher",
818
+ "aria-describedby",
819
+ "value",
820
+ "readonly",
821
+ "disabledInteractive"
822
+ ],
823
+ exportAs: ["matInput"]
824
+ },
825
+ {
826
+ kind: "ngmodule",
827
+ type: MatDatepickerModule
828
+ },
829
+ {
830
+ kind: "component",
831
+ type: i4.MatDatepicker,
832
+ selector: "mat-datepicker",
833
+ exportAs: ["matDatepicker"]
834
+ },
835
+ {
836
+ kind: "directive",
837
+ type: i4.MatDatepickerInput,
838
+ selector: "input[matDatepicker]",
839
+ inputs: [
840
+ "matDatepicker",
841
+ "min",
842
+ "max",
843
+ "matDatepickerFilter"
844
+ ],
845
+ exportAs: ["matDatepickerInput"]
846
+ },
847
+ {
848
+ kind: "component",
849
+ type: i4.MatDatepickerToggle,
850
+ selector: "mat-datepicker-toggle",
851
+ inputs: [
852
+ "for",
853
+ "tabIndex",
854
+ "aria-label",
855
+ "disabled",
856
+ "disableRipple"
857
+ ],
858
+ exportAs: ["matDatepickerToggle"]
859
+ },
860
+ {
861
+ kind: "component",
862
+ type: i4.MatDateRangeInput,
863
+ selector: "mat-date-range-input",
864
+ inputs: [
865
+ "rangePicker",
866
+ "required",
867
+ "dateFilter",
868
+ "min",
869
+ "max",
870
+ "disabled",
871
+ "separator",
872
+ "comparisonStart",
873
+ "comparisonEnd"
874
+ ],
875
+ exportAs: ["matDateRangeInput"]
876
+ },
877
+ {
878
+ kind: "directive",
879
+ type: i4.MatStartDate,
880
+ selector: "input[matStartDate]",
881
+ outputs: ["dateChange", "dateInput"]
882
+ },
883
+ {
884
+ kind: "directive",
885
+ type: i4.MatEndDate,
886
+ selector: "input[matEndDate]",
887
+ outputs: ["dateChange", "dateInput"]
888
+ },
889
+ {
890
+ kind: "component",
891
+ type: i4.MatDateRangePicker,
892
+ selector: "mat-date-range-picker",
893
+ exportAs: ["matDateRangePicker"]
894
+ },
895
+ {
896
+ kind: "directive",
897
+ type: MatDatepickerParseErrorFixDirective,
898
+ selector: "input[matDatepicker], input[matStartDate], input[matEndDate]"
899
+ },
900
+ {
901
+ kind: "ngmodule",
902
+ type: MatButtonModule
903
+ },
904
+ {
905
+ kind: "component",
906
+ type: i5.MatButton,
907
+ 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] ",
908
+ inputs: ["matButton"],
909
+ exportAs: ["matButton", "matAnchor"]
910
+ },
911
+ {
912
+ kind: "component",
913
+ type: i5.MatIconButton,
914
+ selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]",
915
+ exportAs: ["matButton", "matAnchor"]
916
+ },
917
+ {
918
+ kind: "ngmodule",
919
+ type: MatIconModule
920
+ },
921
+ {
922
+ kind: "component",
923
+ type: i6.MatIcon,
924
+ selector: "mat-icon",
925
+ inputs: [
926
+ "color",
927
+ "inline",
928
+ "svgIcon",
929
+ "fontSet",
930
+ "fontIcon"
931
+ ],
932
+ exportAs: ["matIcon"]
933
+ },
934
+ {
935
+ kind: "ngmodule",
936
+ type: MatCheckboxModule
937
+ },
938
+ {
939
+ kind: "component",
940
+ type: i8.MatCheckbox,
941
+ selector: "mat-checkbox",
942
+ inputs: [
943
+ "aria-label",
944
+ "aria-labelledby",
945
+ "aria-describedby",
946
+ "aria-expanded",
947
+ "aria-controls",
948
+ "aria-owns",
949
+ "id",
950
+ "required",
951
+ "labelPosition",
952
+ "name",
953
+ "value",
954
+ "disableRipple",
955
+ "tabIndex",
956
+ "color",
957
+ "disabledInteractive",
958
+ "checked",
959
+ "disabled",
960
+ "indeterminate"
961
+ ],
962
+ outputs: ["change", "indeterminateChange"],
963
+ exportAs: ["matCheckbox"]
964
+ },
965
+ {
966
+ kind: "directive",
967
+ type: MatDialogActions,
968
+ selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",
969
+ inputs: ["align"]
970
+ },
971
+ {
972
+ kind: "directive",
973
+ type: MatDialogClose,
974
+ selector: "[mat-dialog-close], [matDialogClose]",
975
+ inputs: [
976
+ "aria-label",
977
+ "type",
978
+ "mat-dialog-close",
979
+ "matDialogClose"
980
+ ],
981
+ exportAs: ["matDialogClose"]
982
+ },
983
+ {
984
+ kind: "pipe",
985
+ type: SafeHtmlPipe,
986
+ name: "safeHtml"
987
+ }
988
+ ],
989
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
990
+ });
991
+ }
992
+ };
993
+ i0.ɵɵngDeclareClassMetadata({
994
+ minVersion: "12.0.0",
995
+ version: "22.2.1",
996
+ ngImport: i0,
997
+ type: PromptDateDialogComponent,
998
+ decorators: [{
999
+ type: Component,
1000
+ args: [{
1001
+ standalone: true,
1002
+ changeDetection: ChangeDetectionStrategy.OnPush,
1003
+ imports: [
1004
+ MatDialogTitle,
1005
+ MatDialogContent,
1006
+ FormField,
1007
+ FormRoot,
1008
+ FlexLayoutModule,
1009
+ MatFormFieldModule,
1010
+ MatInputModule,
1011
+ MatDatepickerModule,
1012
+ MatDatepickerParseErrorFixDirective,
1013
+ MatButtonModule,
1014
+ MatIconModule,
1015
+ MatCheckboxModule,
1016
+ MatDialogActions,
1017
+ MatDialogClose,
1018
+ SafeHtmlPipe
1019
+ ],
1020
+ template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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\" [formField]=\"form.date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n @if (form.date().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.date().errors(), '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 [formField]=\"form.from\" placeholder=\"Da data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, false)\">\r\n <input matEndDate [formField]=\"form.to\" placeholder=\"A data\"\r\n (keydown)=\"onIntervalKeydown($event)\" (keyup)=\"onIntervalKeyup($event, true)\">\r\n </mat-date-range-input>\r\n @if (form.from().value() || form.to().value()) {\r\n <button type=\"button\" tabindex=\"-1\" mat-icon-button matSuffix aria-label=\"Azzera\" (click)=\"clearInterval()\">\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 (form.from().invalid() || form.to().invalid()) {\r\n <mat-error>{{ rangeErrorMessage(form.from().errors(), form.to().errors()) }}</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]=\"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>\r\n",
1021
+ 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"]
1022
+ }]
1023
+ }],
1024
+ ctorParameters: () => [],
1025
+ propDecorators: { done: [{
1026
+ type: i0.Output,
1027
+ args: ["done"]
1028
+ }] }
1029
+ });
1030
+ const _EMPTY_ITEM = { value: "" };
1031
+ var PromptTimeDialogComponent = class PromptTimeDialogComponent {
1032
+ constructor() {
1033
+ this.getErrorMessage = SignalsUtils.getFieldErrorMessage;
1034
+ this.done = output();
1035
+ this.dialogService = inject(ShellService);
1036
+ this.dialogData = signal((() => {
1037
+ const data = inject(MAT_DIALOG_DATA) ?? {};
1038
+ return {
1039
+ ...data,
1040
+ appearance: data.appearance ?? "fill",
1041
+ title: data.title ?? "Inserisci dato",
1042
+ type: PromptDialogType.Time,
1043
+ okCaption: data.okCaption ?? "Ok",
1044
+ cancelCaption: data.cancelCaption ?? "Annulla"
1045
+ };
1046
+ })(), ...ngDevMode ? [{ debugName: "dialogData" }] : /* istanbul ignore next */ []);
1047
+ this.model = signal(this.toForm(), ...ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []);
1048
+ this.form = form(this.model, (p) => {
1049
+ required(p.value, { when: () => !!this.dialogData().required });
1050
+ notEmpty(p.value, { when: () => !!this.dialogData().required });
1051
+ time(p.value, () => this.dialogData().slots);
1052
+ });
1053
+ }
1054
+ toForm() {
1055
+ return DtoUtils.toForm(_EMPTY_ITEM, { value: this.dialogData().initialValue });
1056
+ }
1057
+ toPayload() {
1058
+ return {
1059
+ ...DtoUtils.toPayload(this.model()),
1060
+ options: this.dialogData().options
1061
+ };
1062
+ }
1063
+ ok() {
1064
+ if (this.form().invalid()) {
1065
+ this.form().markAsTouched();
1066
+ this.dialogService.error("Ci sono degli errori da correggere.");
1067
+ return;
1068
+ }
1069
+ this.done.emit(this.toPayload());
1070
+ }
1071
+ static {
1072
+ this.ɵfac = i0.ɵɵngDeclareFactory({
1073
+ minVersion: "12.0.0",
1074
+ version: "22.2.1",
1075
+ ngImport: i0,
1076
+ type: PromptTimeDialogComponent,
1077
+ deps: [],
1078
+ target: i0.ɵɵFactoryTarget.Component
1079
+ });
1080
+ }
1081
+ static {
1082
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
1083
+ minVersion: "17.0.0",
1084
+ version: "22.2.1",
1085
+ type: PromptTimeDialogComponent,
1086
+ isStandalone: true,
1087
+ selector: "ng-component",
1088
+ outputs: { done: "done" },
1089
+ ngImport: i0,
1090
+ template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"form.value\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n",
1091
+ 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"],
1092
+ dependencies: [
1093
+ {
1094
+ kind: "directive",
1095
+ type: MatDialogTitle,
1096
+ selector: "[mat-dialog-title], [matDialogTitle]",
1097
+ inputs: ["id"],
1098
+ exportAs: ["matDialogTitle"]
1099
+ },
1100
+ {
1101
+ kind: "directive",
1102
+ type: MatDialogContent,
1103
+ selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]"
1104
+ },
1105
+ {
1106
+ kind: "directive",
1107
+ type: FormField,
1108
+ selector: "[formField]",
1109
+ inputs: ["formField"],
1110
+ exportAs: ["formField"]
1111
+ },
1112
+ {
1113
+ kind: "directive",
1114
+ type: FormRoot,
1115
+ selector: "form[formRoot]",
1116
+ inputs: ["formRoot"]
1117
+ },
1118
+ {
1119
+ kind: "ngmodule",
1120
+ type: FlexLayoutModule
1121
+ },
1122
+ {
1123
+ kind: "directive",
1124
+ type: i1.FxLayoutDirective,
1125
+ 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] ",
1126
+ inputs: [
1127
+ "fxLayout",
1128
+ "fxLayout.xs",
1129
+ "fxLayout.sm",
1130
+ "fxLayout.md",
1131
+ "fxLayout.lg",
1132
+ "fxLayout.xl",
1133
+ "fxLayout.lt-sm",
1134
+ "fxLayout.lt-md",
1135
+ "fxLayout.lt-lg",
1136
+ "fxLayout.lt-xl",
1137
+ "fxLayout.gt-xs",
1138
+ "fxLayout.gt-sm",
1139
+ "fxLayout.gt-md",
1140
+ "fxLayout.gt-lg"
1141
+ ]
1142
+ },
1143
+ {
1144
+ kind: "directive",
1145
+ type: i1.FxFlexDirective,
1146
+ 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] ",
1147
+ inputs: [
1148
+ "fxFlex",
1149
+ "fxFlex.xs",
1150
+ "fxFlex.sm",
1151
+ "fxFlex.md",
1152
+ "fxFlex.lg",
1153
+ "fxFlex.xl",
1154
+ "fxFlex.lt-sm",
1155
+ "fxFlex.lt-md",
1156
+ "fxFlex.lt-lg",
1157
+ "fxFlex.lt-xl",
1158
+ "fxFlex.gt-xs",
1159
+ "fxFlex.gt-sm",
1160
+ "fxFlex.gt-md",
1161
+ "fxFlex.gt-lg"
1162
+ ]
1163
+ },
1164
+ {
1165
+ kind: "directive",
1166
+ type: i1.FxLayoutAlignDirective,
1167
+ 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] ",
1168
+ inputs: [
1169
+ "fxLayoutAlign",
1170
+ "fxLayoutAlign.xs",
1171
+ "fxLayoutAlign.sm",
1172
+ "fxLayoutAlign.md",
1173
+ "fxLayoutAlign.lg",
1174
+ "fxLayoutAlign.xl",
1175
+ "fxLayoutAlign.lt-sm",
1176
+ "fxLayoutAlign.lt-md",
1177
+ "fxLayoutAlign.lt-lg",
1178
+ "fxLayoutAlign.lt-xl",
1179
+ "fxLayoutAlign.gt-xs",
1180
+ "fxLayoutAlign.gt-sm",
1181
+ "fxLayoutAlign.gt-md",
1182
+ "fxLayoutAlign.gt-lg"
1183
+ ]
1184
+ },
1185
+ {
1186
+ kind: "directive",
1187
+ type: i1.FxLayoutGapDirective,
1188
+ 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] ",
1189
+ inputs: [
1190
+ "fxLayoutGap",
1191
+ "fxLayoutGap.xs",
1192
+ "fxLayoutGap.sm",
1193
+ "fxLayoutGap.md",
1194
+ "fxLayoutGap.lg",
1195
+ "fxLayoutGap.xl",
1196
+ "fxLayoutGap.lt-sm",
1197
+ "fxLayoutGap.lt-md",
1198
+ "fxLayoutGap.lt-lg",
1199
+ "fxLayoutGap.lt-xl",
1200
+ "fxLayoutGap.gt-xs",
1201
+ "fxLayoutGap.gt-sm",
1202
+ "fxLayoutGap.gt-md",
1203
+ "fxLayoutGap.gt-lg"
1204
+ ]
1205
+ },
1206
+ {
1207
+ kind: "directive",
1208
+ type: i1.FxFlexAlignDirective,
1209
+ 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] ",
1210
+ inputs: [
1211
+ "fxFlexAlign",
1212
+ "fxFlexAlign.xs",
1213
+ "fxFlexAlign.sm",
1214
+ "fxFlexAlign.md",
1215
+ "fxFlexAlign.lg",
1216
+ "fxFlexAlign.xl",
1217
+ "fxFlexAlign.lt-sm",
1218
+ "fxFlexAlign.lt-md",
1219
+ "fxFlexAlign.lt-lg",
1220
+ "fxFlexAlign.lt-xl",
1221
+ "fxFlexAlign.gt-xs",
1222
+ "fxFlexAlign.gt-sm",
1223
+ "fxFlexAlign.gt-md",
1224
+ "fxFlexAlign.gt-lg"
1225
+ ]
1226
+ },
1227
+ {
1228
+ kind: "directive",
1229
+ type: i1.FxFlexFillDirective,
1230
+ 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] ",
1231
+ inputs: [
1232
+ "fxFlexFill",
1233
+ "fxFill",
1234
+ "fxFlexFill.xs",
1235
+ "fxFlexFill.sm",
1236
+ "fxFlexFill.md",
1237
+ "fxFlexFill.lg",
1238
+ "fxFlexFill.xl",
1239
+ "fxFlexFill.lt-sm",
1240
+ "fxFlexFill.lt-md",
1241
+ "fxFlexFill.lt-lg",
1242
+ "fxFlexFill.lt-xl",
1243
+ "fxFlexFill.gt-xs",
1244
+ "fxFlexFill.gt-sm",
1245
+ "fxFlexFill.gt-md",
1246
+ "fxFlexFill.gt-lg"
1247
+ ]
1248
+ },
1249
+ {
1250
+ kind: "ngmodule",
1251
+ type: MatFormFieldModule
1252
+ },
1253
+ {
1254
+ kind: "component",
1255
+ type: i2.MatFormField,
1256
+ selector: "mat-form-field",
1257
+ inputs: [
1258
+ "hideRequiredMarker",
1259
+ "color",
1260
+ "floatLabel",
1261
+ "appearance",
1262
+ "subscriptSizing",
1263
+ "hintLabel"
1264
+ ],
1265
+ exportAs: ["matFormField"]
1266
+ },
1267
+ {
1268
+ kind: "directive",
1269
+ type: i2.MatLabel,
1270
+ selector: "mat-label"
1271
+ },
1272
+ {
1273
+ kind: "directive",
1274
+ type: i2.MatError,
1275
+ selector: "mat-error, [matError]",
1276
+ inputs: ["id"]
1277
+ },
1278
+ {
1279
+ kind: "ngmodule",
1280
+ type: MatInputModule
1281
+ },
1282
+ {
1283
+ kind: "directive",
1284
+ type: i3.MatInput,
1285
+ selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]",
1286
+ inputs: [
1287
+ "disabled",
1288
+ "id",
1289
+ "placeholder",
1290
+ "name",
1291
+ "required",
1292
+ "type",
1293
+ "errorStateMatcher",
1294
+ "aria-describedby",
1295
+ "value",
1296
+ "readonly",
1297
+ "disabledInteractive"
1298
+ ],
1299
+ exportAs: ["matInput"]
1300
+ },
1301
+ {
1302
+ kind: "ngmodule",
1303
+ type: MatButtonModule
1304
+ },
1305
+ {
1306
+ kind: "component",
1307
+ type: i5.MatButton,
1308
+ 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] ",
1309
+ inputs: ["matButton"],
1310
+ exportAs: ["matButton", "matAnchor"]
1311
+ },
1312
+ {
1313
+ kind: "ngmodule",
1314
+ type: MatIconModule
1315
+ },
1316
+ {
1317
+ kind: "ngmodule",
1318
+ type: MatCheckboxModule
1319
+ },
1320
+ {
1321
+ kind: "component",
1322
+ type: i8.MatCheckbox,
1323
+ selector: "mat-checkbox",
1324
+ inputs: [
1325
+ "aria-label",
1326
+ "aria-labelledby",
1327
+ "aria-describedby",
1328
+ "aria-expanded",
1329
+ "aria-controls",
1330
+ "aria-owns",
1331
+ "id",
1332
+ "required",
1333
+ "labelPosition",
1334
+ "name",
1335
+ "value",
1336
+ "disableRipple",
1337
+ "tabIndex",
1338
+ "color",
1339
+ "disabledInteractive",
1340
+ "checked",
1341
+ "disabled",
1342
+ "indeterminate"
1343
+ ],
1344
+ outputs: ["change", "indeterminateChange"],
1345
+ exportAs: ["matCheckbox"]
1346
+ },
1347
+ {
1348
+ kind: "directive",
1349
+ type: MatDialogActions,
1350
+ selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",
1351
+ inputs: ["align"]
1352
+ },
1353
+ {
1354
+ kind: "directive",
1355
+ type: MatDialogClose,
1356
+ selector: "[mat-dialog-close], [matDialogClose]",
1357
+ inputs: [
1358
+ "aria-label",
1359
+ "type",
1360
+ "mat-dialog-close",
1361
+ "matDialogClose"
1362
+ ],
1363
+ exportAs: ["matDialogClose"]
1364
+ },
1365
+ {
1366
+ kind: "pipe",
1367
+ type: SafeHtmlPipe,
1368
+ name: "safeHtml"
1369
+ }
1370
+ ],
1371
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1372
+ });
1373
+ }
1374
+ };
1375
+ i0.ɵɵngDeclareClassMetadata({
1376
+ minVersion: "12.0.0",
1377
+ version: "22.2.1",
1378
+ ngImport: i0,
1379
+ type: PromptTimeDialogComponent,
1380
+ decorators: [{
1381
+ type: Component,
1382
+ args: [{
1383
+ standalone: true,
1384
+ changeDetection: ChangeDetectionStrategy.OnPush,
1385
+ imports: [
1386
+ MatDialogTitle,
1387
+ MatDialogContent,
1388
+ FormField,
1389
+ FormRoot,
1390
+ FlexLayoutModule,
1391
+ MatFormFieldModule,
1392
+ MatInputModule,
1393
+ MatButtonModule,
1394
+ MatIconModule,
1395
+ MatCheckboxModule,
1396
+ MatDialogActions,
1397
+ MatDialogClose,
1398
+ SafeHtmlPipe
1399
+ ],
1400
+ template: "<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form [formRoot]=\"form\" 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 [formField]=\"form.value\">\r\n @if (form.value().invalid()) {\r\n <mat-error>{{ getErrorMessage(form.value().errors()) }}</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]=\"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>\r\n",
1401
+ 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"]
1402
+ }]
1403
+ }],
1404
+ propDecorators: { done: [{
1405
+ type: i0.Output,
1406
+ args: ["done"]
1407
+ }] }
1408
+ });
357
1409
  export { PromptDateDialogComponent, PromptDialogComponent, PromptTimeDialogComponent };
358
- //# sourceMappingURL=arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map
1410
+
1411
+ //# sourceMappingURL=arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map