@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.
- package/USERGUIDE.md +437 -437
- package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +2 -2
- package/esm2020/lib/components/private/field-graphics-editor/field-graphics-editor.component.mjs +115 -27
- package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +28 -6
- package/esm2020/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.mjs +25 -5
- package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +12 -3
- package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +26 -4
- package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +26 -4
- package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +26 -4
- package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +1 -1
- package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +1 -1
- package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +1 -1
- package/esm2020/lib/components/private/graphs/graph/graph.component.mjs +3 -3
- package/esm2020/lib/utils/css-property-catalog.mjs +45 -2
- package/esm2020/lib/utils/field-style-catalog.mjs +45 -19
- package/esm2020/lib/utils/floating-label-styles.mjs +155 -0
- package/esm2020/lib/utils/refresh-outline-notch.mjs +38 -0
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +781 -326
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +761 -312
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/field-graphics-editor/field-graphics-editor.component.d.ts +19 -1
- package/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.d.ts +6 -2
- package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +6 -2
- package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +6 -2
- package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +6 -2
- package/lib/utils/css-property-catalog.d.ts +25 -0
- package/lib/utils/field-style-catalog.d.ts +5 -0
- package/lib/utils/floating-label-styles.d.ts +73 -0
- package/lib/utils/refresh-outline-notch.d.ts +15 -0
- 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
|
-
|
|
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
|
-
(
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
(
|
|
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
|
|
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
|
-
|
|
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
|
-
(
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
13259
|
-
*
|
|
13260
|
-
*
|
|
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
|
-
|
|
13267
|
-
|
|
13268
|
-
|
|
13269
|
-
|
|
13270
|
-
|
|
13271
|
-
|
|
13272
|
-
|
|
13273
|
-
|
|
13274
|
-
|
|
13275
|
-
|
|
13276
|
-
|
|
13277
|
-
}
|
|
13278
|
-
|
|
13279
|
-
|
|
13280
|
-
|
|
13281
|
-
|
|
13282
|
-
|
|
13283
|
-
|
|
13284
|
-
|
|
13285
|
-
|
|
13286
|
-
|
|
13287
|
-
|
|
13288
|
-
|
|
13289
|
-
|
|
13290
|
-
|
|
13291
|
-
|
|
13292
|
-
|
|
13293
|
-
|
|
13294
|
-
|
|
13295
|
-
|
|
13296
|
-
|
|
13297
|
-
|
|
13298
|
-
|
|
13299
|
-
|
|
13300
|
-
|
|
13301
|
-
}
|
|
13302
|
-
|
|
13303
|
-
|
|
13304
|
-
|
|
13305
|
-
|
|
13306
|
-
|
|
13307
|
-
|
|
13308
|
-
|
|
13309
|
-
|
|
13310
|
-
|
|
13311
|
-
|
|
13312
|
-
|
|
13313
|
-
|
|
13314
|
-
|
|
13315
|
-
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13321
|
-
|
|
13322
|
-
|
|
13323
|
-
|
|
13324
|
-
|
|
13325
|
-
|
|
13326
|
-
|
|
13327
|
-
|
|
13328
|
-
|
|
13329
|
-
|
|
13330
|
-
}
|
|
13331
|
-
|
|
13332
|
-
|
|
13333
|
-
|
|
13334
|
-
|
|
13335
|
-
}
|
|
13336
|
-
|
|
13337
|
-
|
|
13338
|
-
|
|
13339
|
-
|
|
13340
|
-
}
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
13345
|
-
|
|
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
|
-
*
|
|
13349
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
13354
|
-
|
|
13355
|
-
|
|
13356
|
-
|
|
13357
|
-
|
|
13358
|
-
|
|
13359
|
-
|
|
13360
|
-
|
|
13361
|
-
|
|
13362
|
-
|
|
13363
|
-
|
|
13364
|
-
|
|
13365
|
-
|
|
13366
|
-
|
|
13367
|
-
|
|
13368
|
-
|
|
13369
|
-
|
|
13370
|
-
|
|
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
|
-
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
13669
|
-
label: 'Etichetta
|
|
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['
|
|
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
|
-
|
|
17627
|
-
|
|
17628
|
-
|
|
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
|
|
17671
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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\"> · {{ 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> · {{ 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> ·\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\"> · {{ 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> · {{ 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> ·\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\"> · {{ 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> · {{ 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> ·\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\"> · {{ 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> · {{ 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> ·\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
|