@eqproject/eqp-dynamic-module 2.11.6 → 2.11.8

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 (31) hide show
  1. package/USERGUIDE.md +437 -437
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +2 -2
  3. package/esm2020/lib/components/private/field-graphics-editor/field-graphics-editor.component.mjs +115 -27
  4. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +28 -6
  5. package/esm2020/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.mjs +25 -5
  6. package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +12 -3
  7. package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +26 -4
  8. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +26 -4
  9. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +26 -4
  10. package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +1 -1
  11. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +3 -3
  12. package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +1 -1
  13. package/esm2020/lib/components/private/graphs/graph/graph.component.mjs +3 -3
  14. package/esm2020/lib/utils/css-property-catalog.mjs +45 -2
  15. package/esm2020/lib/utils/field-style-catalog.mjs +45 -19
  16. package/esm2020/lib/utils/floating-label-styles.mjs +155 -0
  17. package/esm2020/lib/utils/refresh-outline-notch.mjs +38 -0
  18. package/fesm2015/eqproject-eqp-dynamic-module.mjs +782 -327
  19. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/fesm2020/eqproject-eqp-dynamic-module.mjs +762 -313
  21. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  22. package/lib/components/private/field-graphics-editor/field-graphics-editor.component.d.ts +19 -1
  23. package/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.d.ts +6 -2
  24. package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +6 -2
  25. package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +6 -2
  26. package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +6 -2
  27. package/lib/utils/css-property-catalog.d.ts +25 -0
  28. package/lib/utils/field-style-catalog.d.ts +5 -0
  29. package/lib/utils/floating-label-styles.d.ts +73 -0
  30. package/lib/utils/refresh-outline-notch.d.ts +15 -0
  31. package/package.json +1 -1
@@ -19,7 +19,7 @@ import { TmwIconComponent } from 'tmw-icons';
19
19
  import * as i9 from 'tmw-picker';
20
20
  import { ModeEnum, TimeTypeEnum, TmwDateTimePickerComponent, TmwPickerComponent, TmwDateRangePickerComponent } from 'tmw-picker';
21
21
  import * as i2$1 from '@angular/material/form-field';
22
- import { MatFormFieldModule } from '@angular/material/form-field';
22
+ import { MatFormField, MatFormFieldModule } from '@angular/material/form-field';
23
23
  import * as i4$1 from '@angular/material/core';
24
24
  import { MatNativeDateModule } from '@angular/material/core';
25
25
  import * as i5$1 from '@angular/material/select';
@@ -2054,7 +2054,7 @@ class ListFormRecordComponent {
2054
2054
  }
2055
2055
  }
