@eqproject/eqp-dynamic-module 2.11.6 → 2.11.7

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 +1 -1
  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 +781 -326
  19. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/fesm2020/eqproject-eqp-dynamic-module.mjs +761 -312
  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
@@ -20,7 +20,7 @@ import { TmwIconComponent } from 'tmw-icons';
20
20
  import * as i9 from 'tmw-picker';
21
21
  import { ModeEnum, TimeTypeEnum, TmwDateTimePickerComponent, TmwPickerComponent, TmwDateRangePickerComponent } from 'tmw-picker';
22
22
  import * as i2$1 from '@angular/material/form-field';
23
- import { MatFormFieldModule } from '@angular/material/form-field';
23
+ import { MatFormField, MatFormFieldModule } from '@angular/material/form-field';
24
24
  import * as i4$1 from '@angular/material/core';
25
25
  import { MatNativeDateModule } from '@angular/material/core';
26
26
  import * as i5$1 from '@angular/material/select';
@@ -2061,7 +2061,7 @@ class ListFormRecordComponent {
2061
2061
  }
2062
2062
  }
2063
2063
  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 });
2064
- 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"] }] });
2064
+ 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"] }] });
2065
2065
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListFormRecordComponent, decorators: [{
2066
2066
  type: Component,
2067
2067
  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"] }]
@@ -3297,6 +3297,321 @@ function injectGoogleFontsFromForm(form) {
3297
3297
  }
3298
3298
  }
3299
3299
 
3300
+ /**
3301
+ * Rimisura la label di un mat-form-field "outline" e riallinea l'apertura nel bordo.
3302
+ *
3303
+ * Material misura la label solo alla creazione del campo: se poi gli stili iniettati
3304
+ * cambiano font, spaziatura o larghezza della descrizione, l'apertura resta stretta
3305
+ * e la label sollevata viene tagliata.
3306
+ */
3307
+ function refreshOutlineNotch(formField) {
3308
+ if (!formField) {
3309
+ return;
3310
+ }
3311
+ // Attende che il browser applichi il nuovo tag <style> prima di misurare
3312
+ setTimeout(() => {
3313
+ var _a;
3314
+ formField._refreshOutlineNotchWidth();
3315
+ // Il form field è OnPush: senza questo la nuova larghezza non arriva al bordo
3316
+ (_a = formField._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();
3317
+ });
3318
+ }
3319
+ /**
3320
+ * Rimisura la label ogni volta che si solleva o torna dentro la casella: le due posizioni
3321
+ * possono avere grafiche diverse, e Material misurerebbe quella a riposo anche per il bordo.
3322
+ * Restituisce l'osservatore, da scollegare nell'ngOnDestroy.
3323
+ */
3324
+ function watchOutlineNotch(formField) {
3325
+ var _a;
3326
+ const host = (_a = formField === null || formField === void 0 ? void 0 : formField._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement;
3327
+ if (!host || typeof MutationObserver === 'undefined') {
3328
+ return null;
3329
+ }
3330
+ const observer = new MutationObserver((mutations) => {
3331
+ const labelChanged = mutations.some((m) => { var _a; return (_a = m.target.classList) === null || _a === void 0 ? void 0 : _a.contains('mdc-floating-label'); });
3332
+ if (labelChanged) {
3333
+ refreshOutlineNotch(formField);
3334
+ }
3335
+ });
3336
+ observer.observe(host, { attributes: true, attributeFilter: ['class'], subtree: true });
3337
+ return observer;
3338
+ }
3339
+
3340
+ /**
3341
+ * Utility per leggere/scrivere singole proprietà dentro una stringa di dichiarazioni CSS
3342
+ * (il formato usato dalle mappe *FieldStyleCSS: "color:red;font-size:14px").
3343
+ *
3344
+ * Tutte le funzioni preservano le proprietà che non vengono toccate, così i CSS scritti
3345
+ * a mano o generati dall'AI non vengono persi quando si modifica una singola proprietà
3346
+ * dall'editor grafico.
3347
+ */
3348
+ /**
3349
+ * Divide una stringa CSS sui ";" di primo livello, ignorando quelli dentro
3350
+ * parentesi (es. rgba(0,0,0,.5)) o stringhe (es. url("a;b")).
3351
+ */
3352
+ function splitTopLevel(css, separator) {
3353
+ const parts = [];
3354
+ let depth = 0;
3355
+ let quote = null;
3356
+ let current = '';
3357
+ for (let i = 0; i < css.length; i++) {
3358
+ const ch = css[i];
3359
+ if (quote) {
3360
+ current += ch;
3361
+ if (ch === quote && css[i - 1] !== '\\') {
3362
+ quote = null;
3363
+ }
3364
+ continue;
3365
+ }
3366
+ if (ch === '"' || ch === "'") {
3367
+ quote = ch;
3368
+ current += ch;
3369
+ continue;
3370
+ }
3371
+ if (ch === '(') {
3372
+ depth++;
3373
+ current += ch;
3374
+ continue;
3375
+ }
3376
+ if (ch === ')') {
3377
+ depth = Math.max(0, depth - 1);
3378
+ current += ch;
3379
+ continue;
3380
+ }
3381
+ if (ch === separator && depth === 0) {
3382
+ parts.push(current);
3383
+ current = '';
3384
+ continue;
3385
+ }
3386
+ current += ch;
3387
+ }
3388
+ parts.push(current);
3389
+ return parts;
3390
+ }
3391
+ /** Trasforma "color:red;font-size:14px" in [{prop:'color',value:'red'},...] mantenendo l'ordine */
3392
+ function parseCssDeclarations(css) {
3393
+ if (!css) {
3394
+ return [];
3395
+ }
3396
+ const result = [];
3397
+ splitTopLevel(css, ';').forEach((chunk) => {
3398
+ const trimmed = chunk.trim();
3399
+ if (!trimmed) {
3400
+ return;
3401
+ }
3402
+ // Il primo ":" separa sempre proprietà e valore (eventuali ":" successivi,
3403
+ // es. in url(http://...), restano nel valore).
3404
+ const colonIndex = trimmed.indexOf(':');
3405
+ if (colonIndex <= 0) {
3406
+ return;
3407
+ }
3408
+ const prop = trimmed.slice(0, colonIndex).trim().toLowerCase();
3409
+ const value = trimmed.slice(colonIndex + 1).trim();
3410
+ if (!prop || !value) {
3411
+ return;
3412
+ }
3413
+ result.push({ prop, value });
3414
+ });
3415
+ return result;
3416
+ }
3417
+ /** Trasforma [{prop,value}] in "color: red; font-size: 14px;" */
3418
+ function serializeCssDeclarations(declarations) {
3419
+ if (!declarations || declarations.length === 0) {
3420
+ return '';
3421
+ }
3422
+ return declarations
3423
+ .filter((d) => d && d.prop && d.value)
3424
+ .map((d) => `${d.prop}: ${d.value};`)
3425
+ .join(' ');
3426
+ }
3427
+ /** Legge il valore di una singola proprietà; stringa vuota se non presente */
3428
+ function getCssDeclaration(css, prop) {
3429
+ const target = (prop || '').toLowerCase();
3430
+ const found = parseCssDeclarations(css).find((d) => d.prop === target);
3431
+ return found ? found.value : '';
3432
+ }
3433
+ /**
3434
+ * Imposta (o rimuove, se il valore è vuoto) una singola proprietà, lasciando
3435
+ * intatte tutte le altre. Le proprietà nuove vengono accodate in fondo.
3436
+ */
3437
+ function setCssDeclaration(css, prop, value) {
3438
+ const target = (prop || '').toLowerCase();
3439
+ if (!target) {
3440
+ return css !== null && css !== void 0 ? css : '';
3441
+ }
3442
+ const declarations = parseCssDeclarations(css);
3443
+ const newValue = (value !== null && value !== void 0 ? value : '').trim();
3444
+ const index = declarations.findIndex((d) => d.prop === target);
3445
+ if (!newValue) {
3446
+ if (index >= 0) {
3447
+ declarations.splice(index, 1);
3448
+ }
3449
+ }
3450
+ else if (index >= 0) {
3451
+ declarations[index].value = newValue;
3452
+ }
3453
+ else {
3454
+ declarations.push({ prop: target, value: newValue });
3455
+ }
3456
+ return serializeCssDeclarations(declarations);
3457
+ }
3458
+
3459
+ /**
3460
+ * Label "flottante" dei mat-form-field outline (Angular Material 15).
3461
+ *
3462
+ * La stessa label ha due aspetti: a riposo dentro la casella (campo vuoto e non selezionato)
3463
+ * e sollevata sul bordo (campo compilato o selezionato). L'editor li mostra come due elementi:
3464
+ * "Etichetta nel contenitore" è la chiave storica (Descrizione / Label): grafica base della
3465
+ * label, valida sempre. "Etichetta sul bordo" (DescrizioneSollevata / LabelSollevata) sovrascrive
3466
+ * solo ciò che vi è impostato quando la label è sollevata.
3467
+ *
3468
+ * Il server conosce solo le chiavi storiche: l'override del bordo viene quindi salvato DENTRO la
3469
+ * stringa CSS della chiave base, come proprietà custom `--eqp-sollevata: "<css>"`. È CSS valido
3470
+ * (il browser la ignora) e passa intatta per le classi tipizzate del server. Le chiavi
3471
+ * "…Sollevata" esistono solo in memoria, nell'editor: readStyleCss/writeStyleCss fanno da ponte.
3472
+ */
3473
+ /** Suffisso del selettore della label per la label sollevata */
3474
+ const LABEL_FLOATING_SUFFIX = '.mdc-floating-label--float-above';
3475
+ /** Proprietà custom, dentro la chiave base, che contiene il CSS dell'etichetta sul bordo */
3476
+ const FLOATING_OVERRIDE_PROP = '--eqp-sollevata';
3477
+ /** True per le chiavi virtuali dell'etichetta sul bordo (es. "DescrizioneSollevataNormale") */
3478
+ function isFloatingOverrideKey(key) {
3479
+ return /Sollevata/.test(key !== null && key !== void 0 ? key : '');
3480
+ }
3481
+ /** Chiave reale in cui è salvato l'override: "DescrizioneSollevataNormale" -> "DescrizioneNormale" */
3482
+ function floatingBaseKey(key) {
3483
+ return (key !== null && key !== void 0 ? key : '').replace('Sollevata', '');
3484
+ }
3485
+ function decodeOverride(raw) {
3486
+ if (!raw) {
3487
+ return '';
3488
+ }
3489
+ try {
3490
+ const value = JSON.parse(raw);
3491
+ return typeof value === 'string' ? value : '';
3492
+ }
3493
+ catch (_a) {
3494
+ return '';
3495
+ }
3496
+ }
3497
+ /**
3498
+ * CSS di una chiave "Elemento+Stato", anche virtuale, letto da una mappa nel formato salvato.
3499
+ * Per le chiavi base restituisce il CSS senza la proprietà custom (che non va iniettata).
3500
+ */
3501
+ function readStyleCss(map, key) {
3502
+ var _a, _b;
3503
+ if (!map) {
3504
+ return '';
3505
+ }
3506
+ if (isFloatingOverrideKey(key)) {
3507
+ return decodeOverride(getCssDeclaration((_a = map[floatingBaseKey(key)]) !== null && _a !== void 0 ? _a : '', FLOATING_OVERRIDE_PROP));
3508
+ }
3509
+ return setCssDeclaration((_b = map[key]) !== null && _b !== void 0 ? _b : '', FLOATING_OVERRIDE_PROP, '');
3510
+ }
3511
+ /** Scrive il CSS di una chiave, anche virtuale, in una mappa nel formato salvato */
3512
+ function writeStyleCss(map, key, css) {
3513
+ var _a, _b;
3514
+ const clean = (css !== null && css !== void 0 ? css : '').trim();
3515
+ if (isFloatingOverrideKey(key)) {
3516
+ const base = floatingBaseKey(key);
3517
+ const updated = setCssDeclaration((_a = map[base]) !== null && _a !== void 0 ? _a : '', FLOATING_OVERRIDE_PROP, clean ? JSON.stringify(clean) : '');
3518
+ if (updated) {
3519
+ map[base] = updated;
3520
+ }
3521
+ else {
3522
+ delete map[base];
3523
+ }
3524
+ return;
3525
+ }
3526
+ // Riscrivendo la base l'override già presente va conservato
3527
+ const override = getCssDeclaration((_b = map[key]) !== null && _b !== void 0 ? _b : '', FLOATING_OVERRIDE_PROP);
3528
+ const updated = override ? setCssDeclaration(clean, FLOATING_OVERRIDE_PROP, override) : clean;
3529
+ if (updated) {
3530
+ map[key] = updated;
3531
+ }
3532
+ else {
3533
+ delete map[key];
3534
+ }
3535
+ }
3536
+ const LABEL_KEY_PATTERN = /^(Descrizione|Label)(Normale|Mouseover|Focused|Selezionato|NotValid|Readonly)$/;
3537
+ /** Mappa "esplosa" per l'editor: chiavi base pulite più le chiavi virtuali "…Sollevata…" */
3538
+ function decodeFloatingMap(map) {
3539
+ const out = {};
3540
+ Object.keys(map !== null && map !== void 0 ? map : {}).forEach((key) => {
3541
+ if (!map[key]) {
3542
+ return;
3543
+ }
3544
+ const base = readStyleCss(map, key);
3545
+ if (base) {
3546
+ out[key] = base;
3547
+ }
3548
+ const m = LABEL_KEY_PATTERN.exec(key);
3549
+ if (m) {
3550
+ const overrideKey = `${m[1]}Sollevata${m[2]}`;
3551
+ const override = readStyleCss(map, overrideKey);
3552
+ if (override) {
3553
+ out[overrideKey] = override;
3554
+ }
3555
+ }
3556
+ });
3557
+ return out;
3558
+ }
3559
+ /** Inverso di decodeFloatingMap: riporta la mappa al formato salvato */
3560
+ function encodeFloatingMap(decoded) {
3561
+ const out = {};
3562
+ Object.keys(decoded !== null && decoded !== void 0 ? decoded : {}).forEach((key) => writeStyleCss(out, key, decoded[key]));
3563
+ return out;
3564
+ }
3565
+ /** Aggiunge !important a ogni dichiarazione: serve dove regole globali con !important coprono le nostre */
3566
+ function forceImportantCss(css) {
3567
+ return (css !== null && css !== void 0 ? css : '')
3568
+ .split(';')
3569
+ .map((d) => d.trim())
3570
+ .filter((d) => d.length > 0)
3571
+ .map((d) => (/!important\s*$/i.test(d) ? d : `${d} !important`))
3572
+ .join('; ') + ((css === null || css === void 0 ? void 0 : css.trim()) ? ';' : '');
3573
+ }
3574
+ /** True se il campo ha una grafica sulla label (base o sul bordo) con quel prefisso di chiave */
3575
+ function hasFloatingLabelStyles(styleMap, basePrefix = 'Descrizione') {
3576
+ return Object.keys(styleMap !== null && styleMap !== void 0 ? styleMap : {})
3577
+ .some((key) => { var _a; return key.startsWith(basePrefix) && !!((_a = styleMap[key]) !== null && _a !== void 0 ? _a : '').trim(); });
3578
+ }
3579
+ /**
3580
+ * Regole di base da iniettare prima di quelle dell'utente quando la label è personalizzata. Material la rimpicciolisce al 75% con una trasformazione: dimensione testo,
3581
+ * padding e larghezza impostati dall'utente risulterebbero ridotti. Qui la scala torna a 1 e il
3582
+ * testo riparte dalla stessa dimensione che Material mostrava (12px); la label resta centrata
3583
+ * sulla linea del bordo, e "top" la sposta da lì.
3584
+ * I selettori sono dentro :where() per restare più deboli di qualsiasi regola dell'utente,
3585
+ * anche di quelle su Descrizione che valgono per entrambe le posizioni.
3586
+ *
3587
+ * @param uid id del wrapper del campo
3588
+ * @param labelSelector selettore della label, relativo al wrapper (es. " label.mat-mdc-floating-label")
3589
+ * @param styleMap mappa "Elemento+Stato" -> CSS del campo
3590
+ */
3591
+ function buildFloatingLabelBaseRules(uid, labelSelector, styleMap) {
3592
+ if (!hasFloatingLabelStyles(styleMap, 'Descrizione')) {
3593
+ return [];
3594
+ }
3595
+ const easing = '150ms cubic-bezier(0.4, 0, 0.2, 1)';
3596
+ return [
3597
+ // La variabile è letta sia dalla trasformazione della label sia dal calcolo del varco nel bordo
3598
+ `#${uid} .mat-mdc-form-field { --mat-mdc-form-field-floating-label-scale: 1; }`,
3599
+ `#${uid} :where(${labelSelector.trim()}) { transition: transform ${easing}, top ${easing}, color ${easing}; }`,
3600
+ `#${uid} :where(${labelSelector.trim()}${LABEL_FLOATING_SUFFIX}) {`
3601
+ + ` font-size: 12px; line-height: 1.15em; top: 0;`
3602
+ + ` --mat-mdc-form-field-label-transform: translateY(-50%); }`,
3603
+ ];
3604
+ }
3605
+ /**
3606
+ * True se il CSS imposta "top". Il top dell'etichetta nel contenitore non deve propagarsi alla
3607
+ * label sollevata, che ha la propria posizione: i template, dopo la regola della chiave base (Descrizione / Label),
3608
+ * ne emettono una che riporta a 0 il top della label sollevata; quella di "…Sollevata",
3609
+ * venendo dopo, la sovrascrive.
3610
+ */
3611
+ function cssSetsTop(css) {
3612
+ return /(^|[\s;])top\s*:/i.test(css !== null && css !== void 0 ? css : '');
3613
+ }
3614
+
3300
3615
  /* ESEMPIO D'USO
3301
3616
 
3302
3617
  <textarea
@@ -3497,6 +3812,9 @@ const ELEMENT_SELECTORS$a = {
3497
3812
  Container: ' .mat-mdc-text-field-wrapper',
3498
3813
  Input: ' .mat-mdc-form-field-infix',
3499
3814
  Descrizione: ' label.mat-mdc-floating-label',
3815
+ // Descrizione: grafica base della label, sempre valida. Sollevata (virtuale, salvata dentro
3816
+ // Descrizione): override quando è sul bordo
3817
+ DescrizioneSollevata: ' label.mat-mdc-floating-label' + LABEL_FLOATING_SUFFIX,
3500
3818
  Icona: [' .mat-mdc-form-field-icon-prefix', ' .mat-mdc-form-field-icon-suffix'],
3501
3819
  Microfono: ' .mat-mdc-form-field-icon-suffix',
3502
3820
  Errore: ' mat-error',
@@ -3530,6 +3848,7 @@ class TextFieldTemplateComponent {
3530
3848
  this.platform = Capacitor.getPlatform();
3531
3849
  this.styleEl = null;
3532
3850
  this.statusSub = null;
3851
+ this.notchObserver = null;
3533
3852
  }
3534
3853
  ngOnInit() {
3535
3854
  this.fieldUid = 'tf-' + Math.random().toString(36).slice(2, 10);
@@ -3546,6 +3865,9 @@ class TextFieldTemplateComponent {
3546
3865
  if (changes['forceState']) {
3547
3866
  this.updateStateClasses();
3548
3867
  }
3868
+ if (changes['styleVersion'] || changes['forceState']) {
3869
+ refreshOutlineNotch(this.formField);
3870
+ }
3549
3871
  if (changes['record'] != undefined && changes['record'].firstChange == false
3550
3872
  && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
3551
3873
  this.record = changes['record'].currentValue;
@@ -3553,12 +3875,16 @@ class TextFieldTemplateComponent {
3553
3875
  this.updateStateClasses();
3554
3876
  }
3555
3877
  }
3878
+ ngAfterViewInit() {
3879
+ this.notchObserver = watchOutlineNotch(this.formField);
3880
+ }
3556
3881
  ngOnDestroy() {
3557
- var _a, _b;
3558
- if ((_a = this.styleEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
3882
+ var _a, _b, _c;
3883
+ (_a = this.notchObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
3884
+ if ((_b = this.styleEl) === null || _b === void 0 ? void 0 : _b.parentNode) {
3559
3885
  this.styleEl.parentNode.removeChild(this.styleEl);
3560
3886
  }
3561
- (_b = this.statusSub) === null || _b === void 0 ? void 0 : _b.unsubscribe();
3887
+ (_c = this.statusSub) === null || _c === void 0 ? void 0 : _c.unsubscribe();
3562
3888
  }
3563
3889
  initStyles() {
3564
3890
  if (this.field.FieldstyleCSS != null || this.field.FieldstyleCSS != undefined)
@@ -3675,13 +4001,14 @@ class TextFieldTemplateComponent {
3675
4001
  // qualsiasi valore ereditato dal wrapper. Con color:inherit forziamo l'ereditarietà
3676
4002
  // (specificità 1,1,1 > 0,3,0), così il color impostato su InputNormale si propaga al testo.
3677
4003
  lines.push(`#${uid} input.mat-mdc-input-element { color: inherit; }`);
4004
+ lines.push(...buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$a.Descrizione, css));
3678
4005
  for (const el of ELEMENTS$9) {
3679
4006
  const sEntry = ELEMENT_SELECTORS$a[el];
3680
4007
  const selList = Array.isArray(sEntry) ? sEntry : [sEntry];
3681
4008
  for (const state of STATES$b) {
3682
4009
  const key = el + state;
3683
4010
  const defaultVal = DEFAULT_FIELD_STYLES$b[key];
3684
- const userVal = css[key];
4011
+ const userVal = readStyleCss(css, key);
3685
4012
  if (!(defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim()) && !(userVal === null || userVal === void 0 ? void 0 : userVal.trim()))
3686
4013
  continue;
3687
4014
  for (const s of selList) {
@@ -3693,6 +4020,10 @@ class TextFieldTemplateComponent {
3693
4020
  lines.push(`${selector} { ${defaultVal} }`);
3694
4021
  if (userVal === null || userVal === void 0 ? void 0 : userVal.trim())
3695
4022
  lines.push(`${selector} { ${userVal} }`);
4023
+ if ((userVal === null || userVal === void 0 ? void 0 : userVal.trim()) && el === 'Descrizione') {
4024
+ if (cssSetsTop(userVal))
4025
+ lines.push(this.getSelector(uid, el, state, s + LABEL_FLOATING_SUFFIX, sub) + ' { top: 0; }');
4026
+ }
3696
4027
  // Per Container: propaga le proprietà border ai segmenti MDC (notched-outline__*).
3697
4028
  // Se il CSS imposta uno spessore (border/border-width) → il bordo visivo è già sul
3698
4029
  // wrapper, i segmenti vengono soppressi (border-color:transparent) per evitare il
@@ -3795,7 +4126,7 @@ class TextFieldTemplateComponent {
3795
4126
  }
3796
4127
  }
3797
4128
  TextFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3798
- 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"] }] });
4129
+ 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"] }] });
3799
4130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextFieldTemplateComponent, decorators: [{
3800
4131
  type: Component,
3801
4132
  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"] }]
@@ -3809,6 +4140,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
3809
4140
  type: Input
3810
4141
  }], styleVersion: [{
3811
4142
  type: Input
4143
+ }], formField: [{
4144
+ type: ViewChild,
4145
+ args: [MatFormField]
3812
4146
  }], forceState: [{
3813
4147
  type: Input
3814
4148
  }], recordChange: [{
@@ -4051,9 +4385,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4051
4385
  type: Output
4052
4386
  }] } });
4053
4387
 
4388
+ // La label ha regole globali con !important (tmw-datetimepicker .tmw-picker-main .tmw-picker-label):
4389
+ // le nostre devono averlo a loro volta per vincere
4390
+ const FORCE_IMPORTANT_ELEMENTS$1 = new Set(['Descrizione', 'DescrizioneSollevata']);
4391
+ const PICKER_LABEL_FLOATING_SUFFIX = ':not(.tmw-picker-label--inline)';
4392
+ // La label di tmw-picker sta nel contenitore con la classe --inline (campo vuoto e non
4393
+ // selezionato) e sale sul bordo senza. Descrizione: grafica base, sempre valida.
4394
+ // DescrizioneSollevata (virtuale, salvata dentro Descrizione): override sul bordo.
4054
4395
  const ELEMENT_SELECTORS$8 = {
4055
4396
  Container: ' mat-form-field.tmw-picker-main',
4056
4397
  Descrizione: ' .tmw-picker-label',
4398
+ DescrizioneSollevata: ' .tmw-picker-label' + PICKER_LABEL_FLOATING_SUFFIX,
4057
4399
  };
4058
4400
  const ELEMENTS$7 = Object.keys(ELEMENT_SELECTORS$8);
4059
4401
  const STATES$9 = ['Normale', 'Mouseover', 'Focused', 'NotValid', 'Readonly'];
@@ -4131,12 +4473,21 @@ class DateFieldTemplateComponent {
4131
4473
  }
4132
4474
  buildCssRules(uid, css) {
4133
4475
  const lines = [];
4476
+ // Regole globali dell'app host (tmw-picker.scss) fissano "bottom" con !important anche sulla
4477
+ // label a riposo nel contenitore, che tmw-picker posiziona con "top": senza questo la label
4478
+ // risulterebbe stirata fra le due ancore
4479
+ lines.push(`#${uid} .tmw-picker-label.tmw-picker-label--inline { bottom: auto !important; }`);
4480
+ // tmw-picker ancora la label sollevata al bordo con "bottom": la si riporta a "top" così
4481
+ // che "Posizione verticale (top)" funzioni come negli altri campi (0 = centrata sul bordo)
4482
+ if (hasFloatingLabelStyles(css, 'Descrizione')) {
4483
+ lines.push(`#${uid} .tmw-picker-label${PICKER_LABEL_FLOATING_SUFFIX} { bottom: auto !important; top: 0 !important; transform: translateY(-50%) !important; }`);
4484
+ }
4134
4485
  for (const el of ELEMENTS$7) {
4135
4486
  const s = ELEMENT_SELECTORS$8[el];
4136
4487
  for (const state of STATES$9) {
4137
4488
  const key = el + state;
4138
4489
  const defaultVal = DEFAULT_FIELD_STYLES$9[key];
4139
- const userVal = css[key];
4490
+ const userVal = readStyleCss(css, key);
4140
4491
  if (!(defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim()) && !(userVal === null || userVal === void 0 ? void 0 : userVal.trim()))
4141
4492
  continue;
4142
4493
  const selector = this.getSelector(uid, state, s);
@@ -4144,8 +4495,12 @@ class DateFieldTemplateComponent {
4144
4495
  continue;
4145
4496
  if (defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim())
4146
4497
  lines.push(`${selector} { ${defaultVal} }`);
4147
- if (userVal === null || userVal === void 0 ? void 0 : userVal.trim())
4148
- lines.push(`${selector} { ${userVal} }`);
4498
+ if (userVal === null || userVal === void 0 ? void 0 : userVal.trim()) {
4499
+ lines.push(`${selector} { ${FORCE_IMPORTANT_ELEMENTS$1.has(el) ? forceImportantCss(userVal) : userVal} }`);
4500
+ }
4501
+ if ((userVal === null || userVal === void 0 ? void 0 : userVal.trim()) && el === 'Descrizione' && cssSetsTop(userVal)) {
4502
+ lines.push(`${this.getSelector(uid, state, ELEMENT_SELECTORS$8['DescrizioneSollevata'])} { top: 0 !important; }`);
4503
+ }
4149
4504
  }
4150
4505
  }
4151
4506
  return lines.join('\n');
@@ -4288,10 +4643,10 @@ class DateFieldTemplateComponent {
4288
4643
  }
4289
4644
  }
4290
4645
  DateFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4291
- 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"] }] });
4646
+ 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"] }] });
4292
4647
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateFieldTemplateComponent, decorators: [{
4293
4648
  type: Component,
4294
- 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" }]
4649
+ 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" }]
4295
4650
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { field: [{
4296
4651
  type: Input
4297
4652
  }], record: [{
@@ -4324,6 +4679,9 @@ const ELEMENT_SELECTORS$7 = {
4324
4679
  Container: ' .mat-mdc-text-field-wrapper',
4325
4680
  Input: ' .mat-mdc-form-field-infix',
4326
4681
  Descrizione: ' label.mat-mdc-floating-label',
4682
+ // Descrizione: grafica base della label, sempre valida. Sollevata (virtuale, salvata dentro
4683
+ // Descrizione): override quando è sul bordo
4684
+ DescrizioneSollevata: ' label.mat-mdc-floating-label' + LABEL_FLOATING_SUFFIX,
4327
4685
  Icona: [' .mat-mdc-form-field-icon-prefix', ' .mat-mdc-form-field-icon-suffix'],
4328
4686
  Microfono: ' .mat-mdc-form-field-icon-suffix',
4329
4687
  Errore: ' mat-error',
@@ -4350,6 +4708,7 @@ class TextareaFieldTemplateComponent {
4350
4708
  this.TextareaFieldIconPositionEnum = TextareaFieldIconPositionEnum;
4351
4709
  this.styleEl = null;
4352
4710
  this.statusSub = null;
4711
+ this.notchObserver = null;
4353
4712
  }
4354
4713
  ngOnInit() {
4355
4714
  this.fieldUid = 'ta-' + Math.random().toString(36).slice(2, 10);
@@ -4366,6 +4725,9 @@ class TextareaFieldTemplateComponent {
4366
4725
  if (changes['forceState']) {
4367
4726
  this.updateStateClasses();
4368
4727
  }
4728
+ if (changes['styleVersion'] || changes['forceState']) {
4729
+ refreshOutlineNotch(this.formField);
4730
+ }
4369
4731
  if (changes['record'] != undefined && changes['record'].firstChange == false
4370
4732
  && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
4371
4733
  this.record = changes['record'].currentValue;
@@ -4373,12 +4735,16 @@ class TextareaFieldTemplateComponent {
4373
4735
  this.updateStateClasses();
4374
4736
  }
4375
4737
  }
4738
+ ngAfterViewInit() {
4739
+ this.notchObserver = watchOutlineNotch(this.formField);
4740
+ }
4376
4741
  ngOnDestroy() {
4377
- var _a, _b;
4378
- if ((_a = this.styleEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
4742
+ var _a, _b, _c;
4743
+ (_a = this.notchObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
4744
+ if ((_b = this.styleEl) === null || _b === void 0 ? void 0 : _b.parentNode) {
4379
4745
  this.styleEl.parentNode.removeChild(this.styleEl);
4380
4746
  }
4381
- (_b = this.statusSub) === null || _b === void 0 ? void 0 : _b.unsubscribe();
4747
+ (_c = this.statusSub) === null || _c === void 0 ? void 0 : _c.unsubscribe();
4382
4748
  }
4383
4749
  initStyles() {
4384
4750
  if (this.field.FieldstyleCSS != null || this.field.FieldstyleCSS != undefined)
@@ -4461,13 +4827,14 @@ class TextareaFieldTemplateComponent {
4461
4827
  : 'display: none;'} }`);
4462
4828
  lines.push(`#${uid} .mdc-notched-outline { border: 0; }`);
4463
4829
  lines.push(`#${uid} textarea.mat-mdc-input-element { color: inherit; }`);
4830
+ lines.push(...buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$7.Descrizione, css));
4464
4831
  for (const el of ELEMENTS$6) {
4465
4832
  const sEntry = ELEMENT_SELECTORS$7[el];
4466
4833
  const selList = Array.isArray(sEntry) ? sEntry : [sEntry];
4467
4834
  for (const state of STATES$8) {
4468
4835
  const key = el + state;
4469
4836
  const defaultVal = DEFAULT_FIELD_STYLES$8[key];
4470
- const userVal = css[key];
4837
+ const userVal = readStyleCss(css, key);
4471
4838
  if (!(defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim()) && !(userVal === null || userVal === void 0 ? void 0 : userVal.trim()))
4472
4839
  continue;
4473
4840
  for (const s of selList) {
@@ -4479,6 +4846,10 @@ class TextareaFieldTemplateComponent {
4479
4846
  lines.push(`${selector} { ${defaultVal} }`);
4480
4847
  if (userVal === null || userVal === void 0 ? void 0 : userVal.trim())
4481
4848
  lines.push(`${selector} { ${userVal} }`);
4849
+ if ((userVal === null || userVal === void 0 ? void 0 : userVal.trim()) && el === 'Descrizione') {
4850
+ if (cssSetsTop(userVal))
4851
+ lines.push(this.getSelector(uid, el, state, s + LABEL_FLOATING_SUFFIX, sub) + ' { top: 0; }');
4852
+ }
4482
4853
  if (el === 'Container') {
4483
4854
  const outlineSel = this.getOutlineSelector(uid, state);
4484
4855
  if (outlineSel) {
@@ -4563,7 +4934,7 @@ class TextareaFieldTemplateComponent {
4563
4934
  }
4564
4935
  }
4565
4936
  TextareaFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextareaFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4566
- 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"] }] });
4937
+ 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"] }] });
4567
4938
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextareaFieldTemplateComponent, decorators: [{
4568
4939
  type: Component,
4569
4940
  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"] }]
@@ -4577,6 +4948,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4577
4948
  type: Input
4578
4949
  }], styleVersion: [{
4579
4950
  type: Input
4951
+ }], formField: [{
4952
+ type: ViewChild,
4953
+ args: [MatFormField]
4580
4954
  }], forceState: [{
4581
4955
  type: Input
4582
4956
  }], recordChange: [{
@@ -4600,6 +4974,9 @@ const ELEMENT_SELECTORS$6 = {
4600
4974
  Container: ' .mat-mdc-text-field-wrapper',
4601
4975
  Input: ' .mat-mdc-form-field-infix',
4602
4976
  Descrizione: ' label.mat-mdc-floating-label',
4977
+ // Descrizione: grafica base della label, sempre valida. Sollevata (virtuale, salvata dentro
4978
+ // Descrizione): override quando è sul bordo
4979
+ DescrizioneSollevata: ' label.mat-mdc-floating-label' + LABEL_FLOATING_SUFFIX,
4603
4980
  Icona: [' .mat-mdc-form-field-icon-prefix', ' .mat-mdc-form-field-icon-suffix'],
4604
4981
  Errore: ' mat-error',
4605
4982
  };
@@ -4625,6 +5002,7 @@ class NumericFieldTemplateComponent {
4625
5002
  this.isDirty = false;
4626
5003
  this.styleEl = null;
4627
5004
  this.statusSub = null;
5005
+ this.notchObserver = null;
4628
5006
  }
4629
5007
  ngOnInit() {
4630
5008
  this.fieldUid = 'nf-' + Math.random().toString(36).slice(2, 10);
@@ -4647,6 +5025,9 @@ class NumericFieldTemplateComponent {
4647
5025
  if (changes['forceState']) {
4648
5026
  this.updateStateClasses();
4649
5027
  }
5028
+ if (changes['styleVersion'] || changes['forceState']) {
5029
+ refreshOutlineNotch(this.formField);
5030
+ }
4650
5031
  if (changes['record'] != undefined && changes['record'].firstChange == false
4651
5032
  && JSON.stringify(changes['record'].currentValue) != JSON.stringify(changes['record'].previousValue)) {
4652
5033
  this.record = changes['record'].currentValue;
@@ -4654,12 +5035,16 @@ class NumericFieldTemplateComponent {
4654
5035
  this.updateStateClasses();
4655
5036
  }
4656
5037
  }
5038
+ ngAfterViewInit() {
5039
+ this.notchObserver = watchOutlineNotch(this.formField);
5040
+ }
4657
5041
  ngOnDestroy() {
4658
- var _a, _b;
4659
- if ((_a = this.styleEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
5042
+ var _a, _b, _c;
5043
+ (_a = this.notchObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
5044
+ if ((_b = this.styleEl) === null || _b === void 0 ? void 0 : _b.parentNode) {
4660
5045
  this.styleEl.parentNode.removeChild(this.styleEl);
4661
5046
  }
4662
- (_b = this.statusSub) === null || _b === void 0 ? void 0 : _b.unsubscribe();
5047
+ (_c = this.statusSub) === null || _c === void 0 ? void 0 : _c.unsubscribe();
4663
5048
  }
4664
5049
  initStyles() {
4665
5050
  if (this.field.FieldstyleCSS != null || this.field.FieldstyleCSS != undefined)
@@ -4741,13 +5126,14 @@ class NumericFieldTemplateComponent {
4741
5126
  : 'display: none;'} }`);
4742
5127
  lines.push(`#${uid} .mdc-notched-outline { border: 0; }`);
4743
5128
  lines.push(`#${uid} input.mat-mdc-input-element { color: inherit; }`);
5129
+ lines.push(...buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$6.Descrizione, css));
4744
5130
  for (const el of ELEMENTS$5) {
4745
5131
  const sEntry = ELEMENT_SELECTORS$6[el];
4746
5132
  const selList = Array.isArray(sEntry) ? sEntry : [sEntry];
4747
5133
  for (const state of STATES$7) {
4748
5134
  const key = el + state;
4749
5135
  const defaultVal = DEFAULT_FIELD_STYLES$7[key];
4750
- const userVal = css[key];
5136
+ const userVal = readStyleCss(css, key);
4751
5137
  if (!(defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim()) && !(userVal === null || userVal === void 0 ? void 0 : userVal.trim()))
4752
5138
  continue;
4753
5139
  for (const s of selList) {
@@ -4759,6 +5145,10 @@ class NumericFieldTemplateComponent {
4759
5145
  lines.push(`${selector} { ${defaultVal} }`);
4760
5146
  if (userVal === null || userVal === void 0 ? void 0 : userVal.trim())
4761
5147
  lines.push(`${selector} { ${userVal} }`);
5148
+ if ((userVal === null || userVal === void 0 ? void 0 : userVal.trim()) && el === 'Descrizione') {
5149
+ if (cssSetsTop(userVal))
5150
+ lines.push(this.getSelector(uid, el, state, s + LABEL_FLOATING_SUFFIX, sub) + ' { top: 0; }');
5151
+ }
4762
5152
  if (el === 'Container') {
4763
5153
  const outlineSel = this.getOutlineSelector(uid, state);
4764
5154
  if (outlineSel) {
@@ -4891,7 +5281,7 @@ class NumericFieldTemplateComponent {
4891
5281
  }
4892
5282
  }
4893
5283
  NumericFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFieldTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4894
- 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"] }] });
5284
+ 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"] }] });
4895
5285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFieldTemplateComponent, decorators: [{
4896
5286
  type: Component,
4897
5287
  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"] }]
@@ -4905,6 +5295,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4905
5295
  type: Input
4906
5296
  }], styleVersion: [{
4907
5297
  type: Input
5298
+ }], formField: [{
5299
+ type: ViewChild,
5300
+ args: [MatFormField]
4908
5301
  }], forceState: [{
4909
5302
  type: Input
4910
5303
  }], recordChange: [{
@@ -4929,6 +5322,8 @@ var ListPresentationEnum;
4929
5322
  const ELEMENT_SELECTORS_COMBO = {
4930
5323
  Container: ' tmw-select .tmw-select-field',
4931
5324
  Label: ' tmw-select .tmw-select-label',
5325
+ // Label: grafica base, sempre valida. LabelSollevata (virtuale, salvata dentro Label): override sul bordo
5326
+ LabelSollevata: ' tmw-select .tmw-select-field--floated .tmw-select-label',
4932
5327
  CasellaTrigger: ' tmw-select .tmw-select-value',
4933
5328
  BottoneCancella: ' tmw-select .tmw-select-clear',
4934
5329
  };
@@ -4949,7 +5344,7 @@ const ELEMENT_SELECTORS_BUTTON = {
4949
5344
  const STATES$6 = ['Normale', 'Mouseover', 'Selezionato', 'NotValid', 'Readonly'];
4950
5345
  const DEFAULT_FIELD_STYLES$6 = {};
4951
5346
  // Elementi il cui CSS iniettato richiede !important per vincere sulle regole di tmw-select.scss
4952
- const FORCE_IMPORTANT_ELEMENTS = new Set(['Label', 'BottoneCancella']);
5347
+ const FORCE_IMPORTANT_ELEMENTS = new Set(['Label', 'LabelSollevata', 'BottoneCancella']);
4953
5348
  class ListValueFieldTemplateComponent {
4954
5349
  constructor(renderer) {
4955
5350
  this.renderer = renderer;
@@ -5043,7 +5438,7 @@ class ListValueFieldTemplateComponent {
5043
5438
  for (const state of STATES$6) {
5044
5439
  const key = el + state;
5045
5440
  const defaultVal = DEFAULT_FIELD_STYLES$6[key];
5046
- const userVal = css[key];
5441
+ const userVal = readStyleCss(css, key);
5047
5442
  if (!(defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim()) && !(userVal === null || userVal === void 0 ? void 0 : userVal.trim()))
5048
5443
  continue;
5049
5444
  const selector = this.getSelector(uid, state, el, s);
@@ -5055,6 +5450,12 @@ class ListValueFieldTemplateComponent {
5055
5450
  const needsImportant = FORCE_IMPORTANT_ELEMENTS.has(el) || (el === 'Bottone' && state === 'Selezionato');
5056
5451
  const finalVal = needsImportant ? this.forceImportant(userVal) : userVal;
5057
5452
  lines.push(`${selector} { ${finalVal} }`);
5453
+ // Il top della label nel contenitore non deve spostare quella sul bordo
5454
+ if (el === 'Label' && selectors['LabelSollevata'] && cssSetsTop(userVal)) {
5455
+ const floatSel = this.getSelector(uid, state, el, selectors['LabelSollevata']);
5456
+ if (floatSel)
5457
+ lines.push(`${floatSel} { top: 0 !important; }`);
5458
+ }
5058
5459
  // BottoneCancella: l'icona è un <svg> con fill legato a --tmw-select-clear-color (non currentColor),
5059
5460
  // quindi "color" non la raggiunge: si estrae il color dichiarato e si inietta come fill sull'svg.
5060
5461
  if (el === 'BottoneCancella') {
@@ -6298,6 +6699,7 @@ const ELEMENT_SELECTORS$3 = {
6298
6699
  Container: ' mat-form-field',
6299
6700
  CasellaSelezione: ' .mat-mdc-text-field-wrapper',
6300
6701
  Descrizione: ' .mdc-floating-label',
6702
+ DescrizioneSollevata: ' .mdc-floating-label' + LABEL_FLOATING_SUFFIX,
6301
6703
  };
6302
6704
  const STATES$3 = ['Normale', 'Mouseover', 'Selezionato', 'NotValid', 'Readonly'];
6303
6705
  const DEFAULT_FIELD_STYLES$3 = {};
@@ -6310,6 +6712,7 @@ class ImageFieldSelectorTemplateComponent {
6310
6712
  this.forceState = null;
6311
6713
  this.recordChange = new EventEmitter();
6312
6714
  this.styleEl = null;
6715
+ this.notchObserver = null;
6313
6716
  }
6314
6717
  ngOnInit() {
6315
6718
  this.fieldUid = 'isf-' + Math.random().toString(36).slice(2, 10);
@@ -6327,15 +6730,22 @@ class ImageFieldSelectorTemplateComponent {
6327
6730
  if (changes['forceState']) {
6328
6731
  this.updateStateClasses();
6329
6732
  }
6733
+ if (changes['styleVersion'] || changes['forceState']) {
6734
+ refreshOutlineNotch(this.formField);
6735
+ }
6330
6736
  if (changes['record'] && !changes['record'].firstChange &&
6331
6737
  JSON.stringify(changes['record'].currentValue) !== JSON.stringify(changes['record'].previousValue)) {
6332
6738
  this.record = changes['record'].currentValue;
6333
6739
  this.updateField();
6334
6740
  }
6335
6741
  }
6742
+ ngAfterViewInit() {
6743
+ this.notchObserver = watchOutlineNotch(this.formField);
6744
+ }
6336
6745
  ngOnDestroy() {
6337
- var _a;
6338
- if ((_a = this.styleEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
6746
+ var _a, _b;
6747
+ (_a = this.notchObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
6748
+ if ((_b = this.styleEl) === null || _b === void 0 ? void 0 : _b.parentNode) {
6339
6749
  this.styleEl.parentNode.removeChild(this.styleEl);
6340
6750
  }
6341
6751
  }
@@ -6404,14 +6814,14 @@ class ImageFieldSelectorTemplateComponent {
6404
6814
  this.styleEl.textContent = rules;
6405
6815
  }
6406
6816
  buildCssRules(uid, css) {
6407
- const lines = [];
6817
+ const lines = buildFloatingLabelBaseRules(uid, ELEMENT_SELECTORS$3.Descrizione, css);
6408
6818
  // Elementi scoped da #uid (interni al mat-form-field)
6409
6819
  for (const el of Object.keys(ELEMENT_SELECTORS$3)) {
6410
6820
  const s = ELEMENT_SELECTORS$3[el];
6411
6821
  for (const state of STATES$3) {
6412
6822
  const key = el + state;
6413
6823
  const defaultVal = DEFAULT_FIELD_STYLES$3[key];
6414
- const userVal = css[key];
6824
+ const userVal = readStyleCss(css, key);
6415
6825
  if (!(defaultVal === null || defaultVal === void 0 ? void 0 : defaultVal.trim()) && !(userVal === null || userVal === void 0 ? void 0 : userVal.trim()))
6416
6826
  continue;
6417
6827
  const selector = this.getSelector(uid, state, el, s);
@@ -6421,6 +6831,11 @@ class ImageFieldSelectorTemplateComponent {
6421
6831
  lines.push(`${selector} { ${defaultVal} }`);
6422
6832
  if (userVal === null || userVal === void 0 ? void 0 : userVal.trim()) {
6423
6833
  lines.push(`${selector} { ${userVal} }`);
6834
+ if (el === 'Descrizione' && cssSetsTop(userVal)) {
6835
+ const floatSel = this.getSelector(uid, state, el, s + LABEL_FLOATING_SUFFIX);
6836
+ if (floatSel)
6837
+ lines.push(`${floatSel} { top: 0; }`);
6838
+ }
6424
6839
  // CasellaSelezione: inietta anche sul testo selezionato per color/font
6425
6840
  if (el === 'CasellaSelezione') {
6426
6841
  const textSel = this.getSelector(uid, state, el, ' .mat-mdc-select-value');
@@ -6518,7 +6933,7 @@ class ImageFieldSelectorTemplateComponent {
6518
6933
  }
6519
6934
  }
6520
6935
  ImageFieldSelectorTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImageFieldSelectorTemplateComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
6521
- 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"] }] });
6936
+ 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"] }] });
6522
6937
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImageFieldSelectorTemplateComponent, decorators: [{
6523
6938
  type: Component,
6524
6939
  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"] }]
@@ -6532,6 +6947,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
6532
6947
  type: Input
6533
6948
  }], styleVersion: [{
6534
6949
  type: Input
6950
+ }], formField: [{
6951
+ type: ViewChild,
6952
+ args: [MatFormField]
6535
6953
  }], forceState: [{
6536
6954
  type: Input
6537
6955
  }], recordChange: [{
@@ -9695,10 +10113,10 @@ class GraphComponent {
9695
10113
  }
9696
10114
  }
9697
10115
  GraphComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, deps: [{ token: i4.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
9698
- 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"] }] });
10116
+ 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"] }] });
9699
10117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, decorators: [{
9700
10118
  type: Component,
9701
- 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>" }]
10119
+ 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>" }]
9702
10120
  }], ctorParameters: function () { return [{ type: i4.DatePipe }]; }, propDecorators: { onResize: [{
9703
10121
  type: HostListener,
9704
10122
  args: ['window:resize', ['$event']]
@@ -10710,7 +11128,7 @@ class ListViewFormRecordComponent {
10710
11128
  }
10711
11129
  }
10712
11130
  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 });
10713
- 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"] }] });
11131
+ 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", "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"] }] });
10714
11132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, decorators: [{
10715
11133
  type: Component,
10716
11134
  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"] }]
@@ -12405,7 +12823,7 @@ class FilterFormStatisticComponent {
12405
12823
  }
12406
12824
  }
12407
12825
  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 });
12408
- 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"] }] });
12826
+ 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"] }] });
12409
12827
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterFormStatisticComponent, decorators: [{
12410
12828
  type: Component,
12411
12829
  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"] }]
@@ -13252,122 +13670,180 @@ class DynamicModuleConfiguratorConfig {
13252
13670
  }
13253
13671
 
13254
13672
  /**
13255
- * Utility per leggere/scrivere singole proprietà dentro una stringa di dichiarazioni CSS
13256
- * (il formato usato dalle mappe *FieldStyleCSS: "color:red;font-size:14px").
13673
+ * Catalogo delle proprietà CSS modificabili dall'editor grafico dei campi.
13257
13674
  *
13258
- * Tutte le funzioni preservano le proprietà che non vengono toccate, così i CSS scritti
13259
- * a mano o generati dall'AI non vengono persi quando si modifica una singola proprietà
13260
- * dall'editor grafico.
13261
- */
13262
- /**
13263
- * Divide una stringa CSS sui ";" di primo livello, ignorando quelli dentro
13264
- * parentesi (es. rgba(0,0,0,.5)) o stringhe (es. url("a;b")).
13675
+ * Ogni proprietà dichiara che tipo di controllo mostrare (colore, misura con slider,
13676
+ * elenco di valori, testo libero). Le proprietà non presenti in questo catalogo restano
13677
+ * comunque modificabili a mano dalle caselle CSS del dialog di modifica campo e non
13678
+ * vengono mai perse dall'editor.
13265
13679
  */
13266
- function splitTopLevel(css, separator) {
13267
- const parts = [];
13268
- let depth = 0;
13269
- let quote = null;
13270
- let current = '';
13271
- for (let i = 0; i < css.length; i++) {
13272
- const ch = css[i];
13273
- if (quote) {
13274
- current += ch;
13275
- if (ch === quote && css[i - 1] !== '\\') {
13276
- quote = null;
13277
- }
13278
- continue;
13279
- }
13280
- if (ch === '"' || ch === "'") {
13281
- quote = ch;
13282
- current += ch;
13283
- continue;
13284
- }
13285
- if (ch === '(') {
13286
- depth++;
13287
- current += ch;
13288
- continue;
13289
- }
13290
- if (ch === ')') {
13291
- depth = Math.max(0, depth - 1);
13292
- current += ch;
13293
- continue;
13294
- }
13295
- if (ch === separator && depth === 0) {
13296
- parts.push(current);
13297
- current = '';
13298
- continue;
13299
- }
13300
- current += ch;
13301
- }
13302
- parts.push(current);
13303
- return parts;
13304
- }
13305
- /** Trasforma "color:red;font-size:14px" in [{prop:'color',value:'red'},...] mantenendo l'ordine */
13306
- function parseCssDeclarations(css) {
13307
- if (!css) {
13308
- return [];
13309
- }
13310
- const result = [];
13311
- splitTopLevel(css, ';').forEach((chunk) => {
13312
- const trimmed = chunk.trim();
13313
- if (!trimmed) {
13314
- return;
13315
- }
13316
- // Il primo ":" separa sempre proprietà e valore (eventuali ":" successivi,
13317
- // es. in url(http://...), restano nel valore).
13318
- const colonIndex = trimmed.indexOf(':');
13319
- if (colonIndex <= 0) {
13320
- return;
13321
- }
13322
- const prop = trimmed.slice(0, colonIndex).trim().toLowerCase();
13323
- const value = trimmed.slice(colonIndex + 1).trim();
13324
- if (!prop || !value) {
13325
- return;
13326
- }
13327
- result.push({ prop, value });
13328
- });
13329
- return result;
13330
- }
13331
- /** Trasforma [{prop,value}] in "color: red; font-size: 14px;" */
13332
- function serializeCssDeclarations(declarations) {
13333
- if (!declarations || declarations.length === 0) {
13334
- return '';
13335
- }
13336
- return declarations
13337
- .filter((d) => d && d.prop && d.value)
13338
- .map((d) => `${d.prop}: ${d.value};`)
13339
- .join(' ');
13340
- }
13341
- /** Legge il valore di una singola proprietà; stringa vuota se non presente */
13342
- function getCssDeclaration(css, prop) {
13343
- const target = (prop || '').toLowerCase();
13344
- const found = parseCssDeclarations(css).find((d) => d.prop === target);
13345
- return found ? found.value : '';
13346
- }
13680
+ /** Proprietà mostrate sempre: coprono il 90% delle personalizzazioni */
13681
+ const CSS_CORE_PROPERTIES = [
13682
+ { prop: 'background-color', label: 'Sfondo', type: 'color', group: 'Aspetto' },
13683
+ { prop: 'color', label: 'Colore testo', type: 'color', group: 'Testo' },
13684
+ { prop: 'font-size', label: 'Dimensione testo', type: 'size', group: 'Testo', min: 8, max: 48, step: 1, unit: 'px' },
13685
+ {
13686
+ prop: 'font-weight', label: 'Spessore testo', type: 'select', group: 'Testo',
13687
+ options: [
13688
+ { value: 'normal', label: 'Normale' },
13689
+ { value: 'bold', label: 'Grassetto' },
13690
+ { value: '300', label: 'Leggero (300)' },
13691
+ { value: '500', label: 'Medio (500)' },
13692
+ { value: '600', label: 'Semi-grassetto (600)' },
13693
+ { value: '800', label: 'Extra (800)' },
13694
+ ],
13695
+ },
13696
+ { prop: 'border-radius', label: 'Angoli arrotondati', type: 'size', group: 'Bordo', min: 0, max: 40, step: 1, unit: 'px' },
13697
+ { prop: 'border-width', label: 'Spessore bordo', type: 'size', group: 'Bordo', min: 0, max: 12, step: 1, unit: 'px' },
13698
+ { prop: 'border-color', label: 'Colore bordo', type: 'color', group: 'Bordo' },
13699
+ {
13700
+ prop: 'border-style', label: 'Tipo bordo', type: 'select', group: 'Bordo',
13701
+ options: [
13702
+ { value: 'none', label: 'Nessuno' },
13703
+ { value: 'solid', label: 'Continuo' },
13704
+ { value: 'dashed', label: 'Tratteggiato' },
13705
+ { value: 'dotted', label: 'Puntinato' },
13706
+ { value: 'double', label: 'Doppio' },
13707
+ ],
13708
+ },
13709
+ { prop: 'padding', label: 'Spaziatura interna', type: 'text', group: 'Spaziatura', placeholder: 'es. 8px 12px' },
13710
+ ];
13711
+ /** Proprietà aggiuntive, mostrate solo aprendo "Altre proprietà" */
13712
+ const CSS_EXTRA_PROPERTIES = [
13713
+ { prop: 'opacity', label: 'Opacità', type: 'size', group: 'Aspetto', min: 0, max: 1, step: 0.05, unit: '' },
13714
+ { prop: 'background', label: 'Sfondo avanzato', type: 'text', group: 'Aspetto', placeholder: 'es. linear-gradient(...)' },
13715
+ { prop: 'box-shadow', label: 'Ombra', type: 'text', group: 'Aspetto', placeholder: 'es. 0 2px 6px rgba(0,0,0,.2)' },
13716
+ {
13717
+ prop: 'text-align', label: 'Allineamento testo', type: 'select', group: 'Testo',
13718
+ options: [
13719
+ { value: 'left', label: 'Sinistra' },
13720
+ { value: 'center', label: 'Centro' },
13721
+ { value: 'right', label: 'Destra' },
13722
+ { value: 'justify', label: 'Giustificato' },
13723
+ ],
13724
+ },
13725
+ {
13726
+ prop: 'text-transform', label: 'Maiuscole/minuscole', type: 'select', group: 'Testo',
13727
+ options: [
13728
+ { value: 'none', label: 'Come scritto' },
13729
+ { value: 'uppercase', label: 'TUTTO MAIUSCOLO' },
13730
+ { value: 'lowercase', label: 'tutto minuscolo' },
13731
+ { value: 'capitalize', label: 'Iniziali Maiuscole' },
13732
+ ],
13733
+ },
13734
+ {
13735
+ prop: 'font-style', label: 'Corsivo', type: 'select', group: 'Testo',
13736
+ options: [
13737
+ { value: 'normal', label: 'Normale' },
13738
+ { value: 'italic', label: 'Corsivo' },
13739
+ ],
13740
+ },
13741
+ {
13742
+ prop: 'text-decoration', label: 'Decorazione testo', type: 'select', group: 'Testo',
13743
+ options: [
13744
+ { value: 'none', label: 'Nessuna' },
13745
+ { value: 'underline', label: 'Sottolineato' },
13746
+ { value: 'line-through', label: 'Barrato' },
13747
+ ],
13748
+ },
13749
+ { prop: 'font-family', label: 'Font', type: 'text', group: 'Testo', placeholder: 'es. Roboto, sans-serif' },
13750
+ { prop: 'letter-spacing', label: 'Spaziatura lettere', type: 'size', group: 'Testo', min: -2, max: 10, step: 0.5, unit: 'px' },
13751
+ { prop: 'line-height', label: 'Interlinea', type: 'size', group: 'Testo', min: 0.8, max: 3, step: 0.1, unit: '' },
13752
+ { prop: 'margin', label: 'Spaziatura esterna', type: 'text', group: 'Spaziatura', placeholder: 'es. 0 0 8px 0' },
13753
+ { prop: 'width', label: 'Larghezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 100%' },
13754
+ { prop: 'height', label: 'Altezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
13755
+ { prop: 'min-height', label: 'Altezza minima', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
13756
+ { prop: 'gap', label: 'Distanza tra elementi', type: 'size', group: 'Layout', min: 0, max: 40, step: 1, unit: 'px' },
13757
+ {
13758
+ prop: 'display', label: 'Visualizzazione', type: 'select', group: 'Layout',
13759
+ options: [
13760
+ { value: 'block', label: 'Blocco' },
13761
+ { value: 'inline-block', label: 'Blocco in linea' },
13762
+ { value: 'flex', label: 'Flex' },
13763
+ { value: 'none', label: 'Nascosto' },
13764
+ ],
13765
+ },
13766
+ {
13767
+ prop: 'justify-content', label: 'Allineamento orizzontale', type: 'select', group: 'Layout',
13768
+ options: [
13769
+ { value: 'flex-start', label: 'Inizio' },
13770
+ { value: 'center', label: 'Centro' },
13771
+ { value: 'flex-end', label: 'Fine' },
13772
+ { value: 'space-between', label: 'Distribuito' },
13773
+ ],
13774
+ },
13775
+ {
13776
+ prop: 'align-items', label: 'Allineamento verticale', type: 'select', group: 'Layout',
13777
+ options: [
13778
+ { value: 'flex-start', label: 'Alto' },
13779
+ { value: 'center', label: 'Centro' },
13780
+ { value: 'flex-end', label: 'Basso' },
13781
+ { value: 'stretch', label: 'Estendi' },
13782
+ ],
13783
+ },
13784
+ {
13785
+ prop: 'cursor', label: 'Puntatore', type: 'select', group: 'Layout',
13786
+ options: [
13787
+ { value: 'default', label: 'Normale' },
13788
+ { value: 'pointer', label: 'Mano' },
13789
+ { value: 'not-allowed', label: 'Vietato' },
13790
+ { value: 'text', label: 'Testo' },
13791
+ ],
13792
+ },
13793
+ { prop: 'transition', label: 'Transizione', type: 'text', group: 'Effetti', placeholder: 'es. all .2s ease' },
13794
+ { prop: 'transform', label: 'Trasformazione', type: 'text', group: 'Effetti', placeholder: 'es. scale(1.05)' },
13795
+ ];
13796
+ const CSS_ALL_PROPERTIES = CSS_CORE_PROPERTIES.concat(CSS_EXTRA_PROPERTIES);
13347
13797
  /**
13348
- * Imposta (o rimuove, se il valore è vuoto) una singola proprietà, lasciando
13349
- * intatte tutte le altre. Le proprietà nuove vengono accodate in fondo.
13798
+ * Proprietà che hanno senso solo su alcuni elementi: non compaiono nelle liste generali,
13799
+ * vengono aggiunte dai profili dei singoli elementi (vedi CssElementProfile).
13350
13800
  */
13351
- function setCssDeclaration(css, prop, value) {
13801
+ const CSS_ELEMENT_ONLY_PROPERTIES = [
13802
+ { prop: 'top', label: 'Posizione verticale (top)', type: 'size', group: 'Spaziatura', min: -40, max: 60, step: 1, unit: 'px', defaultValue: 0, placeholder: 'predefinito 0px' },
13803
+ ];
13804
+ function getCssPropertyDef(prop) {
13805
+ var _a, _b;
13352
13806
  const target = (prop || '').toLowerCase();
13353
- if (!target) {
13354
- return css !== null && css !== void 0 ? css : '';
13355
- }
13356
- const declarations = parseCssDeclarations(css);
13357
- const newValue = (value !== null && value !== void 0 ? value : '').trim();
13358
- const index = declarations.findIndex((d) => d.prop === target);
13359
- if (!newValue) {
13360
- if (index >= 0) {
13361
- declarations.splice(index, 1);
13362
- }
13363
- }
13364
- else if (index >= 0) {
13365
- declarations[index].value = newValue;
13366
- }
13367
- else {
13368
- declarations.push({ prop: target, value: newValue });
13369
- }
13370
- return serializeCssDeclarations(declarations);
13807
+ return (_b = (_a = CSS_ALL_PROPERTIES.find((p) => p.prop === target)) !== null && _a !== void 0 ? _a : CSS_ELEMENT_ONLY_PROPERTIES.find((p) => p.prop === target)) !== null && _b !== void 0 ? _b : null;
13808
+ }
13809
+ /** Proprietà di layout che non hanno effetto su etichetta e area del valore */
13810
+ const LAYOUT_PROPERTIES = [
13811
+ 'min-height',
13812
+ 'gap',
13813
+ 'display',
13814
+ 'justify-content',
13815
+ 'align-items',
13816
+ 'cursor',
13817
+ 'transition',
13818
+ 'transform', // Trasformazione
13819
+ ];
13820
+ const CSS_PROFILE_LABEL = {
13821
+ hidden: LAYOUT_PROPERTIES.concat(['height']),
13822
+ extra: ['top'],
13823
+ };
13824
+ const CSS_PROFILE_VALUE = {
13825
+ hidden: LAYOUT_PROPERTIES,
13826
+ };
13827
+ /** Label dentro la casella o sollevata sul bordo: solo le proprietà che cambiano fra i due casi */
13828
+ const CSS_PROFILE_FLOATING_LABEL = {
13829
+ only: ['color', 'font-size', 'font-weight', 'background-color', 'padding', 'width', 'top'],
13830
+ };
13831
+ /** Proprietà da mostrare per un elemento, applicando l'eventuale profilo */
13832
+ function getCssPropertiesForProfile(profile, showAll) {
13833
+ var _a, _b;
13834
+ if (profile === null || profile === void 0 ? void 0 : profile.only) {
13835
+ return profile.only.map((prop) => getCssPropertyDef(prop)).filter((d) => d != null);
13836
+ }
13837
+ const hidden = (_a = profile === null || profile === void 0 ? void 0 : profile.hidden) !== null && _a !== void 0 ? _a : [];
13838
+ const base = (showAll ? CSS_ALL_PROPERTIES : CSS_CORE_PROPERTIES).filter((p) => !hidden.includes(p.prop));
13839
+ const extra = ((_b = profile === null || profile === void 0 ? void 0 : profile.extra) !== null && _b !== void 0 ? _b : [])
13840
+ .map((prop) => getCssPropertyDef(prop))
13841
+ .filter((d) => d != null && !base.some((p) => p.prop === d.prop));
13842
+ return base.concat(extra);
13843
+ }
13844
+ /** Definizione di ripiego per una proprietà scritta a mano e non catalogata */
13845
+ function buildCustomCssPropertyDef(prop) {
13846
+ return { prop: (prop || '').toLowerCase(), label: prop, type: 'text', group: 'Personalizzate' };
13371
13847
  }
13372
13848
 
13373
13849
  const STATE_NORMALE = { key: 'Normale', label: 'Normale' };
@@ -13380,18 +13856,21 @@ const FULL_STATES = [STATE_NORMALE, STATE_MOUSEOVER, STATE_FOCUSED, STATE_NOTVAL
13380
13856
  /** Elementi del campo "Elenco generico", che cambiano in base alla modalità di presentazione */
13381
13857
  const LIST_VALUE_COMBO_ELEMENTS = [
13382
13858
  { key: 'Container', label: 'Contenitore' },
13383
- { key: 'Label', label: 'Etichetta' },
13859
+ // Stessa label: "Label" è la grafica base, sempre valida; "LabelSollevata" (virtuale,
13860
+ // salvata dentro Label) sovrascrive quando è sul bordo
13861
+ { key: 'Label', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13862
+ { key: 'LabelSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13384
13863
  { key: 'CasellaTrigger', label: 'Casella Select' },
13385
13864
  { key: 'BottoneCancella', label: 'Bottone Cancella' },
13386
13865
  ];
13387
13866
  const LIST_VALUE_RADIO_ELEMENTS = [
13388
13867
  { key: 'Container', label: 'Contenitore' },
13389
- { key: 'Label', label: 'Etichetta' },
13868
+ { key: 'Label', label: 'Etichetta', profile: CSS_PROFILE_LABEL },
13390
13869
  { key: 'Opzione', label: 'Opzione' },
13391
13870
  { key: 'Selezione', label: 'Selezione (radio)' },
13392
13871
  ];
13393
13872
  const LIST_VALUE_BUTTON_ELEMENTS = [
13394
- { key: 'Label', label: 'Etichetta' },
13873
+ { key: 'Label', label: 'Etichetta', profile: CSS_PROFILE_LABEL },
13395
13874
  { key: 'Bottone', label: 'Bottone' },
13396
13875
  ];
13397
13876
  const FIELD_STYLE_CATALOG = [
@@ -13402,7 +13881,8 @@ const FIELD_STYLE_CATALOG = [
13402
13881
  elements: [
13403
13882
  { key: 'Container', label: 'Contenitore' },
13404
13883
  { key: 'Input', label: 'Casella di testo' },
13405
- { key: 'Descrizione', label: 'Descrizione (label)' },
13884
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13885
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13406
13886
  { key: 'Icona', label: 'Icona' },
13407
13887
  { key: 'Microfono', label: 'Microfono' },
13408
13888
  { key: 'Errore', label: 'Testo errore' },
@@ -13416,7 +13896,8 @@ const FIELD_STYLE_CATALOG = [
13416
13896
  elements: [
13417
13897
  { key: 'Container', label: 'Contenitore' },
13418
13898
  { key: 'Input', label: 'Area di testo' },
13419
- { key: 'Descrizione', label: 'Descrizione (label)' },
13899
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13900
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13420
13901
  { key: 'Icona', label: 'Icona' },
13421
13902
  { key: 'Microfono', label: 'Microfono' },
13422
13903
  { key: 'Errore', label: 'Testo errore' },
@@ -13430,7 +13911,8 @@ const FIELD_STYLE_CATALOG = [
13430
13911
  elements: [
13431
13912
  { key: 'Container', label: 'Contenitore' },
13432
13913
  { key: 'Input', label: 'Casella numerica' },
13433
- { key: 'Descrizione', label: 'Descrizione (label)' },
13914
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13915
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13434
13916
  { key: 'Icona', label: 'Icona' },
13435
13917
  { key: 'Errore', label: 'Testo errore' },
13436
13918
  ],
@@ -13443,7 +13925,7 @@ const FIELD_STYLE_CATALOG = [
13443
13925
  elements: [
13444
13926
  { key: 'Container', label: 'Contenitore' },
13445
13927
  { key: 'Scelta', label: 'Controllo (toggle / checkbox / radio)' },
13446
- { key: 'Descrizione', label: 'Descrizione (label)' },
13928
+ { key: 'Descrizione', label: 'Descrizione (label)', profile: CSS_PROFILE_LABEL },
13447
13929
  ],
13448
13930
  states: [STATE_NORMALE, STATE_MOUSEOVER, STATE_FOCUSED, STATE_READONLY],
13449
13931
  },
@@ -13453,7 +13935,8 @@ const FIELD_STYLE_CATALOG = [
13453
13935
  styleProp: 'DateFieldStyleCSS',
13454
13936
  elements: [
13455
13937
  { key: 'Container', label: 'Contenitore esterno' },
13456
- { key: 'Descrizione', label: 'Descrizione (label)' },
13938
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13939
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13457
13940
  { key: 'ContenitoreInterno', label: 'Contenitore interno' },
13458
13941
  { key: 'CampoData', label: 'Casella di testo' },
13459
13942
  { key: 'IconaCalendario', label: 'Bottone calendario' },
@@ -13469,7 +13952,7 @@ const FIELD_STYLE_CATALOG = [
13469
13952
  styleProp: 'AttachmentFieldStyleCSS',
13470
13953
  elements: [
13471
13954
  { key: 'Container', label: 'Contenitore' },
13472
- { key: 'Label', label: 'Label / intestazione' },
13955
+ { key: 'Label', label: 'Label / intestazione', profile: CSS_PROFILE_LABEL },
13473
13956
  { key: 'BottoneAggiungi', label: 'Bottone Aggiungi' },
13474
13957
  { key: 'BottoneDownload', label: 'Bottone Download' },
13475
13958
  { key: 'BottoneElimina', label: 'Bottone Elimina' },
@@ -13484,7 +13967,7 @@ const FIELD_STYLE_CATALOG = [
13484
13967
  styleProp: 'ImageFieldStyleCSS',
13485
13968
  elements: [
13486
13969
  { key: 'Container', label: 'Contenitore' },
13487
- { key: 'Descrizione', label: 'Descrizione (label)' },
13970
+ { key: 'Descrizione', label: 'Descrizione (label)', profile: CSS_PROFILE_LABEL },
13488
13971
  { key: 'BottoneDisegna', label: 'Bottone Disegna' },
13489
13972
  ],
13490
13973
  states: [STATE_NORMALE, STATE_MOUSEOVER],
@@ -13503,7 +13986,8 @@ const FIELD_STYLE_CATALOG = [
13503
13986
  elements: [
13504
13987
  { key: 'Container', label: 'Contenitore' },
13505
13988
  { key: 'CasellaSelezione', label: 'Casella di selezione' },
13506
- { key: 'Descrizione', label: 'Descrizione (label)' },
13989
+ { key: 'Descrizione', label: 'Etichetta nel contenitore', profile: CSS_PROFILE_FLOATING_LABEL },
13990
+ { key: 'DescrizioneSollevata', label: 'Etichetta sul bordo', profile: CSS_PROFILE_FLOATING_LABEL },
13507
13991
  { key: 'Selezioni', label: 'Selezioni (checkbox)' },
13508
13992
  ],
13509
13993
  states: [STATE_NORMALE, STATE_MOUSEOVER, STATE_SELEZIONATO, STATE_NOTVALID, STATE_READONLY],
@@ -13523,7 +14007,7 @@ const FIELD_STYLE_CATALOG = [
13523
14007
  styleProp: 'ImageWithMarkersFieldStyleCSS',
13524
14008
  elements: [
13525
14009
  { key: 'Container', label: 'Contenitore' },
13526
- { key: 'Descrizione', label: 'Descrizione (label)' },
14010
+ { key: 'Descrizione', label: 'Descrizione (label)', profile: CSS_PROFILE_LABEL },
13527
14011
  { key: 'BottoneMarca', label: 'Bottone Marca' },
13528
14012
  ],
13529
14013
  states: [STATE_NORMALE, STATE_MOUSEOVER],
@@ -13535,7 +14019,7 @@ const FIELD_STYLE_CATALOG = [
13535
14019
  elements: [
13536
14020
  { key: 'Container', label: 'Bottone' },
13537
14021
  { key: 'Icona', label: 'Icona' },
13538
- { key: 'Descrizione', label: 'Etichetta (label)' },
14022
+ { key: 'Descrizione', label: 'Etichetta (label)', profile: CSS_PROFILE_LABEL },
13539
14023
  ],
13540
14024
  states: [STATE_NORMALE, STATE_MOUSEOVER, { key: 'Selezionato', label: 'Selezionato (click)' }],
13541
14025
  },
@@ -13665,25 +14149,42 @@ const GLOBAL_STYLE_ELEMENTS = [
13665
14149
  },
13666
14150
  },
13667
14151
  {
13668
- key: 'Etichetta',
13669
- label: 'Etichetta / descrizione',
14152
+ key: 'EtichettaRiposo',
14153
+ label: 'Etichetta nel contenitore',
14154
+ profile: CSS_PROFILE_FLOATING_LABEL,
14155
+ // Grafica base della label di ogni tipologia (per chi ha la label che si solleva,
14156
+ // vale anche sul bordo salvo override)
13670
14157
  perType: {
13671
14158
  [FT['Campo di testo']]: ['Descrizione'],
13672
14159
  [FT['Area di testo']]: ['Descrizione'],
13673
14160
  [FT['Campo numerico']]: ['Descrizione'],
13674
- [FT['Booleano']]: ['Descrizione'],
14161
+ [FT['Elenco immagini']]: ['Descrizione'],
13675
14162
  [FT['Data e/o ora']]: ['Descrizione'],
14163
+ [FT['Elenco generico']]: ['Label'],
14164
+ [FT['Booleano']]: ['Descrizione'],
13676
14165
  [FT['Allegato']]: ['Label'],
13677
14166
  [FT['Immagine']]: ['Descrizione'],
13678
- [FT['Elenco generico']]: ['Label'],
13679
- [FT['Elenco immagini']]: ['Descrizione'],
13680
14167
  [FT['Immagine con markers']]: ['Descrizione'],
13681
14168
  [FT['Bottone']]: ['Descrizione'],
13682
14169
  },
13683
14170
  },
14171
+ {
14172
+ key: 'EtichettaSollevata',
14173
+ label: 'Etichetta sul bordo',
14174
+ profile: CSS_PROFILE_FLOATING_LABEL,
14175
+ perType: {
14176
+ [FT['Campo di testo']]: ['DescrizioneSollevata'],
14177
+ [FT['Area di testo']]: ['DescrizioneSollevata'],
14178
+ [FT['Campo numerico']]: ['DescrizioneSollevata'],
14179
+ [FT['Elenco immagini']]: ['DescrizioneSollevata'],
14180
+ [FT['Data e/o ora']]: ['DescrizioneSollevata'],
14181
+ [FT['Elenco generico']]: ['LabelSollevata'],
14182
+ },
14183
+ },
13684
14184
  {
13685
14185
  key: 'Valore',
13686
14186
  label: 'Area del valore',
14187
+ profile: CSS_PROFILE_VALUE,
13687
14188
  perType: {
13688
14189
  [FT['Campo di testo']]: ['Input'],
13689
14190
  [FT['Area di testo']]: ['Input'],
@@ -17216,141 +17717,6 @@ function isCssColor(value) {
17216
17717
  return normalizeColor(value) != null;
17217
17718
  }
17218
17719
 
17219
- /**
17220
- * Catalogo delle proprietà CSS modificabili dall'editor grafico dei campi.
17221
- *
17222
- * Ogni proprietà dichiara che tipo di controllo mostrare (colore, misura con slider,
17223
- * elenco di valori, testo libero). Le proprietà non presenti in questo catalogo restano
17224
- * comunque modificabili a mano dalle caselle CSS del dialog di modifica campo e non
17225
- * vengono mai perse dall'editor.
17226
- */
17227
- /** Proprietà mostrate sempre: coprono il 90% delle personalizzazioni */
17228
- const CSS_CORE_PROPERTIES = [
17229
- { prop: 'background-color', label: 'Sfondo', type: 'color', group: 'Aspetto' },
17230
- { prop: 'color', label: 'Colore testo', type: 'color', group: 'Testo' },
17231
- { prop: 'font-size', label: 'Dimensione testo', type: 'size', group: 'Testo', min: 8, max: 48, step: 1, unit: 'px' },
17232
- {
17233
- prop: 'font-weight', label: 'Spessore testo', type: 'select', group: 'Testo',
17234
- options: [
17235
- { value: 'normal', label: 'Normale' },
17236
- { value: 'bold', label: 'Grassetto' },
17237
- { value: '300', label: 'Leggero (300)' },
17238
- { value: '500', label: 'Medio (500)' },
17239
- { value: '600', label: 'Semi-grassetto (600)' },
17240
- { value: '800', label: 'Extra (800)' },
17241
- ],
17242
- },
17243
- { prop: 'border-radius', label: 'Angoli arrotondati', type: 'size', group: 'Bordo', min: 0, max: 40, step: 1, unit: 'px' },
17244
- { prop: 'border-width', label: 'Spessore bordo', type: 'size', group: 'Bordo', min: 0, max: 12, step: 1, unit: 'px' },
17245
- { prop: 'border-color', label: 'Colore bordo', type: 'color', group: 'Bordo' },
17246
- {
17247
- prop: 'border-style', label: 'Tipo bordo', type: 'select', group: 'Bordo',
17248
- options: [
17249
- { value: 'none', label: 'Nessuno' },
17250
- { value: 'solid', label: 'Continuo' },
17251
- { value: 'dashed', label: 'Tratteggiato' },
17252
- { value: 'dotted', label: 'Puntinato' },
17253
- { value: 'double', label: 'Doppio' },
17254
- ],
17255
- },
17256
- { prop: 'padding', label: 'Spaziatura interna', type: 'text', group: 'Spaziatura', placeholder: 'es. 8px 12px' },
17257
- ];
17258
- /** Proprietà aggiuntive, mostrate solo aprendo "Altre proprietà" */
17259
- const CSS_EXTRA_PROPERTIES = [
17260
- { prop: 'opacity', label: 'Opacità', type: 'size', group: 'Aspetto', min: 0, max: 1, step: 0.05, unit: '' },
17261
- { prop: 'background', label: 'Sfondo avanzato', type: 'text', group: 'Aspetto', placeholder: 'es. linear-gradient(...)' },
17262
- { prop: 'box-shadow', label: 'Ombra', type: 'text', group: 'Aspetto', placeholder: 'es. 0 2px 6px rgba(0,0,0,.2)' },
17263
- {
17264
- prop: 'text-align', label: 'Allineamento testo', type: 'select', group: 'Testo',
17265
- options: [
17266
- { value: 'left', label: 'Sinistra' },
17267
- { value: 'center', label: 'Centro' },
17268
- { value: 'right', label: 'Destra' },
17269
- { value: 'justify', label: 'Giustificato' },
17270
- ],
17271
- },
17272
- {
17273
- prop: 'text-transform', label: 'Maiuscole/minuscole', type: 'select', group: 'Testo',
17274
- options: [
17275
- { value: 'none', label: 'Come scritto' },
17276
- { value: 'uppercase', label: 'TUTTO MAIUSCOLO' },
17277
- { value: 'lowercase', label: 'tutto minuscolo' },
17278
- { value: 'capitalize', label: 'Iniziali Maiuscole' },
17279
- ],
17280
- },
17281
- {
17282
- prop: 'font-style', label: 'Corsivo', type: 'select', group: 'Testo',
17283
- options: [
17284
- { value: 'normal', label: 'Normale' },
17285
- { value: 'italic', label: 'Corsivo' },
17286
- ],
17287
- },
17288
- {
17289
- prop: 'text-decoration', label: 'Decorazione testo', type: 'select', group: 'Testo',
17290
- options: [
17291
- { value: 'none', label: 'Nessuna' },
17292
- { value: 'underline', label: 'Sottolineato' },
17293
- { value: 'line-through', label: 'Barrato' },
17294
- ],
17295
- },
17296
- { prop: 'font-family', label: 'Font', type: 'text', group: 'Testo', placeholder: 'es. Roboto, sans-serif' },
17297
- { prop: 'letter-spacing', label: 'Spaziatura lettere', type: 'size', group: 'Testo', min: -2, max: 10, step: 0.5, unit: 'px' },
17298
- { prop: 'line-height', label: 'Interlinea', type: 'size', group: 'Testo', min: 0.8, max: 3, step: 0.1, unit: '' },
17299
- { prop: 'margin', label: 'Spaziatura esterna', type: 'text', group: 'Spaziatura', placeholder: 'es. 0 0 8px 0' },
17300
- { prop: 'width', label: 'Larghezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 100%' },
17301
- { prop: 'height', label: 'Altezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
17302
- { prop: 'min-height', label: 'Altezza minima', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
17303
- { prop: 'gap', label: 'Distanza tra elementi', type: 'size', group: 'Layout', min: 0, max: 40, step: 1, unit: 'px' },
17304
- {
17305
- prop: 'display', label: 'Visualizzazione', type: 'select', group: 'Layout',
17306
- options: [
17307
- { value: 'block', label: 'Blocco' },
17308
- { value: 'inline-block', label: 'Blocco in linea' },
17309
- { value: 'flex', label: 'Flex' },
17310
- { value: 'none', label: 'Nascosto' },
17311
- ],
17312
- },
17313
- {
17314
- prop: 'justify-content', label: 'Allineamento orizzontale', type: 'select', group: 'Layout',
17315
- options: [
17316
- { value: 'flex-start', label: 'Inizio' },
17317
- { value: 'center', label: 'Centro' },
17318
- { value: 'flex-end', label: 'Fine' },
17319
- { value: 'space-between', label: 'Distribuito' },
17320
- ],
17321
- },
17322
- {
17323
- prop: 'align-items', label: 'Allineamento verticale', type: 'select', group: 'Layout',
17324
- options: [
17325
- { value: 'flex-start', label: 'Alto' },
17326
- { value: 'center', label: 'Centro' },
17327
- { value: 'flex-end', label: 'Basso' },
17328
- { value: 'stretch', label: 'Estendi' },
17329
- ],
17330
- },
17331
- {
17332
- prop: 'cursor', label: 'Puntatore', type: 'select', group: 'Layout',
17333
- options: [
17334
- { value: 'default', label: 'Normale' },
17335
- { value: 'pointer', label: 'Mano' },
17336
- { value: 'not-allowed', label: 'Vietato' },
17337
- { value: 'text', label: 'Testo' },
17338
- ],
17339
- },
17340
- { prop: 'transition', label: 'Transizione', type: 'text', group: 'Effetti', placeholder: 'es. all .2s ease' },
17341
- { prop: 'transform', label: 'Trasformazione', type: 'text', group: 'Effetti', placeholder: 'es. scale(1.05)' },
17342
- ];
17343
- const CSS_ALL_PROPERTIES = CSS_CORE_PROPERTIES.concat(CSS_EXTRA_PROPERTIES);
17344
- function getCssPropertyDef(prop) {
17345
- var _a;
17346
- const target = (prop || '').toLowerCase();
17347
- return (_a = CSS_ALL_PROPERTIES.find((p) => p.prop === target)) !== null && _a !== void 0 ? _a : null;
17348
- }
17349
- /** Definizione di ripiego per una proprietà scritta a mano e non catalogata */
17350
- function buildCustomCssPropertyDef(prop) {
17351
- return { prop: (prop || '').toLowerCase(), label: prop, type: 'text', group: 'Personalizzate' };
17352
- }
17353
-
17354
17720
  class FieldGraphicsEditorComponent {
17355
17721
  constructor(formBuilder) {
17356
17722
  this.formBuilder = formBuilder;
@@ -17460,7 +17826,7 @@ class FieldGraphicsEditorComponent {
17460
17826
  }
17461
17827
  // La base comprende il CSS legacy assorbito, altrimenti l'editor mostrerebbe
17462
17828
  // "non impostato" su proprietà che a video si vedono eccome (applicate inline)
17463
- group.styleMap = getEffectiveStyleMap(sample);
17829
+ group.styleMap = decodeFloatingMap(getEffectiveStyleMap(sample));
17464
17830
  this.applyGlobalOverridesToMap(sample, group.styleMap);
17465
17831
  Object.keys(group.overrides).forEach((entry) => {
17466
17832
  const { key, prop } = this.splitEntry(entry);
@@ -17475,13 +17841,13 @@ class FieldGraphicsEditorComponent {
17475
17841
  if (!source) {
17476
17842
  return;
17477
17843
  }
17478
- const clone = this.buildPreviewField(source, group.styleMap);
17844
+ const clone = this.buildPreviewField(source, group.styleMap, group.openElement);
17479
17845
  group.elements = getFieldStyleElements(clone);
17480
17846
  if (!group.elements.some((e) => e.key === group.openElement)) {
17481
17847
  group.openElement = (_c = (_b = group.elements[0]) === null || _b === void 0 ? void 0 : _b.key) !== null && _c !== void 0 ? _c : '';
17482
17848
  }
17483
17849
  group.previewField = clone;
17484
- group.previewRecord = { [clone.Name]: this.getPreviewInitialValue(clone) };
17850
+ group.previewRecord = { [clone.Name]: this.getPreviewInitialValue(clone, group.openElement) };
17485
17851
  this.styleVersion++;
17486
17852
  }
17487
17853
  get activeGroup() {
@@ -17497,7 +17863,11 @@ class FieldGraphicsEditorComponent {
17497
17863
  this.styleVersion++;
17498
17864
  }
17499
17865
  toggleElement(group, elementKey) {
17866
+ const floatingBefore = this.previewLabelMode(group.openElement);
17500
17867
  group.openElement = group.openElement === elementKey ? '' : elementKey;
17868
+ if (this.previewLabelMode(group.openElement) !== floatingBefore) {
17869
+ this.buildPreview(group);
17870
+ }
17501
17871
  }
17502
17872
  /** Cambiando campione si rileggono i suoi stili reali, mantenendo le modifiche in sospeso */
17503
17873
  changeSample(group, index) {
@@ -17534,7 +17904,11 @@ class FieldGraphicsEditorComponent {
17534
17904
  this.styleVersion++;
17535
17905
  }
17536
17906
  toggleGlobalElement(elementKey) {
17907
+ const floatingBefore = this.previewLabelMode(this.globalOpenElement);
17537
17908
  this.globalOpenElement = this.globalOpenElement === elementKey ? '' : elementKey;
17909
+ if (this.previewLabelMode(this.globalOpenElement) !== floatingBefore) {
17910
+ this.rebuildGlobalPreview();
17911
+ }
17538
17912
  }
17539
17913
  changeGlobalSample(index) {
17540
17914
  this.globalSampleIndex = Number(index);
@@ -17558,11 +17932,11 @@ class FieldGraphicsEditorComponent {
17558
17932
  this.globalPreviewField = null;
17559
17933
  return;
17560
17934
  }
17561
- const map = getEffectiveStyleMap(sample);
17935
+ const map = decodeFloatingMap(getEffectiveStyleMap(sample));
17562
17936
  this.applyGlobalOverridesToMap(sample, map);
17563
- const clone = this.buildPreviewField(sample, map);
17937
+ const clone = this.buildPreviewField(sample, map, this.globalOpenElement);
17564
17938
  this.globalPreviewField = clone;
17565
- this.globalPreviewRecord = { [clone.Name]: this.getPreviewInitialValue(clone) };
17939
+ this.globalPreviewRecord = { [clone.Name]: this.getPreviewInitialValue(clone, this.globalOpenElement) };
17566
17940
  this.styleVersion++;
17567
17941
  }
17568
17942
  /** Riversa le modifiche globali in sospeso su una mappa stili, risolte per quel campo */
@@ -17607,7 +17981,7 @@ class FieldGraphicsEditorComponent {
17607
17981
  if (keys.length === 0) {
17608
17982
  return '';
17609
17983
  }
17610
- const map = getEffectiveStyleMap(sample);
17984
+ const map = decodeFloatingMap(getEffectiveStyleMap(sample));
17611
17985
  return getCssDeclaration((_a = map[keys[0] + this.globalSelectedState]) !== null && _a !== void 0 ? _a : '', prop);
17612
17986
  }
17613
17987
  setGlobalPropertyValue(elementKey, prop, value) {
@@ -17623,13 +17997,13 @@ class FieldGraphicsEditorComponent {
17623
17997
  }
17624
17998
  /** Proprietà mostrate nella scheda globale per un elemento logico */
17625
17999
  globalPropertiesFor(elementKey) {
17626
- const result = this.globalShowAllProperties
17627
- ? CSS_ALL_PROPERTIES.slice()
17628
- : CSS_CORE_PROPERTIES.slice();
18000
+ var _a;
18001
+ const profile = (_a = this.globalElements.find((e) => e.key === elementKey)) === null || _a === void 0 ? void 0 : _a.profile;
18002
+ const result = getCssPropertiesForProfile(profile, this.globalShowAllProperties);
17629
18003
  const sample = this.globalSampleField;
17630
18004
  const valorized = [];
17631
18005
  if (sample) {
17632
- const map = getEffectiveStyleMap(sample);
18006
+ const map = decodeFloatingMap(getEffectiveStyleMap(sample));
17633
18007
  resolveGlobalElementKeys(sample, elementKey).forEach((realKey) => {
17634
18008
  var _a;
17635
18009
  parseCssDeclarations((_a = map[realKey + this.globalSelectedState]) !== null && _a !== void 0 ? _a : '')
@@ -17665,11 +18039,10 @@ class FieldGraphicsEditorComponent {
17665
18039
  * (anche se scritte a mano e fuori catalogo), più tutte le altre se richiesto.
17666
18040
  */
17667
18041
  propertiesFor(group, elementKey) {
17668
- var _a;
18042
+ var _a, _b;
17669
18043
  const css = (_a = group.styleMap[this.styleKey(group, elementKey)]) !== null && _a !== void 0 ? _a : '';
17670
- const result = group.showAllProperties
17671
- ? CSS_ALL_PROPERTIES.slice()
17672
- : CSS_CORE_PROPERTIES.slice();
18044
+ const profile = (_b = group.elements.find((e) => e.key === elementKey)) === null || _b === void 0 ? void 0 : _b.profile;
18045
+ const result = getCssPropertiesForProfile(profile, group.showAllProperties);
17673
18046
  this.pushValorized(result, parseCssDeclarations(css).map((d) => d.prop));
17674
18047
  return result;
17675
18048
  }
@@ -17717,10 +18090,10 @@ class FieldGraphicsEditorComponent {
17717
18090
  buildColor(hex, alpha) { return buildCssColor(hex, Number(alpha)); }
17718
18091
  /** Parte numerica di una misura ("14px" -> 14); il minimo del catalogo se non impostata */
17719
18092
  sizeNumber(value, definition) {
17720
- var _a;
18093
+ var _a, _b;
17721
18094
  const parsed = parseFloat(value);
17722
18095
  if (isNaN(parsed)) {
17723
- return (_a = definition.min) !== null && _a !== void 0 ? _a : 0;
18096
+ return (_b = (_a = definition.defaultValue) !== null && _a !== void 0 ? _a : definition.min) !== null && _b !== void 0 ? _b : 0;
17724
18097
  }
17725
18098
  return parsed;
17726
18099
  }
@@ -17749,7 +18122,8 @@ class FieldGraphicsEditorComponent {
17749
18122
  }
17750
18123
  writes.forEach((value, entry) => {
17751
18124
  const { key, prop } = this.splitEntry(entry);
17752
- this.writeIntoMap(map, key, prop, value);
18125
+ // Passa da readStyleCss/writeStyleCss: le chiavi "…Sollevata" sono virtuali
18126
+ writeStyleCss(map, key, setCssDeclaration(readStyleCss(map, key), prop, value));
17753
18127
  });
17754
18128
  });
17755
18129
  this.applyEvent.emit();
@@ -17807,7 +18181,12 @@ class FieldGraphicsEditorComponent {
17807
18181
  return;
17808
18182
  }
17809
18183
  const target = legacyTargetKey(field, name);
17810
- if (!target || !keys.has(target)) {
18184
+ if (!target) {
18185
+ return;
18186
+ }
18187
+ // "Descrizione" copre anche le sue varianti (nel contenitore / sul bordo)
18188
+ const targetElement = target.slice(0, -'Normale'.length);
18189
+ if (![...keys].some((k) => k.startsWith(targetElement))) {
17811
18190
  return;
17812
18191
  }
17813
18192
  const map = ensureFieldStyleMap(field);
@@ -17882,6 +18261,12 @@ class FieldGraphicsEditorComponent {
17882
18261
  this.activeGroup.showAllProperties = !this.activeGroup.showAllProperties;
17883
18262
  }
17884
18263
  }
18264
+ /** False per gli elementi con un elenco di proprietà chiuso (niente "Altre proprietà...") */
18265
+ rowHasMoreProperties(elementKey) {
18266
+ var _a;
18267
+ const profile = (_a = this.currentElements.find((e) => e.key === elementKey)) === null || _a === void 0 ? void 0 : _a.profile;
18268
+ return !(profile === null || profile === void 0 ? void 0 : profile.only);
18269
+ }
17885
18270
  rowProperties(elementKey) {
17886
18271
  if (this.activeTab === 'globale') {
17887
18272
  return this.globalPropertiesFor(elementKey);
@@ -17894,12 +18279,37 @@ class FieldGraphicsEditorComponent {
17894
18279
  }
17895
18280
  return this.activeGroup ? this.setPropertiesCount(this.activeGroup, elementKey) : 0;
17896
18281
  }
17897
- rowGet(elementKey, prop) {
18282
+ /** Valore impostato direttamente sull'elemento, senza eredità */
18283
+ rowGetOwn(elementKey, prop) {
17898
18284
  if (this.activeTab === 'globale') {
17899
18285
  return this.getGlobalPropertyValue(elementKey, prop);
17900
18286
  }
17901
18287
  return this.activeGroup ? this.getPropertyValue(this.activeGroup, elementKey, prop) : '';
17902
18288
  }
18289
+ /**
18290
+ * Valore mostrato a video. "Etichetta sul bordo" parte dalla grafica di "Etichetta nel
18291
+ * contenitore" e sovrascrive solo ciò che vi è impostato: dove non ha un valore proprio
18292
+ * mostra quello ereditato, così lo specchietto riflette ciò che si vede in anteprima.
18293
+ */
18294
+ rowGet(elementKey, prop) {
18295
+ const own = this.rowGetOwn(elementKey, prop);
18296
+ if (own) {
18297
+ return own;
18298
+ }
18299
+ const base = this.inheritanceSourceKey(elementKey);
18300
+ return base ? this.rowGetOwn(base, prop) : '';
18301
+ }
18302
+ /** Elemento da cui "…Sollevata" eredita (la chiave base), null per gli altri */
18303
+ inheritanceSourceKey(elementKey) {
18304
+ if (!(elementKey !== null && elementKey !== void 0 ? elementKey : '').endsWith('Sollevata')) {
18305
+ return null;
18306
+ }
18307
+ const base = elementKey.slice(0, -'Sollevata'.length);
18308
+ return base === 'Etichetta' ? 'EtichettaRiposo' : base;
18309
+ }
18310
+ rowIsInherited(elementKey, prop) {
18311
+ return !this.rowGetOwn(elementKey, prop) && !!this.rowGet(elementKey, prop);
18312
+ }
17903
18313
  rowSet(elementKey, prop, value) {
17904
18314
  if (this.activeTab === 'globale') {
17905
18315
  this.setGlobalPropertyValue(elementKey, prop, value);
@@ -17910,7 +18320,7 @@ class FieldGraphicsEditorComponent {
17910
18320
  }
17911
18321
  }
17912
18322
  rowIsSet(elementKey, prop) {
17913
- return !!this.rowGet(elementKey, prop);
18323
+ return !!this.rowGetOwn(elementKey, prop);
17914
18324
  }
17915
18325
  rowReset(elementKey, prop) {
17916
18326
  this.rowSet(elementKey, prop, '');
@@ -17982,11 +18392,12 @@ class FieldGraphicsEditorComponent {
17982
18392
  //#endregion Utilità
17983
18393
  //#region Anteprima
17984
18394
  /** Crea il campo fittizio dell'anteprima agganciandogli la mappa stili passata */
17985
- buildPreviewField(source, styleMap) {
18395
+ buildPreviewField(source, styleMap, openElement) {
17986
18396
  const clone = this.safeClone(source);
17987
18397
  const def = getFieldStyleTypeDef(clone.FieldType);
18398
+ // I template leggono il formato salvato: le chiavi virtuali vanno ricodificate
17988
18399
  if (def) {
17989
- clone[def.styleProp] = styleMap;
18400
+ clone[def.styleProp] = encodeFloatingMap(styleMap);
17990
18401
  }
17991
18402
  // Il legacy e' gia' dentro styleMap: lasciarlo qui lo riapplicherebbe inline,
17992
18403
  // coprendo le regole iniettate e mostrando un'anteprima falsa
@@ -17994,12 +18405,56 @@ class FieldGraphicsEditorComponent {
17994
18405
  clone.FieldstyleCSS = null;
17995
18406
  const controlName = clone.Label || 'preview_field';
17996
18407
  clone.Name = controlName;
18408
+ // A riposo la label sta nel contenitore solo se il campo è vuoto: via valore
18409
+ // predefinito e formula, altrimenti i template riempirebbero l'anteprima
18410
+ if (this.previewLabelMode(openElement) === 'riposo') {
18411
+ if (clone.DataGetter) {
18412
+ clone.DataGetter = Object.assign(Object.assign({}, clone.DataGetter), { DataGetterValue: null });
18413
+ }
18414
+ clone.Formula = null;
18415
+ }
17997
18416
  this.prepareTypeSpecificPreview(clone);
17998
- const initialValue = this.getPreviewInitialValue(clone);
18417
+ const initialValue = this.getPreviewInitialValue(clone, openElement);
17999
18418
  clone.FormFormGroup = this.formBuilder.group({ [controlName]: [initialValue] });
18000
18419
  return clone;
18001
18420
  }
18002
- getPreviewInitialValue(field) {
18421
+ /**
18422
+ * Stato della label che l'anteprima deve mostrare per l'elemento aperto: la label Material
18423
+ * si solleva sul bordo solo se il campo ha un valore, quindi l'anteprima lo simula.
18424
+ */
18425
+ previewLabelMode(elementKey) {
18426
+ if ((elementKey !== null && elementKey !== void 0 ? elementKey : '').endsWith('Sollevata')) {
18427
+ return 'sollevata';
18428
+ }
18429
+ if (['Descrizione', 'Label', 'EtichettaRiposo'].includes(elementKey)) {
18430
+ return 'riposo';
18431
+ }
18432
+ return null;
18433
+ }
18434
+ getPreviewInitialValue(field, openElement = '') {
18435
+ var _a;
18436
+ if (this.previewLabelMode(openElement) === 'sollevata') {
18437
+ switch (Number(field.FieldType)) {
18438
+ case FieldTypeEnum['Campo di testo']:
18439
+ case FieldTypeEnum['Area di testo']:
18440
+ return 'Testo di esempio';
18441
+ case FieldTypeEnum['Campo numerico']:
18442
+ return 123;
18443
+ case FieldTypeEnum['Data e/o ora']:
18444
+ return new Date();
18445
+ case FieldTypeEnum['Elenco generico']: {
18446
+ const lv = field;
18447
+ const pairs = (_a = lv.ValuePairs) !== null && _a !== void 0 ? _a : {};
18448
+ const firstKey = Object.keys(pairs)[0];
18449
+ if (firstKey == null) {
18450
+ break;
18451
+ }
18452
+ const raw = pairs[firstKey];
18453
+ const value = UtilityHelperService.isNumeric(raw) ? Number(raw) : raw;
18454
+ return lv.IsMultiChoiche ? [value] : value;
18455
+ }
18456
+ }
18457
+ }
18003
18458
  switch (Number(field.FieldType)) {
18004
18459
  case FieldTypeEnum['Allegato']:
18005
18460
  return [];
@@ -18071,10 +18526,10 @@ class FieldGraphicsEditorComponent {
18071
18526
  }
18072
18527
  }
18073
18528
  FieldGraphicsEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FieldGraphicsEditorComponent, deps: [{ token: i3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
18074
- 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"] }] });
18529
+ 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"] }] });
18075
18530
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FieldGraphicsEditorComponent, decorators: [{
18076
18531
  type: Component,
18077
- 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"] }]
18532
+ 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"] }]
18078
18533
  }], ctorParameters: function () { return [{ type: i3.UntypedFormBuilder }]; }, propDecorators: { fields: [{
18079
18534
  type: Input
18080
18535
  }], endPointConfiguration: [{
@@ -21460,7 +21915,7 @@ EqpDynamicModuleConfiguratorComponent.HINT_ADJECTIVES = [
21460
21915
  'rustico', 'moderno', 'vintage', 'armonioso', 'sorprendente',
21461
21916
  ];
21462
21917
  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 });
21463
- 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"] }] });
21918
+ 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"] }] });
21464
21919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, decorators: [{
21465
21920
  type: Component,
21466
21921
  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"] }]
@@ -21835,5 +22290,5 @@ class LookupField extends BaseField {
21835
22290
  * Generated bundle index. Do not edit.
21836
22291
  */
21837
22292
 
21838
- 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 };
22293
+ 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 };
21839
22294
  //# sourceMappingURL=eqproject-eqp-dynamic-module.mjs.map