2056
2056
  ListFormRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListFormRecordComponent, deps: [{ token: UtilityHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2057
- ListFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListFormRecordComponent, selector: "list-form-record", inputs: { configurations: "configurations", endPointConfiguration: "endPointConfiguration", formID: "formID", form: "form", externalButtons: "externalButtons", actionButtons: "actionButtons", contestualizationParams: "contestualizationParams" }, outputs: { onViewRecord: "onViewRecord", onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", onAfterDeleteRecord: "onAfterDeleteRecord" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-form-record\">\r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"loader && showTitle\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <tmw-table class=\"list-form-record-table\" #tableRecords *ngIf=\"loader && configurations.values\"\r\n [data]=\"configurations.values\" [columns]=\"columns\"></tmw-table>\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }] });
2057
+ ListFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListFormRecordComponent, selector: "list-form-record", inputs: { configurations: "configurations", endPointConfiguration: "endPointConfiguration", formID: "formID", form: "form", externalButtons: "externalButtons", actionButtons: "actionButtons", contestualizationParams: "contestualizationParams" }, outputs: { onViewRecord: "onViewRecord", onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", onAfterDeleteRecord: "onAfterDeleteRecord" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-form-record\">\r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"loader && showTitle\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <tmw-table class=\"list-form-record-table\" #tableRecords *ngIf=\"loader && configurations.values\"\r\n [data]=\"configurations.values\" [columns]=\"columns\"></tmw-table>\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "collapsibleSearch", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "customButtonsLeft", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }] });
2058
2058
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListFormRecordComponent, decorators: [{
2059
2059
  type: Component,
2060
2060
  args: [{ selector: "list-form-record", template: "<mat-card class=\"list-form-record\">\r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"loader && showTitle\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <tmw-table class=\"list-form-record-table\" #tableRecords *ngIf=\"loader && configurations.values\"\r\n [data]=\"configurations.values\" [columns]=\"columns\"></tmw-table>\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}\n"] }]
@@ -3279,6 +3279,317 @@ function injectGoogleFontsFromForm(form) {
3279
3279
  }
3280
3280
  }
3281
3281
 
3282
+ /**
3283
+ * Rimisura la label di un mat-form-field "outline" e riallinea l'apertura nel bordo.
3284
+ *
3285
+ * Material misura la label solo alla creazione del campo: se poi gli stili iniettati
3286
+ * cambiano font, spaziatura o larghezza della descrizione, l'apertura resta stretta
3287
+ * e la label sollevata viene tagliata.
3288
+ */
3289
+ function refreshOutlineNotch(formField) {
3290
+ if (!formField) {
3291
+ return;
3292
+ }
3293
+ // Attende che il browser applichi il nuovo tag <style> prima di misurare
3294
+ setTimeout(() => {
3295
+ formField._refreshOutlineNotchWidth();
3296
+ // Il form field è OnPush: senza questo la nuova larghezza non arriva al bordo
3297
+ formField._changeDetectorRef?.markForCheck();
3298
+ });
3299
+ }
3300
+ /**
3301
+ * Rimisura la label ogni volta che si solleva o torna dentro la casella: le due posizioni
3302
+ * possono avere grafiche diverse, e Material misurerebbe quella a riposo anche per il bordo.
3303
+ * Restituisce l'osservatore, da scollegare nell'ngOnDestroy.
3304
+ */
3305
+ function watchOutlineNotch(formField) {
3306
+ const host = formField?._elementRef?.nativeElement;
3307
+ if (!host || typeof MutationObserver === 'undefined') {
3308
+ return null;
3309
+ }
3310
+ const observer = new MutationObserver((mutations) => {
3311
+ const labelChanged = mutations.some((m) => m.target.classList?.contains('mdc-floating-label'));
3312
+ if (labelChanged) {
3313
+ refreshOutlineNotch(formField);
3314
+ }
3315
+ });
3316
+ observer.observe(host, { attributes: true, attributeFilter: ['class'], subtree: true });
3317
+ return observer;
3318
+ }
3319
+
3320
+ /**
3321
+ * Utility per leggere/scrivere singole proprietà dentro una stringa di dichiarazioni CSS
3322
+ * (il formato usato dalle mappe *FieldStyleCSS: "color:red;font-size:14px").
3323
+ *
3324
+ * Tutte le funzioni preservano le proprietà che non vengono toccate, così i CSS scritti
3325
+ * a mano o generati dall'AI non vengono persi quando si modifica una singola proprietà
3326
+ * dall'editor grafico.
3327
+ */
3328
+ /**
3329
+ * Divide una stringa CSS sui ";" di primo livello, ignorando quelli dentro
3330
+ * parentesi (es. rgba(0,0,0,.5)) o stringhe (es. url("a;b")).
3331
+ */
3332
+ function splitTopLevel(css, separator) {
3333
+ const parts = [];
3334
+ let depth = 0;
3335
+ let quote = null;
3336
+ let current = '';
3337
+ for (let i = 0; i < css.length; i++) {
3338
+ const ch = css[i];
3339
+ if (quote) {
3340
+ current += ch;
3341
+ if (ch === quote && css[i - 1] !== '\\') {
3342
+ quote = null;
3343
+ }
3344
+ continue;
3345
+ }
3346
+ if (ch === '"' || ch === "'") {
3347
+ quote = ch;
3348
+ current += ch;
3349
+ continue;
3350
+ }
3351
+ if (ch === '(') {
3352
+ depth++;
3353
+ current += ch;
3354
+ continue;
3355
+ }
3356
+ if (ch === ')') {
3357
+ depth = Math.max(0, depth - 1);
3358
+ current += ch;
3359
+ continue;
3360
+ }
3361
+ if (ch === separator && depth === 0) {
3362
+ parts.push(current);
3363
+ current = '';
3364
+ continue;
3365
+ }
3366
+ current += ch;
3367
+ }
3368
+ parts.push(current);
3369
+ return parts;
3370
+ }
3371
+ /** Trasforma "color:red;font-size:14px" in [{prop:'color',value:'red'},...] mantenendo l'ordine */
3372
+ function parseCssDeclarations(css) {
3373
+ if (!css) {
3374
+ return [];
3375
+ }
3376
+ const result = [];
3377
+ splitTopLevel(css, ';').forEach((chunk) => {
3378
+ const trimmed = chunk.trim();
3379
+ if (!trimmed) {
3380
+ return;
3381
+ }
3382
+ // Il primo ":" separa sempre proprietà e valore (eventuali ":" successivi,
3383
+ // es. in url(http://...), restano nel valore).
3384
+ const colonIndex = trimmed.indexOf(':');
3385
+ if (colonIndex <= 0) {
3386
+ return;
3387
+ }
3388
+ const prop = trimmed.slice(0, colonIndex).trim().toLowerCase();
3389
+ const value = trimmed.slice(colonIndex + 1).trim();
3390
+ if (!prop || !value) {
3391
+ return;
3392
+ }
3393
+ result.push({ prop, value });
3394
+ });
3395
+ return result;
3396
+ }
3397
+ /** Trasforma [{prop,value}] in "color: red; font-size: 14px;" */
3398
+ function serializeCssDeclarations(declarations) {
3399
+ if (!declarations || declarations.length === 0) {
3400
+ return '';
3401
+ }
3402
+ return declarations
3403
+ .filter((d) => d && d.prop && d.value)
3404
+ .map((d) => `${d.prop}: ${d.value};`)
3405
+ .join(' ');
3406
+ }
3407
+ /** Legge il valore di una singola proprietà; stringa vuota se non presente */
3408
+ function getCssDeclaration(css, prop) {
3409
+ const target = (prop || '').toLowerCase();
3410
+ const found = parseCssDeclarations(css).find((d) => d.prop === target);
3411
+ return found ? found.value : '';
3412
+ }
3413
+ /**
3414
+ * Imposta (o rimuove, se il valore è vuoto) una singola proprietà, lasciando
3415
+ * intatte tutte le altre. Le proprietà nuove vengono accodate in fondo.
3416
+ */
3417
+ function setCssDeclaration(css, prop, value) {
3418
+ const target = (prop || '').toLowerCase();
3419
+ if (!target) {
3420
+ return css ?? '';
3421
+ }
3422
+ const declarations = parseCssDeclarations(css);
3423
+ const newValue = (value ?? '').trim();
3424
+ const index = declarations.findIndex((d) => d.prop === target);
3425
+ if (!newValue) {
3426
+ if (index >= 0) {
3427
+ declarations.splice(index, 1);
3428
+ }
3429
+ }
3430
+ else if (index >= 0) {
3431
+ declarations[index].value = newValue;
3432
+ }
3433
+ else {
3434
+ declarations.push({ prop: target, value: newValue });
3435
+ }
3436
+ return serializeCssDeclarations(declarations);
3437
+ }
3438
+
3439
+ /**
3440
+ * Label "flottante" dei mat-form-field outline (Angular Material 15).
3441
+ *
3442
+ * La stessa label ha due aspetti: a riposo dentro la casella (campo vuoto e non selezionato)
3443
+ * e sollevata sul bordo (campo compilato o selezionato). L'editor li mostra come due elementi:
3444
+ * "Etichetta nel contenitore" è la chiave storica (Descrizione / Label): grafica base della
3445
+ * label, valida sempre. "Etichetta sul bordo" (DescrizioneSollevata / LabelSollevata) sovrascrive
3446
+ * solo ciò che vi è impostato quando la label è sollevata.
3447
+ *
3448
+ * Il server conosce solo le chiavi storiche: l'override del bordo viene quindi salvato DENTRO la
3449
+ * stringa CSS della chiave base, come proprietà custom `--eqp-sollevata: "<css>"`. È CSS valido
3450
+ * (il browser la ignora) e passa intatta per le classi tipizzate del server. Le chiavi
3451
+ * "…Sollevata" esistono solo in memoria, nell'editor: readStyleCss/writeStyleCss fanno da ponte.
3452
+ */
3453
+ /** Suffisso del selettore della label per la label sollevata */
3454
+ const LABEL_FLOATING_SUFFIX = '.mdc-floating-label--float-above';
3455
+ /** Proprietà custom, dentro la chiave base, che contiene il CSS dell'etichetta sul bordo */
3456
+ const FLOATING_OVERRIDE_PROP = '--eqp-sollevata';
3457
+ /** True per le chiavi virtuali dell'etichetta sul bordo (es. "DescrizioneSollevataNormale") */
3458
+ function isFloatingOverrideKey(key) {
3459
+ return /Sollevata/.test(key ?? '');
3460
+ }
3461
+ /** Chiave reale in cui è salvato l'override: "DescrizioneSollevataNormale" -> "DescrizioneNormale" */
3462
+ function floatingBaseKey(key) {
3463
+ return (key ?? '').replace('Sollevata', '');
3464
+ }
3465
+ function decodeOverride(raw) {
3466
+ if (!raw) {
3467
+ return '';
3468
+ }
3469
+ try {
3470
+ const value = JSON.parse(raw);
3471
+ return typeof value === 'string' ? value : '';
3472
+ }
3473
+ catch {
3474
+ return '';
3475
+ }
3476
+ }
3477
+ /**
3478
+ * CSS di una chiave "Elemento+Stato", anche virtuale, letto da una mappa nel formato salvato.
3479
+ * Per le chiavi base restituisce il CSS senza la proprietà custom (che non va iniettata).
3480
+ */
3481
+ function readStyleCss(map, key) {
3482
+ if (!map) {
3483
+ return '';
3484
+ }
3485
+ if (isFloatingOverrideKey(key)) {
3486
+ return decodeOverride(getCssDeclaration(map[floatingBaseKey(key)] ?? '', FLOATING_OVERRIDE_PROP));
3487
+ }
3488
+ return setCssDeclaration(map[key] ?? '', FLOATING_OVERRIDE_PROP, '');
3489
+ }
3490
+ /** Scrive il CSS di una chiave, anche virtuale, in una mappa nel formato salvato */
3491
+ function writeStyleCss(map, key, css) {
3492
+ const clean = (css ?? '').trim();
3493
+ if (isFloatingOverrideKey(key)) {
3494
+ const base = floatingBaseKey(key);
3495
+ const updated = setCssDeclaration(map[base] ?? '', FLOATING_OVERRIDE_PROP, clean ? JSON.stringify(clean) : '');
3496
+ if (updated) {
3497
+ map[base] = updated;
3498
+ }
3499
+ else {
3500
+ delete map[base];
3501
+ }
3502
+ return;
3503
+ }
3504
+ // Riscrivendo la base l'override già presente va conservato
3505
+ const override = getCssDeclaration(map[key] ?? '', FLOATING_OVERRIDE_PROP);
3506
+ const updated = override ? setCssDeclaration(clean, FLOATING_OVERRIDE_PROP, override) : clean;
3507
+ if (updated) {
3508
+ map[key] = updated;
3509
+ }
3510
+ else {
3511
+ delete map[key];
3512
+ }
3513
+ }
3514
+ const LABEL_KEY_PATTERN = /^(Descrizione|Label)(Normale|Mouseover|Focused|Selezionato|NotValid|Readonly)$/;
3515
+ /** Mappa "esplosa" per l'editor: chiavi base pulite più le chiavi virtuali "…Sollevata…" */
3516
+ function decodeFloatingMap(map) {
3517
+ const out = {};
3518
+ Object.keys(map ?? {}).forEach((key) => {
3519
+ if (!map[key]) {
3520
+ return;
3521
+ }
3522
+ const base = readStyleCss(map, key);
3523
+ if (base) {
3524
+ out[key] = base;
3525
+ }
3526
+ const m = LABEL_KEY_PATTERN.exec(key);
3527
+ if (m) {
3528
+ const overrideKey = `${m[1]}Sollevata${m[2]}`;
3529
+ const override = readStyleCss(map, overrideKey);
3530
+ if (override) {
3531
+ out[overrideKey] = override;
3532
+ }
3533
+ }
3534
+ });
3535
+ return out;
3536
+ }
3537
+ /** Inverso di decodeFloatingMap: riporta la mappa al formato salvato */
3538
+ function encodeFloatingMap(decoded) {
3539
+ const out = {};
3540
+ Object.keys(decoded ?? {}).forEach((key) => writeStyleCss(out, key, decoded[key]));
3541
+ return out;
3542
+ }
3543
+ /** Aggiunge !important a ogni dichiarazione: serve dove regole globali con !important coprono le nostre */
3544
+ function forceImportantCss(css) {
3545
+ return (css ?? '')
3546
+ .split(';')
3547
+ .map((d) => d.trim())
3548
+ .filter((d) => d.length > 0)
3549
+ .map((d) => (/!important\s*$/i.test(d) ? d : `${d} !important`))
3550
+ .join('; ') + (css?.trim() ? ';' : '');
3551
+ }
3552
+ /** True se il campo ha una grafica sulla label (base o sul bordo) con quel prefisso di chiave */
3553
+ function hasFloatingLabelStyles(styleMap, basePrefix = 'Descrizione') {
3554
+ return Object.keys(styleMap ?? {})
3555
+ .some((key) => key.startsWith(basePrefix) && !!(styleMap[key] ?? '').trim());
3556
+ }
3557
+ /**
3558
+ * Regole di base da iniettare prima di quelle dell'utente quando la label è personalizzata. Material la rimpicciolisce al 75% con una trasformazione: dimensione testo,
3559
+ * padding e larghezza impostati dall'utente risulterebbero ridotti. Qui la scala torna a 1 e il
3560
+ * testo riparte dalla stessa dimensione che Material mostrava (12px); la label resta centrata
3561
+ * sulla linea del bordo, e "top" la sposta da lì.
3562
+ * I selettori sono dentro :where() per restare più deboli di qualsiasi regola dell'utente,
3563
+ * anche di quelle su Descrizione che valgono per entrambe le posizioni.
3564
+ *
3565
+ * @param uid id del wrapper del campo
3566
+ * @param labelSelector selettore della label, relativo al wrapper (es. " label.mat-mdc-floating-label")
3567
+ * @param styleMap mappa "Elemento+Stato" -> CSS del campo
3568
+ */
3569
+ function buildFloatingLabelBaseRules(uid, labelSelector, styleMap) {
3570
+ if (!hasFloatingLabelStyles(styleMap, 'Descrizione')) {
3571
+ return [];
3572
+ }
3573
+ const easing = '150ms cubic-bezier(0.4, 0, 0.2, 1)';
3574
+ return [
3575
+ // La variabile è letta sia dalla trasformazione della label sia dal calcolo del varco nel bordo
3576
+ `#${uid} .mat-mdc-form-field { --mat-mdc-form-field-floating-label-scale: 1; }`,
3577
+ `#${uid} :where(${labelSelector.trim()}) { transition: transform ${easing}, top ${easing}, color ${easing}; }`,
3578
+ `#${uid} :where(${labelSelector.trim()}${LABEL_FLOATING_SUFFIX}) {`
3579
+ + ` font-size: 12px; line-height: 1.15em; top: 0;`
3580
+ + ` --mat-mdc-form-field-label-transform: translateY(-50%); }`,
3581
+ ];
3582
+ }
3583
+ /**
3584
+ * True se il CSS imposta "top". Il top dell'etichetta nel contenitore non deve propagarsi alla
3585
+ * label sollevata, che ha la propria posizione: i template, dopo la regola della chiave base (Descrizione / Label),
3586
+ * ne emettono una che riporta a 0 il top della label sollevata; quella di "…Sollevata",
3587
+ * venendo dopo, la sovrascrive.
3588
+ */
3589
+ function cssSetsTop(css) {
3590
+ return /(^|[\s;])top\s*:/i.test(css ?? '');
3591
+ }
3592
+
3282
3593
  /* ESEMPIO D'USO
3283
3594
 
3284
3595
  <textarea
@@ -3479,6 +3790,9 @@ const ELEMENT_SELECTORS$a = {
3479
3790
  Container: ' .mat-mdc-text-field-wrapper',
3480
3791
  Input: ' .mat-mdc-form-field-infix',
3481
3792
  Descrizione: ' label.mat-mdc-floating-label',
3793
+ // Descrizione: grafica base della label, sempre valida. Sollevata (virtuale, salvata dentro
3794
+ // Descrizione): override quando è sul bordo
3795
+ DescrizioneSollevata: ' label.mat-mdc-floating-label' + LABEL_FLOATING_SUFFIX,
3482
3796
  Icona: [' .mat-mdc-form-field-icon-prefix', ' .mat-mdc-form-field-icon-suffix'],
3483
3797
  Microfono: ' .mat-mdc-form-field-icon-suffix',
3484
3798
  Errore: ' mat-error',
@@ -3512,6 +3826,7 @@ class TextFieldTemplateComponent {
3512
3826
  this.platform = Capacitor.getPlatform();
3513
3827
  this.styleEl = null;
3514
3828
  this.statusSub = null;
3829
+ this.notchObserver = null;
3515
3830
  }
3516
3831
  ngOnInit() {
3517
3832
  this.fieldUid = 'tf-' + Math.random().toString(36).slice(2, 10);
@@ -3528,6 +3843,9 @@ class TextFieldTemplateComponent {
3528
3843
  if (changes['forceState']) {
3529
3844
  this.updateStateClasses();
3530
3845
  }
3846
+ if (changes['styleVersion'] || changes['forceState']) {
3847
+ refreshOutlineNotch(this.formField);
3848
+ }
3531
3849
  if (changes['record'] != undefined && changes['record'].firstChange == false
3532
3850
  && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
3533
3851
  this.record = changes['record'].currentValue;
@@ -3535,7 +3853,11 @@ class TextFieldTemplateComponent {
3535
3853
  this.updateStateClasses();
3536
3854
  }
3537
3855
  }
3856
+ ngAfterViewInit() {
3857
+ this.notchObserver = watchOutlineNotch(this.formField);
3858
+ }
3538
3859
  ngOnDestroy() {
3860
+ this.notchObserver?.disconnect();
3539
3861
  if (this.styleEl?.parentNode) {
3540
3862
  this.styleEl.parentNode.removeChild(this.styleEl);
3541
3863
  }
@@ -3655,13 +3977,14 @@ class TextFieldTemplateComponent {
3655
3977
  // qualsiasi valore ereditato dal wrapper. Con color:inherit forziamo l'ereditarietà
3656
3978
  // (specificità 1,1,1 > 0,3,0), così il color impostato su InputNormale si propaga al testo.
3657
3979
  lines.push(`#${uid} input.mat-mdc-input-element { color: inherit; }`);
3980
+ lines.push(...buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$a.Descrizione, css));
3658
3981
  for (const el of ELEMENTS$9) {
3659
3982
  const sEntry = ELEMENT_SELECTORS$a[el];
3660
3983
  const selList = Array.isArray(sEntry) ? sEntry : [sEntry];
3661
3984
  for (const state of STATES$b) {
3662
3985
  const key = el + state;
3663
3986
  const defaultVal = DEFAULT_FIELD_STYLES$b[key];
3664
- const userVal = css[key];
3987
+ const userVal = readStyleCss(css, key);
3665
3988
  if (!defaultVal?.trim() && !userVal?.trim())
3666
3989
  continue;
3667
3990
  for (const s of selList) {
@@ -3673,6 +3996,10 @@ class TextFieldTemplateComponent {
3673
3996
  lines.push(`${selector} { ${defaultVal} }`);
3674
3997
  if (userVal?.trim())
3675
3998
  lines.push(`${selector} { ${userVal} }`);
3999
+ if (userVal?.trim() && el === 'Descrizione') {
4000
+ if (cssSetsTop(userVal))
4001
+ lines.push(this.getSelector(uid, el, state, s + LABEL_FLOATING_SUFFIX, sub) + ' { top: 0; }');
4002
+ }
3676
4003
  // Per Container: propaga le proprietà border ai segmenti MDC (notched-outline__*).
3677
4004
  // Se il CSS imposta uno spessore (border/border-width) → il bordo visivo è già sul
3678
4005
  // wrapper, i segmenti vengono soppressi (border-color:transparent) per evitare il
@@ -3773,7 +4100,7 @@ class TextFieldTemplateComponent {
3773
4100
  }
3774
4101
  }
3775
4102
  TextFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3776
- TextFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextFieldTemplateComponent, selector: "text-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, usesOnChanges: true, ngImport: i0, template: "<div [id]=\"fieldUid\" class=\"eqp-tf-wrapper\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition != TextFieldIconPositionEnum.Destra\" matPrefix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"field.Readonly || (field.Formula != null && field.Formula != '')\"\r\n [required]=\"field.Required\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onRecordValueChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched &&\r\n !field.Readonly\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\"\r\n *ngIf=\"field.IconName && field.IconPosition == TextFieldIconPositionEnum.Destra\"\r\n matSuffix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <tmw-icon class=\"mat-icon eqp-microfono\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"record[field.Name]\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".eqp-tf-wrapper{display:block;width:100%}.keyboard_speaking{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }] });
4103
+ TextFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextFieldTemplateComponent, selector: "text-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, viewQueries: [{ propertyName: "formField", first: true, predicate: MatFormField, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"fieldUid\" class=\"eqp-tf-wrapper\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition != TextFieldIconPositionEnum.Destra\" matPrefix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"field.Readonly || (field.Formula != null && field.Formula != '')\"\r\n [required]=\"field.Required\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onRecordValueChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched &&\r\n !field.Readonly\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\"\r\n *ngIf=\"field.IconName && field.IconPosition == TextFieldIconPositionEnum.Destra\"\r\n matSuffix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <tmw-icon class=\"mat-icon eqp-microfono\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"record[field.Name]\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".eqp-tf-wrapper{display:block;width:100%}.keyboard_speaking{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }] });
3777
4104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextFieldTemplateComponent, decorators: [{
3778
4105
  type: Component,
3779
4106
  args: [{ selector: 'text-field-template', template: "<div [id]=\"fieldUid\" class=\"eqp-tf-wrapper\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition != TextFieldIconPositionEnum.Destra\" matPrefix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"field.Readonly || (field.Formula != null && field.Formula != '')\"\r\n [required]=\"field.Required\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onRecordValueChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched &&\r\n !field.Readonly\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\"\r\n *ngIf=\"field.IconName && field.IconPosition == TextFieldIconPositionEnum.Destra\"\r\n matSuffix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <tmw-icon class=\"mat-icon eqp-microfono\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"record[field.Name]\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".eqp-tf-wrapper{display:block;width:100%}.keyboard_speaking{color:red}\n"] }]
@@ -3787,6 +4114,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
3787
4114
  type: Input
3788
4115
  }], styleVersion: [{
3789
4116
  type: Input
4117
+ }], formField: [{
4118
+ type: ViewChild,
4119
+ args: [MatFormField]
3790
4120
  }], forceState: [{
3791
4121
  type: Input
3792
4122
  }], recordChange: [{
@@ -4026,9 +4356,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4026
4356
  type: Output
4027
4357
  }] } });
4028
4358
 
4359
+ // La label ha regole globali con !important (tmw-datetimepicker .tmw-picker-main .tmw-picker-label):
4360
+ // le nostre devono averlo a loro volta per vincere
4361
+ const FORCE_IMPORTANT_ELEMENTS$1 = new Set(['Descrizione', 'DescrizioneSollevata']);
4362
+ const PICKER_LABEL_FLOATING_SUFFIX = ':not(.tmw-picker-label--inline)';
4363
+ // La label di tmw-picker sta nel contenitore con la classe --inline (campo vuoto e non
4364
+ // selezionato) e sale sul bordo senza. Descrizione: grafica base, sempre valida.
4365
+ // DescrizioneSollevata (virtuale, salvata dentro Descrizione): override sul bordo.
4029
4366
  const ELEMENT_SELECTORS$8 = {
4030
4367
  Container: ' mat-form-field.tmw-picker-main',
4031
4368
  Descrizione: ' .tmw-picker-label',
4369
+ DescrizioneSollevata: ' .tmw-picker-label' + PICKER_LABEL_FLOATING_SUFFIX,
4032
4370
  };
4033
4371
  const ELEMENTS$7 = Object.keys(ELEMENT_SELECTORS$8);
4034
4372
  const STATES$9 = ['Normale', 'Mouseover', 'Focused', 'NotValid', 'Readonly'];
@@ -4104,12 +4442,21 @@ class DateFieldTemplateComponent {
4104
4442
  }
4105
4443
  buildCssRules(uid, css) {
4106
4444
  const lines = [];
4445
+ // Regole globali dell'app host (tmw-picker.scss) fissano "bottom" con !important anche sulla
4446
+ // label a riposo nel contenitore, che tmw-picker posiziona con "top": senza questo la label
4447
+ // risulterebbe stirata fra le due ancore
4448
+ lines.push(`#${uid} .tmw-picker-label.tmw-picker-label--inline { bottom: auto !important; }`);
4449
+ // tmw-picker ancora la label sollevata al bordo con "bottom": la si riporta a "top" così
4450
+ // che "Posizione verticale (top)" funzioni come negli altri campi (0 = centrata sul bordo)
4451
+ if (hasFloatingLabelStyles(css, 'Descrizione')) {
4452
+ lines.push(`#${uid} .tmw-picker-label${PICKER_LABEL_FLOATING_SUFFIX} { bottom: auto !important; top: 0 !important; transform: translateY(-50%) !important; }`);
4453
+ }
4107
4454
  for (const el of ELEMENTS$7) {
4108
4455
  const s = ELEMENT_SELECTORS$8[el];
4109
4456
  for (const state of STATES$9) {
4110
4457
  const key = el + state;
4111
4458
  const defaultVal = DEFAULT_FIELD_STYLES$9[key];
4112
- const userVal = css[key];
4459
+ const userVal = readStyleCss(css, key);
4113
4460
  if (!defaultVal?.trim() && !userVal?.trim())
4114
4461
  continue;
4115
4462
  const selector = this.getSelector(uid, state, s);
@@ -4117,8 +4464,12 @@ class DateFieldTemplateComponent {
4117
4464
  continue;
4118
4465
  if (defaultVal?.trim())
4119
4466
  lines.push(`${selector} { ${defaultVal} }`);
4120
- if (userVal?.trim())
4121
- lines.push(`${selector} { ${userVal} }`);
4467
+ if (userVal?.trim()) {
4468
+ lines.push(`${selector} { ${FORCE_IMPORTANT_ELEMENTS$1.has(el) ? forceImportantCss(userVal) : userVal} }`);
4469
+ }
4470
+ if (userVal?.trim() && el === 'Descrizione' && cssSetsTop(userVal)) {
4471
+ lines.push(`${this.getSelector(uid, state, ELEMENT_SELECTORS$8['DescrizioneSollevata'])} { top: 0 !important; }`);
4472
+ }
4122
4473
  }
4123
4474
  }
4124
4475
  return lines.join('\n');
@@ -4257,10 +4608,10 @@ class DateFieldTemplateComponent {
4257
4608
  }
4258
4609
  }
4259
4610
  DateFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4260
- DateFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateFieldTemplateComponent, selector: "date-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"{{fieldUid}}\"\r\n (mouseenter)=\"hovering=true\" (mouseleave)=\"hovering=false\"\r\n (focusin)=\"focused=true\" (focusout)=\"focused=false\">\r\n <tmw-datetimepicker\r\n [placeholder]=\"field.Description\"\r\n [label]=\"field.Description\"\r\n [pickerMode]=\"mode\"\r\n [minDate]=\"field.MinDate ? field.MinDate : null\"\r\n [maxDate]=\"field.MaxDate ? field.MaxDate : null\"\r\n [disabled]=\"field.Readonly\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (dateChange)=\"onRecordValueChange($event)\"\r\n [outputFormat]=\"outputFormat\"\r\n [showSeconds]=\"showSeconds\"\r\n [containerStyle]=\"getDateStyleByState('ContenitoreInterno')\"\r\n [inputStyle]=\"getDateStyleByState('CampoData')\"\r\n [calendarButtonStyle]=\"getDateStyleByState('IconaCalendario')\"\r\n [clockButtonStyle]=\"getDateStyleByState('IconaOrologio')\"\r\n [closeButtonStyle]=\"getDateStyleByState('IconaCancellazione')\"\r\n [tooltipStyle]=\"getDateStyleByState('Tooltip')\"\r\n [iconsPosition]=\"field.IconsPosition || 'right'\"\r\n [closeIconPosition]=\"field.CloseIconPosition || 'right'\"\r\n [useTooltip]=\"field.UseTooltip || false\">\r\n </tmw-datetimepicker>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.TmwDateTimePickerComponent, selector: "tmw-datetimepicker", inputs: ["debugMode", "pickerMode", "timeType", "label", "placeholder", "hint", "haveFloatingLabel", "minDate", "maxDate", "locale", "inputFormat", "outputFormat", "forSaveLocalOnDB", "timeZone", "disabled", "readonly", "currentDateAsDefault", "showSpinners", "touchUi", "enableMeridian", "hideTime", "stepHour", "showHours", "hourLabel", "stepMinute", "showMinutes", "minuteLabel", "stepSecond", "showSeconds", "secondLabel", "disableMinute", "dayLabel", "monthLabel", "yearLabel", "highLightedDates", "iconsPosition", "closeIconPosition", "containerStyle", "inputStyle", "calendarButtonStyle", "clockButtonStyle", "closeButtonStyle", "useTooltip", "tooltipStyle"], outputs: ["dateChange"] }] });
4611
+ DateFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateFieldTemplateComponent, selector: "date-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"{{fieldUid}}\"\r\n (mouseenter)=\"hovering=true\" (mouseleave)=\"hovering=false\"\r\n (focusin)=\"focused=true\" (focusout)=\"focused=false\">\r\n <tmw-datetimepicker\r\n [placeholder]=\"field.Description\"\r\n [label]=\"field.Description\"\r\n [haveFloatingLabel]=\"true\"\r\n [pickerMode]=\"mode\"\r\n [minDate]=\"field.MinDate ? field.MinDate : null\"\r\n [maxDate]=\"field.MaxDate ? field.MaxDate : null\"\r\n [disabled]=\"field.Readonly\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (dateChange)=\"onRecordValueChange($event)\"\r\n [outputFormat]=\"outputFormat\"\r\n [showSeconds]=\"showSeconds\"\r\n [containerStyle]=\"getDateStyleByState('ContenitoreInterno')\"\r\n [inputStyle]=\"getDateStyleByState('CampoData')\"\r\n [calendarButtonStyle]=\"getDateStyleByState('IconaCalendario')\"\r\n [clockButtonStyle]=\"getDateStyleByState('IconaOrologio')\"\r\n [closeButtonStyle]=\"getDateStyleByState('IconaCancellazione')\"\r\n [tooltipStyle]=\"getDateStyleByState('Tooltip')\"\r\n [iconsPosition]=\"field.IconsPosition || 'right'\"\r\n [closeIconPosition]=\"field.CloseIconPosition || 'right'\"\r\n [useTooltip]=\"field.UseTooltip || false\">\r\n </tmw-datetimepicker>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.TmwDateTimePickerComponent, selector: "tmw-datetimepicker", inputs: ["debugMode", "pickerMode", "timeType", "label", "placeholder", "hint", "haveFloatingLabel", "minDate", "maxDate", "locale", "inputFormat", "outputFormat", "forSaveLocalOnDB", "timeZone", "disabled", "readonly", "currentDateAsDefault", "showSpinners", "touchUi", "enableMeridian", "hideTime", "stepHour", "showHours", "hourLabel", "stepMinute", "showMinutes", "minuteLabel", "stepSecond", "showSeconds", "secondLabel", "disableMinute", "dayLabel", "monthLabel", "yearLabel", "highLightedDates", "iconsPosition", "closeIconPosition", "containerStyle", "inputStyle", "calendarButtonStyle", "clockButtonStyle", "closeButtonStyle", "useTooltip", "tooltipStyle"], outputs: ["dateChange"] }] });
4261
4612
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateFieldTemplateComponent, decorators: [{
4262
4613
  type: Component,
4263
- args: [{ selector: 'date-field-template', template: "<div id=\"{{fieldUid}}\"\r\n (mouseenter)=\"hovering=true\" (mouseleave)=\"hovering=false\"\r\n (focusin)=\"focused=true\" (focusout)=\"focused=false\">\r\n <tmw-datetimepicker\r\n [placeholder]=\"field.Description\"\r\n [label]=\"field.Description\"\r\n [pickerMode]=\"mode\"\r\n [minDate]=\"field.MinDate ? field.MinDate : null\"\r\n [maxDate]=\"field.MaxDate ? field.MaxDate : null\"\r\n [disabled]=\"field.Readonly\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (dateChange)=\"onRecordValueChange($event)\"\r\n [outputFormat]=\"outputFormat\"\r\n [showSeconds]=\"showSeconds\"\r\n [containerStyle]=\"getDateStyleByState('ContenitoreInterno')\"\r\n [inputStyle]=\"getDateStyleByState('CampoData')\"\r\n [calendarButtonStyle]=\"getDateStyleByState('IconaCalendario')\"\r\n [clockButtonStyle]=\"getDateStyleByState('IconaOrologio')\"\r\n [closeButtonStyle]=\"getDateStyleByState('IconaCancellazione')\"\r\n [tooltipStyle]=\"getDateStyleByState('Tooltip')\"\r\n [iconsPosition]=\"field.IconsPosition || 'right'\"\r\n [closeIconPosition]=\"field.CloseIconPosition || 'right'\"\r\n [useTooltip]=\"field.UseTooltip || false\">\r\n </tmw-datetimepicker>\r\n</div>\r\n" }]
4614
+ args: [{ selector: 'date-field-template', template: "<div id=\"{{fieldUid}}\"\r\n (mouseenter)=\"hovering=true\" (mouseleave)=\"hovering=false\"\r\n (focusin)=\"focused=true\" (focusout)=\"focused=false\">\r\n <tmw-datetimepicker\r\n [placeholder]=\"field.Description\"\r\n [label]=\"field.Description\"\r\n [haveFloatingLabel]=\"true\"\r\n [pickerMode]=\"mode\"\r\n [minDate]=\"field.MinDate ? field.MinDate : null\"\r\n [maxDate]=\"field.MaxDate ? field.MaxDate : null\"\r\n [disabled]=\"field.Readonly\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (dateChange)=\"onRecordValueChange($event)\"\r\n [outputFormat]=\"outputFormat\"\r\n [showSeconds]=\"showSeconds\"\r\n [containerStyle]=\"getDateStyleByState('ContenitoreInterno')\"\r\n [inputStyle]=\"getDateStyleByState('CampoData')\"\r\n [calendarButtonStyle]=\"getDateStyleByState('IconaCalendario')\"\r\n [clockButtonStyle]=\"getDateStyleByState('IconaOrologio')\"\r\n [closeButtonStyle]=\"getDateStyleByState('IconaCancellazione')\"\r\n [tooltipStyle]=\"getDateStyleByState('Tooltip')\"\r\n [iconsPosition]=\"field.IconsPosition || 'right'\"\r\n [closeIconPosition]=\"field.CloseIconPosition || 'right'\"\r\n [useTooltip]=\"field.UseTooltip || false\">\r\n </tmw-datetimepicker>\r\n</div>\r\n" }]
4264
4615
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { field: [{
4265
4616
  type: Input
4266
4617
  }], record: [{
@@ -4293,6 +4644,9 @@ const ELEMENT_SELECTORS$7 = {
4293
4644
  Container: ' .mat-mdc-text-field-wrapper',
4294
4645
  Input: ' .mat-mdc-form-field-infix',
4295
4646
  Descrizione: ' label.mat-mdc-floating-label',
4647
+ // Descrizione: grafica base della label, sempre valida. Sollevata (virtuale, salvata dentro
4648
+ // Descrizione): override quando è sul bordo
4649
+ DescrizioneSollevata: ' label.mat-mdc-floating-label' + LABEL_FLOATING_SUFFIX,
4296
4650
  Icona: [' .mat-mdc-form-field-icon-prefix', ' .mat-mdc-form-field-icon-suffix'],
4297
4651
  Microfono: ' .mat-mdc-form-field-icon-suffix',
4298
4652
  Errore: ' mat-error',
@@ -4319,6 +4673,7 @@ class TextareaFieldTemplateComponent {
4319
4673
  this.TextareaFieldIconPositionEnum = TextareaFieldIconPositionEnum;
4320
4674
  this.styleEl = null;
4321
4675
  this.statusSub = null;
4676
+ this.notchObserver = null;
4322
4677
  }
4323
4678
  ngOnInit() {
4324
4679
  this.fieldUid = 'ta-' + Math.random().toString(36).slice(2, 10);
@@ -4335,6 +4690,9 @@ class TextareaFieldTemplateComponent {
4335
4690
  if (changes['forceState']) {
4336
4691
  this.updateStateClasses();
4337
4692
  }
4693
+ if (changes['styleVersion'] || changes['forceState']) {
4694
+ refreshOutlineNotch(this.formField);
4695
+ }
4338
4696
  if (changes['record'] != undefined && changes['record'].firstChange == false
4339
4697
  && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
4340
4698
  this.record = changes['record'].currentValue;
@@ -4342,7 +4700,11 @@ class TextareaFieldTemplateComponent {
4342
4700
  this.updateStateClasses();
4343
4701
  }
4344
4702
  }
4703
+ ngAfterViewInit() {
4704
+ this.notchObserver = watchOutlineNotch(this.formField);
4705
+ }
4345
4706
  ngOnDestroy() {
4707
+ this.notchObserver?.disconnect();
4346
4708
  if (this.styleEl?.parentNode) {
4347
4709
  this.styleEl.parentNode.removeChild(this.styleEl);
4348
4710
  }
@@ -4428,13 +4790,14 @@ class TextareaFieldTemplateComponent {
4428
4790
  : 'display: none;'} }`);
4429
4791
  lines.push(`#${uid} .mdc-notched-outline { border: 0; }`);
4430
4792
  lines.push(`#${uid} textarea.mat-mdc-input-element { color: inherit; }`);
4793
+ lines.push(...buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$7.Descrizione, css));
4431
4794
  for (const el of ELEMENTS$6) {
4432
4795
  const sEntry = ELEMENT_SELECTORS$7[el];
4433
4796
  const selList = Array.isArray(sEntry) ? sEntry : [sEntry];
4434
4797
  for (const state of STATES$8) {
4435
4798
  const key = el + state;
4436
4799
  const defaultVal = DEFAULT_FIELD_STYLES$8[key];
4437
- const userVal = css[key];
4800
+ const userVal = readStyleCss(css, key);
4438
4801
  if (!defaultVal?.trim() && !userVal?.trim())
4439
4802
  continue;
4440
4803
  for (const s of selList) {
@@ -4446,6 +4809,10 @@ class TextareaFieldTemplateComponent {
4446
4809
  lines.push(`${selector} { ${defaultVal} }`);
4447
4810
  if (userVal?.trim())
4448
4811
  lines.push(`${selector} { ${userVal} }`);
4812
+ if (userVal?.trim() && el === 'Descrizione') {
4813
+ if (cssSetsTop(userVal))
4814
+ lines.push(this.getSelector(uid, el, state, s + LABEL_FLOATING_SUFFIX, sub) + ' { top: 0; }');
4815
+ }
4449
4816
  if (el === 'Container') {
4450
4817
  const outlineSel = this.getOutlineSelector(uid, state);
4451
4818
  if (outlineSel) {
@@ -4528,7 +4895,7 @@ class TextareaFieldTemplateComponent {
4528
4895
  }
4529
4896
  }
4530
4897
  TextareaFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextareaFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4531
- TextareaFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, usesOnChanges: true, ngImport: i0, template: "<div [id]=\"fieldUid\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <tmw-icon class=\"mat-icon\" matPrefix\r\n *ngIf=\"field.IconName && field.IconPosition !== TextareaFieldIconPositionEnum.Destra\"\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <textarea\r\n class=\"pt-2 mt-2\"\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [placeholder]=\"field.Description\"\r\n [rows]=\"field.Rows\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"field.Readonly\"\r\n [required]=\"field.Required\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onRecordValueChange()\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched &&\r\n !field.Readonly\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\" matSuffix\r\n *ngIf=\"field.IconName && field.IconPosition === TextareaFieldIconPositionEnum.Destra\"\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <tmw-icon class=\"mat-icon\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"record[field.Name]\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["input.ng-touched.ng-invalid,input.ng-dirty.ng-invalid{border:red 2px solid!important}::ng-deep .mat-input-element{background-color:#fff}::ng-deep .mat-form-field-label{font-size:x-large}::ng-deep textarea#mat-input-50{min-height:55px}::ng-deep label#mat-form-field-label-133{padding-top:7px}.keyboard_speaking{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }] });
4898
+ TextareaFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, viewQueries: [{ propertyName: "formField", first: true, predicate: MatFormField, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"fieldUid\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <tmw-icon class=\"mat-icon\" matPrefix\r\n *ngIf=\"field.IconName && field.IconPosition !== TextareaFieldIconPositionEnum.Destra\"\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <textarea\r\n class=\"pt-2 mt-2\"\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [placeholder]=\"field.Description\"\r\n [rows]=\"field.Rows\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"field.Readonly\"\r\n [required]=\"field.Required\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onRecordValueChange()\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched &&\r\n !field.Readonly\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\" matSuffix\r\n *ngIf=\"field.IconName && field.IconPosition === TextareaFieldIconPositionEnum.Destra\"\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <tmw-icon class=\"mat-icon\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"record[field.Name]\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["input.ng-touched.ng-invalid,input.ng-dirty.ng-invalid{border:red 2px solid!important}::ng-deep .mat-input-element{background-color:#fff}::ng-deep .mat-form-field-label{font-size:x-large}::ng-deep textarea#mat-input-50{min-height:55px}::ng-deep label#mat-form-field-label-133{padding-top:7px}.keyboard_speaking{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }] });
4532
4899
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextareaFieldTemplateComponent, decorators: [{
4533
4900
  type: Component,
4534
4901
  args: [{ selector: 'textarea-field-template', template: "<div [id]=\"fieldUid\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <tmw-icon class=\"mat-icon\" matPrefix\r\n *ngIf=\"field.IconName && field.IconPosition !== TextareaFieldIconPositionEnum.Destra\"\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <textarea\r\n class=\"pt-2 mt-2\"\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [placeholder]=\"field.Description\"\r\n [rows]=\"field.Rows\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"field.Readonly\"\r\n [required]=\"field.Required\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onRecordValueChange()\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched &&\r\n !field.Readonly\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\" matSuffix\r\n *ngIf=\"field.IconName && field.IconPosition === TextareaFieldIconPositionEnum.Destra\"\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <tmw-icon class=\"mat-icon\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"record[field.Name]\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["input.ng-touched.ng-invalid,input.ng-dirty.ng-invalid{border:red 2px solid!important}::ng-deep .mat-input-element{background-color:#fff}::ng-deep .mat-form-field-label{font-size:x-large}::ng-deep textarea#mat-input-50{min-height:55px}::ng-deep label#mat-form-field-label-133{padding-top:7px}.keyboard_speaking{color:red}\n"] }]
@@ -4542,6 +4909,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4542
4909
  type: Input
4543
4910
  }], styleVersion: [{
4544
4911
  type: Input
4912
+ }], formField: [{
4913
+ type: ViewChild,
4914
+ args: [MatFormField]
4545
4915
  }], forceState: [{
4546
4916
  type: Input
4547
4917
  }], recordChange: [{
@@ -4565,6 +4935,9 @@ const ELEMENT_SELECTORS$6 = {
4565
4935
  Container: ' .mat-mdc-text-field-wrapper',
4566
4936
  Input: ' .mat-mdc-form-field-infix',
4567
4937
  Descrizione: ' label.mat-mdc-floating-label',
4938
+ // Descrizione: grafica base della label, sempre valida. Sollevata (virtuale, salvata dentro
4939
+ // Descrizione): override quando è sul bordo
4940
+ DescrizioneSollevata: ' label.mat-mdc-floating-label' + LABEL_FLOATING_SUFFIX,
4568
4941
  Icona: [' .mat-mdc-form-field-icon-prefix', ' .mat-mdc-form-field-icon-suffix'],
4569
4942
  Errore: ' mat-error',
4570
4943
  };
@@ -4590,6 +4963,7 @@ class NumericFieldTemplateComponent {
4590
4963
  this.isDirty = false;
4591
4964
  this.styleEl = null;
4592
4965
  this.statusSub = null;
4966
+ this.notchObserver = null;
4593
4967
  }
4594
4968
  ngOnInit() {
4595
4969
  this.fieldUid = 'nf-' + Math.random().toString(36).slice(2, 10);
@@ -4612,6 +4986,9 @@ class NumericFieldTemplateComponent {
4612
4986
  if (changes['forceState']) {
4613
4987
  this.updateStateClasses();
4614
4988
  }
4989
+ if (changes['styleVersion'] || changes['forceState']) {
4990
+ refreshOutlineNotch(this.formField);
4991
+ }
4615
4992
  if (changes['record'] != undefined && changes['record'].firstChange == false
4616
4993
  && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
4617
4994
  this.record = changes['record'].currentValue;
@@ -4619,7 +4996,11 @@ class NumericFieldTemplateComponent {
4619
4996
  this.updateStateClasses();
4620
4997
  }
4621
4998
  }
4999
+ ngAfterViewInit() {
5000
+ this.notchObserver = watchOutlineNotch(this.formField);
5001
+ }
4622
5002
  ngOnDestroy() {
5003
+ this.notchObserver?.disconnect();
4623
5004
  if (this.styleEl?.parentNode) {
4624
5005
  this.styleEl.parentNode.removeChild(this.styleEl);
4625
5006
  }
@@ -4704,13 +5085,14 @@ class NumericFieldTemplateComponent {
4704
5085
  : 'display: none;'} }`);
4705
5086
  lines.push(`#${uid} .mdc-notched-outline { border: 0; }`);
4706
5087
  lines.push(`#${uid} input.mat-mdc-input-element { color: inherit; }`);
5088
+ lines.push(...buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$6.Descrizione, css));
4707
5089
  for (const el of ELEMENTS$5) {
4708
5090
  const sEntry = ELEMENT_SELECTORS$6[el];
4709
5091
  const selList = Array.isArray(sEntry) ? sEntry : [sEntry];
4710
5092
  for (const state of STATES$7) {
4711
5093
  const key = el + state;
4712
5094
  const defaultVal = DEFAULT_FIELD_STYLES$7[key];
4713
- const userVal = css[key];
5095
+ const userVal = readStyleCss(css, key);
4714
5096
  if (!defaultVal?.trim() && !userVal?.trim())
4715
5097
  continue;
4716
5098
  for (const s of selList) {
@@ -4722,6 +5104,10 @@ class NumericFieldTemplateComponent {
4722
5104
  lines.push(`${selector} { ${defaultVal} }`);
4723
5105
  if (userVal?.trim())
4724
5106
  lines.push(`${selector} { ${userVal} }`);
5107
+ if (userVal?.trim() && el === 'Descrizione') {
5108
+ if (cssSetsTop(userVal))
5109
+ lines.push(this.getSelector(uid, el, state, s + LABEL_FLOATING_SUFFIX, sub) + ' { top: 0; }');
5110
+ }
4725
5111
  if (el === 'Container') {
4726
5112
  const outlineSel = this.getOutlineSelector(uid, state);
4727
5113
  if (outlineSel) {
@@ -4851,7 +5237,7 @@ class NumericFieldTemplateComponent {
4851
5237
  }
4852
5238
  }
4853
5239
  NumericFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4854
- NumericFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, usesOnChanges: true, ngImport: i0, template: "<div [id]=\"fieldUid\" class=\"eqp-nf-wrapper\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\"\r\n [class.has-prefix-icon]=\"field.IconName && field.IconPosition != NumericFieldIconPositionEnum.Destra\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">{{field.Description}}</mat-label>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition != NumericFieldIconPositionEnum.Destra\" matPrefix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput tmwNumericMask [formControlName]=\"field.Name\" [readonly]=\"field.Readonly\"\r\n [required]=\"field.Required\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (blur)=\"onRecordValueChange()\" (ngModelChange)=\"onRecordValueChange()\" (keypress)=\"setDirty()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched && !field.Readonly\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition == NumericFieldIconPositionEnum.Destra\" matSuffix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["::ng-deep .mat-form-field-label{font-size:x-large}::ng-deep .has-prefix-icon:not(.mat-form-field-should-float) .mat-form-field-label,::ng-deep .has-prefix-icon:not(.mat-form-field-should-float) .mdc-floating-label{padding-left:50px}\n"], dependencies: [{ kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6$2.TmwNumericMaskDirective, selector: "[tmwNumericMask]", inputs: ["options"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }] });
5240
+ NumericFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: { field: "field", record: "record", formulaObject: "formulaObject", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, viewQueries: [{ propertyName: "formField", first: true, predicate: MatFormField, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"fieldUid\" class=\"eqp-nf-wrapper\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\"\r\n [class.has-prefix-icon]=\"field.IconName && field.IconPosition != NumericFieldIconPositionEnum.Destra\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">{{field.Description}}</mat-label>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition != NumericFieldIconPositionEnum.Destra\" matPrefix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput tmwNumericMask [formControlName]=\"field.Name\" [readonly]=\"field.Readonly\"\r\n [required]=\"field.Required\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (blur)=\"onRecordValueChange()\" (ngModelChange)=\"onRecordValueChange()\" (keypress)=\"setDirty()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched && !field.Readonly\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition == NumericFieldIconPositionEnum.Destra\" matSuffix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["::ng-deep .mat-form-field-label{font-size:x-large}::ng-deep .has-prefix-icon:not(.mat-form-field-should-float) .mat-form-field-label,::ng-deep .has-prefix-icon:not(.mat-form-field-should-float) .mdc-floating-label{padding-left:50px}\n"], dependencies: [{ kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6$2.TmwNumericMaskDirective, selector: "[tmwNumericMask]", inputs: ["options"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }] });
4855
5241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFieldTemplateComponent, decorators: [{
4856
5242
  type: Component,
4857
5243
  args: [{ selector: 'numeric-field-template', template: "<div [id]=\"fieldUid\" class=\"eqp-nf-wrapper\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\"\r\n [class.has-prefix-icon]=\"field.IconName && field.IconPosition != NumericFieldIconPositionEnum.Destra\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">{{field.Description}}</mat-label>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition != NumericFieldIconPositionEnum.Destra\" matPrefix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput tmwNumericMask [formControlName]=\"field.Name\" [readonly]=\"field.Readonly\"\r\n [required]=\"field.Required\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (blur)=\"onRecordValueChange()\" (ngModelChange)=\"onRecordValueChange()\" (keypress)=\"setDirty()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched && !field.Readonly\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"field.IconName && field.IconPosition == NumericFieldIconPositionEnum.Destra\" matSuffix\r\n [name]=\"field.IconName\">\r\n </tmw-icon>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["::ng-deep .mat-form-field-label{font-size:x-large}::ng-deep .has-prefix-icon:not(.mat-form-field-should-float) .mat-form-field-label,::ng-deep .has-prefix-icon:not(.mat-form-field-should-float) .mdc-floating-label{padding-left:50px}\n"] }]
@@ -4865,6 +5251,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4865
5251
  type: Input
4866
5252
  }], styleVersion: [{
4867
5253
  type: Input
5254
+ }], formField: [{
5255
+ type: ViewChild,
5256
+ args: [MatFormField]
4868
5257
  }], forceState: [{
4869
5258
  type: Input
4870
5259
  }], recordChange: [{
@@ -4889,6 +5278,8 @@ var ListPresentationEnum;
4889
5278
  const ELEMENT_SELECTORS_COMBO = {
4890
5279
  Container: ' tmw-select .tmw-select-field',
4891
5280
  Label: ' tmw-select .tmw-select-label',
5281
+ // Label: grafica base, sempre valida. LabelSollevata (virtuale, salvata dentro Label): override sul bordo
5282
+ LabelSollevata: ' tmw-select .tmw-select-field--floated .tmw-select-label',
4892
5283
  CasellaTrigger: ' tmw-select .tmw-select-value',
4893
5284
  BottoneCancella: ' tmw-select .tmw-select-clear',
4894
5285
  };
@@ -4909,7 +5300,7 @@ const ELEMENT_SELECTORS_BUTTON = {
4909
5300
  const STATES$6 = ['Normale', 'Mouseover', 'Selezionato', 'NotValid', 'Readonly'];
4910
5301
  const DEFAULT_FIELD_STYLES$6 = {};
4911
5302
  // Elementi il cui CSS iniettato richiede !important per vincere sulle regole di tmw-select.scss
4912
- const FORCE_IMPORTANT_ELEMENTS = new Set(['Label', 'BottoneCancella']);
5303
+ const FORCE_IMPORTANT_ELEMENTS = new Set(['Label', 'LabelSollevata', 'BottoneCancella']);
4913
5304
  class ListValueFieldTemplateComponent {
4914
5305
  constructor(renderer) {
4915
5306
  this.renderer = renderer;
@@ -4999,7 +5390,7 @@ class ListValueFieldTemplateComponent {
4999
5390
  for (const state of STATES$6) {
5000
5391
  const key = el + state;
5001
5392
  const defaultVal = DEFAULT_FIELD_STYLES$6[key];
5002
- const userVal = css[key];
5393
+ const userVal = readStyleCss(css, key);
5003
5394
  if (!defaultVal?.trim() && !userVal?.trim())
5004
5395
  continue;
5005
5396
  const selector = this.getSelector(uid, state, el, s);
@@ -5011,6 +5402,12 @@ class ListValueFieldTemplateComponent {
5011
5402
  const needsImportant = FORCE_IMPORTANT_ELEMENTS.has(el) || (el === 'Bottone' && state === 'Selezionato');
5012
5403
  const finalVal = needsImportant ? this.forceImportant(userVal) : userVal;
5013
5404
  lines.push(`${selector} { ${finalVal} }`);
5405
+ // Il top della label nel contenitore non deve spostare quella sul bordo
5406
+ if (el === 'Label' && selectors['LabelSollevata'] && cssSetsTop(userVal)) {
5407
+ const floatSel = this.getSelector(uid, state, el, selectors['LabelSollevata']);
5408
+ if (floatSel)
5409
+ lines.push(`${floatSel} { top: 0 !important; }`);
5410
+ }
5014
5411
  // BottoneCancella: l'icona è un <svg> con fill legato a --tmw-select-clear-color (non currentColor),
5015
5412
  // quindi "color" non la raggiunge: si estrae il color dichiarato e si inietta come fill sull'svg.
5016
5413
  if (el === 'BottoneCancella') {
@@ -6245,6 +6642,7 @@ const ELEMENT_SELECTORS$3 = {
6245
6642
  Container: ' mat-form-field',
6246
6643
  CasellaSelezione: ' .mat-mdc-text-field-wrapper',
6247
6644
  Descrizione: ' .mdc-floating-label',
6645
+ DescrizioneSollevata: ' .mdc-floating-label' + LABEL_FLOATING_SUFFIX,
6248
6646
  };
6249
6647
  const STATES$3 = ['Normale', 'Mouseover', 'Selezionato', 'NotValid', 'Readonly'];
6250
6648
  const DEFAULT_FIELD_STYLES$3 = {};
@@ -6257,6 +6655,7 @@ class ImageFieldSelectorTemplateComponent {
6257
6655
  this.forceState = null;
6258
6656
  this.recordChange = new EventEmitter();
6259
6657
  this.styleEl = null;
6658
+ this.notchObserver = null;
6260
6659
  }
6261
6660
  ngOnInit() {
6262
6661
  this.fieldUid = 'isf-' + Math.random().toString(36).slice(2, 10);
@@ -6274,13 +6673,20 @@ class ImageFieldSelectorTemplateComponent {
6274
6673
  if (changes['forceState']) {
6275
6674
  this.updateStateClasses();
6276
6675
  }
6676
+ if (changes['styleVersion'] || changes['forceState']) {
6677
+ refreshOutlineNotch(this.formField);
6678
+ }
6277
6679
  if (changes['record'] && !changes['record'].firstChange &&
6278
6680
  JSON.stringify(changes['record'].currentValue) !== JSON.stringify(changes['record'].previousValue)) {
6279
6681
  this.record = changes['record'].currentValue;
6280
6682
  this.updateField();
6281
6683
  }
6282
6684
  }
6685
+ ngAfterViewInit() {
6686
+ this.notchObserver = watchOutlineNotch(this.formField);
6687
+ }
6283
6688
  ngOnDestroy() {
6689
+ this.notchObserver?.disconnect();
6284
6690
  if (this.styleEl?.parentNode) {
6285
6691
  this.styleEl.parentNode.removeChild(this.styleEl);
6286
6692
  }
@@ -6348,14 +6754,14 @@ class ImageFieldSelectorTemplateComponent {
6348
6754
  this.styleEl.textContent = rules;
6349
6755
  }
6350
6756
  buildCssRules(uid, css) {
6351
- const lines = [];
6757
+ const lines = buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$3.Descrizione, css);
6352
6758
  // Elementi scoped da #uid (interni al mat-form-field)
6353
6759
  for (const el of Object.keys(ELEMENT_SELECTORS$3)) {
6354
6760
  const s = ELEMENT_SELECTORS$3[el];
6355
6761
  for (const state of STATES$3) {
6356
6762
  const key = el + state;
6357
6763
  const defaultVal = DEFAULT_FIELD_STYLES$3[key];
6358
- const userVal = css[key];
6764
+ const userVal = readStyleCss(css, key);
6359
6765
  if (!defaultVal?.trim() && !userVal?.trim())
6360
6766
  continue;
6361
6767
  const selector = this.getSelector(uid, state, el, s);
@@ -6365,6 +6771,11 @@ class ImageFieldSelectorTemplateComponent {
6365
6771
  lines.push(`${selector} { ${defaultVal} }`);
6366
6772
  if (userVal?.trim()) {
6367
6773
  lines.push(`${selector} { ${userVal} }`);
6774
+ if (el === 'Descrizione' && cssSetsTop(userVal)) {
6775
+ const floatSel = this.getSelector(uid, state, el, s + LABEL_FLOATING_SUFFIX);
6776
+ if (floatSel)
6777
+ lines.push(`${floatSel} { top: 0; }`);
6778
+ }
6368
6779
  // CasellaSelezione: inietta anche sul testo selezionato per color/font
6369
6780
  if (el === 'CasellaSelezione') {
6370
6781
  const textSel = this.getSelector(uid, state, el, ' .mat-mdc-select-value');
@@ -6462,7 +6873,7 @@ class ImageFieldSelectorTemplateComponent {
6462
6873
  }
6463
6874
  }
6464
6875
  ImageFieldSelectorTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImageFieldSelectorTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
6465
- ImageFieldSelectorTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImageFieldSelectorTemplateComponent, selector: "image-field-selector-template", inputs: { record: "record", formulaObject: "formulaObject", field: "field", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"{{fieldUid}}\">\r\n\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">{{field.Description}}</mat-label>\r\n\r\n <!-- Mat-Select SINGOLA -->\r\n <mat-select *ngIf=\"!field.IsMultiChoiche\" class=\"imageFieldSelectorImages\" [formControlName]=\"field.Name\"\r\n [required]=\"field.Required\" [(ngModel)]=\"transformedRecord\" (ngModelChange)=\"onRecordValueChange($event)\"\r\n [panelClass]=\"fieldUid\">\r\n <mat-option *ngFor=\"let attachment of field.AttachmentList\" [value]=\"attachment.ID\">\r\n <img src='data:image/{{ToLowerCase(attachment.FileExtension)}};base64,{{attachment.FileDataBase64}}' [height]=\"attachment.ResizedImageHeightPx != null ? attachment.ResizedImageHeightPx : 128\">\r\n <span>{{ attachment.ButtonKey }}</span>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <!-- Mat-Select MULTIPLA -->\r\n <mat-select *ngIf=\"field.IsMultiChoiche\" class=\"imageFieldSelectorImages\" [formControlName]=\"field.Name\"\r\n [required]=\"field.Required\" [(ngModel)]=\"transformedRecord\" (ngModelChange)=\"onRecordValueChange($event)\" multiple\r\n [panelClass]=\"fieldUid\">\r\n <mat-option *ngFor=\"let attachment of field.AttachmentList\" [value]=\"attachment.ID\">\r\n <img src='data:image/{{ToLowerCase(attachment.FileExtension)}};base64,{{attachment.FileDataBase64}}' [height]=\"attachment.ResizedImageHeightPx != null ? attachment.ResizedImageHeightPx : 128\">\r\n <span>{{ attachment.ButtonKey }}</span>\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n\r\n</div>\r\n", styles: [".mdc-list-item__primary-text{margin-right:50px}\n"], dependencies: [{ kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i4$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
6876
+ ImageFieldSelectorTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImageFieldSelectorTemplateComponent, selector: "image-field-selector-template", inputs: { record: "record", formulaObject: "formulaObject", field: "field", inConfig: "inConfig", styleVersion: "styleVersion", forceState: "forceState" }, outputs: { recordChange: "recordChange" }, viewQueries: [{ propertyName: "formField", first: true, predicate: MatFormField, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"{{fieldUid}}\">\r\n\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">{{field.Description}}</mat-label>\r\n\r\n <!-- Mat-Select SINGOLA -->\r\n <mat-select *ngIf=\"!field.IsMultiChoiche\" class=\"imageFieldSelectorImages\" [formControlName]=\"field.Name\"\r\n [required]=\"field.Required\" [(ngModel)]=\"transformedRecord\" (ngModelChange)=\"onRecordValueChange($event)\"\r\n [panelClass]=\"fieldUid\">\r\n <mat-option *ngFor=\"let attachment of field.AttachmentList\" [value]=\"attachment.ID\">\r\n <img src='data:image/{{ToLowerCase(attachment.FileExtension)}};base64,{{attachment.FileDataBase64}}' [height]=\"attachment.ResizedImageHeightPx != null ? attachment.ResizedImageHeightPx : 128\">\r\n <span>{{ attachment.ButtonKey }}</span>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <!-- Mat-Select MULTIPLA -->\r\n <mat-select *ngIf=\"field.IsMultiChoiche\" class=\"imageFieldSelectorImages\" [formControlName]=\"field.Name\"\r\n [required]=\"field.Required\" [(ngModel)]=\"transformedRecord\" (ngModelChange)=\"onRecordValueChange($event)\" multiple\r\n [panelClass]=\"fieldUid\">\r\n <mat-option *ngFor=\"let attachment of field.AttachmentList\" [value]=\"attachment.ID\">\r\n <img src='data:image/{{ToLowerCase(attachment.FileExtension)}};base64,{{attachment.FileDataBase64}}' [height]=\"attachment.ResizedImageHeightPx != null ? attachment.ResizedImageHeightPx : 128\">\r\n <span>{{ attachment.ButtonKey }}</span>\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n\r\n</div>\r\n", styles: [".mdc-list-item__primary-text{margin-right:50px}\n"], dependencies: [{ kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i4$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
6466
6877
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImageFieldSelectorTemplateComponent, decorators: [{
6467
6878
  type: Component,
6468
6879
  args: [{ selector: 'image-field-selector-template', template: "<div id=\"{{fieldUid}}\">\r\n\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\" appearance=\"outline\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">{{field.Description}}</mat-label>\r\n\r\n <!-- Mat-Select SINGOLA -->\r\n <mat-select *ngIf=\"!field.IsMultiChoiche\" class=\"imageFieldSelectorImages\" [formControlName]=\"field.Name\"\r\n [required]=\"field.Required\" [(ngModel)]=\"transformedRecord\" (ngModelChange)=\"onRecordValueChange($event)\"\r\n [panelClass]=\"fieldUid\">\r\n <mat-option *ngFor=\"let attachment of field.AttachmentList\" [value]=\"attachment.ID\">\r\n <img src='data:image/{{ToLowerCase(attachment.FileExtension)}};base64,{{attachment.FileDataBase64}}' [height]=\"attachment.ResizedImageHeightPx != null ? attachment.ResizedImageHeightPx : 128\">\r\n <span>{{ attachment.ButtonKey }}</span>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <!-- Mat-Select MULTIPLA -->\r\n <mat-select *ngIf=\"field.IsMultiChoiche\" class=\"imageFieldSelectorImages\" [formControlName]=\"field.Name\"\r\n [required]=\"field.Required\" [(ngModel)]=\"transformedRecord\" (ngModelChange)=\"onRecordValueChange($event)\" multiple\r\n [panelClass]=\"fieldUid\">\r\n <mat-option *ngFor=\"let attachment of field.AttachmentList\" [value]=\"attachment.ID\">\r\n <img src='data:image/{{ToLowerCase(attachment.FileExtension)}};base64,{{attachment.FileDataBase64}}' [height]=\"attachment.ResizedImageHeightPx != null ? attachment.ResizedImageHeightPx : 128\">\r\n <span>{{ attachment.ButtonKey }}</span>\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n\r\n</div>\r\n", styles: [".mdc-list-item__primary-text{margin-right:50px}\n"] }]
@@ -6476,6 +6887,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
6476
6887
  type: Input
6477
6888
  }], styleVersion: [{
6478
6889
  type: Input
6890
+ }], formField: [{
6891
+ type: ViewChild,
6892
+ args: [MatFormField]
6479
6893
  }], forceState: [{
6480
6894
  type: Input
6481
6895
  }], recordChange: [{
@@ -9609,10 +10023,10 @@ class GraphComponent {
9609
10023
  }
9610
10024
  }
9611
10025
  GraphComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, deps: [{ token: i4.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
9612
- GraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphComponent, selector: "graph", inputs: { data: "data", title: "title" }, host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.CanvasJSStockChart, selector: "canvasjs-stockchart", inputs: ["options", "styles"], outputs: ["stockChartInstance"] }] });
10026
+ GraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphComponent, selector: "graph", inputs: { data: "data", title: "title" }, host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.CanvasJSStockChart, selector: "canvasjs-stockchart", inputs: ["options", "styles"], outputs: ["stockChartInstance"] }] });
9613
10027
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, decorators: [{
9614
10028
  type: Component,
9615
- args: [{ selector: 'graph', template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>" }]
10029
+ args: [{ selector: 'graph', template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>" }]
9616
10030
  }], ctorParameters: function () { return [{ type: i4.DatePipe }]; }, propDecorators: { onResize: [{
9617
10031
  type: HostListener,
9618
10032
  args: ['window:resize', ['$event']]
@@ -10620,10 +11034,10 @@ class ListViewFormRecordComponent {
10620
11034
  }
10621
11035
  }
10622
11036
  ListViewFormRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, deps: [{ token: UtilityHelperService }, { token: i0.ChangeDetectorRef }, { token: i1$3.MatDialog }, { token: i3$4.Router }, { token: dbDateService }, { token: i4.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
10623
- ListViewFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: { configurations: "configurations", compileConfigurations: "compileConfigurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", orgaID: "orgaID", form: "form", defaultListViewFunction: "defaultListViewFunction", externalButtons: "externalButtons", actionButtons: "actionButtons", onlyView: "onlyView", records: "records", highlightFilter: "highlightFilter", QueryEditorComponent: "QueryEditorComponent", formulaObject: "formulaObject", contestualizationParams: "contestualizationParams" }, outputs: { onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent", dragStarted: "dragStarted", dragReleased: "dragReleased", out: "out", fireTrigger: "fireTrigger", clickDragIndicator: "clickDragIndicator" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }, { propertyName: "openAddDialog", first: true, predicate: ["openAddDialog"], descendants: true }, { propertyName: "openGraphDialog", first: true, predicate: ["openGraphDialog"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"this.configurations.showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"this.configurations.showTitle && loadedform\">Modulo {{ form.Name }} </mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n\r\n <span *ngIf=\"visibleActionButtons.length > 0\">\r\n <button \r\n *ngFor=\"let actionButton in visibleActionButtons\" (click)=\"generateAction(actionButton)\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"actionButton.Icon\" [name]=\"actionButton.Icon\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{actionButton.label}}</span>\r\n </button>\r\n </span> \r\n\r\n <button \r\n *ngIf=\"isListView\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openTabellar()\">\r\n <tmw-icon class=\"mat-icon\" name=\"table\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Tabellare</span>\r\n </button>\r\n\r\n <button \r\n *ngIf=\"isTabellar\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openListView()\">\r\n <tmw-icon class=\"mat-icon\" name=\"list\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Lista</span>\r\n </button> \r\n\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAll()\"\r\n *ngIf=\"isListView\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!isFullOpened\" name=\"chevron-down\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"!isFullOpened\">Apri tutto</span>\r\n\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"isFullOpened && isListView\" name=\"chevron-up\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"isFullOpened\">Chiudi tutto</span>\r\n </button> \r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"chart-pie\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n\r\n <div *ngIf=\"isTabellar\">\r\n \r\n <hlist-form-record\r\n class=\"dynamic-module-hlist\"\r\n [formID]=\"formID\"\r\n [formulaObject]=\"formulaObject\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n [configurations]=\"configurations\"\r\n [externalButtons]=\"externalButtons\"\r\n\r\n >\r\n </hlist-form-record>\r\n\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\" [label]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\" [label]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <tmw-select [arrayData]=\"tabellarFields\" [(ngModelInput)]=\"selectedTabellarFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Description'\" [arrayValueProperty]=\"'TextDescription'\" [isMultiSelect]=\"true\" class=\"eqp-form-field\">\r\n </tmw-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedTabellarFields == null || selectedTabellarFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateTabellar()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div> -->\r\n\r\n <tmw-table id=\"tabellar\" class=\"list-form-record-table\" #tableRecords *ngIf=\"tabellarConditionLoaded\" [highlightColor]=\"'transparent'\"\r\n [data]=\"tabellarValues\" [columns]=\"tabellarColumns\" [matPaginatorSize]=\"1000\" [matPaginatorLength]=\"[1000]\"></tmw-table>\r\n </div>\r\n\r\n\r\n\r\n <mat-accordion #doneList=\"cdkDropList\" cdkDropList [cdkDropListConnectedTo]=\"[todoList]\" [hideToggle]=\"test\" [multi]=\"true\" class=\"df-list-view-accordion\" *ngIf=\"isListView\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header \r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title *ngIf=\"configurations.isDraggableListView\">\r\n <!-- <mat-icon (click)=\"onClickDragIndicator([panel.record,form])\" class=\"click-icon\" *ngIf=\"configurations.isDraggableListView\">drag_indicator</mat-icon> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }} -->\r\n <i class=\"drag-icon fa-solid fa-file-export\" (click)=\"onClickDragIndicator([panel.record,form])\" *ngIf=\"configurations.isDraggableListView\"></i> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"!configurations.isDraggableListView\">\r\n {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title> \r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" \r\n mat-icon-button \r\n id=\"p-{{panel.record.ID}}-{{button.icon}}\"\r\n class=\"record-icon {{button.extraClass}}\" \r\n [matTooltip]=\"button.text\"\r\n [hidden]=\"button.icon == 'copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\"\r\n mat-icon-button\r\n class=\"record-icon {{button.extraClass}}\"\r\n [matTooltip]=\"button.text\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n\r\n <lib-single-record\r\n *ngIf=\"libSingleLoaded\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [formulaObject]=\"formulaObject\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n [actionButtons]=\"actionButtons\"\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region DIALOG AGGIUNTA RISPOSTA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [formID]=\"formID\"\r\n [orgaID]=\"orgaID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n [formulaObject]=\"formulaObject\"\r\n [isDuplicate]=\"isDuplicating\"\r\n [showTitle]=\"this.configurations.showTitle\"\r\n \r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG AGGIUNTA RISPOSTA -->\r\n\r\n<!--#region DIALOG VISUALIZZAZIONE GRAFICI -->\r\n<ng-template #openGraphDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true graphCard\">\r\n \r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title>\r\n <div class=\"row eqp-dynamic-module-title graph-header\">\r\n <div class=\"col-md-12\">\r\n <span>Grafico {{ form.Name }} </span>\r\n </div>\r\n </div>\r\n </mat-card-title>\r\n <mat-card-actions>\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"closeGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Indietro</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <graphs\r\n [formID]=\"formID\"\r\n [userID]=\"userID\"\r\n [actionButtons]=\"actionButtons\"\r\n [configurations] = \"outCompileConfigurations\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n >\r\n </graphs>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG VISUALIZZAZIONE GRAFICI -->\r\n", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .df-list-view-accordion .mat-expansion-panel-header-description{flex-grow:0!important}::ng-deep .mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}.drag-icon{cursor:move;margin-right:10px}.click-icon{cursor:pointer;margin-right:10px}table{border-collapse:collapse}table td{border:1px solid black}table th{border:1px solid black;background-color:gray;color:#fff}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "directive", type: i3$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: HListFormRecordComponent, selector: "hlist-form-record", inputs: ["configurations", "endPointConfiguration", "formID", "form", "formulaObject", "externalButtons", "actionButtons"], outputs: ["onViewRecord", "onAddViewEditRecord", "onDeleteRecord", "onAfterDeleteRecord"] }, { kind: "component", type: AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: SingleRecordComponent, selector: "lib-single-record", inputs: ["endPointConfiguration", "record", "formulaObject", "pageState", "userID", "form", "showBackButton", "outCompileConfigurations", "onlyView", "actionButtons", "QueryEditorComponent"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger"] }, { kind: "component", type: GraphsComponent, selector: "graphs", inputs: ["configurations", "endPointConfiguration", "userID", "formID", "form", "actionButtons"], outputs: ["fireTrigger"] }] });
11037
+ ListViewFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: { configurations: "configurations", compileConfigurations: "compileConfigurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", orgaID: "orgaID", form: "form", defaultListViewFunction: "defaultListViewFunction", externalButtons: "externalButtons", actionButtons: "actionButtons", onlyView: "onlyView", records: "records", highlightFilter: "highlightFilter", QueryEditorComponent: "QueryEditorComponent", formulaObject: "formulaObject", contestualizationParams: "contestualizationParams" }, outputs: { onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent", dragStarted: "dragStarted", dragReleased: "dragReleased", out: "out", fireTrigger: "fireTrigger", clickDragIndicator: "clickDragIndicator" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }, { propertyName: "openAddDialog", first: true, predicate: ["openAddDialog"], descendants: true }, { propertyName: "openGraphDialog", first: true, predicate: ["openGraphDialog"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"this.configurations.showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"this.configurations.showTitle && loadedform\">Modulo {{ form.Name }} <span class=\"answer-number\">{{configurations.values.length}}</span></mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n\r\n <span *ngIf=\"visibleActionButtons.length > 0\">\r\n <button \r\n *ngFor=\"let actionButton in visibleActionButtons\" (click)=\"generateAction(actionButton)\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"actionButton.Icon\" [name]=\"actionButton.Icon\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{actionButton.label}}</span>\r\n </button>\r\n </span> \r\n\r\n <button \r\n *ngIf=\"isListView\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openTabellar()\">\r\n <tmw-icon class=\"mat-icon\" name=\"table\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Tabellare</span>\r\n </button>\r\n\r\n <button \r\n *ngIf=\"isTabellar\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openListView()\">\r\n <tmw-icon class=\"mat-icon\" name=\"list\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Lista</span>\r\n </button> \r\n\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAll()\"\r\n *ngIf=\"isListView\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!isFullOpened\" name=\"chevron-down\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"!isFullOpened\">Apri tutto</span>\r\n\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"isFullOpened && isListView\" name=\"chevron-up\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"isFullOpened\">Chiudi tutto</span>\r\n </button> \r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"chart-pie\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n\r\n <div *ngIf=\"isTabellar\">\r\n \r\n <hlist-form-record\r\n class=\"dynamic-module-hlist\"\r\n [formID]=\"formID\"\r\n [formulaObject]=\"formulaObject\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n [configurations]=\"configurations\"\r\n [externalButtons]=\"externalButtons\"\r\n\r\n >\r\n </hlist-form-record>\r\n\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\" [label]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\" [label]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <tmw-select [arrayData]=\"tabellarFields\" [(ngModelInput)]=\"selectedTabellarFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Description'\" [arrayValueProperty]=\"'TextDescription'\" [isMultiSelect]=\"true\" class=\"eqp-form-field\">\r\n </tmw-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedTabellarFields == null || selectedTabellarFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateTabellar()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div> -->\r\n\r\n <tmw-table id=\"tabellar\" class=\"list-form-record-table\" #tableRecords *ngIf=\"tabellarConditionLoaded\" [highlightColor]=\"'transparent'\"\r\n [data]=\"tabellarValues\" [columns]=\"tabellarColumns\" [matPaginatorSize]=\"1000\" [matPaginatorLength]=\"[1000]\"></tmw-table>\r\n </div>\r\n\r\n\r\n\r\n <mat-accordion #doneList=\"cdkDropList\" cdkDropList [cdkDropListConnectedTo]=\"[todoList]\" [hideToggle]=\"test\" [multi]=\"true\" class=\"df-list-view-accordion\" *ngIf=\"isListView\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header \r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title *ngIf=\"configurations.isDraggableListView\">\r\n <!-- <mat-icon (click)=\"onClickDragIndicator([panel.record,form])\" class=\"click-icon\" *ngIf=\"configurations.isDraggableListView\">drag_indicator</mat-icon> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }} -->\r\n <i class=\"drag-icon fa-solid fa-file-export\" (click)=\"onClickDragIndicator([panel.record,form])\" *ngIf=\"configurations.isDraggableListView\"></i> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"!configurations.isDraggableListView\">\r\n {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title> \r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" \r\n mat-icon-button \r\n id=\"p-{{panel.record.ID}}-{{button.icon}}\"\r\n class=\"record-icon {{button.extraClass}}\" \r\n [matTooltip]=\"button.text\"\r\n [hidden]=\"button.icon == 'copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\"\r\n mat-icon-button\r\n class=\"record-icon {{button.extraClass}}\"\r\n [matTooltip]=\"button.text\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n\r\n <lib-single-record\r\n *ngIf=\"libSingleLoaded\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [formulaObject]=\"formulaObject\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n [actionButtons]=\"actionButtons\"\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region DIALOG AGGIUNTA RISPOSTA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [formID]=\"formID\"\r\n [orgaID]=\"orgaID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n [formulaObject]=\"formulaObject\"\r\n [isDuplicate]=\"isDuplicating\"\r\n [showTitle]=\"this.configurations.showTitle\"\r\n \r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG AGGIUNTA RISPOSTA -->\r\n\r\n<!--#region DIALOG VISUALIZZAZIONE GRAFICI -->\r\n<ng-template #openGraphDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true graphCard\">\r\n \r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title>\r\n <div class=\"row eqp-dynamic-module-title graph-header\">\r\n <div class=\"col-md-12\">\r\n <span>Grafico {{ form.Name }} </span>\r\n </div>\r\n </div>\r\n </mat-card-title>\r\n <mat-card-actions>\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"closeGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Indietro</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <graphs\r\n [formID]=\"formID\"\r\n [userID]=\"userID\"\r\n [actionButtons]=\"actionButtons\"\r\n [configurations] = \"outCompileConfigurations\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n >\r\n </graphs>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG VISUALIZZAZIONE GRAFICI -->\r\n", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .df-list-view-accordion .mat-expansion-panel-header-description{flex-grow:0!important}::ng-deep .mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}.drag-icon{cursor:move;margin-right:10px}.click-icon{cursor:pointer;margin-right:10px}table{border-collapse:collapse}table td{border:1px solid black}table th{border:1px solid black;background-color:gray;color:#fff}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "directive", type: i3$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "collapsibleSearch", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "customButtonsLeft", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: HListFormRecordComponent, selector: "hlist-form-record", inputs: ["configurations", "endPointConfiguration", "formID", "form", "formulaObject", "externalButtons", "actionButtons"], outputs: ["onViewRecord", "onAddViewEditRecord", "onDeleteRecord", "onAfterDeleteRecord"] }, { kind: "component", type: AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: SingleRecordComponent, selector: "lib-single-record", inputs: ["endPointConfiguration", "record", "formulaObject", "pageState", "userID", "form", "showBackButton", "outCompileConfigurations", "onlyView", "actionButtons", "QueryEditorComponent"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger"] }, { kind: "component", type: GraphsComponent, selector: "graphs", inputs: ["configurations", "endPointConfiguration", "userID", "formID", "form", "actionButtons"], outputs: ["fireTrigger"] }] });
10624
11038
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, decorators: [{
10625
11039
  type: Component,
10626
- args: [{ selector: "list-view-form-record", template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"this.configurations.showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"this.configurations.showTitle && loadedform\">Modulo {{ form.Name }} </mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n\r\n <span *ngIf=\"visibleActionButtons.length > 0\">\r\n <button \r\n *ngFor=\"let actionButton in visibleActionButtons\" (click)=\"generateAction(actionButton)\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"actionButton.Icon\" [name]=\"actionButton.Icon\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{actionButton.label}}</span>\r\n </button>\r\n </span> \r\n\r\n <button \r\n *ngIf=\"isListView\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openTabellar()\">\r\n <tmw-icon class=\"mat-icon\" name=\"table\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Tabellare</span>\r\n </button>\r\n\r\n <button \r\n *ngIf=\"isTabellar\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openListView()\">\r\n <tmw-icon class=\"mat-icon\" name=\"list\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Lista</span>\r\n </button> \r\n\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAll()\"\r\n *ngIf=\"isListView\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!isFullOpened\" name=\"chevron-down\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"!isFullOpened\">Apri tutto</span>\r\n\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"isFullOpened && isListView\" name=\"chevron-up\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"isFullOpened\">Chiudi tutto</span>\r\n </button> \r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"chart-pie\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n\r\n <div *ngIf=\"isTabellar\">\r\n \r\n <hlist-form-record\r\n class=\"dynamic-module-hlist\"\r\n [formID]=\"formID\"\r\n [formulaObject]=\"formulaObject\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n [configurations]=\"configurations\"\r\n [externalButtons]=\"externalButtons\"\r\n\r\n >\r\n </hlist-form-record>\r\n\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\" [label]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\" [label]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <tmw-select [arrayData]=\"tabellarFields\" [(ngModelInput)]=\"selectedTabellarFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Description'\" [arrayValueProperty]=\"'TextDescription'\" [isMultiSelect]=\"true\" class=\"eqp-form-field\">\r\n </tmw-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedTabellarFields == null || selectedTabellarFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateTabellar()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div> -->\r\n\r\n <tmw-table id=\"tabellar\" class=\"list-form-record-table\" #tableRecords *ngIf=\"tabellarConditionLoaded\" [highlightColor]=\"'transparent'\"\r\n [data]=\"tabellarValues\" [columns]=\"tabellarColumns\" [matPaginatorSize]=\"1000\" [matPaginatorLength]=\"[1000]\"></tmw-table>\r\n </div>\r\n\r\n\r\n\r\n <mat-accordion #doneList=\"cdkDropList\" cdkDropList [cdkDropListConnectedTo]=\"[todoList]\" [hideToggle]=\"test\" [multi]=\"true\" class=\"df-list-view-accordion\" *ngIf=\"isListView\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header \r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title *ngIf=\"configurations.isDraggableListView\">\r\n <!-- <mat-icon (click)=\"onClickDragIndicator([panel.record,form])\" class=\"click-icon\" *ngIf=\"configurations.isDraggableListView\">drag_indicator</mat-icon> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }} -->\r\n <i class=\"drag-icon fa-solid fa-file-export\" (click)=\"onClickDragIndicator([panel.record,form])\" *ngIf=\"configurations.isDraggableListView\"></i> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"!configurations.isDraggableListView\">\r\n {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title> \r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" \r\n mat-icon-button \r\n id=\"p-{{panel.record.ID}}-{{button.icon}}\"\r\n class=\"record-icon {{button.extraClass}}\" \r\n [matTooltip]=\"button.text\"\r\n [hidden]=\"button.icon == 'copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\"\r\n mat-icon-button\r\n class=\"record-icon {{button.extraClass}}\"\r\n [matTooltip]=\"button.text\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n\r\n <lib-single-record\r\n *ngIf=\"libSingleLoaded\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [formulaObject]=\"formulaObject\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n [actionButtons]=\"actionButtons\"\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region DIALOG AGGIUNTA RISPOSTA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [formID]=\"formID\"\r\n [orgaID]=\"orgaID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n [formulaObject]=\"formulaObject\"\r\n [isDuplicate]=\"isDuplicating\"\r\n [showTitle]=\"this.configurations.showTitle\"\r\n \r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG AGGIUNTA RISPOSTA -->\r\n\r\n<!--#region DIALOG VISUALIZZAZIONE GRAFICI -->\r\n<ng-template #openGraphDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true graphCard\">\r\n \r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title>\r\n <div class=\"row eqp-dynamic-module-title graph-header\">\r\n <div class=\"col-md-12\">\r\n <span>Grafico {{ form.Name }} </span>\r\n </div>\r\n </div>\r\n </mat-card-title>\r\n <mat-card-actions>\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"closeGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Indietro</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <graphs\r\n [formID]=\"formID\"\r\n [userID]=\"userID\"\r\n [actionButtons]=\"actionButtons\"\r\n [configurations] = \"outCompileConfigurations\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n >\r\n </graphs>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG VISUALIZZAZIONE GRAFICI -->\r\n", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .df-list-view-accordion .mat-expansion-panel-header-description{flex-grow:0!important}::ng-deep .mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}.drag-icon{cursor:move;margin-right:10px}.click-icon{cursor:pointer;margin-right:10px}table{border-collapse:collapse}table td{border:1px solid black}table th{border:1px solid black;background-color:gray;color:#fff}\n"] }]
11040
+ args: [{ selector: "list-view-form-record", template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"this.configurations.showTitle || defaultListActions.add\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"this.configurations.showTitle && loadedform\">Modulo {{ form.Name }} <span class=\"answer-number\">{{configurations.values.length}}</span></mat-card-title>\r\n <mat-card-actions *ngIf=\"defaultListActions.add || defaultListActions.graphs\">\r\n\r\n <span *ngIf=\"visibleActionButtons.length > 0\">\r\n <button \r\n *ngFor=\"let actionButton in visibleActionButtons\" (click)=\"generateAction(actionButton)\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"actionButton.Icon\" [name]=\"actionButton.Icon\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{actionButton.label}}</span>\r\n </button>\r\n </span> \r\n\r\n <button \r\n *ngIf=\"isListView\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openTabellar()\">\r\n <tmw-icon class=\"mat-icon\" name=\"table\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Tabellare</span>\r\n </button>\r\n\r\n <button \r\n *ngIf=\"isTabellar\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openListView()\">\r\n <tmw-icon class=\"mat-icon\" name=\"list\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Lista</span>\r\n </button> \r\n\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAll()\"\r\n *ngIf=\"isListView\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!isFullOpened\" name=\"chevron-down\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"!isFullOpened\">Apri tutto</span>\r\n\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"isFullOpened && isListView\" name=\"chevron-up\"></tmw-icon>\r\n <span style=\"margin-left: 10px\" *ngIf=\"isFullOpened\">Chiudi tutto</span>\r\n </button> \r\n <button \r\n *ngIf=\"defaultListActions.graphs\"\r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"chart-pie\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafici</span>\r\n </button>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"openAddPopup()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button> \r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n\r\n <div *ngIf=\"isTabellar\">\r\n \r\n <hlist-form-record\r\n class=\"dynamic-module-hlist\"\r\n [formID]=\"formID\"\r\n [formulaObject]=\"formulaObject\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n [configurations]=\"configurations\"\r\n [externalButtons]=\"externalButtons\"\r\n\r\n >\r\n </hlist-form-record>\r\n\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo inizio'\" [label]=\"'Periodo inizio'\"\r\n [(ngModelInput)]=\"minperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div>\r\n <div class=\"col-sm-12 col-md-3\">\r\n <tmw-datetimepicker class=\"date\" [placeholder]=\"'Periodo fine'\" [label]=\"'Periodo fine'\"\r\n [(ngModelInput)]=\"maxperiod\"\r\n [pickerMode]=\"modes.DATEPICKER\" [outputFormat]=\"'DD/MM/YYYY'\" [showSeconds]=\"false\">\r\n </tmw-datetimepicker>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <tmw-select [arrayData]=\"tabellarFields\" [(ngModelInput)]=\"selectedTabellarFields\" [placeholder]=\"'Selezione dei campi'\"\r\n [arrayKeyProperty]=\"'Description'\" [arrayValueProperty]=\"'TextDescription'\" [isMultiSelect]=\"true\" class=\"eqp-form-field\">\r\n </tmw-select>\r\n </div> \r\n <div class=\"col-sm-12 col-md-3 mt-2\">\r\n <button\r\n [disabled]=\"selectedTabellarFields == null || selectedTabellarFields.length == 0\"\r\n class=\"btn btn-graph-generate button-next me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"generateTabellar()\"\r\n >\r\n Genera\r\n </button>\r\n </div> \r\n </div> -->\r\n\r\n <tmw-table id=\"tabellar\" class=\"list-form-record-table\" #tableRecords *ngIf=\"tabellarConditionLoaded\" [highlightColor]=\"'transparent'\"\r\n [data]=\"tabellarValues\" [columns]=\"tabellarColumns\" [matPaginatorSize]=\"1000\" [matPaginatorLength]=\"[1000]\"></tmw-table>\r\n </div>\r\n\r\n\r\n\r\n <mat-accordion #doneList=\"cdkDropList\" cdkDropList [cdkDropListConnectedTo]=\"[todoList]\" [hideToggle]=\"test\" [multi]=\"true\" class=\"df-list-view-accordion\" *ngIf=\"isListView\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n [class]=\"panel.highlighted ? 'dm_panel_highlighted' : '0'\"\r\n >\r\n <mat-expansion-panel-header \r\n (click)=\"togglePanel(panel, panel.record)\">\r\n <mat-panel-title *ngIf=\"configurations.isDraggableListView\">\r\n <!-- <mat-icon (click)=\"onClickDragIndicator([panel.record,form])\" class=\"click-icon\" *ngIf=\"configurations.isDraggableListView\">drag_indicator</mat-icon> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }} -->\r\n <i class=\"drag-icon fa-solid fa-file-export\" (click)=\"onClickDragIndicator([panel.record,form])\" *ngIf=\"configurations.isDraggableListView\"></i> {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"!configurations.isDraggableListView\">\r\n {{ !this.configurations.showTitle ? form.Name : \"\" }} v.{{ panel.record.Version }} - {{ printAdditionalInfo(panel.record) }}\r\n </mat-panel-title> \r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button *ngFor=\"let button of buttons\" \r\n mat-icon-button \r\n id=\"p-{{panel.record.ID}}-{{button.icon}}\"\r\n class=\"record-icon {{button.extraClass}}\" \r\n [matTooltip]=\"button.text\"\r\n [hidden]=\"button.icon == 'copy' && (panels.length == 0 || panel.record.Version != panels[0].record.Version)\"\r\n (click)=\"button.fn(panel,i,$event)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <button *ngFor=\"let button of externalButtons\"\r\n mat-icon-button\r\n class=\"record-icon {{button.extraClass}}\"\r\n [matTooltip]=\"button.text\"\r\n (click)=\"externalCallback($event,button.fn,panel.record)\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"button.icon\"></tmw-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n\r\n <lib-single-record\r\n *ngIf=\"libSingleLoaded\"\r\n [onlyView]=\"onlyView\"\r\n [record] = \"panel.record\" \r\n [formulaObject]=\"formulaObject\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n [actionButtons]=\"actionButtons\"\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region DIALOG AGGIUNTA RISPOSTA -->\r\n<ng-template #openAddDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true\">\r\n <mat-card-content>\r\n\r\n <add-form-record\r\n class=\"dynamic-module-compile\"\r\n [formID]=\"formID\"\r\n [orgaID]=\"orgaID\"\r\n [onlyView]=\"false\"\r\n [record]=\"selectedRecord\"\r\n [formulaObject]=\"formulaObject\"\r\n [isDuplicate]=\"isDuplicating\"\r\n [showTitle]=\"this.configurations.showTitle\"\r\n \r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"compileConfigurations\"\r\n [actionButtons]=\"actionButtons\"\r\n\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"onAddSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAddAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n </add-form-record>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG AGGIUNTA RISPOSTA -->\r\n\r\n<!--#region DIALOG VISUALIZZAZIONE GRAFICI -->\r\n<ng-template #openGraphDialog>\r\n <mat-card class=\"card-default overlay-card card-inmodal-true graphCard\">\r\n \r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title>\r\n <div class=\"row eqp-dynamic-module-title graph-header\">\r\n <div class=\"col-md-12\">\r\n <span>Grafico {{ form.Name }} </span>\r\n </div>\r\n </div>\r\n </mat-card-title>\r\n <mat-card-actions>\r\n <button \r\n class=\"btn btn-primary mr-2\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"closeGraphs()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Indietro</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n <graphs\r\n [formID]=\"formID\"\r\n [userID]=\"userID\"\r\n [actionButtons]=\"actionButtons\"\r\n [configurations] = \"outCompileConfigurations\"\r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n >\r\n </graphs>\r\n\r\n </mat-card-content>\r\n </mat-card>\r\n</ng-template>\r\n<!--#endregion DIALOG VISUALIZZAZIONE GRAFICI -->\r\n", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .df-list-view-accordion .mat-expansion-panel-header-description{flex-grow:0!important}::ng-deep .mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}.drag-icon{cursor:move;margin-right:10px}.click-icon{cursor:pointer;margin-right:10px}table{border-collapse:collapse}table td{border:1px solid black}table th{border:1px solid black;background-color:gray;color:#fff}\n"] }]
10627
11041
  }], ctorParameters: function () { return [{ type: UtilityHelperService }, { type: i0.ChangeDetectorRef }, { type: i1$3.MatDialog }, { type: i3$4.Router }, { type: dbDateService }, { type: i4.DatePipe }]; }, propDecorators: { configurations: [{
10628
11042
  type: Input
10629
11043
  }], compileConfigurations: [{
@@ -12313,7 +12727,7 @@ class FilterFormStatisticComponent {
12313
12727
  }
12314
12728
  }
12315
12729
  FilterFormStatisticComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterFormStatisticComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
12316
- FilterFormStatisticComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FilterFormStatisticComponent, selector: "filter-form-statistic", inputs: { configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", externalButtons: "externalButtons", actionButtons: "actionButtons", formID: "formID", form: "form", record: "record", onlyView: "onlyView", showHiddenFields: "showHiddenFields", defaultListActions: "defaultListActions", filterResultViewMode: "filterResultViewMode", Statistic: "Statistic", numberOfColumns: "numberOfColumns" }, outputs: { fireTrigger: "fireTrigger", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent", afterFilter: "afterFilter", afterOutputExternalFilters: "afterOutputExternalFilters" }, viewQueries: [{ propertyName: "tableOutdated", first: true, predicate: ["tableOutdated"], descendants: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"!showListView\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n </form>\r\n\r\n <div class=\"row mt-2 m-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton)\">\r\n <div class=\"col-sm-12 m-2 text-right\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showListView && showNewSearchButton\" (click)=\"reset()\">\r\n Nuova ricerca\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"!showListView && filterResultViewMode != filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"ApplyFilter()\">\r\n Esegui Filtro\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"filterResultViewMode == filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"outputExternalFilters()\">\r\n Salva modifiche filtro\r\n </button> \r\n </div>\r\n </div>\r\n\r\n <list-view-form-record\r\n *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_LISTVIEW && filterResults != null\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"listViewConfigurations\"\r\n [compileConfigurations]=\"configurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"true\"\r\n [records]=\"filterResults\"\r\n [externalButtons]=\"externalButtons\"\r\n >\r\n </list-view-form-record>\r\n\r\n <div *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_EQPTABLE && filterEqpTableResults != null\" class=\"dynamic-module-tmw-table\">\r\n <tmw-table\r\n\r\n style=\"cursor: pointer\"\r\n #table\r\n emptyTableMessage=\"\"\r\n [data]=\"filterEqpTableResults\"\r\n [columns]=\"columns\"\r\n [exportEqpTable]=\"exportEqpTable\"\r\n\r\n [chooseColumnsToShow]=\"true\"\r\n [switchFilterType]=\"true\"\r\n\r\n [createMatCard]=\"false\"\r\n [disablePageStorageSave]=\"true\"\r\n [isMultiLanguage]=\"true\"\r\n\r\n [matPaginatorCount]=\"filterEqpTableResults != null && filterEqpTableResults.length > 0 ? filterEqpTableResults.length : 0\"\r\n [matPaginatorIndex]=\"pageIndex\"\r\n [matPaginatorSize]=\"pageSize\"\r\n [matPaginatorLength]=\"pageLength\"\r\n >\r\n </tmw-table>\r\n </div> \r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields' let-outdatedfields='outdatedFields'>\r\n <div class=\"row\" *ngIf=\"!showListView\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"(!field.InListView && !showHiddenFields)\"\r\n [ngClass]=\"utilityService.getFieldFilterStyleClass(field, numberOfColumns)\">\r\n <dynamic-module-filter-fix #fieldTemplate [field]=\"field\" [form]=\"form\" [record]=\"record\" [filterResultViewMode]=\"filterResultViewMode\" [Statistic]=\"getStatisticFromFieldName(Statistic?.Statistics,field.Name)\"\r\n (filterChange)=\"onFilterChange($event)\">\r\n </dynamic-module-filter-fix>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"outdatedTableLoaded && outdatedFields != null && outdatedFields.length > 0\">\r\n\r\n <div class=\"outdatedTableContainer\">\r\n\r\n <h2>Filtri Obsoleti</h2>\r\n <p>Sono filtri che sono stati configurati in una versione precedente di questo modulo e poi salvati</p>\r\n\r\n <tmw-table\r\n class=\"outdatedTable\"\r\n style=\"cursor: pointer\"\r\n #tableOutdated\r\n emptyTableMessage=\"\"\r\n [data]=\"outdatedFields\"\r\n [columns]=\"columnsOutdated\"\r\n\r\n [createMatCard]=\"false\"\r\n\r\n [matPaginatorCount]=\"outdatedFields != null && outdatedFields.length > 0 ? outdatedFields.length : 0\"\r\n [matPaginatorIndex]=\"0\"\r\n [matPaginatorSize]=\"5\"\r\n [matPaginatorLength]=\"[5]\"\r\n >\r\n </tmw-table>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".dynamic-module-tmw-table{padding:20px}.outdatedTableContainer{width:100%;display:flex;justify-content:center;align-items:center;flex-flow:column;margin-top:35px}.outdatedTableContainer .outdatedTable{width:80%}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: ["configurations", "compileConfigurations", "endPointConfiguration", "userID", "formID", "orgaID", "form", "defaultListViewFunction", "externalButtons", "actionButtons", "onlyView", "records", "highlightFilter", "QueryEditorComponent", "formulaObject", "contestualizationParams"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "saveRecordEvent", "afterSaveRecordEvent", "dragStarted", "dragReleased", "out", "fireTrigger", "clickDragIndicator"] }, { kind: "component", type: DynamicModuleFilterFixComponent, selector: "dynamic-module-filter-fix", inputs: ["field", "form", "record", "Statistic", "filterResultViewMode"], outputs: ["filterChange"] }] });
12730
+ FilterFormStatisticComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FilterFormStatisticComponent, selector: "filter-form-statistic", inputs: { configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", externalButtons: "externalButtons", actionButtons: "actionButtons", formID: "formID", form: "form", record: "record", onlyView: "onlyView", showHiddenFields: "showHiddenFields", defaultListActions: "defaultListActions", filterResultViewMode: "filterResultViewMode", Statistic: "Statistic", numberOfColumns: "numberOfColumns" }, outputs: { fireTrigger: "fireTrigger", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent", afterFilter: "afterFilter", afterOutputExternalFilters: "afterOutputExternalFilters" }, viewQueries: [{ propertyName: "tableOutdated", first: true, predicate: ["tableOutdated"], descendants: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"!showListView\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n </form>\r\n\r\n <div class=\"row mt-2 m-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton)\">\r\n <div class=\"col-sm-12 m-2 text-right\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showListView && showNewSearchButton\" (click)=\"reset()\">\r\n Nuova ricerca\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"!showListView && filterResultViewMode != filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"ApplyFilter()\">\r\n Esegui Filtro\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"filterResultViewMode == filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"outputExternalFilters()\">\r\n Salva modifiche filtro\r\n </button> \r\n </div>\r\n </div>\r\n\r\n <list-view-form-record\r\n *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_LISTVIEW && filterResults != null\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"listViewConfigurations\"\r\n [compileConfigurations]=\"configurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"true\"\r\n [records]=\"filterResults\"\r\n [externalButtons]=\"externalButtons\"\r\n >\r\n </list-view-form-record>\r\n\r\n <div *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_EQPTABLE && filterEqpTableResults != null\" class=\"dynamic-module-tmw-table\">\r\n <tmw-table\r\n\r\n style=\"cursor: pointer\"\r\n #table\r\n emptyTableMessage=\"\"\r\n [data]=\"filterEqpTableResults\"\r\n [columns]=\"columns\"\r\n [exportEqpTable]=\"exportEqpTable\"\r\n\r\n [chooseColumnsToShow]=\"true\"\r\n [switchFilterType]=\"true\"\r\n\r\n [createMatCard]=\"false\"\r\n [disablePageStorageSave]=\"true\"\r\n [isMultiLanguage]=\"true\"\r\n\r\n [matPaginatorCount]=\"filterEqpTableResults != null && filterEqpTableResults.length > 0 ? filterEqpTableResults.length : 0\"\r\n [matPaginatorIndex]=\"pageIndex\"\r\n [matPaginatorSize]=\"pageSize\"\r\n [matPaginatorLength]=\"pageLength\"\r\n >\r\n </tmw-table>\r\n </div> \r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields' let-outdatedfields='outdatedFields'>\r\n <div class=\"row\" *ngIf=\"!showListView\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"(!field.InListView && !showHiddenFields)\"\r\n [ngClass]=\"utilityService.getFieldFilterStyleClass(field, numberOfColumns)\">\r\n <dynamic-module-filter-fix #fieldTemplate [field]=\"field\" [form]=\"form\" [record]=\"record\" [filterResultViewMode]=\"filterResultViewMode\" [Statistic]=\"getStatisticFromFieldName(Statistic?.Statistics,field.Name)\"\r\n (filterChange)=\"onFilterChange($event)\">\r\n </dynamic-module-filter-fix>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"outdatedTableLoaded && outdatedFields != null && outdatedFields.length > 0\">\r\n\r\n <div class=\"outdatedTableContainer\">\r\n\r\n <h2>Filtri Obsoleti</h2>\r\n <p>Sono filtri che sono stati configurati in una versione precedente di questo modulo e poi salvati</p>\r\n\r\n <tmw-table\r\n class=\"outdatedTable\"\r\n style=\"cursor: pointer\"\r\n #tableOutdated\r\n emptyTableMessage=\"\"\r\n [data]=\"outdatedFields\"\r\n [columns]=\"columnsOutdated\"\r\n\r\n [createMatCard]=\"false\"\r\n\r\n [matPaginatorCount]=\"outdatedFields != null && outdatedFields.length > 0 ? outdatedFields.length : 0\"\r\n [matPaginatorIndex]=\"0\"\r\n [matPaginatorSize]=\"5\"\r\n [matPaginatorLength]=\"[5]\"\r\n >\r\n </tmw-table>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".dynamic-module-tmw-table{padding:20px}.outdatedTableContainer{width:100%;display:flex;justify-content:center;align-items:center;flex-flow:column;margin-top:35px}.outdatedTableContainer .outdatedTable{width:80%}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "collapsibleSearch", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "customButtonsLeft", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: ["configurations", "compileConfigurations", "endPointConfiguration", "userID", "formID", "orgaID", "form", "defaultListViewFunction", "externalButtons", "actionButtons", "onlyView", "records", "highlightFilter", "QueryEditorComponent", "formulaObject", "contestualizationParams"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "saveRecordEvent", "afterSaveRecordEvent", "dragStarted", "dragReleased", "out", "fireTrigger", "clickDragIndicator"] }, { kind: "component", type: DynamicModuleFilterFixComponent, selector: "dynamic-module-filter-fix", inputs: ["field", "form", "record", "Statistic", "filterResultViewMode"], outputs: ["filterChange"] }] });
12317
12731
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterFormStatisticComponent, decorators: [{
12318
12732
  type: Component,
12319
12733
  args: [{ selector: 'filter-form-statistic', template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"!showListView\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n </form>\r\n\r\n <div class=\"row mt-2 m-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton)\">\r\n <div class=\"col-sm-12 m-2 text-right\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showListView && showNewSearchButton\" (click)=\"reset()\">\r\n Nuova ricerca\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"!showListView && filterResultViewMode != filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"ApplyFilter()\">\r\n Esegui Filtro\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"filterResultViewMode == filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"outputExternalFilters()\">\r\n Salva modifiche filtro\r\n </button> \r\n </div>\r\n </div>\r\n\r\n <list-view-form-record\r\n *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_LISTVIEW && filterResults != null\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"listViewConfigurations\"\r\n [compileConfigurations]=\"configurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"true\"\r\n [records]=\"filterResults\"\r\n [externalButtons]=\"externalButtons\"\r\n >\r\n </list-view-form-record>\r\n\r\n <div *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_EQPTABLE && filterEqpTableResults != null\" class=\"dynamic-module-tmw-table\">\r\n <tmw-table\r\n\r\n style=\"cursor: pointer\"\r\n #table\r\n emptyTableMessage=\"\"\r\n [data]=\"filterEqpTableResults\"\r\n [columns]=\"columns\"\r\n [exportEqpTable]=\"exportEqpTable\"\r\n\r\n [chooseColumnsToShow]=\"true\"\r\n [switchFilterType]=\"true\"\r\n\r\n [createMatCard]=\"false\"\r\n [disablePageStorageSave]=\"true\"\r\n [isMultiLanguage]=\"true\"\r\n\r\n [matPaginatorCount]=\"filterEqpTableResults != null && filterEqpTableResults.length > 0 ? filterEqpTableResults.length : 0\"\r\n [matPaginatorIndex]=\"pageIndex\"\r\n [matPaginatorSize]=\"pageSize\"\r\n [matPaginatorLength]=\"pageLength\"\r\n >\r\n </tmw-table>\r\n </div> \r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields' let-outdatedfields='outdatedFields'>\r\n <div class=\"row\" *ngIf=\"!showListView\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"(!field.InListView && !showHiddenFields)\"\r\n [ngClass]=\"utilityService.getFieldFilterStyleClass(field, numberOfColumns)\">\r\n <dynamic-module-filter-fix #fieldTemplate [field]=\"field\" [form]=\"form\" [record]=\"record\" [filterResultViewMode]=\"filterResultViewMode\" [Statistic]=\"getStatisticFromFieldName(Statistic?.Statistics,field.Name)\"\r\n (filterChange)=\"onFilterChange($event)\">\r\n </dynamic-module-filter-fix>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"outdatedTableLoaded && outdatedFields != null && outdatedFields.length > 0\">\r\n\r\n <div class=\"outdatedTableContainer\">\r\n\r\n <h2>Filtri Obsoleti</h2>\r\n <p>Sono filtri che sono stati configurati in una versione precedente di questo modulo e poi salvati</p>\r\n\r\n <tmw-table\r\n class=\"outdatedTable\"\r\n style=\"cursor: pointer\"\r\n #tableOutdated\r\n emptyTableMessage=\"\"\r\n [data]=\"outdatedFields\"\r\n [columns]=\"columnsOutdated\"\r\n\r\n [createMatCard]=\"false\"\r\n\r\n [matPaginatorCount]=\"outdatedFields != null && outdatedFields.length > 0 ? outdatedFields.length : 0\"\r\n [matPaginatorIndex]=\"0\"\r\n [matPaginatorSize]=\"5\"\r\n [matPaginatorLength]=\"[5]\"\r\n >\r\n </tmw-table>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".dynamic-module-tmw-table{padding:20px}.outdatedTableContainer{width:100%;display:flex;justify-content:center;align-items:center;flex-flow:column;margin-top:35px}.outdatedTableContainer .outdatedTable{width:80%}\n"] }]
@@ -13156,122 +13570,180 @@ class DynamicModuleConfiguratorConfig {
13156
13570
  }
13157
13571
 
13158
13572
  /**
13159
- * Utility per leggere/scrivere singole proprietà dentro una stringa di dichiarazioni CSS
13160
- * (il formato usato dalle mappe *FieldStyleCSS: "color:red;font-size:14px").
13573
+ * Catalogo delle proprietà CSS modificabili dall'editor grafico dei campi.
13161
13574
  *
13162
- * Tutte le funzioni preservano le proprietà che non vengono toccate, così i CSS scritti
13163
- * a mano o generati dall'AI non vengono persi quando si modifica una singola proprietà
13164
- * dall'editor grafico.
13165
- */
13166
- /**
13167
- * Divide una stringa CSS sui ";" di primo livello, ignorando quelli dentro
13168
- * parentesi (es. rgba(0,0,0,.5)) o stringhe (es. url("a;b")).
13575
+ * Ogni proprietà dichiara che tipo di controllo mostrare (colore, misura con slider,
13576
+ * elenco di valori, testo libero). Le proprietà non presenti in questo catalogo restano
13577
+ * comunque modificabili a mano dalle caselle CSS del dialog di modifica campo e non
13578
+ * vengono mai perse dall'editor.
13169
13579
  */
13170
- function splitTopLevel(css, separator) {
13171
- const parts = [];
13172
- let depth = 0;
13173
- let quote = null;
13174
- let current = '';
13175
- for (let i = 0; i < css.length; i++) {
13176
- const ch = css[i];
13177
- if (quote) {
13178
- current += ch;
13179
- if (ch === quote && css[i - 1] !== '\\') {
13180
- quote = null;
13181
- }
13182
- continue;
13183
- }
13184
- if (ch === '"' || ch === "'") {
13185
- quote = ch;
13186
- current += ch;
13187
- continue;
13188
- }
13189
- if (ch === '(') {
13190
- depth++;
13191
- current += ch;
13192
- continue;
13193
- }
13194
- if (ch === ')') {
13195
- depth = Math.max(0, depth - 1);
13196
- current += ch;
13197
- continue;
13198
- }
13199
- if (ch === separator && depth === 0) {
13200
- parts.push(current);
13201
- current = '';
13202
- continue;
13203
- }
13204
- current += ch;
13205
- }
13206
- parts.push(current);
13207
- return parts;
13208
- }
13209
- /** Trasforma "color:red;font-size:14px" in [{prop:'color',value:'red'},...] mantenendo l'ordine */
13210
- function parseCssDeclarations(css) {
13211
- if (!css) {
13212
- return [];
13213
- }
13214
- const result = [];
13215
- splitTopLevel(css, ';').forEach((chunk) => {
13216
- const trimmed = chunk.trim();
13217
- if (!trimmed) {
13218
- return;
13219
- }
13220
- // Il primo ":" separa sempre proprietà e valore (eventuali ":" successivi,
13221
- // es. in url(http://...), restano nel valore).
13222
- const colonIndex = trimmed.indexOf(':');
13223
- if (colonIndex <= 0) {
13224
- return;
13225
- }
13226
- const prop = trimmed.slice(0, colonIndex).trim().toLowerCase();
13227
- const value = trimmed.slice(colonIndex + 1).trim();
13228
- if (!prop || !value) {
13229
- return;
13230
- }
13231
- result.push({ prop, value });
13232
- });
13233
- return result;
13234
- }
13235
- /** Trasforma [{prop,value}] in "color: red; font-size: 14px;" */
13236
- function serializeCssDeclarations(declarations) {
13237
- if (!declarations || declarations.length === 0) {
13238
- return '';
13239
- }
13240
- return declarations
13241
- .filter((d) => d && d.prop && d.value)
13242
- .map((d) => `${d.prop}: ${d.value};`)
13243
- .join(' ');
13244
- }
13245
- /** Legge il valore di una singola proprietà; stringa vuota se non presente */
13246
- function getCssDeclaration(css, prop) {
13247
- const target = (prop || '').toLowerCase();
13248
- const found = parseCssDeclarations(css).find((d) => d.prop === target);
13249
- return found ? found.value : '';
13250
- }
13580
+ /** Proprietà mostrate sempre: coprono il 90% delle personalizzazioni */
13581
+ const CSS_CORE_PROPERTIES = [
13582
+ { prop: 'background-color', label: 'Sfondo', type: 'color', group: 'Aspetto' },
13583
+ { prop: 'color', label: 'Colore testo', type: 'color', group: 'Testo' },
13584
+ { prop: 'font-size', label: 'Dimensione testo', type: 'size', group: 'Testo', min: 8, max: 48, step: 1, unit: 'px' },
13585
+ {
13586
+ prop: 'font-weight', label: 'Spessore testo', type: 'select', group: 'Testo',
13587
+ options: [
13588
+ { value: 'normal', label: 'Normale' },
13589
+ { value: 'bold', label: 'Grassetto' },
13590
+ { value: '300', label: 'Leggero (300)' },
13591
+ { value: '500', label: 'Medio (500)' },
13592
+ { value: '600', label: 'Semi-grassetto (600)' },
13593
+ { value: '800', label: 'Extra (800)' },
13594
+ ],
13595
+ },
13596
+ { prop: 'border-radius', label: 'Angoli arrotondati', type: 'size', group: 'Bordo', min: 0, max: 40, step: 1, unit: 'px' },
13597
+ { prop: 'border-width', label: 'Spessore bordo', type: 'size', group: 'Bordo', min: 0, max: 12, step: 1, unit: 'px' },
13598
+ { prop: 'border-color', label: 'Colore bordo', type: 'color', group: 'Bordo' },
13599
+ {
13600
+ prop: 'border-style', label: 'Tipo bordo', type: 'select', group: 'Bordo',
13601
+ options: [
13602
+ { value: 'none', label: 'Nessuno' },
13603
+ { value: 'solid', label: 'Continuo' },
13604
+ { value: 'dashed', label: 'Tratteggiato' },
13605
+ { value: 'dotted', label: 'Puntinato' },
13606
+ { value: 'double', label: 'Doppio' },
13607
+ ],
13608
+ },
13609
+ { prop: 'padding', label: 'Spaziatura interna', type: 'text', group: 'Spaziatura', placeholder: 'es. 8px 12px' },
13610
+ ];
13611
+ /** Proprietà aggiuntive, mostrate solo aprendo "Altre proprietà" */
13612
+ const CSS_EXTRA_PROPERTIES = [
13613
+ { prop: 'opacity', label: 'Opacità', type: 'size', group: 'Aspetto', min: 0, max: 1, step: 0.05, unit: '' },
13614
+ { prop: 'background', label: 'Sfondo avanzato', type: 'text', group: 'Aspetto', placeholder: 'es. linear-gradient(...)' },
13615
+ { prop: 'box-shadow', label: 'Ombra', type: 'text', group: 'Aspetto', placeholder: 'es. 0 2px 6px rgba(0,0,0,.2)' },
13616
+ {
13617
+ prop: 'text-align', label: 'Allineamento testo', type: 'select', group: 'Testo',
13618
+ options: [
13619
+ { value: 'left', label: 'Sinistra' },
13620
+ { value: 'center', label: 'Centro' },
13621
+ { value: 'right', label: 'Destra' },
13622
+ { value: 'justify', label: 'Giustificato' },
13623
+ ],
13624
+ },
13625
+ {
13626
+ prop: 'text-transform', label: 'Maiuscole/minuscole', type: 'select', group: 'Testo',
13627
+ options: [
13628
+ { value: 'none', label: 'Come scritto' },
13629
+ { value: 'uppercase', label: 'TUTTO MAIUSCOLO' },
13630
+ { value: 'lowercase', label: 'tutto minuscolo' },
13631
+ { value: 'capitalize', label: 'Iniziali Maiuscole' },
13632
+ ],
13633
+ },
13634
+ {
13635
+ prop: 'font-style', label: 'Corsivo', type: 'select', group: 'Testo',
13636
+ options: [
13637
+ { value: 'normal', label: 'Normale' },
13638
+ { value: 'italic', label: 'Corsivo' },
13639
+ ],
13640
+ },
13641
+ {
13642
+ prop: 'text-decoration', label: 'Decorazione testo', type: 'select', group: 'Testo',
13643
+ options: [
13644
+ { value: 'none', label: 'Nessuna' },
13645
+ { value: 'underline', label: 'Sottolineato' },
13646
+ { value: 'line-through', label: 'Barrato' },
13647
+ ],
13648
+ },
13649
+ { prop: 'font-family', label: 'Font', type: 'text', group: 'Testo', placeholder: 'es. Roboto, sans-serif' },
13650
+ { prop: 'letter-spacing', label: 'Spaziatura lettere', type: 'size', group: 'Testo', min: -2, max: 10, step: 0.5, unit: 'px' },
13651
+ { prop: 'line-height', label: 'Interlinea', type: 'size', group: 'Testo', min: 0.8, max: 3, step: 0.1, unit: '' },
13652
+ { prop: 'margin', label: 'Spaziatura esterna', type: 'text', group: 'Spaziatura', placeholder: 'es. 0 0 8px 0' },
13653
+ { prop: 'width', label: 'Larghezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 100%' },
13654
+ { prop: 'height', label: 'Altezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
13655
+ { prop: 'min-height', label: 'Altezza minima', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
13656
+ { prop: 'gap', label: 'Distanza tra elementi', type: 'size', group: 'Layout', min: 0, max: 40, step: 1, unit: 'px' },
13657
+ {
13658
+ prop: 'display', label: 'Visualizzazione', type: 'select', group: 'Layout',
13659
+ options: [
13660
+ { value: 'block', label: 'Blocco' },
13661
+ { value: 'inline-block', label: 'Blocco in linea' },
13662
+ { value: 'flex', label: 'Flex' },
13663
+ { value: 'none', label: 'Nascosto' },
13664
+ ],
13665
+ },
13666
+ {
13667
+ prop: 'justify-content', label: 'Allineamento orizzontale', type: 'select', group: 'Layout',
13668
+ options: [
13669
+ { value: 'flex-start', label: 'Inizio' },
13670
+ { value: 'center', label: 'Centro' },
13671
+ { value: 'flex-end', label: 'Fine' },
13672
+ { value: 'space-between', label: 'Distribuito' },
13673
+ ],
13674
+ },
13675
+ {
13676
+ prop: 'align-items', label: 'Allineamento verticale', type: 'select', group: 'Layout',
13677
+ options: [
13678
+ { value: 'flex-start', label: 'Alto' },
13679
+ { value: 'center', label: 'Centro' },
13680
+ { value: 'flex-end', label: 'Basso' },
13681
+ { value: 'stretch', label: 'Estendi' },
13682
+ ],
13683
+ },
13684
+ {
13685
+ prop: 'cursor', label: 'Puntatore', type: 'select', group: 'Layout',
13686
+ options: [
13687
+ { value: 'default', label: 'Normale' },
13688
+ { value: 'pointer', label: 'Mano' },
13689
+ { value: 'not-allowed', label: 'Vietato' },
13690
+ { value: 'text', label: 'Testo' },
13691
+ ],
13692
+ },
13693
+ { prop: 'transition', label: 'Transizione', type: 'text', group: 'Effetti', placeholder: 'es. all .2s ease' },
13694
+ { prop: 'transform', label: 'Trasformazione', type: 'text', group: 'Effetti', placeholder: 'es. scale(1.05)' },
13695
+ ];
13696
+ const CSS_ALL_PROPERTIES = CSS_CORE_PROPERTIES.concat(CSS_EXTRA_PROPERTIES);
13251
13697
  /**
13252
- * Imposta (o rimuove, se il valore è vuoto) una singola proprietà, lasciando
13253
- * intatte tutte le altre. Le proprietà nuove vengono accodate in fondo.
13698
+ * Proprietà che hanno senso solo su alcuni elementi: non compaiono nelle liste generali,
13699
+ * vengono aggiunte dai profili dei singoli elementi (vedi CssElementProfile).
13254
13700
  */
13255
- function setCssDeclaration(css, prop, value) {
13701
+ const CSS_ELEMENT_ONLY_PROPERTIES = [
13702
+ { prop: 'top', label: 'Posizione verticale (top)', type: 'size', group: 'Spaziatura', min: -40, max: 60, step: 1, unit: 'px', defaultValue: 0, placeholder: 'predefinito 0px' },
13703
+ ];
13704
+ function getCssPropertyDef(prop) {
13256
13705
  const target = (prop || '').toLowerCase();
13257
- if (!target) {
13258
- return css ?? '';
13259
- }
13260
- const declarations = parseCssDeclarations(css);
13261
- const newValue = (value ?? '').trim();
13262
- const index = declarations.findIndex((d) => d.prop === target);
13263
- if (!newValue) {
13264
- if (index >= 0) {
13265
- declarations.splice(index, 1);
13266
- }
13267
- }
13268
- else if (index >= 0) {
13269
- declarations[index].value = newValue;
13270
- }
13271
- else {
13272
- declarations.push({ prop: target, value: newValue });
13273
- }
13274
- return serializeCssDeclarations(declarations);
13706
+ return CSS_ALL_PROPERTIES.find((p) => p.prop === target)
13707
+ ?? CSS_ELEMENT_ONLY_PROPERTIES.find((p) => p.prop === target)
13708
+ ?? null;
13709
+ }
13710
+ /** Proprietà di layout che non hanno effetto su etichetta e area del valore */
13711
+ const LAYOUT_PROPERTIES = [
13712
+ 'min-height',
13713
+ 'gap',
13714
+ 'display',
13715
+ 'justify-content',
13716
+ 'align-items',
13717
+ 'cursor',
13718
+ 'transition',
13719
+ 'transform', // Trasformazione
13720
+ ];
13721
+ const CSS_PROFILE_LABEL = {
13722
+ hidden: LAYOUT_PROPERTIES.concat(['height']),
13723
+ extra: ['top'],
13724
+ };
13725
+ const CSS_PROFILE_VALUE = {
13726
+ hidden: LAYOUT_PROPERTIES,
13727
+ };
13728
+ /** Label dentro la casella o sollevata sul bordo: solo le proprietà che cambiano fra i due casi */
13729
+ const CSS_PROFILE_FLOATING_LABEL = {
13730
+ only: ['color', 'font-size', 'font-weight', 'background-color', 'padding', 'width', 'top'],
13731
+ };
13732
+ /** Proprietà da mostrare per un elemento, applicando l'eventuale profilo */
13733
+ function getCssPropertiesForProfile(profile, showAll) {
13734
+ if (profile?.only) {
13735
+ return profile.only.map((prop) => getCssPropertyDef(prop)).filter((d) => d != null);
13736
+ }
13737
+ const hidden = profile?.hidden ?? [];
13738
+ const base = (showAll ? CSS_ALL_PROPERTIES : CSS_CORE_PROPERTIES).filter((p) => !hidden.includes(p.prop));
13739
+ const extra = (profile?.extra ?? [])
13740
+ .map((prop) => getCssPropertyDef(prop))
13741
+ .filter((d) => d != null && !base.some((p) => p.prop === d.prop));
13742
+ return base.concat(extra);
13743
+ }
13744
+ /** Definizione di ripiego per una proprietà scritta a mano e non catalogata */
13745
+ function buildCustomCssPropertyDef(prop) {
13746
+ return { prop: (prop || '').toLowerCase(), label: prop, type: 'text', group: 'Personalizzate' };
13275
13747
  }
13276
13748
 
13277
13749
  const STATE_NORMALE = { key: 'Normale', label: 'Normale' };
@@ -13284,18 +13756,21 @@ const FULL_STATES = [STATE_NORMALE, STATE_MOUSEOVER, STATE_FOCUSED, STATE_NOTVAL
13284
13756
  /** Elementi del campo "Elenco generico", che cambiano in base alla modalità di presentazione */
13285
13757
  const LIST_VALUE_COMBO_ELEMENTS = [
13286
13758
  { key: 'Container', label: 'Contenitore' },
13287
- { key: 'Label', label: 'Etichetta' },
13759
+ // Stessa label: "Label" è la grafica base, sempre valida; "LabelSollevata" (virtuale,
13760
+ // salvata dentro Label) sovrascrive quando è sul bordo
13761
+ { key: 'Label', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13762
+ { key: 'LabelSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13288
13763
  { key: 'CasellaTrigger', label: 'Casella Select' },
13289
13764
  { key: 'BottoneCancella', label: 'Bottone Cancella' },
13290
13765
  ];
13291
13766
  const LIST_VALUE_RADIO_ELEMENTS = [
13292
13767
  { key: 'Container', label: 'Contenitore' },
13293
- { key: 'Label', label: 'Etichetta' },
13768
+ { key: 'Label', label: 'Etichetta', profile: CSS_PROFILE_LABEL },
13294
13769
  { key: 'Opzione', label: 'Opzione' },
13295
13770
  { key: 'Selezione', label: 'Selezione (radio)' },
13296
13771
  ];
13297
13772
  const LIST_VALUE_BUTTON_ELEMENTS = [
13298
- { key: 'Label', label: 'Etichetta' },
13773
+ { key: 'Label', label: 'Etichetta', profile: CSS_PROFILE_LABEL },
13299
13774
  { key: 'Bottone', label: 'Bottone' },
13300
13775
  ];
13301
13776
  const FIELD_STYLE_CATALOG = [
@@ -13306,7 +13781,8 @@ const FIELD_STYLE_CATALOG = [
13306
13781
  elements: [
13307
13782
  { key: 'Container', label: 'Contenitore' },
13308
13783
  { key: 'Input', label: 'Casella di testo' },
13309
- { key: 'Descrizione', label: 'Descrizione (label)' },
13784
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13785
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13310
13786
  { key: 'Icona', label: 'Icona' },
13311
13787
  { key: 'Microfono', label: 'Microfono' },
13312
13788
  { key: 'Errore', label: 'Testo errore' },
@@ -13320,7 +13796,8 @@ const FIELD_STYLE_CATALOG = [
13320
13796
  elements: [
13321
13797
  { key: 'Container', label: 'Contenitore' },
13322
13798
  { key: 'Input', label: 'Area di testo' },
13323
- { key: 'Descrizione', label: 'Descrizione (label)' },
13799
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13800
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13324
13801
  { key: 'Icona', label: 'Icona' },
13325
13802
  { key: 'Microfono', label: 'Microfono' },
13326
13803
  { key: 'Errore', label: 'Testo errore' },
@@ -13334,7 +13811,8 @@ const FIELD_STYLE_CATALOG = [
13334
13811
  elements: [
13335
13812
  { key: 'Container', label: 'Contenitore' },
13336
13813
  { key: 'Input', label: 'Casella numerica' },
13337
- { key: 'Descrizione', label: 'Descrizione (label)' },
13814
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13815
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13338
13816
  { key: 'Icona', label: 'Icona' },
13339
13817
  { key: 'Errore', label: 'Testo errore' },
13340
13818
  ],
@@ -13347,7 +13825,7 @@ const FIELD_STYLE_CATALOG = [
13347
13825
  elements: [
13348
13826
  { key: 'Container', label: 'Contenitore' },
13349
13827
  { key: 'Scelta', label: 'Controllo (toggle / checkbox / radio)' },
13350
- { key: 'Descrizione', label: 'Descrizione (label)' },
13828
+ { key: 'Descrizione', label: 'Descrizione (label)', profile: CSS_PROFILE_LABEL },
13351
13829
  ],
13352
13830
  states: [STATE_NORMALE, STATE_MOUSEOVER, STATE_FOCUSED, STATE_READONLY],
13353
13831
  },
@@ -13357,7 +13835,8 @@ const FIELD_STYLE_CATALOG = [
13357
13835
  styleProp: 'DateFieldStyleCSS',
13358
13836
  elements: [
13359
13837
  { key: 'Container', label: 'Contenitore esterno' },
13360
- { key: 'Descrizione', label: 'Descrizione (label)' },
13838
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13839
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13361
13840
  { key: 'ContenitoreInterno', label: 'Contenitore interno' },
13362
13841
  { key: 'CampoData', label: 'Casella di testo' },
13363
13842
  { key: 'IconaCalendario', label: 'Bottone calendario' },
@@ -13373,7 +13852,7 @@ const FIELD_STYLE_CATALOG = [
13373
13852
  styleProp: 'AttachmentFieldStyleCSS',
13374
13853
  elements: [
13375
13854
  { key: 'Container', label: 'Contenitore' },
13376
- { key: 'Label', label: 'Label / intestazione' },
13855
+ { key: 'Label', label: 'Label / intestazione', profile: CSS_PROFILE_LABEL },
13377
13856
  { key: 'BottoneAggiungi', label: 'Bottone Aggiungi' },
13378
13857
  { key: 'BottoneDownload', label: 'Bottone Download' },
13379
13858
  { key: 'BottoneElimina', label: 'Bottone Elimina' },
@@ -13388,7 +13867,7 @@ const FIELD_STYLE_CATALOG = [
13388
13867
  styleProp: 'ImageFieldStyleCSS',
13389
13868
  elements: [
13390
13869
  { key: 'Container', label: 'Contenitore' },
13391
- { key: 'Descrizione', label: 'Descrizione (label)' },
13870
+ { key: 'Descrizione', label: 'Descrizione (label)', profile: CSS_PROFILE_LABEL },
13392
13871
  { key: 'BottoneDisegna', label: 'Bottone Disegna' },
13393
13872
  ],
13394
13873
  states: [STATE_NORMALE, STATE_MOUSEOVER],
@@ -13407,7 +13886,8 @@ const FIELD_STYLE_CATALOG = [
13407
13886
  elements: [
13408
13887
  { key: 'Container', label: 'Contenitore' },
13409
13888
  { key: 'CasellaSelezione', label: 'Casella di selezione' },
13410
- { key: 'Descrizione', label: 'Descrizione (label)' },
13889
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13890
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13411
13891
  { key: 'Selezioni', label: 'Selezioni (checkbox)' },
13412
13892
  ],
13413
13893
  states: [STATE_NORMALE, STATE_MOUSEOVER, STATE_SELEZIONATO, STATE_NOTVALID, STATE_READONLY],
@@ -13427,7 +13907,7 @@ const FIELD_STYLE_CATALOG = [
13427
13907
  styleProp: 'ImageWithMarkersFieldStyleCSS',
13428
13908
  elements: [
13429
13909
  { key: 'Container', label: 'Contenitore' },
13430
- { key: 'Descrizione', label: 'Descrizione (label)' },
13910
+ { key: 'Descrizione', label: 'Descrizione (label)', profile: CSS_PROFILE_LABEL },
13431
13911
  { key: 'BottoneMarca', label: 'Bottone Marca' },
13432
13912
  ],
13433
13913
  states: [STATE_NORMALE, STATE_MOUSEOVER],
@@ -13439,7 +13919,7 @@ const FIELD_STYLE_CATALOG = [
13439
13919
  elements: [
13440
13920
  { key: 'Container', label: 'Bottone' },
13441
13921
  { key: 'Icona', label: 'Icona' },
13442
- { key: 'Descrizione', label: 'Etichetta (label)' },
13922
+ { key: 'Descrizione', label: 'Etichetta (label)', profile: CSS_PROFILE_LABEL },
13443
13923
  ],
13444
13924
  states: [STATE_NORMALE, STATE_MOUSEOVER, { key: 'Selezionato', label: 'Selezionato (click)' }],
13445
13925
  },
@@ -13564,25 +14044,42 @@ const GLOBAL_STYLE_ELEMENTS = [
13564
14044
  },
13565
14045
  },
13566
14046
  {
13567
- key: 'Etichetta',
13568
- label: 'Etichetta / descrizione',
14047
+ key: 'EtichettaRiposo',
14048
+ label: 'Etichetta nel contenitore',
14049
+ profile: CSS_PROFILE_FLOATING_LABEL,
14050
+ // Grafica base della label di ogni tipologia (per chi ha la label che si solleva,
14051
+ // vale anche sul bordo salvo override)
13569
14052
  perType: {
13570
14053
  [FT['Campo di testo']]: ['Descrizione'],
13571
14054
  [FT['Area di testo']]: ['Descrizione'],
13572
14055
  [FT['Campo numerico']]: ['Descrizione'],
13573
- [FT['Booleano']]: ['Descrizione'],
14056
+ [FT['Elenco immagini']]: ['Descrizione'],
13574
14057
  [FT['Data e/o ora']]: ['Descrizione'],
14058
+ [FT['Elenco generico']]: ['Label'],
14059
+ [FT['Booleano']]: ['Descrizione'],
13575
14060
  [FT['Allegato']]: ['Label'],
13576
14061
  [FT['Immagine']]: ['Descrizione'],
13577
- [FT['Elenco generico']]: ['Label'],
13578
- [FT['Elenco immagini']]: ['Descrizione'],
13579
14062
  [FT['Immagine con markers']]: ['Descrizione'],
13580
14063
  [FT['Bottone']]: ['Descrizione'],
13581
14064
  },
13582
14065
  },
14066
+ {
14067
+ key: 'EtichettaSollevata',
14068
+ label: 'Etichetta sul bordo',
14069
+ profile: CSS_PROFILE_FLOATING_LABEL,
14070
+ perType: {
14071
+ [FT['Campo di testo']]: ['DescrizioneSollevata'],
14072
+ [FT['Area di testo']]: ['DescrizioneSollevata'],
14073
+ [FT['Campo numerico']]: ['DescrizioneSollevata'],
14074
+ [FT['Elenco immagini']]: ['DescrizioneSollevata'],
14075
+ [FT['Data e/o ora']]: ['DescrizioneSollevata'],
14076
+ [FT['Elenco generico']]: ['LabelSollevata'],
14077
+ },
14078
+ },
13583
14079
  {
13584
14080
  key: 'Valore',
13585
14081
  label: 'Area del valore',
14082
+ profile: CSS_PROFILE_VALUE,
13586
14083
  perType: {
13587
14084
  [FT['Campo di testo']]: ['Input'],
13588
14085
  [FT['Area di testo']]: ['Input'],
@@ -17075,140 +17572,6 @@ function isCssColor(value) {
17075
17572
  return normalizeColor(value) != null;
17076
17573
  }
17077
17574
 
17078
- /**
17079
- * Catalogo delle proprietà CSS modificabili dall'editor grafico dei campi.
17080
- *
17081
- * Ogni proprietà dichiara che tipo di controllo mostrare (colore, misura con slider,
17082
- * elenco di valori, testo libero). Le proprietà non presenti in questo catalogo restano
17083
- * comunque modificabili a mano dalle caselle CSS del dialog di modifica campo e non
17084
- * vengono mai perse dall'editor.
17085
- */
17086
- /** Proprietà mostrate sempre: coprono il 90% delle personalizzazioni */
17087
- const CSS_CORE_PROPERTIES = [
17088
- { prop: 'background-color', label: 'Sfondo', type: 'color', group: 'Aspetto' },
17089
- { prop: 'color', label: 'Colore testo', type: 'color', group: 'Testo' },
17090
- { prop: 'font-size', label: 'Dimensione testo', type: 'size', group: 'Testo', min: 8, max: 48, step: 1, unit: 'px' },
17091
- {
17092
- prop: 'font-weight', label: 'Spessore testo', type: 'select', group: 'Testo',
17093
- options: [
17094
- { value: 'normal', label: 'Normale' },
17095
- { value: 'bold', label: 'Grassetto' },
17096
- { value: '300', label: 'Leggero (300)' },
17097
- { value: '500', label: 'Medio (500)' },
17098
- { value: '600', label: 'Semi-grassetto (600)' },
17099
- { value: '800', label: 'Extra (800)' },
17100
- ],
17101
- },
17102
- { prop: 'border-radius', label: 'Angoli arrotondati', type: 'size', group: 'Bordo', min: 0, max: 40, step: 1, unit: 'px' },
17103
- { prop: 'border-width', label: 'Spessore bordo', type: 'size', group: 'Bordo', min: 0, max: 12, step: 1, unit: 'px' },
17104
- { prop: 'border-color', label: 'Colore bordo', type: 'color', group: 'Bordo' },
17105
- {
17106
- prop: 'border-style', label: 'Tipo bordo', type: 'select', group: 'Bordo',
17107
- options: [
17108
- { value: 'none', label: 'Nessuno' },
17109
- { value: 'solid', label: 'Continuo' },
17110
- { value: 'dashed', label: 'Tratteggiato' },
17111
- { value: 'dotted', label: 'Puntinato' },
17112
- { value: 'double', label: 'Doppio' },
17113
- ],
17114
- },
17115
- { prop: 'padding', label: 'Spaziatura interna', type: 'text', group: 'Spaziatura', placeholder: 'es. 8px 12px' },
17116
- ];
17117
- /** Proprietà aggiuntive, mostrate solo aprendo "Altre proprietà" */
17118
- const CSS_EXTRA_PROPERTIES = [
17119
- { prop: 'opacity', label: 'Opacità', type: 'size', group: 'Aspetto', min: 0, max: 1, step: 0.05, unit: '' },
17120
- { prop: 'background', label: 'Sfondo avanzato', type: 'text', group: 'Aspetto', placeholder: 'es. linear-gradient(...)' },
17121
- { prop: 'box-shadow', label: 'Ombra', type: 'text', group: 'Aspetto', placeholder: 'es. 0 2px 6px rgba(0,0,0,.2)' },
17122
- {
17123
- prop: 'text-align', label: 'Allineamento testo', type: 'select', group: 'Testo',
17124
- options: [
17125
- { value: 'left', label: 'Sinistra' },
17126
- { value: 'center', label: 'Centro' },
17127
- { value: 'right', label: 'Destra' },
17128
- { value: 'justify', label: 'Giustificato' },
17129
- ],
17130
- },
17131
- {
17132
- prop: 'text-transform', label: 'Maiuscole/minuscole', type: 'select', group: 'Testo',
17133
- options: [
17134
- { value: 'none', label: 'Come scritto' },
17135
- { value: 'uppercase', label: 'TUTTO MAIUSCOLO' },
17136
- { value: 'lowercase', label: 'tutto minuscolo' },
17137
- { value: 'capitalize', label: 'Iniziali Maiuscole' },
17138
- ],
17139
- },
17140
- {
17141
- prop: 'font-style', label: 'Corsivo', type: 'select', group: 'Testo',
17142
- options: [
17143
- { value: 'normal', label: 'Normale' },
17144
- { value: 'italic', label: 'Corsivo' },
17145
- ],
17146
- },
17147
- {
17148
- prop: 'text-decoration', label: 'Decorazione testo', type: 'select', group: 'Testo',
17149
- options: [
17150
- { value: 'none', label: 'Nessuna' },
17151
- { value: 'underline', label: 'Sottolineato' },
17152
- { value: 'line-through', label: 'Barrato' },
17153
- ],
17154
- },
17155
- { prop: 'font-family', label: 'Font', type: 'text', group: 'Testo', placeholder: 'es. Roboto, sans-serif' },
17156
- { prop: 'letter-spacing', label: 'Spaziatura lettere', type: 'size', group: 'Testo', min: -2, max: 10, step: 0.5, unit: 'px' },
17157
- { prop: 'line-height', label: 'Interlinea', type: 'size', group: 'Testo', min: 0.8, max: 3, step: 0.1, unit: '' },
17158
- { prop: 'margin', label: 'Spaziatura esterna', type: 'text', group: 'Spaziatura', placeholder: 'es. 0 0 8px 0' },
17159
- { prop: 'width', label: 'Larghezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 100%' },
17160
- { prop: 'height', label: 'Altezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
17161
- { prop: 'min-height', label: 'Altezza minima', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
17162
- { prop: 'gap', label: 'Distanza tra elementi', type: 'size', group: 'Layout', min: 0, max: 40, step: 1, unit: 'px' },
17163
- {
17164
- prop: 'display', label: 'Visualizzazione', type: 'select', group: 'Layout',
17165
- options: [
17166
- { value: 'block', label: 'Blocco' },
17167
- { value: 'inline-block', label: 'Blocco in linea' },
17168
- { value: 'flex', label: 'Flex' },
17169
- { value: 'none', label: 'Nascosto' },
17170
- ],
17171
- },
17172
- {
17173
- prop: 'justify-content', label: 'Allineamento orizzontale', type: 'select', group: 'Layout',
17174
- options: [
17175
- { value: 'flex-start', label: 'Inizio' },
17176
- { value: 'center', label: 'Centro' },
17177
- { value: 'flex-end', label: 'Fine' },
17178
- { value: 'space-between', label: 'Distribuito' },
17179
- ],
17180
- },
17181
- {
17182
- prop: 'align-items', label: 'Allineamento verticale', type: 'select', group: 'Layout',
17183
- options: [
17184
- { value: 'flex-start', label: 'Alto' },
17185
- { value: 'center', label: 'Centro' },
17186
- { value: 'flex-end', label: 'Basso' },
17187
- { value: 'stretch', label: 'Estendi' },
17188
- ],
17189
- },
17190
- {
17191
- prop: 'cursor', label: 'Puntatore', type: 'select', group: 'Layout',
17192
- options: [
17193
- { value: 'default', label: 'Normale' },
17194
- { value: 'pointer', label: 'Mano' },
17195
- { value: 'not-allowed', label: 'Vietato' },
17196
- { value: 'text', label: 'Testo' },
17197
- ],
17198
- },
17199
- { prop: 'transition', label: 'Transizione', type: 'text', group: 'Effetti', placeholder: 'es. all .2s ease' },
17200
- { prop: 'transform', label: 'Trasformazione', type: 'text', group: 'Effetti', placeholder: 'es. scale(1.05)' },
17201
- ];
17202
- const CSS_ALL_PROPERTIES = CSS_CORE_PROPERTIES.concat(CSS_EXTRA_PROPERTIES);
17203
- function getCssPropertyDef(prop) {
17204
- const target = (prop || '').toLowerCase();
17205
- return CSS_ALL_PROPERTIES.find((p) => p.prop === target) ?? null;
17206
- }
17207
- /** Definizione di ripiego per una proprietà scritta a mano e non catalogata */
17208
- function buildCustomCssPropertyDef(prop) {
17209
- return { prop: (prop || '').toLowerCase(), label: prop, type: 'text', group: 'Personalizzate' };
17210
- }
17211
-
17212
17575
  class FieldGraphicsEditorComponent {
17213
17576
  constructor(formBuilder) {
17214
17577
  this.formBuilder = formBuilder;
@@ -17314,7 +17677,7 @@ class FieldGraphicsEditorComponent {
17314
17677
  }
17315
17678
  // La base comprende il CSS legacy assorbito, altrimenti l'editor mostrerebbe
17316
17679
  // "non impostato" su proprietà che a video si vedono eccome (applicate inline)
17317
- group.styleMap = getEffectiveStyleMap(sample);
17680
+ group.styleMap = decodeFloatingMap(getEffectiveStyleMap(sample));
17318
17681
  this.applyGlobalOverridesToMap(sample, group.styleMap);
17319
17682
  Object.keys(group.overrides).forEach((entry) => {
17320
17683
  const { key, prop } = this.splitEntry(entry);
@@ -17328,13 +17691,13 @@ class FieldGraphicsEditorComponent {
17328
17691
  if (!source) {
17329
17692
  return;
17330
17693
  }
17331
- const clone = this.buildPreviewField(source, group.styleMap);
17694
+ const clone = this.buildPreviewField(source, group.styleMap, group.openElement);
17332
17695
  group.elements = getFieldStyleElements(clone);
17333
17696
  if (!group.elements.some((e) => e.key === group.openElement)) {
17334
17697
  group.openElement = group.elements[0]?.key ?? '';
17335
17698
  }
17336
17699
  group.previewField = clone;
17337
- group.previewRecord = { [clone.Name]: this.getPreviewInitialValue(clone) };
17700
+ group.previewRecord = { [clone.Name]: this.getPreviewInitialValue(clone, group.openElement) };
17338
17701
  this.styleVersion++;
17339
17702
  }
17340
17703
  get activeGroup() {
@@ -17349,7 +17712,11 @@ class FieldGraphicsEditorComponent {
17349
17712
  this.styleVersion++;
17350
17713
  }
17351
17714
  toggleElement(group, elementKey) {
17715
+ const floatingBefore = this.previewLabelMode(group.openElement);
17352
17716
  group.openElement = group.openElement === elementKey ? '' : elementKey;
17717
+ if (this.previewLabelMode(group.openElement) !== floatingBefore) {
17718
+ this.buildPreview(group);
17719
+ }
17353
17720
  }
17354
17721
  /** Cambiando campione si rileggono i suoi stili reali, mantenendo le modifiche in sospeso */
17355
17722
  changeSample(group, index) {
@@ -17385,7 +17752,11 @@ class FieldGraphicsEditorComponent {
17385
17752
  this.styleVersion++;
17386
17753
  }
17387
17754
  toggleGlobalElement(elementKey) {
17755
+ const floatingBefore = this.previewLabelMode(this.globalOpenElement);
17388
17756
  this.globalOpenElement = this.globalOpenElement === elementKey ? '' : elementKey;
17757
+ if (this.previewLabelMode(this.globalOpenElement) !== floatingBefore) {
17758
+ this.rebuildGlobalPreview();
17759
+ }
17389
17760
  }
17390
17761
  changeGlobalSample(index) {
17391
17762
  this.globalSampleIndex = Number(index);
@@ -17408,11 +17779,11 @@ class FieldGraphicsEditorComponent {
17408
17779
  this.globalPreviewField = null;
17409
17780
  return;
17410
17781
  }
17411
- const map = getEffectiveStyleMap(sample);
17782
+ const map = decodeFloatingMap(getEffectiveStyleMap(sample));
17412
17783
  this.applyGlobalOverridesToMap(sample, map);
17413
- const clone = this.buildPreviewField(sample, map);
17784
+ const clone = this.buildPreviewField(sample, map, this.globalOpenElement);
17414
17785
  this.globalPreviewField = clone;
17415
- this.globalPreviewRecord = { [clone.Name]: this.getPreviewInitialValue(clone) };
17786
+ this.globalPreviewRecord = { [clone.Name]: this.getPreviewInitialValue(clone, this.globalOpenElement) };
17416
17787
  this.styleVersion++;
17417
17788
  }
17418
17789
  /** Riversa le modifiche globali in sospeso su una mappa stili, risolte per quel campo */
@@ -17456,7 +17827,7 @@ class FieldGraphicsEditorComponent {
17456
17827
  if (keys.length === 0) {
17457
17828
  return '';
17458
17829
  }
17459
- const map = getEffectiveStyleMap(sample);
17830
+ const map = decodeFloatingMap(getEffectiveStyleMap(sample));
17460
17831
  return getCssDeclaration(map[keys[0] + this.globalSelectedState] ?? '', prop);
17461
17832
  }
17462
17833
  setGlobalPropertyValue(elementKey, prop, value) {
@@ -17472,13 +17843,12 @@ class FieldGraphicsEditorComponent {
17472
17843
  }
17473
17844
  /** Proprietà mostrate nella scheda globale per un elemento logico */
17474
17845
  globalPropertiesFor(elementKey) {
17475
- const result = this.globalShowAllProperties
17476
- ? CSS_ALL_PROPERTIES.slice()
17477
- : CSS_CORE_PROPERTIES.slice();
17846
+ const profile = this.globalElements.find((e) => e.key === elementKey)?.profile;
17847
+ const result = getCssPropertiesForProfile(profile, this.globalShowAllProperties);
17478
17848
  const sample = this.globalSampleField;
17479
17849
  const valorized = [];
17480
17850
  if (sample) {
17481
- const map = getEffectiveStyleMap(sample);
17851
+ const map = decodeFloatingMap(getEffectiveStyleMap(sample));
17482
17852
  resolveGlobalElementKeys(sample, elementKey).forEach((realKey) => {
17483
17853
  parseCssDeclarations(map[realKey + this.globalSelectedState] ?? '')
17484
17854
  .forEach((d) => { if (!valorized.includes(d.prop)) {
@@ -17512,9 +17882,8 @@ class FieldGraphicsEditorComponent {
17512
17882
  */
17513
17883
  propertiesFor(group, elementKey) {
17514
17884
  const css = group.styleMap[this.styleKey(group, elementKey)] ?? '';
17515
- const result = group.showAllProperties
17516
- ? CSS_ALL_PROPERTIES.slice()
17517
- : CSS_CORE_PROPERTIES.slice();
17885
+ const profile = group.elements.find((e) => e.key === elementKey)?.profile;
17886
+ const result = getCssPropertiesForProfile(profile, group.showAllProperties);
17518
17887
  this.pushValorized(result, parseCssDeclarations(css).map((d) => d.prop));
17519
17888
  return result;
17520
17889
  }
@@ -17562,7 +17931,7 @@ class FieldGraphicsEditorComponent {
17562
17931
  sizeNumber(value, definition) {
17563
17932
  const parsed = parseFloat(value);
17564
17933
  if (isNaN(parsed)) {
17565
- return definition.min ?? 0;
17934
+ return definition.defaultValue ?? definition.min ?? 0;
17566
17935
  }
17567
17936
  return parsed;
17568
17937
  }
@@ -17590,7 +17959,8 @@ class FieldGraphicsEditorComponent {
17590
17959
  }
17591
17960
  writes.forEach((value, entry) => {
17592
17961
  const { key, prop } = this.splitEntry(entry);
17593
- this.writeIntoMap(map, key, prop, value);
17962
+ // Passa da readStyleCss/writeStyleCss: le chiavi "…Sollevata" sono virtuali
17963
+ writeStyleCss(map, key, setCssDeclaration(readStyleCss(map, key), prop, value));
17594
17964
  });
17595
17965
  });
17596
17966
  this.applyEvent.emit();
@@ -17648,7 +18018,12 @@ class FieldGraphicsEditorComponent {
17648
18018
  return;
17649
18019
  }
17650
18020
  const target = legacyTargetKey(field, name);
17651
- if (!target || !keys.has(target)) {
18021
+ if (!target) {
18022
+ return;
18023
+ }
18024
+ // "Descrizione" copre anche le sue varianti (nel contenitore / sul bordo)
18025
+ const targetElement = target.slice(0, -'Normale'.length);
18026
+ if (![...keys].some((k) => k.startsWith(targetElement))) {
17652
18027
  return;
17653
18028
  }
17654
18029
  const map = ensureFieldStyleMap(field);
@@ -17718,6 +18093,11 @@ class FieldGraphicsEditorComponent {
17718
18093
  this.activeGroup.showAllProperties = !this.activeGroup.showAllProperties;
17719
18094
  }
17720
18095
  }
18096
+ /** False per gli elementi con un elenco di proprietà chiuso (niente "Altre proprietà...") */
18097
+ rowHasMoreProperties(elementKey) {
18098
+ const profile = this.currentElements.find((e) => e.key === elementKey)?.profile;
18099
+ return !profile?.only;
18100
+ }
17721
18101
  rowProperties(elementKey) {
17722
18102
  if (this.activeTab === 'globale') {
17723
18103
  return this.globalPropertiesFor(elementKey);
@@ -17730,12 +18110,37 @@ class FieldGraphicsEditorComponent {
17730
18110
  }
17731
18111
  return this.activeGroup ? this.setPropertiesCount(this.activeGroup, elementKey) : 0;
17732
18112
  }
17733
- rowGet(elementKey, prop) {
18113
+ /** Valore impostato direttamente sull'elemento, senza eredità */
18114
+ rowGetOwn(elementKey, prop) {
17734
18115
  if (this.activeTab === 'globale') {
17735
18116
  return this.getGlobalPropertyValue(elementKey, prop);
17736
18117
  }
17737
18118
  return this.activeGroup ? this.getPropertyValue(this.activeGroup, elementKey, prop) : '';
17738
18119
  }
18120
+ /**
18121
+ * Valore mostrato a video. "Etichetta sul bordo" parte dalla grafica di "Etichetta nel
18122
+ * contenitore" e sovrascrive solo ciò che vi è impostato: dove non ha un valore proprio
18123
+ * mostra quello ereditato, così lo specchietto riflette ciò che si vede in anteprima.
18124
+ */
18125
+ rowGet(elementKey, prop) {
18126
+ const own = this.rowGetOwn(elementKey, prop);
18127
+ if (own) {
18128
+ return own;
18129
+ }
18130
+ const base = this.inheritanceSourceKey(elementKey);
18131
+ return base ? this.rowGetOwn(base, prop) : '';
18132
+ }
18133
+ /** Elemento da cui "…Sollevata" eredita (la chiave base), null per gli altri */
18134
+ inheritanceSourceKey(elementKey) {
18135
+ if (!(elementKey ?? '').endsWith('Sollevata')) {
18136
+ return null;
18137
+ }
18138
+ const base = elementKey.slice(0, -'Sollevata'.length);
18139
+ return base === 'Etichetta' ? 'EtichettaRiposo' : base;
18140
+ }
18141
+ rowIsInherited(elementKey, prop) {
18142
+ return !this.rowGetOwn(elementKey, prop) && !!this.rowGet(elementKey, prop);
18143
+ }
17739
18144
  rowSet(elementKey, prop, value) {
17740
18145
  if (this.activeTab === 'globale') {
17741
18146
  this.setGlobalPropertyValue(elementKey, prop, value);
@@ -17746,7 +18151,7 @@ class FieldGraphicsEditorComponent {
17746
18151
  }
17747
18152
  }
17748
18153
  rowIsSet(elementKey, prop) {
17749
- return !!this.rowGet(elementKey, prop);
18154
+ return !!this.rowGetOwn(elementKey, prop);
17750
18155
  }
17751
18156
  rowReset(elementKey, prop) {
17752
18157
  this.rowSet(elementKey, prop, '');
@@ -17812,11 +18217,12 @@ class FieldGraphicsEditorComponent {
17812
18217
  //#endregion Utilità
17813
18218
  //#region Anteprima
17814
18219
  /** Crea il campo fittizio dell'anteprima agganciandogli la mappa stili passata */
17815
- buildPreviewField(source, styleMap) {
18220
+ buildPreviewField(source, styleMap, openElement) {
17816
18221
  const clone = this.safeClone(source);
17817
18222
  const def = getFieldStyleTypeDef(clone.FieldType);
18223
+ // I template leggono il formato salvato: le chiavi virtuali vanno ricodificate
17818
18224
  if (def) {
17819
- clone[def.styleProp] = styleMap;
18225
+ clone[def.styleProp] = encodeFloatingMap(styleMap);
17820
18226
  }
17821
18227
  // Il legacy e' gia' dentro styleMap: lasciarlo qui lo riapplicherebbe inline,
17822
18228
  // coprendo le regole iniettate e mostrando un'anteprima falsa
@@ -17824,12 +18230,55 @@ class FieldGraphicsEditorComponent {
17824
18230
  clone.FieldstyleCSS = null;
17825
18231
  const controlName = clone.Label || 'preview_field';
17826
18232
  clone.Name = controlName;
18233
+ // A riposo la label sta nel contenitore solo se il campo è vuoto: via valore
18234
+ // predefinito e formula, altrimenti i template riempirebbero l'anteprima
18235
+ if (this.previewLabelMode(openElement) === 'riposo') {
18236
+ if (clone.DataGetter) {
18237
+ clone.DataGetter = { ...clone.DataGetter, DataGetterValue: null };
18238
+ }
18239
+ clone.Formula = null;
18240
+ }
17827
18241
  this.prepareTypeSpecificPreview(clone);
17828
- const initialValue = this.getPreviewInitialValue(clone);
18242
+ const initialValue = this.getPreviewInitialValue(clone, openElement);
17829
18243
  clone.FormFormGroup = this.formBuilder.group({ [controlName]: [initialValue] });
17830
18244
  return clone;
17831
18245
  }
17832
- getPreviewInitialValue(field) {
18246
+ /**
18247
+ * Stato della label che l'anteprima deve mostrare per l'elemento aperto: la label Material
18248
+ * si solleva sul bordo solo se il campo ha un valore, quindi l'anteprima lo simula.
18249
+ */
18250
+ previewLabelMode(elementKey) {
18251
+ if ((elementKey ?? '').endsWith('Sollevata')) {
18252
+ return 'sollevata';
18253
+ }
18254
+ if (['Descrizione', 'Label', 'EtichettaRiposo'].includes(elementKey)) {
18255
+ return 'riposo';
18256
+ }
18257
+ return null;
18258
+ }
18259
+ getPreviewInitialValue(field, openElement = '') {
18260
+ if (this.previewLabelMode(openElement) === 'sollevata') {
18261
+ switch (Number(field.FieldType)) {
18262
+ case FieldTypeEnum['Campo di testo']:
18263
+ case FieldTypeEnum['Area di testo']:
18264
+ return 'Testo di esempio';
18265
+ case FieldTypeEnum['Campo numerico']:
18266
+ return 123;
18267
+ case FieldTypeEnum['Data e/o ora']:
18268
+ return new Date();
18269
+ case FieldTypeEnum['Elenco generico']: {
18270
+ const lv = field;
18271
+ const pairs = lv.ValuePairs ?? {};
18272
+ const firstKey = Object.keys(pairs)[0];
18273
+ if (firstKey == null) {
18274
+ break;
18275
+ }
18276
+ const raw = pairs[firstKey];
18277
+ const value = UtilityHelperService.isNumeric(raw) ? Number(raw) : raw;
18278
+ return lv.IsMultiChoiche ? [value] : value;
18279
+ }
18280
+ }
18281
+ }
17833
18282
  switch (Number(field.FieldType)) {
17834
18283
  case FieldTypeEnum['Allegato']:
17835
18284
  return [];
@@ -17901,10 +18350,10 @@ class FieldGraphicsEditorComponent {
17901
18350
  }
17902
18351
  }
17903
18352
  FieldGraphicsEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FieldGraphicsEditorComponent, deps: [{ token: i3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
17904
- FieldGraphicsEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FieldGraphicsEditorComponent, selector: "field-graphics-editor", inputs: { fields: "fields", endPointConfiguration: "endPointConfiguration", formulaObject: "formulaObject" }, outputs: { applyEvent: "applyEvent", cancelEvent: "cancelEvent" }, ngImport: i0, template: "<div class=\"fge-root\">\r\n\r\n <!-- Intestazione -->\r\n <div class=\"fge-header\">\r\n <tmw-icon class=\"mat-icon fge-header-icon\" name=\"palette\"></tmw-icon>\r\n <div class=\"fge-header-texts\">\r\n <div class=\"fge-header-title\">Grafica dei campi selezionati</div>\r\n <div class=\"fge-header-subtitle\">\r\n {{ styleableFields.length }} campi modificabili\r\n <span *ngIf=\"changesCount > 0\"> &middot; {{ changesCount }} modifiche in sospeso</span>\r\n </div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"fge-header-close\" (click)=\"cancel()\" matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Nessuna tipologia gestibile -->\r\n <div class=\"fge-empty\" *ngIf=\"styleableFields.length === 0\">\r\n Nessuno dei campi selezionati ha una grafica configurabile.\r\n </div>\r\n\r\n <ng-container *ngIf=\"styleableFields.length > 0\">\r\n\r\n <!-- Schede: grafica valida per tutti / divisa per tipologia -->\r\n <div class=\"fge-tabs\">\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'globale'\"\r\n (click)=\"selectTab('globale')\">\r\n Grafica globale\r\n </button>\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'personalizzata'\"\r\n (click)=\"selectTab('personalizzata')\">\r\n Grafica personalizzata\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-body\">\r\n\r\n <!--#region COLONNA SINISTRA -->\r\n <div class=\"fge-left\">\r\n\r\n <!-- Intestazione scheda globale -->\r\n <ng-container *ngIf=\"activeTab === 'globale'\">\r\n <div class=\"fge-scope-note\">\r\n Le modifiche si applicano a <strong>tutti i {{ styleableFields.length }} campi\r\n selezionati</strong>, di qualsiasi tipologia. Gli elementi qui sotto sono quelli comuni:\r\n ogni tipologia li applica al proprio elemento corrispondente.\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Intestazione scheda per tipologia -->\r\n <ng-container *ngIf=\"activeTab === 'personalizzata'\">\r\n <div class=\"fge-type-tabs\" *ngIf=\"groups.length > 1\">\r\n <button type=\"button\" class=\"fge-type-tab\" *ngFor=\"let group of groups; let i = index\"\r\n [class.active]=\"i === activeGroupIndex\" (click)=\"selectGroup(i)\">\r\n {{ group.def.label }}\r\n <span class=\"fge-type-tab-badge\">{{ group.fields.length }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-group-fields\" *ngIf=\"activeGroup as group\" [matTooltip]=\"groupFieldNames(group)\">\r\n <strong>{{ group.def.label }}</strong> &middot; {{ groupFieldNames(group) }}\r\n </div>\r\n\r\n <div class=\"fge-warning\" *ngIf=\"activeGroup?.hasDifferences\">\r\n <tmw-icon class=\"mat-icon\" name=\"alert-triangle\"></tmw-icon>\r\n <span>\r\n I campi selezionati partono da grafiche diverse. Stai vedendo i valori reali di\r\n <strong>{{ sampleFieldLabel }}</strong> \u2014 cambia campo dall'anteprima per vedere i suoi.\r\n Verranno modificate solo le propriet\u00E0 che tocchi.\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Stato su cui si sta lavorando -->\r\n <div class=\"fge-states\">\r\n <span class=\"fge-states-label\">Stato</span>\r\n <button type=\"button\" class=\"fge-state-chip\" *ngFor=\"let state of currentStates; trackBy: trackByKey\"\r\n [class.active]=\"currentSelectedState === state.key\" (click)=\"setCurrentState(state.key)\">\r\n {{ state.label }}\r\n </button>\r\n </div>\r\n\r\n <!-- Elementi grafici e relative propriet\u00E0 -->\r\n <div class=\"fge-elements\">\r\n <div class=\"fge-element\" *ngFor=\"let element of currentElements; trackBy: trackByKey\">\r\n\r\n <button type=\"button\" class=\"fge-element-header\" (click)=\"toggleCurrentElement(element.key)\">\r\n <tmw-icon class=\"mat-icon fge-element-caret\"\r\n [name]=\"currentOpenElement === element.key ? 'chevron-down' : 'chevron-right'\"></tmw-icon>\r\n <span class=\"fge-element-title\">{{ element.label }}</span>\r\n <span class=\"fge-element-missing\"\r\n *ngIf=\"activeTab === 'globale' && isGlobalElementMissingOnSample(element.key)\"\r\n matTooltip=\"Il campo mostrato in anteprima non ha questo elemento: la modifica vale comunque per gli altri campi\">\r\n non presente qui\r\n </span>\r\n <span class=\"fge-element-count\" *ngIf=\"rowCount(element.key) > 0\">\r\n {{ rowCount(element.key) }}\r\n </span>\r\n </button>\r\n\r\n <div class=\"fge-props\" *ngIf=\"currentOpenElement === element.key\">\r\n\r\n <div class=\"fge-prop-row\" *ngFor=\"let definition of rowProperties(element.key); trackBy: trackByProp\"\r\n [class.is-set]=\"rowIsSet(element.key, definition.prop)\">\r\n\r\n <div class=\"fge-prop-label\" [matTooltip]=\"definition.prop\">\r\n {{ definition.label }}\r\n </div>\r\n\r\n <div class=\"fge-prop-control\">\r\n\r\n <!-- Colore: pastiglia + opacit\u00E0 + valore testuale -->\r\n <ng-container *ngIf=\"definition.type === 'color'\">\r\n <input type=\"color\" class=\"fge-color-swatch\"\r\n [value]=\"colorHex(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorHex(element.key, definition.prop, $any($event.target).value)\"\r\n [title]=\"definition.prop\" />\r\n <input type=\"range\" class=\"fge-slider\" min=\"0\" max=\"100\" step=\"1\"\r\n [value]=\"colorAlpha(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorAlpha(element.key, definition.prop, $any($event.target).value)\"\r\n matTooltip=\"Opacit\u00E0\" />\r\n <input type=\"text\" class=\"fge-value-input\" placeholder=\"non impostato\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Misura: slider + valore -->\r\n <ng-container *ngIf=\"definition.type === 'size'\">\r\n <input type=\"range\" class=\"fge-slider fge-slider-wide\" [min]=\"definition.min\"\r\n [max]=\"definition.max\" [step]=\"definition.step\"\r\n [value]=\"sizeNumber(rowGet(element.key, definition.prop), definition)\"\r\n (input)=\"rowSetSize(element.key, definition, $any($event.target).value)\" />\r\n <input type=\"text\" class=\"fge-value-input\" placeholder=\"non impostato\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Elenco di valori -->\r\n <ng-container *ngIf=\"definition.type === 'select'\">\r\n <select class=\"fge-select\" [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\">\r\n <option value=\"\">non impostato</option>\r\n <option *ngFor=\"let opt of definition.options\" [value]=\"opt.value\">\r\n {{ opt.label }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n <!-- Testo libero -->\r\n <ng-container *ngIf=\"definition.type === 'text'\">\r\n <input type=\"text\" class=\"fge-value-input fge-value-input-wide\"\r\n [placeholder]=\"definition.placeholder || 'non impostato'\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <button type=\"button\" class=\"fge-reset\"\r\n [disabled]=\"!rowIsSet(element.key, definition.prop)\"\r\n (click)=\"rowReset(element.key, definition.prop)\"\r\n matTooltip=\"Azzera questa propriet\u00E0\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button type=\"button\" class=\"fge-toggle-all\" (click)=\"toggleCurrentShowAll()\">\r\n {{ currentShowAllProperties ? 'Mostra solo le propriet\u00E0 principali' : 'Altre propriet\u00E0...' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA SINISTRA -->\r\n\r\n <!--#region COLONNA DESTRA: anteprima live -->\r\n <div class=\"fge-right\">\r\n\r\n <div class=\"fge-preview-header\">\r\n <span class=\"fge-preview-title\">Anteprima</span>\r\n <select class=\"fge-sample-select\" *ngIf=\"currentSampleFields.length > 1\"\r\n [ngModel]=\"currentSampleIndex\" [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"changeCurrentSample($event)\">\r\n <option *ngFor=\"let f of currentSampleFields; let i = index\" [ngValue]=\"i\">\r\n {{ displayName(f) }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"fge-preview-state\">\r\n Stato mostrato: <strong>{{ currentSelectedState }}</strong> &middot;\r\n il campo scelto serve solo da esempio\r\n </div>\r\n\r\n <div class=\"fge-preview-canvas\" *ngIf=\"currentPreviewField\">\r\n <text-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </text-field-template>\r\n\r\n <textarea-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Area di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </textarea-field-template>\r\n\r\n <numeric-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo numerico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </numeric-field-template>\r\n\r\n <boolean-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Booleano']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </boolean-field-template>\r\n\r\n <date-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Data e/o ora']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </date-field-template>\r\n\r\n <attachment-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Allegato']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </attachment-field-template>\r\n\r\n <label-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Etichetta']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </label-field-template>\r\n\r\n <list-value-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco generico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </list-value-field-template>\r\n\r\n <image-field-selector-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco immagini']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </image-field-selector-template>\r\n\r\n <action-button-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Bottone']\"\r\n [field]=\"currentPreviewField\" [record]=\"{}\" [inConfig]=\"true\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </action-button-field-template>\r\n\r\n <image-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-field-template>\r\n\r\n <image-with-markers-field-template\r\n *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine con markers']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-with-markers-field-template>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA DESTRA -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Campi esclusi -->\r\n <div class=\"fge-unsupported\" *ngIf=\"unsupportedFields.length > 0\">\r\n Esclusi perch\u00E9 senza grafica configurabile: {{ unsupportedFields.length }} campi\r\n ({{ displayName(unsupportedFields[0]) }}<span\r\n *ngIf=\"unsupportedFields.length > 1\">, ...</span>)\r\n </div>\r\n\r\n <!-- Pulsanti -->\r\n <div class=\"fge-footer\">\r\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!hasChanges\" (click)=\"apply()\">\r\n Applica ai campi selezionati\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;height:100%}.fge-root{display:flex;flex-direction:column;height:100%;background:#fff}.fge-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#17795e;color:#fff}.fge-header-icon{font-size:20px;width:20px;height:20px}.fge-header-texts{flex:1;min-width:0}.fge-header-title{font-size:15px;font-weight:600;line-height:1.2}.fge-header-subtitle{font-size:12px;opacity:.85}.fge-header-close{color:#fff}.fge-empty{padding:32px 16px;text-align:center;color:#0009}.fge-body{flex:1;display:flex;min-height:0}.fge-left{flex:1 1 55%;min-width:0;overflow-y:auto;padding:12px 16px 16px;border-right:1px solid rgba(0,0,0,.12)}.fge-type-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.fge-type-tab{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid rgba(0,0,0,.2);border-radius:16px;background:#fff;font-size:12px;cursor:pointer}.fge-type-tab.active{border-color:#17795e;background:#17795e;color:#fff}.fge-type-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:rgba(0,0,0,.12);font-size:11px}.fge-type-tab.active .fge-type-tab-badge{background:rgba(255,255,255,.28)}.fge-group-fields{font-size:12px;color:#000000a6;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-warning{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#fff6e0;border:1px solid #f0d18a;font-size:12px;line-height:1.35}.fge-states{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid rgba(0,0,0,.08)}.fge-states-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#00000080;margin-right:4px}.fge-state-chip{padding:4px 10px;border:1px solid rgba(0,0,0,.18);border-radius:14px;background:#fff;font-size:12px;cursor:pointer}.fge-state-chip.active{border-color:#1976d2;background:#e8f1fb;color:#10508f;font-weight:600}.fge-element{border-bottom:1px solid rgba(0,0,0,.07)}.fge-element-header{display:flex;align-items:center;gap:6px;width:100%;padding:9px 2px;border:none;background:none;text-align:left;cursor:pointer}.fge-element-caret{font-size:16px;width:16px;height:16px;color:#00000073}.fge-element-title{flex:1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000009e}.fge-element-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#17795e;color:#fff;font-size:11px}.fge-props{padding:0 0 10px 22px}.fge-prop-row{display:flex;align-items:center;gap:10px;padding:3px 0}.fge-prop-label{flex:0 0 34%;max-width:34%;font-size:12.5px;color:#000000bf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-prop-row.is-set .fge-prop-label{font-weight:600;color:#000000de}.fge-prop-control{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.fge-color-swatch{flex:0 0 auto;width:30px;height:26px;padding:0;border:1px solid rgba(0,0,0,.25);border-radius:4px;background:none;cursor:pointer}.fge-slider{flex:0 0 70px;max-width:70px;accent-color:#17795e;cursor:pointer}.fge-slider-wide{flex:0 0 100px;max-width:100px}.fge-value-input,.fge-select{flex:1;min-width:0;height:26px;padding:0 8px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;background:#fbfbfb}.fge-value-input:focus,.fge-select:focus{outline:none;border-color:#1976d2;background:#fff}.fge-select{font-family:inherit;font-size:12px;cursor:pointer}.fge-reset{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:none;color:#00000073;cursor:pointer}.fge-reset:hover:not(:disabled){background:rgba(0,0,0,.07);color:#c62828}.fge-reset:disabled{opacity:.25;cursor:default}.fge-reset .mat-icon{font-size:14px;width:14px;height:14px}.fge-toggle-all{margin-top:6px;padding:0;border:none;background:none;color:#1976d2;font-size:12px;cursor:pointer}.fge-toggle-all:hover{text-decoration:underline}.fge-right{flex:1 1 45%;min-width:0;display:flex;flex-direction:column;padding:12px 16px 16px;background:#f7f8f9;overflow-y:auto}.fge-preview-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.fge-preview-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000008c}.fge-sample-select{flex:1;min-width:0;height:26px;padding:0 6px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-size:12px;background:#fff}.fge-preview-state{font-size:12px;color:#0000008c;margin-bottom:10px}.fge-preview-canvas{flex:1;padding:20px 16px;border:1px dashed rgba(0,0,0,.18);border-radius:8px;background:#fff;overflow:auto}.fge-unsupported{padding:6px 16px;font-size:12px;color:#0000008c;border-top:1px solid rgba(0,0,0,.08)}.fge-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid rgba(0,0,0,.12);background:#fafafa}@media (max-width: 900px){.fge-body{flex-direction:column}.fge-left{border-right:none;border-bottom:1px solid rgba(0,0,0,.12)}.fge-prop-label{flex-basis:42%;max-width:42%}}.fge-tabs{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid rgba(0,0,0,.12);background:#fff}.fge-tab{padding:8px 16px;border:none;border-bottom:3px solid transparent;background:none;font-size:13px;font-weight:600;color:#0000008c;cursor:pointer}.fge-tab:hover{color:#000c}.fge-tab.active{color:#17795e;border-bottom-color:#17795e}.fge-scope-note{padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#eef8f4;border:1px solid #bfe0d6;font-size:12px;line-height:1.4}.fge-element-missing{margin-right:6px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.07);font-size:10px;font-weight:500;text-transform:none;letter-spacing:0;color:#00000080}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "component", type: TextFieldTemplateComponent, selector: "text-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: BooleanFieldTemplateComponent, selector: "boolean-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: DateFieldTemplateComponent, selector: "date-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: ListValueFieldTemplateComponent, selector: "list-value-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: AttachmentFieldTemplateComponent, selector: "attachment-field-template", inputs: ["onlyImages", "field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange", "onAttachmentsChange"] }, { kind: "component", type: ImageFieldTemplateComponent, selector: "image-field-template", inputs: ["endPointConfiguration", "record", "formulaObject", "field", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange", "imageDraw"] }, { kind: "component", type: ImageFieldSelectorTemplateComponent, selector: "image-field-selector-template", inputs: ["record", "formulaObject", "field", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: LabelFieldTemplateComponent, selector: "label-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: ImageWithMarkersFieldTemplateComponent, selector: "image-with-markers-field-template", inputs: ["endPointConfiguration", "record", "formulaObject", "field", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange", "imageMark"] }, { kind: "component", type: ActionButtonFieldTemplateComponent, selector: "action-button-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["fireTrigger", "recordChange"] }] });
18353
+ FieldGraphicsEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FieldGraphicsEditorComponent, selector: "field-graphics-editor", inputs: { fields: "fields", endPointConfiguration: "endPointConfiguration", formulaObject: "formulaObject" }, outputs: { applyEvent: "applyEvent", cancelEvent: "cancelEvent" }, ngImport: i0, template: "<div class=\"fge-root\">\r\n\r\n <!-- Intestazione -->\r\n <div class=\"fge-header\">\r\n <tmw-icon class=\"mat-icon fge-header-icon\" name=\"palette\"></tmw-icon>\r\n <div class=\"fge-header-texts\">\r\n <div class=\"fge-header-title\">Grafica dei campi selezionati</div>\r\n <div class=\"fge-header-subtitle\">\r\n {{ styleableFields.length }} campi modificabili\r\n <span *ngIf=\"changesCount > 0\"> &middot; {{ changesCount }} modifiche in sospeso</span>\r\n </div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"fge-header-close\" (click)=\"cancel()\" matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Nessuna tipologia gestibile -->\r\n <div class=\"fge-empty\" *ngIf=\"styleableFields.length === 0\">\r\n Nessuno dei campi selezionati ha una grafica configurabile.\r\n </div>\r\n\r\n <ng-container *ngIf=\"styleableFields.length > 0\">\r\n\r\n <!-- Schede: grafica valida per tutti / divisa per tipologia -->\r\n <div class=\"fge-tabs\">\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'globale'\"\r\n (click)=\"selectTab('globale')\">\r\n Grafica globale\r\n </button>\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'personalizzata'\"\r\n (click)=\"selectTab('personalizzata')\">\r\n Grafica personalizzata\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-body\">\r\n\r\n <!--#region COLONNA SINISTRA -->\r\n <div class=\"fge-left\">\r\n\r\n <!-- Intestazione scheda globale -->\r\n <ng-container *ngIf=\"activeTab === 'globale'\">\r\n <div class=\"fge-scope-note\">\r\n Le modifiche si applicano a <strong>tutti i {{ styleableFields.length }} campi\r\n selezionati</strong>, di qualsiasi tipologia. Gli elementi qui sotto sono quelli comuni:\r\n ogni tipologia li applica al proprio elemento corrispondente.\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Intestazione scheda per tipologia -->\r\n <ng-container *ngIf=\"activeTab === 'personalizzata'\">\r\n <div class=\"fge-type-tabs\" *ngIf=\"groups.length > 1\">\r\n <button type=\"button\" class=\"fge-type-tab\" *ngFor=\"let group of groups; let i = index\"\r\n [class.active]=\"i === activeGroupIndex\" (click)=\"selectGroup(i)\">\r\n {{ group.def.label }}\r\n <span class=\"fge-type-tab-badge\">{{ group.fields.length }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-group-fields\" *ngIf=\"activeGroup as group\" [matTooltip]=\"groupFieldNames(group)\">\r\n <strong>{{ group.def.label }}</strong> &middot; {{ groupFieldNames(group) }}\r\n </div>\r\n\r\n <div class=\"fge-warning\" *ngIf=\"activeGroup?.hasDifferences\">\r\n <tmw-icon class=\"mat-icon\" name=\"alert-triangle\"></tmw-icon>\r\n <span>\r\n I campi selezionati partono da grafiche diverse. Stai vedendo i valori reali di\r\n <strong>{{ sampleFieldLabel }}</strong> \u2014 cambia campo dall'anteprima per vedere i suoi.\r\n Verranno modificate solo le propriet\u00E0 che tocchi.\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Stato su cui si sta lavorando -->\r\n <div class=\"fge-states\">\r\n <span class=\"fge-states-label\">Stato</span>\r\n <button type=\"button\" class=\"fge-state-chip\" *ngFor=\"let state of currentStates; trackBy: trackByKey\"\r\n [class.active]=\"currentSelectedState === state.key\" (click)=\"setCurrentState(state.key)\">\r\n {{ state.label }}\r\n </button>\r\n </div>\r\n\r\n <!-- Elementi grafici e relative propriet\u00E0 -->\r\n <div class=\"fge-elements\">\r\n <div class=\"fge-element\" *ngFor=\"let element of currentElements; trackBy: trackByKey\">\r\n\r\n <button type=\"button\" class=\"fge-element-header\" (click)=\"toggleCurrentElement(element.key)\">\r\n <tmw-icon class=\"mat-icon fge-element-caret\"\r\n [name]=\"currentOpenElement === element.key ? 'chevron-down' : 'chevron-right'\"></tmw-icon>\r\n <span class=\"fge-element-title\">{{ element.label }}</span>\r\n <span class=\"fge-element-missing\"\r\n *ngIf=\"activeTab === 'globale' && isGlobalElementMissingOnSample(element.key)\"\r\n matTooltip=\"Il campo mostrato in anteprima non ha questo elemento: la modifica vale comunque per gli altri campi\">\r\n non presente qui\r\n </span>\r\n <span class=\"fge-element-count\" *ngIf=\"rowCount(element.key) > 0\">\r\n {{ rowCount(element.key) }}\r\n </span>\r\n </button>\r\n\r\n <div class=\"fge-props\" *ngIf=\"currentOpenElement === element.key\">\r\n\r\n <div class=\"fge-prop-row\" *ngFor=\"let definition of rowProperties(element.key); trackBy: trackByProp\"\r\n [class.is-set]=\"rowIsSet(element.key, definition.prop)\"\r\n [class.is-inherited]=\"rowIsInherited(element.key, definition.prop)\">\r\n\r\n <div class=\"fge-prop-label\" [matTooltip]=\"definition.prop\">\r\n {{ definition.label }}\r\n <span class=\"fge-prop-inherited\" *ngIf=\"rowIsInherited(element.key, definition.prop)\"\r\n matTooltip=\"Valore ereditato da 'Etichetta nel contenitore': modificalo qui per sovrascriverlo solo sul bordo\">\r\n ereditato\r\n </span>\r\n </div>\r\n\r\n <div class=\"fge-prop-control\">\r\n\r\n <!-- Colore: pastiglia + opacit\u00E0 + valore testuale -->\r\n <ng-container *ngIf=\"definition.type === 'color'\">\r\n <input type=\"color\" class=\"fge-color-swatch\"\r\n [value]=\"colorHex(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorHex(element.key, definition.prop, $any($event.target).value)\"\r\n [title]=\"definition.prop\" />\r\n <input type=\"range\" class=\"fge-slider\" min=\"0\" max=\"100\" step=\"1\"\r\n [value]=\"colorAlpha(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorAlpha(element.key, definition.prop, $any($event.target).value)\"\r\n matTooltip=\"Opacit\u00E0\" />\r\n <input type=\"text\" class=\"fge-value-input\" placeholder=\"non impostato\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Misura: slider + valore -->\r\n <ng-container *ngIf=\"definition.type === 'size'\">\r\n <input type=\"range\" class=\"fge-slider fge-slider-wide\" [min]=\"definition.min\"\r\n [max]=\"definition.max\" [step]=\"definition.step\"\r\n [value]=\"sizeNumber(rowGet(element.key, definition.prop), definition)\"\r\n (input)=\"rowSetSize(element.key, definition, $any($event.target).value)\" />\r\n <input type=\"text\" class=\"fge-value-input\"\r\n [placeholder]=\"definition.placeholder || 'non impostato'\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Elenco di valori -->\r\n <ng-container *ngIf=\"definition.type === 'select'\">\r\n <select class=\"fge-select\" [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\">\r\n <option value=\"\">non impostato</option>\r\n <option *ngFor=\"let opt of definition.options\" [value]=\"opt.value\">\r\n {{ opt.label }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n <!-- Testo libero -->\r\n <ng-container *ngIf=\"definition.type === 'text'\">\r\n <input type=\"text\" class=\"fge-value-input fge-value-input-wide\"\r\n [placeholder]=\"definition.placeholder || 'non impostato'\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <button type=\"button\" class=\"fge-reset\"\r\n [disabled]=\"!rowIsSet(element.key, definition.prop)\"\r\n (click)=\"rowReset(element.key, definition.prop)\"\r\n matTooltip=\"Azzera questa propriet\u00E0\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button type=\"button\" class=\"fge-toggle-all\" *ngIf=\"rowHasMoreProperties(element.key)\"\r\n (click)=\"toggleCurrentShowAll()\">\r\n {{ currentShowAllProperties ? 'Mostra solo le propriet\u00E0 principali' : 'Altre propriet\u00E0...' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA SINISTRA -->\r\n\r\n <!--#region COLONNA DESTRA: anteprima live -->\r\n <div class=\"fge-right\">\r\n\r\n <div class=\"fge-preview-header\">\r\n <span class=\"fge-preview-title\">Anteprima</span>\r\n <select class=\"fge-sample-select\" *ngIf=\"currentSampleFields.length > 1\"\r\n [ngModel]=\"currentSampleIndex\" [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"changeCurrentSample($event)\">\r\n <option *ngFor=\"let f of currentSampleFields; let i = index\" [ngValue]=\"i\">\r\n {{ displayName(f) }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"fge-preview-state\">\r\n Stato mostrato: <strong>{{ currentSelectedState }}</strong> &middot;\r\n il campo scelto serve solo da esempio\r\n </div>\r\n\r\n <div class=\"fge-preview-canvas\" *ngIf=\"currentPreviewField\">\r\n <text-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </text-field-template>\r\n\r\n <textarea-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Area di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </textarea-field-template>\r\n\r\n <numeric-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo numerico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </numeric-field-template>\r\n\r\n <boolean-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Booleano']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </boolean-field-template>\r\n\r\n <date-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Data e/o ora']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </date-field-template>\r\n\r\n <attachment-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Allegato']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </attachment-field-template>\r\n\r\n <label-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Etichetta']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </label-field-template>\r\n\r\n <list-value-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco generico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </list-value-field-template>\r\n\r\n <image-field-selector-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco immagini']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </image-field-selector-template>\r\n\r\n <action-button-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Bottone']\"\r\n [field]=\"currentPreviewField\" [record]=\"{}\" [inConfig]=\"true\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </action-button-field-template>\r\n\r\n <image-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-field-template>\r\n\r\n <image-with-markers-field-template\r\n *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine con markers']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-with-markers-field-template>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA DESTRA -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Campi esclusi -->\r\n <div class=\"fge-unsupported\" *ngIf=\"unsupportedFields.length > 0\">\r\n Esclusi perch\u00E9 senza grafica configurabile: {{ unsupportedFields.length }} campi\r\n ({{ displayName(unsupportedFields[0]) }}<span\r\n *ngIf=\"unsupportedFields.length > 1\">, ...</span>)\r\n </div>\r\n\r\n <!-- Pulsanti -->\r\n <div class=\"fge-footer\">\r\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!hasChanges\" (click)=\"apply()\">\r\n Applica ai campi selezionati\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;height:100%}.fge-root{display:flex;flex-direction:column;height:100%;background:#fff}.fge-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#17795e;color:#fff}.fge-header-icon{font-size:20px;width:20px;height:20px}.fge-header-texts{flex:1;min-width:0}.fge-header-title{font-size:15px;font-weight:600;line-height:1.2}.fge-header-subtitle{font-size:12px;opacity:.85}.fge-header-close{color:#fff}.fge-empty{padding:32px 16px;text-align:center;color:#0009}.fge-body{flex:1;display:flex;min-height:0}.fge-left{flex:1 1 55%;min-width:0;overflow-y:auto;padding:12px 16px 16px;border-right:1px solid rgba(0,0,0,.12)}.fge-type-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.fge-type-tab{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid rgba(0,0,0,.2);border-radius:16px;background:#fff;font-size:12px;cursor:pointer}.fge-type-tab.active{border-color:#17795e;background:#17795e;color:#fff}.fge-type-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:rgba(0,0,0,.12);font-size:11px}.fge-type-tab.active .fge-type-tab-badge{background:rgba(255,255,255,.28)}.fge-group-fields{font-size:12px;color:#000000a6;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-warning{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#fff6e0;border:1px solid #f0d18a;font-size:12px;line-height:1.35}.fge-states{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid rgba(0,0,0,.08)}.fge-states-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#00000080;margin-right:4px}.fge-state-chip{padding:4px 10px;border:1px solid rgba(0,0,0,.18);border-radius:14px;background:#fff;font-size:12px;cursor:pointer}.fge-state-chip.active{border-color:#1976d2;background:#e8f1fb;color:#10508f;font-weight:600}.fge-element{border-bottom:1px solid rgba(0,0,0,.07)}.fge-element-header{display:flex;align-items:center;gap:6px;width:100%;padding:9px 2px;border:none;background:none;text-align:left;cursor:pointer}.fge-element-caret{font-size:16px;width:16px;height:16px;color:#00000073}.fge-element-title{flex:1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000009e}.fge-element-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#17795e;color:#fff;font-size:11px}.fge-props{padding:0 0 10px 22px}.fge-prop-row{display:flex;align-items:center;gap:10px;padding:3px 0}.fge-prop-label{flex:0 0 34%;max-width:34%;font-size:12.5px;color:#000000bf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-prop-inherited{margin-left:4px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.07);font-size:10px;font-weight:500;color:#00000080}.fge-prop-row.is-inherited .fge-value-input,.fge-prop-row.is-inherited .fge-select{color:#00000080;font-style:italic}.fge-prop-row.is-set .fge-prop-label{font-weight:600;color:#000000de}.fge-prop-control{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.fge-color-swatch{flex:0 0 auto;width:30px;height:26px;padding:0;border:1px solid rgba(0,0,0,.25);border-radius:4px;background:none;cursor:pointer}.fge-slider{flex:0 0 70px;max-width:70px;accent-color:#17795e;cursor:pointer}.fge-slider-wide{flex:0 0 100px;max-width:100px}.fge-value-input,.fge-select{flex:1;min-width:0;height:26px;padding:0 8px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;background:#fbfbfb}.fge-value-input:focus,.fge-select:focus{outline:none;border-color:#1976d2;background:#fff}.fge-select{font-family:inherit;font-size:12px;cursor:pointer}.fge-reset{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:none;color:#00000073;cursor:pointer}.fge-reset:hover:not(:disabled){background:rgba(0,0,0,.07);color:#c62828}.fge-reset:disabled{opacity:.25;cursor:default}.fge-reset .mat-icon{font-size:14px;width:14px;height:14px}.fge-toggle-all{margin-top:6px;padding:0;border:none;background:none;color:#1976d2;font-size:12px;cursor:pointer}.fge-toggle-all:hover{text-decoration:underline}.fge-right{flex:1 1 45%;min-width:0;display:flex;flex-direction:column;padding:12px 16px 16px;background:#f7f8f9;overflow-y:auto}.fge-preview-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.fge-preview-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000008c}.fge-sample-select{flex:1;min-width:0;height:26px;padding:0 6px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-size:12px;background:#fff}.fge-preview-state{font-size:12px;color:#0000008c;margin-bottom:10px}.fge-preview-canvas{flex:1;padding:20px 16px;border:1px dashed rgba(0,0,0,.18);border-radius:8px;background:#fff;overflow:auto}.fge-unsupported{padding:6px 16px;font-size:12px;color:#0000008c;border-top:1px solid rgba(0,0,0,.08)}.fge-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid rgba(0,0,0,.12);background:#fafafa}@media (max-width: 900px){.fge-body{flex-direction:column}.fge-left{border-right:none;border-bottom:1px solid rgba(0,0,0,.12)}.fge-prop-label{flex-basis:42%;max-width:42%}}.fge-tabs{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid rgba(0,0,0,.12);background:#fff}.fge-tab{padding:8px 16px;border:none;border-bottom:3px solid transparent;background:none;font-size:13px;font-weight:600;color:#0000008c;cursor:pointer}.fge-tab:hover{color:#000c}.fge-tab.active{color:#17795e;border-bottom-color:#17795e}.fge-scope-note{padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#eef8f4;border:1px solid #bfe0d6;font-size:12px;line-height:1.4}.fge-element-missing{margin-right:6px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.07);font-size:10px;font-weight:500;text-transform:none;letter-spacing:0;color:#00000080}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "component", type: TextFieldTemplateComponent, selector: "text-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: BooleanFieldTemplateComponent, selector: "boolean-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: DateFieldTemplateComponent, selector: "date-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: ListValueFieldTemplateComponent, selector: "list-value-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: AttachmentFieldTemplateComponent, selector: "attachment-field-template", inputs: ["onlyImages", "field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange", "onAttachmentsChange"] }, { kind: "component", type: ImageFieldTemplateComponent, selector: "image-field-template", inputs: ["endPointConfiguration", "record", "formulaObject", "field", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange", "imageDraw"] }, { kind: "component", type: ImageFieldSelectorTemplateComponent, selector: "image-field-selector-template", inputs: ["record", "formulaObject", "field", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: LabelFieldTemplateComponent, selector: "label-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange"] }, { kind: "component", type: ImageWithMarkersFieldTemplateComponent, selector: "image-with-markers-field-template", inputs: ["endPointConfiguration", "record", "formulaObject", "field", "inConfig", "styleVersion", "forceState"], outputs: ["recordChange", "imageMark"] }, { kind: "component", type: ActionButtonFieldTemplateComponent, selector: "action-button-field-template", inputs: ["field", "record", "formulaObject", "inConfig", "styleVersion", "forceState"], outputs: ["fireTrigger", "recordChange"] }] });
17905
18354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FieldGraphicsEditorComponent, decorators: [{
17906
18355
  type: Component,
17907
- args: [{ selector: 'field-graphics-editor', template: "<div class=\"fge-root\">\r\n\r\n <!-- Intestazione -->\r\n <div class=\"fge-header\">\r\n <tmw-icon class=\"mat-icon fge-header-icon\" name=\"palette\"></tmw-icon>\r\n <div class=\"fge-header-texts\">\r\n <div class=\"fge-header-title\">Grafica dei campi selezionati</div>\r\n <div class=\"fge-header-subtitle\">\r\n {{ styleableFields.length }} campi modificabili\r\n <span *ngIf=\"changesCount > 0\"> &middot; {{ changesCount }} modifiche in sospeso</span>\r\n </div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"fge-header-close\" (click)=\"cancel()\" matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Nessuna tipologia gestibile -->\r\n <div class=\"fge-empty\" *ngIf=\"styleableFields.length === 0\">\r\n Nessuno dei campi selezionati ha una grafica configurabile.\r\n </div>\r\n\r\n <ng-container *ngIf=\"styleableFields.length > 0\">\r\n\r\n <!-- Schede: grafica valida per tutti / divisa per tipologia -->\r\n <div class=\"fge-tabs\">\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'globale'\"\r\n (click)=\"selectTab('globale')\">\r\n Grafica globale\r\n </button>\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'personalizzata'\"\r\n (click)=\"selectTab('personalizzata')\">\r\n Grafica personalizzata\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-body\">\r\n\r\n <!--#region COLONNA SINISTRA -->\r\n <div class=\"fge-left\">\r\n\r\n <!-- Intestazione scheda globale -->\r\n <ng-container *ngIf=\"activeTab === 'globale'\">\r\n <div class=\"fge-scope-note\">\r\n Le modifiche si applicano a <strong>tutti i {{ styleableFields.length }} campi\r\n selezionati</strong>, di qualsiasi tipologia. Gli elementi qui sotto sono quelli comuni:\r\n ogni tipologia li applica al proprio elemento corrispondente.\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Intestazione scheda per tipologia -->\r\n <ng-container *ngIf=\"activeTab === 'personalizzata'\">\r\n <div class=\"fge-type-tabs\" *ngIf=\"groups.length > 1\">\r\n <button type=\"button\" class=\"fge-type-tab\" *ngFor=\"let group of groups; let i = index\"\r\n [class.active]=\"i === activeGroupIndex\" (click)=\"selectGroup(i)\">\r\n {{ group.def.label }}\r\n <span class=\"fge-type-tab-badge\">{{ group.fields.length }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-group-fields\" *ngIf=\"activeGroup as group\" [matTooltip]=\"groupFieldNames(group)\">\r\n <strong>{{ group.def.label }}</strong> &middot; {{ groupFieldNames(group) }}\r\n </div>\r\n\r\n <div class=\"fge-warning\" *ngIf=\"activeGroup?.hasDifferences\">\r\n <tmw-icon class=\"mat-icon\" name=\"alert-triangle\"></tmw-icon>\r\n <span>\r\n I campi selezionati partono da grafiche diverse. Stai vedendo i valori reali di\r\n <strong>{{ sampleFieldLabel }}</strong> \u2014 cambia campo dall'anteprima per vedere i suoi.\r\n Verranno modificate solo le propriet\u00E0 che tocchi.\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Stato su cui si sta lavorando -->\r\n <div class=\"fge-states\">\r\n <span class=\"fge-states-label\">Stato</span>\r\n <button type=\"button\" class=\"fge-state-chip\" *ngFor=\"let state of currentStates; trackBy: trackByKey\"\r\n [class.active]=\"currentSelectedState === state.key\" (click)=\"setCurrentState(state.key)\">\r\n {{ state.label }}\r\n </button>\r\n </div>\r\n\r\n <!-- Elementi grafici e relative propriet\u00E0 -->\r\n <div class=\"fge-elements\">\r\n <div class=\"fge-element\" *ngFor=\"let element of currentElements; trackBy: trackByKey\">\r\n\r\n <button type=\"button\" class=\"fge-element-header\" (click)=\"toggleCurrentElement(element.key)\">\r\n <tmw-icon class=\"mat-icon fge-element-caret\"\r\n [name]=\"currentOpenElement === element.key ? 'chevron-down' : 'chevron-right'\"></tmw-icon>\r\n <span class=\"fge-element-title\">{{ element.label }}</span>\r\n <span class=\"fge-element-missing\"\r\n *ngIf=\"activeTab === 'globale' && isGlobalElementMissingOnSample(element.key)\"\r\n matTooltip=\"Il campo mostrato in anteprima non ha questo elemento: la modifica vale comunque per gli altri campi\">\r\n non presente qui\r\n </span>\r\n <span class=\"fge-element-count\" *ngIf=\"rowCount(element.key) > 0\">\r\n {{ rowCount(element.key) }}\r\n </span>\r\n </button>\r\n\r\n <div class=\"fge-props\" *ngIf=\"currentOpenElement === element.key\">\r\n\r\n <div class=\"fge-prop-row\" *ngFor=\"let definition of rowProperties(element.key); trackBy: trackByProp\"\r\n [class.is-set]=\"rowIsSet(element.key, definition.prop)\">\r\n\r\n <div class=\"fge-prop-label\" [matTooltip]=\"definition.prop\">\r\n {{ definition.label }}\r\n </div>\r\n\r\n <div class=\"fge-prop-control\">\r\n\r\n <!-- Colore: pastiglia + opacit\u00E0 + valore testuale -->\r\n <ng-container *ngIf=\"definition.type === 'color'\">\r\n <input type=\"color\" class=\"fge-color-swatch\"\r\n [value]=\"colorHex(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorHex(element.key, definition.prop, $any($event.target).value)\"\r\n [title]=\"definition.prop\" />\r\n <input type=\"range\" class=\"fge-slider\" min=\"0\" max=\"100\" step=\"1\"\r\n [value]=\"colorAlpha(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorAlpha(element.key, definition.prop, $any($event.target).value)\"\r\n matTooltip=\"Opacit\u00E0\" />\r\n <input type=\"text\" class=\"fge-value-input\" placeholder=\"non impostato\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Misura: slider + valore -->\r\n <ng-container *ngIf=\"definition.type === 'size'\">\r\n <input type=\"range\" class=\"fge-slider fge-slider-wide\" [min]=\"definition.min\"\r\n [max]=\"definition.max\" [step]=\"definition.step\"\r\n [value]=\"sizeNumber(rowGet(element.key, definition.prop), definition)\"\r\n (input)=\"rowSetSize(element.key, definition, $any($event.target).value)\" />\r\n <input type=\"text\" class=\"fge-value-input\" placeholder=\"non impostato\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Elenco di valori -->\r\n <ng-container *ngIf=\"definition.type === 'select'\">\r\n <select class=\"fge-select\" [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\">\r\n <option value=\"\">non impostato</option>\r\n <option *ngFor=\"let opt of definition.options\" [value]=\"opt.value\">\r\n {{ opt.label }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n <!-- Testo libero -->\r\n <ng-container *ngIf=\"definition.type === 'text'\">\r\n <input type=\"text\" class=\"fge-value-input fge-value-input-wide\"\r\n [placeholder]=\"definition.placeholder || 'non impostato'\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <button type=\"button\" class=\"fge-reset\"\r\n [disabled]=\"!rowIsSet(element.key, definition.prop)\"\r\n (click)=\"rowReset(element.key, definition.prop)\"\r\n matTooltip=\"Azzera questa propriet\u00E0\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button type=\"button\" class=\"fge-toggle-all\" (click)=\"toggleCurrentShowAll()\">\r\n {{ currentShowAllProperties ? 'Mostra solo le propriet\u00E0 principali' : 'Altre propriet\u00E0...' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA SINISTRA -->\r\n\r\n <!--#region COLONNA DESTRA: anteprima live -->\r\n <div class=\"fge-right\">\r\n\r\n <div class=\"fge-preview-header\">\r\n <span class=\"fge-preview-title\">Anteprima</span>\r\n <select class=\"fge-sample-select\" *ngIf=\"currentSampleFields.length > 1\"\r\n [ngModel]=\"currentSampleIndex\" [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"changeCurrentSample($event)\">\r\n <option *ngFor=\"let f of currentSampleFields; let i = index\" [ngValue]=\"i\">\r\n {{ displayName(f) }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"fge-preview-state\">\r\n Stato mostrato: <strong>{{ currentSelectedState }}</strong> &middot;\r\n il campo scelto serve solo da esempio\r\n </div>\r\n\r\n <div class=\"fge-preview-canvas\" *ngIf=\"currentPreviewField\">\r\n <text-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </text-field-template>\r\n\r\n <textarea-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Area di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </textarea-field-template>\r\n\r\n <numeric-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo numerico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </numeric-field-template>\r\n\r\n <boolean-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Booleano']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </boolean-field-template>\r\n\r\n <date-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Data e/o ora']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </date-field-template>\r\n\r\n <attachment-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Allegato']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </attachment-field-template>\r\n\r\n <label-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Etichetta']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </label-field-template>\r\n\r\n <list-value-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco generico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </list-value-field-template>\r\n\r\n <image-field-selector-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco immagini']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </image-field-selector-template>\r\n\r\n <action-button-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Bottone']\"\r\n [field]=\"currentPreviewField\" [record]=\"{}\" [inConfig]=\"true\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </action-button-field-template>\r\n\r\n <image-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-field-template>\r\n\r\n <image-with-markers-field-template\r\n *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine con markers']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-with-markers-field-template>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA DESTRA -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Campi esclusi -->\r\n <div class=\"fge-unsupported\" *ngIf=\"unsupportedFields.length > 0\">\r\n Esclusi perch\u00E9 senza grafica configurabile: {{ unsupportedFields.length }} campi\r\n ({{ displayName(unsupportedFields[0]) }}<span\r\n *ngIf=\"unsupportedFields.length > 1\">, ...</span>)\r\n </div>\r\n\r\n <!-- Pulsanti -->\r\n <div class=\"fge-footer\">\r\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!hasChanges\" (click)=\"apply()\">\r\n Applica ai campi selezionati\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;height:100%}.fge-root{display:flex;flex-direction:column;height:100%;background:#fff}.fge-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#17795e;color:#fff}.fge-header-icon{font-size:20px;width:20px;height:20px}.fge-header-texts{flex:1;min-width:0}.fge-header-title{font-size:15px;font-weight:600;line-height:1.2}.fge-header-subtitle{font-size:12px;opacity:.85}.fge-header-close{color:#fff}.fge-empty{padding:32px 16px;text-align:center;color:#0009}.fge-body{flex:1;display:flex;min-height:0}.fge-left{flex:1 1 55%;min-width:0;overflow-y:auto;padding:12px 16px 16px;border-right:1px solid rgba(0,0,0,.12)}.fge-type-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.fge-type-tab{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid rgba(0,0,0,.2);border-radius:16px;background:#fff;font-size:12px;cursor:pointer}.fge-type-tab.active{border-color:#17795e;background:#17795e;color:#fff}.fge-type-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:rgba(0,0,0,.12);font-size:11px}.fge-type-tab.active .fge-type-tab-badge{background:rgba(255,255,255,.28)}.fge-group-fields{font-size:12px;color:#000000a6;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-warning{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#fff6e0;border:1px solid #f0d18a;font-size:12px;line-height:1.35}.fge-states{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid rgba(0,0,0,.08)}.fge-states-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#00000080;margin-right:4px}.fge-state-chip{padding:4px 10px;border:1px solid rgba(0,0,0,.18);border-radius:14px;background:#fff;font-size:12px;cursor:pointer}.fge-state-chip.active{border-color:#1976d2;background:#e8f1fb;color:#10508f;font-weight:600}.fge-element{border-bottom:1px solid rgba(0,0,0,.07)}.fge-element-header{display:flex;align-items:center;gap:6px;width:100%;padding:9px 2px;border:none;background:none;text-align:left;cursor:pointer}.fge-element-caret{font-size:16px;width:16px;height:16px;color:#00000073}.fge-element-title{flex:1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000009e}.fge-element-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#17795e;color:#fff;font-size:11px}.fge-props{padding:0 0 10px 22px}.fge-prop-row{display:flex;align-items:center;gap:10px;padding:3px 0}.fge-prop-label{flex:0 0 34%;max-width:34%;font-size:12.5px;color:#000000bf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-prop-row.is-set .fge-prop-label{font-weight:600;color:#000000de}.fge-prop-control{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.fge-color-swatch{flex:0 0 auto;width:30px;height:26px;padding:0;border:1px solid rgba(0,0,0,.25);border-radius:4px;background:none;cursor:pointer}.fge-slider{flex:0 0 70px;max-width:70px;accent-color:#17795e;cursor:pointer}.fge-slider-wide{flex:0 0 100px;max-width:100px}.fge-value-input,.fge-select{flex:1;min-width:0;height:26px;padding:0 8px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;background:#fbfbfb}.fge-value-input:focus,.fge-select:focus{outline:none;border-color:#1976d2;background:#fff}.fge-select{font-family:inherit;font-size:12px;cursor:pointer}.fge-reset{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:none;color:#00000073;cursor:pointer}.fge-reset:hover:not(:disabled){background:rgba(0,0,0,.07);color:#c62828}.fge-reset:disabled{opacity:.25;cursor:default}.fge-reset .mat-icon{font-size:14px;width:14px;height:14px}.fge-toggle-all{margin-top:6px;padding:0;border:none;background:none;color:#1976d2;font-size:12px;cursor:pointer}.fge-toggle-all:hover{text-decoration:underline}.fge-right{flex:1 1 45%;min-width:0;display:flex;flex-direction:column;padding:12px 16px 16px;background:#f7f8f9;overflow-y:auto}.fge-preview-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.fge-preview-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000008c}.fge-sample-select{flex:1;min-width:0;height:26px;padding:0 6px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-size:12px;background:#fff}.fge-preview-state{font-size:12px;color:#0000008c;margin-bottom:10px}.fge-preview-canvas{flex:1;padding:20px 16px;border:1px dashed rgba(0,0,0,.18);border-radius:8px;background:#fff;overflow:auto}.fge-unsupported{padding:6px 16px;font-size:12px;color:#0000008c;border-top:1px solid rgba(0,0,0,.08)}.fge-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid rgba(0,0,0,.12);background:#fafafa}@media (max-width: 900px){.fge-body{flex-direction:column}.fge-left{border-right:none;border-bottom:1px solid rgba(0,0,0,.12)}.fge-prop-label{flex-basis:42%;max-width:42%}}.fge-tabs{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid rgba(0,0,0,.12);background:#fff}.fge-tab{padding:8px 16px;border:none;border-bottom:3px solid transparent;background:none;font-size:13px;font-weight:600;color:#0000008c;cursor:pointer}.fge-tab:hover{color:#000c}.fge-tab.active{color:#17795e;border-bottom-color:#17795e}.fge-scope-note{padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#eef8f4;border:1px solid #bfe0d6;font-size:12px;line-height:1.4}.fge-element-missing{margin-right:6px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.07);font-size:10px;font-weight:500;text-transform:none;letter-spacing:0;color:#00000080}\n"] }]
18356
+ args: [{ selector: 'field-graphics-editor', template: "<div class=\"fge-root\">\r\n\r\n <!-- Intestazione -->\r\n <div class=\"fge-header\">\r\n <tmw-icon class=\"mat-icon fge-header-icon\" name=\"palette\"></tmw-icon>\r\n <div class=\"fge-header-texts\">\r\n <div class=\"fge-header-title\">Grafica dei campi selezionati</div>\r\n <div class=\"fge-header-subtitle\">\r\n {{ styleableFields.length }} campi modificabili\r\n <span *ngIf=\"changesCount > 0\"> &middot; {{ changesCount }} modifiche in sospeso</span>\r\n </div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"fge-header-close\" (click)=\"cancel()\" matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Nessuna tipologia gestibile -->\r\n <div class=\"fge-empty\" *ngIf=\"styleableFields.length === 0\">\r\n Nessuno dei campi selezionati ha una grafica configurabile.\r\n </div>\r\n\r\n <ng-container *ngIf=\"styleableFields.length > 0\">\r\n\r\n <!-- Schede: grafica valida per tutti / divisa per tipologia -->\r\n <div class=\"fge-tabs\">\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'globale'\"\r\n (click)=\"selectTab('globale')\">\r\n Grafica globale\r\n </button>\r\n <button type=\"button\" class=\"fge-tab\" [class.active]=\"activeTab === 'personalizzata'\"\r\n (click)=\"selectTab('personalizzata')\">\r\n Grafica personalizzata\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-body\">\r\n\r\n <!--#region COLONNA SINISTRA -->\r\n <div class=\"fge-left\">\r\n\r\n <!-- Intestazione scheda globale -->\r\n <ng-container *ngIf=\"activeTab === 'globale'\">\r\n <div class=\"fge-scope-note\">\r\n Le modifiche si applicano a <strong>tutti i {{ styleableFields.length }} campi\r\n selezionati</strong>, di qualsiasi tipologia. Gli elementi qui sotto sono quelli comuni:\r\n ogni tipologia li applica al proprio elemento corrispondente.\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Intestazione scheda per tipologia -->\r\n <ng-container *ngIf=\"activeTab === 'personalizzata'\">\r\n <div class=\"fge-type-tabs\" *ngIf=\"groups.length > 1\">\r\n <button type=\"button\" class=\"fge-type-tab\" *ngFor=\"let group of groups; let i = index\"\r\n [class.active]=\"i === activeGroupIndex\" (click)=\"selectGroup(i)\">\r\n {{ group.def.label }}\r\n <span class=\"fge-type-tab-badge\">{{ group.fields.length }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"fge-group-fields\" *ngIf=\"activeGroup as group\" [matTooltip]=\"groupFieldNames(group)\">\r\n <strong>{{ group.def.label }}</strong> &middot; {{ groupFieldNames(group) }}\r\n </div>\r\n\r\n <div class=\"fge-warning\" *ngIf=\"activeGroup?.hasDifferences\">\r\n <tmw-icon class=\"mat-icon\" name=\"alert-triangle\"></tmw-icon>\r\n <span>\r\n I campi selezionati partono da grafiche diverse. Stai vedendo i valori reali di\r\n <strong>{{ sampleFieldLabel }}</strong> \u2014 cambia campo dall'anteprima per vedere i suoi.\r\n Verranno modificate solo le propriet\u00E0 che tocchi.\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Stato su cui si sta lavorando -->\r\n <div class=\"fge-states\">\r\n <span class=\"fge-states-label\">Stato</span>\r\n <button type=\"button\" class=\"fge-state-chip\" *ngFor=\"let state of currentStates; trackBy: trackByKey\"\r\n [class.active]=\"currentSelectedState === state.key\" (click)=\"setCurrentState(state.key)\">\r\n {{ state.label }}\r\n </button>\r\n </div>\r\n\r\n <!-- Elementi grafici e relative propriet\u00E0 -->\r\n <div class=\"fge-elements\">\r\n <div class=\"fge-element\" *ngFor=\"let element of currentElements; trackBy: trackByKey\">\r\n\r\n <button type=\"button\" class=\"fge-element-header\" (click)=\"toggleCurrentElement(element.key)\">\r\n <tmw-icon class=\"mat-icon fge-element-caret\"\r\n [name]=\"currentOpenElement === element.key ? 'chevron-down' : 'chevron-right'\"></tmw-icon>\r\n <span class=\"fge-element-title\">{{ element.label }}</span>\r\n <span class=\"fge-element-missing\"\r\n *ngIf=\"activeTab === 'globale' && isGlobalElementMissingOnSample(element.key)\"\r\n matTooltip=\"Il campo mostrato in anteprima non ha questo elemento: la modifica vale comunque per gli altri campi\">\r\n non presente qui\r\n </span>\r\n <span class=\"fge-element-count\" *ngIf=\"rowCount(element.key) > 0\">\r\n {{ rowCount(element.key) }}\r\n </span>\r\n </button>\r\n\r\n <div class=\"fge-props\" *ngIf=\"currentOpenElement === element.key\">\r\n\r\n <div class=\"fge-prop-row\" *ngFor=\"let definition of rowProperties(element.key); trackBy: trackByProp\"\r\n [class.is-set]=\"rowIsSet(element.key, definition.prop)\"\r\n [class.is-inherited]=\"rowIsInherited(element.key, definition.prop)\">\r\n\r\n <div class=\"fge-prop-label\" [matTooltip]=\"definition.prop\">\r\n {{ definition.label }}\r\n <span class=\"fge-prop-inherited\" *ngIf=\"rowIsInherited(element.key, definition.prop)\"\r\n matTooltip=\"Valore ereditato da 'Etichetta nel contenitore': modificalo qui per sovrascriverlo solo sul bordo\">\r\n ereditato\r\n </span>\r\n </div>\r\n\r\n <div class=\"fge-prop-control\">\r\n\r\n <!-- Colore: pastiglia + opacit\u00E0 + valore testuale -->\r\n <ng-container *ngIf=\"definition.type === 'color'\">\r\n <input type=\"color\" class=\"fge-color-swatch\"\r\n [value]=\"colorHex(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorHex(element.key, definition.prop, $any($event.target).value)\"\r\n [title]=\"definition.prop\" />\r\n <input type=\"range\" class=\"fge-slider\" min=\"0\" max=\"100\" step=\"1\"\r\n [value]=\"colorAlpha(rowGet(element.key, definition.prop))\"\r\n (input)=\"rowSetColorAlpha(element.key, definition.prop, $any($event.target).value)\"\r\n matTooltip=\"Opacit\u00E0\" />\r\n <input type=\"text\" class=\"fge-value-input\" placeholder=\"non impostato\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Misura: slider + valore -->\r\n <ng-container *ngIf=\"definition.type === 'size'\">\r\n <input type=\"range\" class=\"fge-slider fge-slider-wide\" [min]=\"definition.min\"\r\n [max]=\"definition.max\" [step]=\"definition.step\"\r\n [value]=\"sizeNumber(rowGet(element.key, definition.prop), definition)\"\r\n (input)=\"rowSetSize(element.key, definition, $any($event.target).value)\" />\r\n <input type=\"text\" class=\"fge-value-input\"\r\n [placeholder]=\"definition.placeholder || 'non impostato'\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <!-- Elenco di valori -->\r\n <ng-container *ngIf=\"definition.type === 'select'\">\r\n <select class=\"fge-select\" [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\">\r\n <option value=\"\">non impostato</option>\r\n <option *ngFor=\"let opt of definition.options\" [value]=\"opt.value\">\r\n {{ opt.label }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n <!-- Testo libero -->\r\n <ng-container *ngIf=\"definition.type === 'text'\">\r\n <input type=\"text\" class=\"fge-value-input fge-value-input-wide\"\r\n [placeholder]=\"definition.placeholder || 'non impostato'\"\r\n [ngModel]=\"rowGet(element.key, definition.prop)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"rowSet(element.key, definition.prop, $event)\" />\r\n </ng-container>\r\n\r\n <button type=\"button\" class=\"fge-reset\"\r\n [disabled]=\"!rowIsSet(element.key, definition.prop)\"\r\n (click)=\"rowReset(element.key, definition.prop)\"\r\n matTooltip=\"Azzera questa propriet\u00E0\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button type=\"button\" class=\"fge-toggle-all\" *ngIf=\"rowHasMoreProperties(element.key)\"\r\n (click)=\"toggleCurrentShowAll()\">\r\n {{ currentShowAllProperties ? 'Mostra solo le propriet\u00E0 principali' : 'Altre propriet\u00E0...' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA SINISTRA -->\r\n\r\n <!--#region COLONNA DESTRA: anteprima live -->\r\n <div class=\"fge-right\">\r\n\r\n <div class=\"fge-preview-header\">\r\n <span class=\"fge-preview-title\">Anteprima</span>\r\n <select class=\"fge-sample-select\" *ngIf=\"currentSampleFields.length > 1\"\r\n [ngModel]=\"currentSampleIndex\" [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"changeCurrentSample($event)\">\r\n <option *ngFor=\"let f of currentSampleFields; let i = index\" [ngValue]=\"i\">\r\n {{ displayName(f) }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"fge-preview-state\">\r\n Stato mostrato: <strong>{{ currentSelectedState }}</strong> &middot;\r\n il campo scelto serve solo da esempio\r\n </div>\r\n\r\n <div class=\"fge-preview-canvas\" *ngIf=\"currentPreviewField\">\r\n <text-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </text-field-template>\r\n\r\n <textarea-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Area di testo']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </textarea-field-template>\r\n\r\n <numeric-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Campo numerico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </numeric-field-template>\r\n\r\n <boolean-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Booleano']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </boolean-field-template>\r\n\r\n <date-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Data e/o ora']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </date-field-template>\r\n\r\n <attachment-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Allegato']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </attachment-field-template>\r\n\r\n <label-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Etichetta']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </label-field-template>\r\n\r\n <list-value-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco generico']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </list-value-field-template>\r\n\r\n <image-field-selector-template *ngIf=\"currentPreviewType === FieldTypeEnum['Elenco immagini']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [styleVersion]=\"styleVersion\" [forceState]=\"currentSelectedState\">\r\n </image-field-selector-template>\r\n\r\n <action-button-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Bottone']\"\r\n [field]=\"currentPreviewField\" [record]=\"{}\" [inConfig]=\"true\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </action-button-field-template>\r\n\r\n <image-field-template *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-field-template>\r\n\r\n <image-with-markers-field-template\r\n *ngIf=\"currentPreviewType === FieldTypeEnum['Immagine con markers']\"\r\n [field]=\"currentPreviewField\" [record]=\"currentPreviewRecord\" [inConfig]=\"true\"\r\n [endPointConfiguration]=\"endPointConfiguration\" [styleVersion]=\"styleVersion\"\r\n [forceState]=\"currentSelectedState\">\r\n </image-with-markers-field-template>\r\n </div>\r\n </div>\r\n <!--#endregion COLONNA DESTRA -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Campi esclusi -->\r\n <div class=\"fge-unsupported\" *ngIf=\"unsupportedFields.length > 0\">\r\n Esclusi perch\u00E9 senza grafica configurabile: {{ unsupportedFields.length }} campi\r\n ({{ displayName(unsupportedFields[0]) }}<span\r\n *ngIf=\"unsupportedFields.length > 1\">, ...</span>)\r\n </div>\r\n\r\n <!-- Pulsanti -->\r\n <div class=\"fge-footer\">\r\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!hasChanges\" (click)=\"apply()\">\r\n Applica ai campi selezionati\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;height:100%}.fge-root{display:flex;flex-direction:column;height:100%;background:#fff}.fge-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#17795e;color:#fff}.fge-header-icon{font-size:20px;width:20px;height:20px}.fge-header-texts{flex:1;min-width:0}.fge-header-title{font-size:15px;font-weight:600;line-height:1.2}.fge-header-subtitle{font-size:12px;opacity:.85}.fge-header-close{color:#fff}.fge-empty{padding:32px 16px;text-align:center;color:#0009}.fge-body{flex:1;display:flex;min-height:0}.fge-left{flex:1 1 55%;min-width:0;overflow-y:auto;padding:12px 16px 16px;border-right:1px solid rgba(0,0,0,.12)}.fge-type-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.fge-type-tab{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid rgba(0,0,0,.2);border-radius:16px;background:#fff;font-size:12px;cursor:pointer}.fge-type-tab.active{border-color:#17795e;background:#17795e;color:#fff}.fge-type-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:rgba(0,0,0,.12);font-size:11px}.fge-type-tab.active .fge-type-tab-badge{background:rgba(255,255,255,.28)}.fge-group-fields{font-size:12px;color:#000000a6;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-warning{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#fff6e0;border:1px solid #f0d18a;font-size:12px;line-height:1.35}.fge-states{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid rgba(0,0,0,.08)}.fge-states-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#00000080;margin-right:4px}.fge-state-chip{padding:4px 10px;border:1px solid rgba(0,0,0,.18);border-radius:14px;background:#fff;font-size:12px;cursor:pointer}.fge-state-chip.active{border-color:#1976d2;background:#e8f1fb;color:#10508f;font-weight:600}.fge-element{border-bottom:1px solid rgba(0,0,0,.07)}.fge-element-header{display:flex;align-items:center;gap:6px;width:100%;padding:9px 2px;border:none;background:none;text-align:left;cursor:pointer}.fge-element-caret{font-size:16px;width:16px;height:16px;color:#00000073}.fge-element-title{flex:1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000009e}.fge-element-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#17795e;color:#fff;font-size:11px}.fge-props{padding:0 0 10px 22px}.fge-prop-row{display:flex;align-items:center;gap:10px;padding:3px 0}.fge-prop-label{flex:0 0 34%;max-width:34%;font-size:12.5px;color:#000000bf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fge-prop-inherited{margin-left:4px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.07);font-size:10px;font-weight:500;color:#00000080}.fge-prop-row.is-inherited .fge-value-input,.fge-prop-row.is-inherited .fge-select{color:#00000080;font-style:italic}.fge-prop-row.is-set .fge-prop-label{font-weight:600;color:#000000de}.fge-prop-control{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.fge-color-swatch{flex:0 0 auto;width:30px;height:26px;padding:0;border:1px solid rgba(0,0,0,.25);border-radius:4px;background:none;cursor:pointer}.fge-slider{flex:0 0 70px;max-width:70px;accent-color:#17795e;cursor:pointer}.fge-slider-wide{flex:0 0 100px;max-width:100px}.fge-value-input,.fge-select{flex:1;min-width:0;height:26px;padding:0 8px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;background:#fbfbfb}.fge-value-input:focus,.fge-select:focus{outline:none;border-color:#1976d2;background:#fff}.fge-select{font-family:inherit;font-size:12px;cursor:pointer}.fge-reset{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:none;color:#00000073;cursor:pointer}.fge-reset:hover:not(:disabled){background:rgba(0,0,0,.07);color:#c62828}.fge-reset:disabled{opacity:.25;cursor:default}.fge-reset .mat-icon{font-size:14px;width:14px;height:14px}.fge-toggle-all{margin-top:6px;padding:0;border:none;background:none;color:#1976d2;font-size:12px;cursor:pointer}.fge-toggle-all:hover{text-decoration:underline}.fge-right{flex:1 1 45%;min-width:0;display:flex;flex-direction:column;padding:12px 16px 16px;background:#f7f8f9;overflow-y:auto}.fge-preview-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.fge-preview-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#0000008c}.fge-sample-select{flex:1;min-width:0;height:26px;padding:0 6px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-size:12px;background:#fff}.fge-preview-state{font-size:12px;color:#0000008c;margin-bottom:10px}.fge-preview-canvas{flex:1;padding:20px 16px;border:1px dashed rgba(0,0,0,.18);border-radius:8px;background:#fff;overflow:auto}.fge-unsupported{padding:6px 16px;font-size:12px;color:#0000008c;border-top:1px solid rgba(0,0,0,.08)}.fge-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid rgba(0,0,0,.12);background:#fafafa}@media (max-width: 900px){.fge-body{flex-direction:column}.fge-left{border-right:none;border-bottom:1px solid rgba(0,0,0,.12)}.fge-prop-label{flex-basis:42%;max-width:42%}}.fge-tabs{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid rgba(0,0,0,.12);background:#fff}.fge-tab{padding:8px 16px;border:none;border-bottom:3px solid transparent;background:none;font-size:13px;font-weight:600;color:#0000008c;cursor:pointer}.fge-tab:hover{color:#000c}.fge-tab.active{color:#17795e;border-bottom-color:#17795e}.fge-scope-note{padding:8px 10px;margin-bottom:10px;border-radius:6px;background:#eef8f4;border:1px solid #bfe0d6;font-size:12px;line-height:1.4}.fge-element-missing{margin-right:6px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.07);font-size:10px;font-weight:500;text-transform:none;letter-spacing:0;color:#00000080}\n"] }]
17908
18357
  }], ctorParameters: function () { return [{ type: i3.UntypedFormBuilder }]; }, propDecorators: { fields: [{
17909
18358
  type: Input
17910
18359
  }], endPointConfiguration: [{
@@ -21251,7 +21700,7 @@ EqpDynamicModuleConfiguratorComponent.HINT_ADJECTIVES = [
21251
21700
  'rustico', 'moderno', 'vintage', 'armonioso', 'sorprendente',
21252
21701
  ];
21253
21702
  EqpDynamicModuleConfiguratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, deps: [{ token: i3.UntypedFormBuilder }, { token: i1$3.MatDialog }, { token: UtilityHelperService }, { token: i2$2.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
21254
- EqpDynamicModuleConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: { debugMode: "debugMode", fieldsExtraConfig: "fieldsExtraConfig", configurations: "configurations", formID: "formID", viewMode: "viewMode", QueryEditorComponent: "QueryEditorComponent", triggers: "triggers", actionButtons: "actionButtons", contestualization: "contestualization", formulaObject: "formulaObject", configuratorTheme: "configuratorTheme", configuratorThemeCss: "configuratorThemeCss" }, outputs: { fireTrigger: "fireTrigger", saveFormEvent: "saveFormEvent", afterSaveFormEvent: "afterSaveFormEvent", out: "out" }, viewQueries: [{ propertyName: "dialogImport", first: true, predicate: ["dialogImport"], descendants: true, static: true }, { propertyName: "fieldsTable", first: true, predicate: ["fieldsTable"], descendants: true }, { propertyName: "dialogField", first: true, predicate: ["dialogField"], descendants: true, static: true }, { propertyName: "dialogFieldGraphics", first: true, predicate: ["dialogFieldGraphics"], descendants: true, static: true }, { propertyName: "fieldSectionColumnTemplate", first: true, predicate: ["fieldSectionColumnTemplate"], descendants: true, static: true }, { propertyName: "dialogInnerForm", first: true, predicate: ["dialogInnerForm"], descendants: true, static: true }, { propertyName: "actionsOnRecordTable", first: true, predicate: ["actionsOnRecordTable"], descendants: true }, { propertyName: "dialogActionOnRecord", first: true, predicate: ["dialogActionOnRecord"], descendants: true, static: true }, { propertyName: "actionButtonsTable", first: true, predicate: ["actionButtonsTable"], descendants: true }, { propertyName: "dialogActionButton", first: true, predicate: ["dialogActionButton"], descendants: true, static: true }, { propertyName: "dialogTriggers", first: true, predicate: ["dialogTriggers"], descendants: true, static: true }, { propertyName: "triggersTable", first: true, predicate: ["triggersTable"], descendants: true }, { propertyName: "dialogAiEdit", first: true, predicate: ["dialogAiEdit"], descendants: true, static: true }, { propertyName: "dialogAiHistory", first: true, predicate: ["dialogAiHistory"], descendants: true, static: true }, { propertyName: "dialogContestualization", first: true, predicate: ["dialogContestualization"], descendants: true, static: true }, { propertyName: "dialogVeTooltip", first: true, predicate: ["dialogVeTooltip"], descendants: true, static: true }, { propertyName: "dialogVeReorder", first: true, predicate: ["dialogVeReorder"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton && !graphicsSelectionMode\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"graphicsSelectionMode\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleFieldGraphicsSelection()\"\r\n matTooltip=\"Scegli i campi di cui modificare la grafica\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica campi</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"graphicsSelectionMode\" class=\"graphics-selection-banner\">\r\n <tmw-icon class=\"mat-icon graphics-selection-icon\" name=\"palette\"></tmw-icon>\r\n <span class=\"graphics-selection-text\">\r\n Spunta i campi di cui vuoi modificare la grafica, poi apri l'editor.\r\n <strong *ngIf=\"selectedFields?.length\">{{ selectedFields.length }} selezionati</strong>\r\n </span>\r\n <button mat-raised-button color=\"primary\" type=\"button\" class=\"graphics-selection-open\"\r\n [disabled]=\"!selectedFields?.length\" (click)=\"openFieldGraphicsDialog()\">\r\n Apri editor grafico\r\n </button>\r\n <button mat-stroked-button type=\"button\" (click)=\"cancelFieldGraphicsSelection()\">\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [selection]=\"graphicsSelectionMode\"\r\n [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- DIALOG EDITOR GRAFICO DEI CAMPI SELEZIONATI -->\r\n<ng-template #dialogFieldGraphics>\r\n <field-graphics-editor [fields]=\"fieldsForGraphicsEditor\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [formulaObject]=\"formulaObject\" (applyEvent)=\"onFieldGraphicsApplied()\"\r\n (cancelEvent)=\"closeFieldGraphicsDialog()\">\r\n </field-graphics-editor>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText #micSpeech=\"speechToText\" [(bindedText)]=\"aiEditPrompt\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput && !veShowCopyGraphic\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"openVeCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"copy\"></tmw-icon>\r\n Copia Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowCopyGraphic\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"closeVeCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Copia grafica su \"{{ fieldDisplayName(veSelectedField) }}\"</span>\r\n </div>\r\n\r\n <div class=\"ve-copy-empty\" *ngIf=\"veCopyGraphicCandidates.length === 0\">\r\n Nessun altro campo <strong>{{ veSelectedFieldTypeName }}</strong> con una grafica gia impostata\r\n da cui copiare.\r\n </div>\r\n\r\n <ng-container *ngIf=\"veCopyGraphicCandidates.length > 0\">\r\n <div class=\"ve-copy-hint\">Scegli il campo da cui copiare la grafica:</div>\r\n <div class=\"ve-copy-list\">\r\n <button type=\"button\" class=\"ve-copy-item\" *ngFor=\"let f of veCopyGraphicCandidates\"\r\n [class.active]=\"veCopySourceLabel === f.Label\" (click)=\"veCopySourceLabel = f.Label\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span class=\"ve-copy-item-text\">{{ fieldDisplayName(f) }}</span>\r\n </button>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"closeVeCopyGraphic()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!veCopySourceLabel\" (click)=\"veApplyCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"copy\"></tmw-icon>\r\n Copia\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}::ng-deep .mdc-button__label{display:inline-flex;align-items:center}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper:not(.dynamic-module-preview *){background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element:not(.dynamic-module-preview *),:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input:not(.dynamic-module-preview *),:host ::ng-deep .mat-mdc-form-field textarea:not(.dynamic-module-preview *){color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table{margin-top:16px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}::ng-deep .field-graphics-dialog .mat-mdc-dialog-container,::ng-deep .field-graphics-dialog .mat-mdc-dialog-surface,::ng-deep .field-graphics-dialog .mat-dialog-container{padding:0!important;overflow:hidden}.graphics-selection-banner{display:flex;align-items:center;gap:10px;margin:8px 0;padding:8px 12px;border:1px solid #bfe0d6;border-radius:6px;background:#eef8f4;font-size:13px}.graphics-selection-icon{font-size:18px;width:18px;height:18px;color:#17795e}.graphics-selection-text{flex:1}.graphics-selection-open{flex:0 0 auto}.ve-copy-hint{padding:4px 2px 8px;font-size:12px;color:#0009}.ve-copy-empty{padding:10px 2px;font-size:12.5px;color:#000000a6}.ve-copy-list{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.ve-copy-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:1px solid rgba(0,0,0,.15);border-radius:6px;background:#fff;font-size:13px;text-align:left;cursor:pointer}.ve-copy-item:hover{background:rgba(0,0,0,.04)}.ve-copy-item.active{border-color:#17795e;background:#eef8f4;font-weight:600}.ve-copy-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i8$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i4$2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "component", type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i14.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i14.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i14.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i14.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i12.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i3$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i3$2.TmwAttachmentsComponent, selector: "tmw-attachments", inputs: ["disableAction", "showHeader", "headerTitle", "attachmentsList", "showMatCard", "multipleAttachment", "loadMultipleFiles", "attachmentsColumns", "emptyTableMessage", "allowOnlyImages", "acceptedFileTypes", "isDisabled", "showInlinePreview", "getAttachmentEndpoint", "productionBaseUrl", "compressionOptions", "allowedTypes", "isEqpTableMultiLanguage", "tablePaginatorVisible", "tablePaginatorSize", "allowVideo", "allowVideoCompression", "videoFormatsNotAllowed", "allowedMBForFile", "downloadTooltipPosition", "openLinkLabel", "addButtonLabel", "downloadLabel", "deleteLabel", "fileNameLabel", "fileSizeLabel", "previewLabel", "uploadFileLabel", "confirmLabel", "abortLabel", "saveLabel", "exitLabel", "eqpTableSearchText", "deletedMessageLabel", "undoDeleteLabel", "undoDeleteTimeoutMs", "noImageSelectedErrorMessage", "wrongTypeSelectedErrorMessage", "videoPreviewErrorMessage", "audioPreviewErrorMessage", "uploadMode", "quickMode", "allowClipboardPaste", "allowCameraCapture", "pdfWorkerSrc", "dragDropTooManyFilesErrorMessage", "cropDialogClass"], outputs: ["localEditedAttachments", "abortAddAttachment", "downloadAttachment", "onDeleteAttachment", "onComponentLoaded"] }, { kind: "component", type: i5$2.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i24.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i24.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i24.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: ["debugMode", "fieldsExtraConfig", "configurations", "formID", "viewMode", "QueryEditorComponent", "triggers", "actionButtons", "contestualization", "formulaObject", "configuratorTheme", "configuratorThemeCss"], outputs: ["fireTrigger", "saveFormEvent", "afterSaveFormEvent", "out"] }, { kind: "component", type: AddFormFieldComponent, selector: "eqp-dynamic-module-add-form-field", inputs: ["fieldsExtraConfig", "form", "endPointConfiguration", "field", "indexField", "formFieldsGroups", "availableFields", "fieldTypesToExclude", "QueryEditorComponent", "contestualization", "actionButtons", "formulaObject", "aiFieldSuggestLoading"], outputs: ["out", "saveFieldEvent", "openAiEditForFieldEvent", "openAiGraphicSuggestEvent"] }, { kind: "component", type: FieldGraphicsEditorComponent, selector: "field-graphics-editor", inputs: ["fields", "endPointConfiguration", "formulaObject"], outputs: ["applyEvent", "cancelEvent"] }, { kind: "component", type: AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "directive", type: DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }, { kind: "component", type: TriggerCreatorComponent, selector: "trigger-creator", inputs: ["form", "trigger", "formulas", "endPointConfiguration"], outputs: ["onSaveRecord"] }, { kind: "directive", type: SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }, { kind: "component", type: ActionButtonCreatorComponent, selector: "action-button-creator", inputs: ["form", "actionButton", "actionButtonField", "formulas", "endPointConfiguration", "InField", "formulaObject"], outputs: ["onSaveRecord", "onChangeSomething"] }] });
21703
+ EqpDynamicModuleConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: { debugMode: "debugMode", fieldsExtraConfig: "fieldsExtraConfig", configurations: "configurations", formID: "formID", viewMode: "viewMode", QueryEditorComponent: "QueryEditorComponent", triggers: "triggers", actionButtons: "actionButtons", contestualization: "contestualization", formulaObject: "formulaObject", configuratorTheme: "configuratorTheme", configuratorThemeCss: "configuratorThemeCss" }, outputs: { fireTrigger: "fireTrigger", saveFormEvent: "saveFormEvent", afterSaveFormEvent: "afterSaveFormEvent", out: "out" }, viewQueries: [{ propertyName: "dialogImport", first: true, predicate: ["dialogImport"], descendants: true, static: true }, { propertyName: "fieldsTable", first: true, predicate: ["fieldsTable"], descendants: true }, { propertyName: "dialogField", first: true, predicate: ["dialogField"], descendants: true, static: true }, { propertyName: "dialogFieldGraphics", first: true, predicate: ["dialogFieldGraphics"], descendants: true, static: true }, { propertyName: "fieldSectionColumnTemplate", first: true, predicate: ["fieldSectionColumnTemplate"], descendants: true, static: true }, { propertyName: "dialogInnerForm", first: true, predicate: ["dialogInnerForm"], descendants: true, static: true }, { propertyName: "actionsOnRecordTable", first: true, predicate: ["actionsOnRecordTable"], descendants: true }, { propertyName: "dialogActionOnRecord", first: true, predicate: ["dialogActionOnRecord"], descendants: true, static: true }, { propertyName: "actionButtonsTable", first: true, predicate: ["actionButtonsTable"], descendants: true }, { propertyName: "dialogActionButton", first: true, predicate: ["dialogActionButton"], descendants: true, static: true }, { propertyName: "dialogTriggers", first: true, predicate: ["dialogTriggers"], descendants: true, static: true }, { propertyName: "triggersTable", first: true, predicate: ["triggersTable"], descendants: true }, { propertyName: "dialogAiEdit", first: true, predicate: ["dialogAiEdit"], descendants: true, static: true }, { propertyName: "dialogAiHistory", first: true, predicate: ["dialogAiHistory"], descendants: true, static: true }, { propertyName: "dialogContestualization", first: true, predicate: ["dialogContestualization"], descendants: true, static: true }, { propertyName: "dialogVeTooltip", first: true, predicate: ["dialogVeTooltip"], descendants: true, static: true }, { propertyName: "dialogVeReorder", first: true, predicate: ["dialogVeReorder"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton && !graphicsSelectionMode\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"graphicsSelectionMode\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleFieldGraphicsSelection()\"\r\n matTooltip=\"Scegli i campi di cui modificare la grafica\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica campi</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"graphicsSelectionMode\" class=\"graphics-selection-banner\">\r\n <tmw-icon class=\"mat-icon graphics-selection-icon\" name=\"palette\"></tmw-icon>\r\n <span class=\"graphics-selection-text\">\r\n Spunta i campi di cui vuoi modificare la grafica, poi apri l'editor.\r\n <strong *ngIf=\"selectedFields?.length\">{{ selectedFields.length }} selezionati</strong>\r\n </span>\r\n <button mat-raised-button color=\"primary\" type=\"button\" class=\"graphics-selection-open\"\r\n [disabled]=\"!selectedFields?.length\" (click)=\"openFieldGraphicsDialog()\">\r\n Apri editor grafico\r\n </button>\r\n <button mat-stroked-button type=\"button\" (click)=\"cancelFieldGraphicsSelection()\">\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [selection]=\"graphicsSelectionMode\"\r\n [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- DIALOG EDITOR GRAFICO DEI CAMPI SELEZIONATI -->\r\n<ng-template #dialogFieldGraphics>\r\n <field-graphics-editor [fields]=\"fieldsForGraphicsEditor\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [formulaObject]=\"formulaObject\" (applyEvent)=\"onFieldGraphicsApplied()\"\r\n (cancelEvent)=\"closeFieldGraphicsDialog()\">\r\n </field-graphics-editor>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText #micSpeech=\"speechToText\" [(bindedText)]=\"aiEditPrompt\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput && !veShowCopyGraphic\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"openVeCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"copy\"></tmw-icon>\r\n Copia Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowCopyGraphic\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"closeVeCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Copia grafica su \"{{ fieldDisplayName(veSelectedField) }}\"</span>\r\n </div>\r\n\r\n <div class=\"ve-copy-empty\" *ngIf=\"veCopyGraphicCandidates.length === 0\">\r\n Nessun altro campo <strong>{{ veSelectedFieldTypeName }}</strong> con una grafica gia impostata\r\n da cui copiare.\r\n </div>\r\n\r\n <ng-container *ngIf=\"veCopyGraphicCandidates.length > 0\">\r\n <div class=\"ve-copy-hint\">Scegli il campo da cui copiare la grafica:</div>\r\n <div class=\"ve-copy-list\">\r\n <button type=\"button\" class=\"ve-copy-item\" *ngFor=\"let f of veCopyGraphicCandidates\"\r\n [class.active]=\"veCopySourceLabel === f.Label\" (click)=\"veCopySourceLabel = f.Label\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span class=\"ve-copy-item-text\">{{ fieldDisplayName(f) }}</span>\r\n </button>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"closeVeCopyGraphic()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!veCopySourceLabel\" (click)=\"veApplyCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"copy\"></tmw-icon>\r\n Copia\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}::ng-deep .mdc-button__label{display:inline-flex;align-items:center}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper:not(.dynamic-module-preview *){background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element:not(.dynamic-module-preview *),:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input:not(.dynamic-module-preview *),:host ::ng-deep .mat-mdc-form-field textarea:not(.dynamic-module-preview *){color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table{margin-top:16px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}::ng-deep .field-graphics-dialog .mat-mdc-dialog-container,::ng-deep .field-graphics-dialog .mat-mdc-dialog-surface,::ng-deep .field-graphics-dialog .mat-dialog-container{padding:0!important;overflow:hidden}.graphics-selection-banner{display:flex;align-items:center;gap:10px;margin:8px 0;padding:8px 12px;border:1px solid #bfe0d6;border-radius:6px;background:#eef8f4;font-size:13px}.graphics-selection-icon{font-size:18px;width:18px;height:18px;color:#17795e}.graphics-selection-text{flex:1}.graphics-selection-open{flex:0 0 auto}.ve-copy-hint{padding:4px 2px 8px;font-size:12px;color:#0009}.ve-copy-empty{padding:10px 2px;font-size:12.5px;color:#000000a6}.ve-copy-list{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.ve-copy-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:1px solid rgba(0,0,0,.15);border-radius:6px;background:#fff;font-size:13px;text-align:left;cursor:pointer}.ve-copy-item:hover{background:rgba(0,0,0,.04)}.ve-copy-item.active{border-color:#17795e;background:#eef8f4;font-weight:600}.ve-copy-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i8$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i4$2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "component", type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i14.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i14.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i14.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i14.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i12.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i3$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "collapsibleSearch", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "customButtonsLeft", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i3$2.TmwAttachmentsComponent, selector: "tmw-attachments", inputs: ["disableAction", "showHeader", "headerTitle", "attachmentsList", "showMatCard", "multipleAttachment", "loadMultipleFiles", "attachmentsColumns", "emptyTableMessage", "allowOnlyImages", "acceptedFileTypes", "isDisabled", "showInlinePreview", "getAttachmentEndpoint", "productionBaseUrl", "compressionOptions", "allowedTypes", "isEqpTableMultiLanguage", "tablePaginatorVisible", "tablePaginatorSize", "allowVideo", "allowVideoCompression", "videoFormatsNotAllowed", "allowedMBForFile", "downloadTooltipPosition", "openLinkLabel", "addButtonLabel", "downloadLabel", "deleteLabel", "fileNameLabel", "fileSizeLabel", "previewLabel", "uploadFileLabel", "confirmLabel", "abortLabel", "saveLabel", "exitLabel", "eqpTableSearchText", "deletedMessageLabel", "undoDeleteLabel", "undoDeleteTimeoutMs", "noImageSelectedErrorMessage", "wrongTypeSelectedErrorMessage", "videoPreviewErrorMessage", "audioPreviewErrorMessage", "uploadMode", "quickMode", "allowClipboardPaste", "allowCameraCapture", "pdfWorkerSrc", "dragDropTooManyFilesErrorMessage", "cropDialogClass"], outputs: ["localEditedAttachments", "abortAddAttachment", "downloadAttachment", "onDeleteAttachment", "onComponentLoaded"] }, { kind: "component", type: i5$2.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i6$1.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i24.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i24.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i24.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: ["debugMode", "fieldsExtraConfig", "configurations", "formID", "viewMode", "QueryEditorComponent", "triggers", "actionButtons", "contestualization", "formulaObject", "configuratorTheme", "configuratorThemeCss"], outputs: ["fireTrigger", "saveFormEvent", "afterSaveFormEvent", "out"] }, { kind: "component", type: AddFormFieldComponent, selector: "eqp-dynamic-module-add-form-field", inputs: ["fieldsExtraConfig", "form", "endPointConfiguration", "field", "indexField", "formFieldsGroups", "availableFields", "fieldTypesToExclude", "QueryEditorComponent", "contestualization", "actionButtons", "formulaObject", "aiFieldSuggestLoading"], outputs: ["out", "saveFieldEvent", "openAiEditForFieldEvent", "openAiGraphicSuggestEvent"] }, { kind: "component", type: FieldGraphicsEditorComponent, selector: "field-graphics-editor", inputs: ["fields", "endPointConfiguration", "formulaObject"], outputs: ["applyEvent", "cancelEvent"] }, { kind: "component", type: AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "directive", type: DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }, { kind: "component", type: TriggerCreatorComponent, selector: "trigger-creator", inputs: ["form", "trigger", "formulas", "endPointConfiguration"], outputs: ["onSaveRecord"] }, { kind: "directive", type: SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }, { kind: "component", type: ActionButtonCreatorComponent, selector: "action-button-creator", inputs: ["form", "actionButton", "actionButtonField", "formulas", "endPointConfiguration", "InField", "formulaObject"], outputs: ["onSaveRecord", "onChangeSomething"] }] });
21255
21704
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, decorators: [{
21256
21705
  type: Component,
21257
21706
  args: [{ selector: "eqp-dynamic-module-configurator", template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton && !graphicsSelectionMode\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"graphicsSelectionMode\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleFieldGraphicsSelection()\"\r\n matTooltip=\"Scegli i campi di cui modificare la grafica\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica campi</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"graphicsSelectionMode\" class=\"graphics-selection-banner\">\r\n <tmw-icon class=\"mat-icon graphics-selection-icon\" name=\"palette\"></tmw-icon>\r\n <span class=\"graphics-selection-text\">\r\n Spunta i campi di cui vuoi modificare la grafica, poi apri l'editor.\r\n <strong *ngIf=\"selectedFields?.length\">{{ selectedFields.length }} selezionati</strong>\r\n </span>\r\n <button mat-raised-button color=\"primary\" type=\"button\" class=\"graphics-selection-open\"\r\n [disabled]=\"!selectedFields?.length\" (click)=\"openFieldGraphicsDialog()\">\r\n Apri editor grafico\r\n </button>\r\n <button mat-stroked-button type=\"button\" (click)=\"cancelFieldGraphicsSelection()\">\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [selection]=\"graphicsSelectionMode\"\r\n [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- DIALOG EDITOR GRAFICO DEI CAMPI SELEZIONATI -->\r\n<ng-template #dialogFieldGraphics>\r\n <field-graphics-editor [fields]=\"fieldsForGraphicsEditor\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [formulaObject]=\"formulaObject\" (applyEvent)=\"onFieldGraphicsApplied()\"\r\n (cancelEvent)=\"closeFieldGraphicsDialog()\">\r\n </field-graphics-editor>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText #micSpeech=\"speechToText\" [(bindedText)]=\"aiEditPrompt\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput && !veShowCopyGraphic\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"openVeCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"copy\"></tmw-icon>\r\n Copia Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowCopyGraphic\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"closeVeCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Copia grafica su \"{{ fieldDisplayName(veSelectedField) }}\"</span>\r\n </div>\r\n\r\n <div class=\"ve-copy-empty\" *ngIf=\"veCopyGraphicCandidates.length === 0\">\r\n Nessun altro campo <strong>{{ veSelectedFieldTypeName }}</strong> con una grafica gia impostata\r\n da cui copiare.\r\n </div>\r\n\r\n <ng-container *ngIf=\"veCopyGraphicCandidates.length > 0\">\r\n <div class=\"ve-copy-hint\">Scegli il campo da cui copiare la grafica:</div>\r\n <div class=\"ve-copy-list\">\r\n <button type=\"button\" class=\"ve-copy-item\" *ngFor=\"let f of veCopyGraphicCandidates\"\r\n [class.active]=\"veCopySourceLabel === f.Label\" (click)=\"veCopySourceLabel = f.Label\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span class=\"ve-copy-item-text\">{{ fieldDisplayName(f) }}</span>\r\n </button>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"closeVeCopyGraphic()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!veCopySourceLabel\" (click)=\"veApplyCopyGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"copy\"></tmw-icon>\r\n Copia\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}::ng-deep .mdc-button__label{display:inline-flex;align-items:center}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper:not(.dynamic-module-preview *){background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element:not(.dynamic-module-preview *),:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input:not(.dynamic-module-preview *),:host ::ng-deep .mat-mdc-form-field textarea:not(.dynamic-module-preview *){color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table{margin-top:16px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}::ng-deep .field-graphics-dialog .mat-mdc-dialog-container,::ng-deep .field-graphics-dialog .mat-mdc-dialog-surface,::ng-deep .field-graphics-dialog .mat-dialog-container{padding:0!important;overflow:hidden}.graphics-selection-banner{display:flex;align-items:center;gap:10px;margin:8px 0;padding:8px 12px;border:1px solid #bfe0d6;border-radius:6px;background:#eef8f4;font-size:13px}.graphics-selection-icon{font-size:18px;width:18px;height:18px;color:#17795e}.graphics-selection-text{flex:1}.graphics-selection-open{flex:0 0 auto}.ve-copy-hint{padding:4px 2px 8px;font-size:12px;color:#0009}.ve-copy-empty{padding:10px 2px;font-size:12.5px;color:#000000a6}.ve-copy-list{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.ve-copy-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:1px solid rgba(0,0,0,.15);border-radius:6px;background:#fff;font-size:13px;text-align:left;cursor:pointer}.ve-copy-item:hover{background:rgba(0,0,0,.04)}.ve-copy-item.active{border-color:#17795e;background:#eef8f4;font-weight:600}.ve-copy-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
@@ -21626,5 +22075,5 @@ class LookupField extends BaseField {
21626
22075
  * Generated bundle index. Do not edit.
21627
22076
  */
21628
22077
 
21629
- export { ActionButton, ActionFlagEnum, ActionOnRecord, AddFormFieldComponent, AddFormRecordComponent, AnswerStyle, ArrayValidators, AttachmentField, AttachmentFieldStyleCSS, AttachmentFieldTemplateComponent, AvailableFileExtensions, AvailableImageExtensions, BaseField, BaseObj, BoolPresentantioEnum, BooleanField, BooleanFieldStyleCSS, BooleanFieldTemplateComponent, BooleanLogicOperatorType, CSS_ALL_PROPERTIES, CSS_CORE_PROPERTIES, CSS_EXTRA_PROPERTIES, ColSpanSizesEnum, Condition, Context, ContextUser, Coords, DataGetter, DataGetterCardinalityEnum, DataGetterTypeEnum, DateField, DateFieldStyleCSS, DateFieldTemplateComponent, DateTimeTypeEnum, DynRecord, DynamicLoaderDirective, DynamicLoaderDirectiveData, DynamicModuleCompileConfig, DynamicModuleConfig, DynamicModuleConfiguratorConfig, DynamicModuleConfiguratorSpecificConfig, DynamicModuleFieldExtraFixComponent, DynamicModuleFieldFixComponent, DynamicModuleFilterResultViewModeEnum, DynamicModuleGeneralConfig, DynamicModuleListConfig, DynamicModuleListFormRecordActionsDefault, DynamicModuleRepairConfig, DynamicModuleViewModeEnum, EndPointConfiguration, EndPointData, EndPointDataParams, Entity, EqpDynamicModuleComponent, EqpDynamicModuleConfiguratorComponent, EqpDynamicModuleDialogService, EqpDynamicModuleModule, FIELD_STYLE_CATALOG, FieldExtraConfig, FieldExtraValues, FieldGraphicsEditorComponent, FieldInvisibilityEnum, FieldTypeEnum, FilterStatistic, FireTrigger, Form, FormFieldGroup, FormScalarTypeEnum, FormTypeEnum, GLOBAL_STYLE_ELEMENTS, GraphField, ImageField, ImageFieldStyleCSS, ImageFieldTemplateComponent, ImageFolderEnum, ImageSelectorField, ImageSelectorFieldStyleCSS, KeyValue, LEGACY_STYLE_TARGETS, ListFormRecordComponent, ListPresentationEnum, ListValueField, ListValueFieldStyleCSS, ListValueFieldTemplateComponent, LookupField, NotNumberAggregationFunctionEnum, NumberAggregationFunctionEnum, NumericField, NumericFieldIconPositionEnum, NumericFieldStyleCSS, NumericFieldTemplateComponent, ParamTypeEnum, Record, RecordButton, RepairFormFieldsComponent, RequestMethodEnum, SpeechToTextDirective, SpinnerService, Statistic, TabellarField, TelRegex, TextField, TextFieldIconPositionEnum, TextFieldStyleCSS, TextFieldTemplateComponent, TextMaskEnum, TextareaField, TextareaFieldIconPositionEnum, TextareaFieldStyleCSS, TextareaFieldTemplateComponent, Trigger, TriggerCondition, TriggerProperty, TriggerPropertyTypeEnum, UrlRegex, UtilityHelperService, buildCssColor, buildCustomCssPropertyDef, buildGlobalInheritedMap, cloneFieldStyleMap, cssColorToAlphaPercent, cssColorToHex, ensureFieldStyleMap, eventOut, getCommonStates, getCssDeclaration, getCssPropertyDef, getEffectiveStyleMap, getFieldDisplayName, getFieldStyleElements, getFieldStyleMap, getFieldStyleTypeDef, getFieldStyleValue, hasEffectiveStyles, isCssColor, isFieldStyleMapEmpty, legacyTargetKey, mergeLegacyStylesIntoMap, parseCssDeclarations, resolveGlobalElementKeys, serializeCssDeclarations, setCssDeclaration, setFieldStyleValue };
22078
+ export { ActionButton, ActionFlagEnum, ActionOnRecord, AddFormFieldComponent, AddFormRecordComponent, AnswerStyle, ArrayValidators, AttachmentField, AttachmentFieldStyleCSS, AttachmentFieldTemplateComponent, AvailableFileExtensions, AvailableImageExtensions, BaseField, BaseObj, BoolPresentantioEnum, BooleanField, BooleanFieldStyleCSS, BooleanFieldTemplateComponent, BooleanLogicOperatorType, CSS_ALL_PROPERTIES, CSS_CORE_PROPERTIES, CSS_ELEMENT_ONLY_PROPERTIES, CSS_EXTRA_PROPERTIES, CSS_PROFILE_FLOATING_LABEL, CSS_PROFILE_LABEL, CSS_PROFILE_VALUE, ColSpanSizesEnum, Condition, Context, ContextUser, Coords, DataGetter, DataGetterCardinalityEnum, DataGetterTypeEnum, DateField, DateFieldStyleCSS, DateFieldTemplateComponent, DateTimeTypeEnum, DynRecord, DynamicLoaderDirective, DynamicLoaderDirectiveData, DynamicModuleCompileConfig, DynamicModuleConfig, DynamicModuleConfiguratorConfig, DynamicModuleConfiguratorSpecificConfig, DynamicModuleFieldExtraFixComponent, DynamicModuleFieldFixComponent, DynamicModuleFilterResultViewModeEnum, DynamicModuleGeneralConfig, DynamicModuleListConfig, DynamicModuleListFormRecordActionsDefault, DynamicModuleRepairConfig, DynamicModuleViewModeEnum, EndPointConfiguration, EndPointData, EndPointDataParams, Entity, EqpDynamicModuleComponent, EqpDynamicModuleConfiguratorComponent, EqpDynamicModuleDialogService, EqpDynamicModuleModule, FIELD_STYLE_CATALOG, FieldExtraConfig, FieldExtraValues, FieldGraphicsEditorComponent, FieldInvisibilityEnum, FieldTypeEnum, FilterStatistic, FireTrigger, Form, FormFieldGroup, FormScalarTypeEnum, FormTypeEnum, GLOBAL_STYLE_ELEMENTS, GraphField, ImageField, ImageFieldStyleCSS, ImageFieldTemplateComponent, ImageFolderEnum, ImageSelectorField, ImageSelectorFieldStyleCSS, KeyValue, LEGACY_STYLE_TARGETS, ListFormRecordComponent, ListPresentationEnum, ListValueField, ListValueFieldStyleCSS, ListValueFieldTemplateComponent, LookupField, NotNumberAggregationFunctionEnum, NumberAggregationFunctionEnum, NumericField, NumericFieldIconPositionEnum, NumericFieldStyleCSS, NumericFieldTemplateComponent, ParamTypeEnum, Record, RecordButton, RepairFormFieldsComponent, RequestMethodEnum, SpeechToTextDirective, SpinnerService, Statistic, TabellarField, TelRegex, TextField, TextFieldIconPositionEnum, TextFieldStyleCSS, TextFieldTemplateComponent, TextMaskEnum, TextareaField, TextareaFieldIconPositionEnum, TextareaFieldStyleCSS, TextareaFieldTemplateComponent, Trigger, TriggerCondition, TriggerProperty, TriggerPropertyTypeEnum, UrlRegex, UtilityHelperService, buildCssColor, buildCustomCssPropertyDef, buildGlobalInheritedMap, cloneFieldStyleMap, cssColorToAlphaPercent, cssColorToHex, ensureFieldStyleMap, eventOut, getCommonStates, getCssDeclaration, getCssPropertiesForProfile, getCssPropertyDef, getEffectiveStyleMap, getFieldDisplayName, getFieldStyleElements, getFieldStyleMap, getFieldStyleTypeDef, getFieldStyleValue, hasEffectiveStyles, isCssColor, isFieldStyleMapEmpty, legacyTargetKey, mergeLegacyStylesIntoMap, parseCssDeclarations, resolveGlobalElementKeys, serializeCssDeclarations, setCssDeclaration, setFieldStyleValue };
21630
22079
  //# sourceMappingURL=eqproject-eqp-dynamic-module.mjs.map