ud-components 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/enums/application-status.enum.d.ts +5 -0
- package/enums/custom-table.enum.d.ts +27 -0
- package/enums/modal-input-type.enum.d.ts +13 -0
- package/enums/role.enum.d.ts +9 -0
- package/enums/snackbar-type.enum.d.ts +6 -0
- package/enums/table-display-column-type.d.ts +15 -0
- package/fesm2022/ud-components.mjs +2040 -0
- package/fesm2022/ud-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/interfaces/floor.interface.d.ts +7 -0
- package/interfaces/page-request.interface.d.ts +5 -0
- package/interfaces/phone.interface.d.ts +9 -0
- package/interfaces/supabase.interface.d.ts +4 -0
- package/interfaces/tab.interface.d.ts +5 -0
- package/interfaces/table-display-column.interface.d.ts +56 -0
- package/interfaces/table.interface.d.ts +10 -0
- package/lib/carousel/carousel.component.d.ts +12 -0
- package/lib/custom-input/custom-input.component.d.ts +11 -0
- package/lib/custom-snackbar/custom-snackbar.component.d.ts +28 -0
- package/lib/custom-table/custom-table.component.d.ts +217 -0
- package/lib/custom-table/custom-table.interface.d.ts +18 -0
- package/lib/dynamic-component/dynamic-component.component.d.ts +14 -0
- package/lib/edit-view/edit-view-section.directive.d.ts +8 -0
- package/lib/edit-view/edit-view.component.d.ts +14 -0
- package/lib/file-input/file-input.component.d.ts +24 -0
- package/lib/kpi/kpi.component.d.ts +20 -0
- package/lib/kpi/kpi.enum.d.ts +22 -0
- package/lib/kpi/kpi.interface.d.ts +25 -0
- package/lib/modal/modal.component.d.ts +30 -0
- package/lib/pill/pill.component.d.ts +10 -0
- package/lib/progress-bar/progress-bar.component.d.ts +9 -0
- package/lib/summary-view/summary-view.component.d.ts +15 -0
- package/lib/summary-view/summary-view.interface.d.ts +10 -0
- package/lib/tabs/tabs.component.d.ts +16 -0
- package/lib/tel-input/tel-input.component.d.ts +19 -0
- package/package.json +23 -0
- package/pipes/capitalize/capitalize.pipe.d.ts +7 -0
- package/pipes/pluralize/pluralize.pipe.d.ts +7 -0
- package/pipes/safe/safe.pipe.d.ts +10 -0
- package/pipes/singular/singular.pipe.d.ts +7 -0
- package/public-api.d.ts +14 -0
- package/services/translate-wrapper/translate-wrapper.service.d.ts +11 -0
- package/utils/common-utils.d.ts +33 -0
- package/utils/time-options.utils.d.ts +4 -0
|
@@ -0,0 +1,2040 @@
|
|
|
1
|
+
import * as i1$3 from '@angular/common';
|
|
2
|
+
import { CommonModule, formatDate, NgClass, AsyncPipe, NgStyle, DatePipe, NgTemplateOutlet, NgSwitch } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { ViewChild, Input, CUSTOM_ELEMENTS_SCHEMA, Component, Inject, Pipe, Injectable, inject, DestroyRef, EventEmitter, TemplateRef, ContentChild, Output, ViewContainerRef, Directive, ContentChildren, input, effect, ViewChildren } from '@angular/core';
|
|
5
|
+
import * as i1 from '@angular/forms';
|
|
6
|
+
import { FormsModule, FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
+
import * as i1$1 from '@angular/material/snack-bar';
|
|
8
|
+
import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
|
|
9
|
+
import { interval, map, of, debounceTime, distinctUntilChanged, switchMap, iif } from 'rxjs';
|
|
10
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
11
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
12
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
13
|
+
import * as i4 from '@angular/material/button';
|
|
14
|
+
import { MatIconButton, MatButton, MatButtonModule } from '@angular/material/button';
|
|
15
|
+
import { MatCardContent, MatCardHeader, MatCard } from '@angular/material/card';
|
|
16
|
+
import { MatCheckbox } from '@angular/material/checkbox';
|
|
17
|
+
import * as i3 from '@angular/material/datepicker';
|
|
18
|
+
import { MatDatepickerToggle, MatDateRangePicker, MatDateRangeInput, MatDatepickerModule, MatEndDate, MatStartDate, MatDatepickerInput, MatDatepicker } from '@angular/material/datepicker';
|
|
19
|
+
import * as i3$1 from '@angular/material/icon';
|
|
20
|
+
import { MatIcon, MatIconModule } from '@angular/material/icon';
|
|
21
|
+
import { MatHint, MatLabel, MatFormField, MatInput, MatSuffix, MatError, MatPrefix } from '@angular/material/input';
|
|
22
|
+
import { MatMenu, MatMenuTrigger } from '@angular/material/menu';
|
|
23
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
24
|
+
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
25
|
+
import { MatSelect, MatOption, MatSelectTrigger } from '@angular/material/select';
|
|
26
|
+
import { MatSlideToggle } from '@angular/material/slide-toggle';
|
|
27
|
+
import { MatSort } from '@angular/material/sort';
|
|
28
|
+
import { MatRow, MatHeaderRow, MatCell, MatColumnDef, MatHeaderCell, MatCellDef, MatHeaderCellDef, MatTable, MatHeaderRowDef, MatRowDef } from '@angular/material/table';
|
|
29
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
30
|
+
import { RouterLink } from '@angular/router';
|
|
31
|
+
import * as i1$2 from '@ngx-translate/core';
|
|
32
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
33
|
+
import { isEqual } from 'lodash-es';
|
|
34
|
+
import { map as map$1 } from 'rxjs/operators';
|
|
35
|
+
import * as i2 from 'ngx-skeleton-loader';
|
|
36
|
+
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
37
|
+
import * as i2$1 from 'ngx-file-drop';
|
|
38
|
+
import { NgxFileDropModule } from 'ngx-file-drop';
|
|
39
|
+
import * as i1$5 from '@angular/material/dialog';
|
|
40
|
+
import { MAT_DIALOG_DATA, MatDialogClose, MatDialogActions, MatDialogContent, MatDialogTitle, MatDialogConfig } from '@angular/material/dialog';
|
|
41
|
+
import { CdkTextareaAutosize } from '@angular/cdk/text-field';
|
|
42
|
+
import { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
|
43
|
+
import { MatChipInput, MatChipRow, MatChipGrid, MatChipRemove } from '@angular/material/chips';
|
|
44
|
+
import { MatTimepickerInput, MatTimepicker, MatTimepickerToggle } from '@angular/material/timepicker';
|
|
45
|
+
import { MatFormField as MatFormField$1 } from '@angular/material/form-field';
|
|
46
|
+
import * as i1$4 from '@angular/platform-browser';
|
|
47
|
+
|
|
48
|
+
class CarouselComponent {
|
|
49
|
+
pictures = [];
|
|
50
|
+
height = 300;
|
|
51
|
+
direction = 'horizontal';
|
|
52
|
+
autoplay = true;
|
|
53
|
+
swiperRef;
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: CarouselComponent, isStandalone: true, selector: "ud-carousel", inputs: { pictures: "pictures", height: "height", direction: "direction", autoplay: "autoplay" }, viewQueries: [{ propertyName: "swiperRef", first: true, predicate: ["swiperRef"], descendants: true }], ngImport: i0, template: "<swiper-container\n [slidesPerView]=\"1\"\n [pagination]=\"true\"\n [direction]=\"direction\"\n [autoplay]=\"autoplay\"\n [style.height.px]=\"height\">\n @for (picture of pictures; track $index) {\n <swiper-slide>\n <img [src]=\"picture\" alt=\"Slide {{ $index + 1 }}\" />\n </swiper-slide>\n }\n</swiper-container>\n", styles: ["swiper-container{width:100%;height:auto;--swiper-pagination-color: var(--border-color);--swiper-pagination-bullet-inactive-color: black;--swiper-pagination-bullet-size: 8px;--swiper-pagination-bullet-horizontal-gap: 6px;--swiper-pagination-bullet-vertical-gap: 6px;--swiper-pagination-progressbar-bg-color: var(--accent-lightest-color)}swiper-slide{text-align:center;font-size:18px;background:#444;display:flex;justify-content:center;align-items:center;border-radius:4px}swiper-slide img{display:block;width:100%;height:100%;object-fit:cover;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'ud-carousel', imports: [CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<swiper-container\n [slidesPerView]=\"1\"\n [pagination]=\"true\"\n [direction]=\"direction\"\n [autoplay]=\"autoplay\"\n [style.height.px]=\"height\">\n @for (picture of pictures; track $index) {\n <swiper-slide>\n <img [src]=\"picture\" alt=\"Slide {{ $index + 1 }}\" />\n </swiper-slide>\n }\n</swiper-container>\n", styles: ["swiper-container{width:100%;height:auto;--swiper-pagination-color: var(--border-color);--swiper-pagination-bullet-inactive-color: black;--swiper-pagination-bullet-size: 8px;--swiper-pagination-bullet-horizontal-gap: 6px;--swiper-pagination-bullet-vertical-gap: 6px;--swiper-pagination-progressbar-bg-color: var(--accent-lightest-color)}swiper-slide{text-align:center;font-size:18px;background:#444;display:flex;justify-content:center;align-items:center;border-radius:4px}swiper-slide img{display:block;width:100%;height:100%;object-fit:cover;border-radius:4px}\n"] }]
|
|
60
|
+
}], propDecorators: { pictures: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], height: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], direction: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], autoplay: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], swiperRef: [{
|
|
69
|
+
type: ViewChild,
|
|
70
|
+
args: ['swiperRef']
|
|
71
|
+
}] } });
|
|
72
|
+
|
|
73
|
+
class CustomInputComponent {
|
|
74
|
+
type;
|
|
75
|
+
placeholder;
|
|
76
|
+
required;
|
|
77
|
+
name;
|
|
78
|
+
inputValue;
|
|
79
|
+
constructor() { }
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CustomInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: CustomInputComponent, isStandalone: true, selector: "c-input", inputs: { type: "type", placeholder: "placeholder", required: "required", name: "name", inputValue: "inputValue" }, ngImport: i0, template: "<div class=\"inputBox\">\n <input\n [type]=\"type\"\n [required]=\"required\"\n [placeholder]=\"placeholder ?? ''\"\n [(ngModel)]=\"inputValue\" />\n <span>{{ name }}</span>\n</div>\n", styles: [".inputBox{position:relative;width:250px}.inputBox input{width:100%;padding:10px;border:1px solid #000;background:#fafafa;border-radius:5px;outline:none;color:#fafafa;font-size:1em}.inputBox input:valid~span,.inputBox input:focus~span{color:#000;transform:translate(10px) translateY(-10px);font-size:1em;padding:0 10px;background:#fafafa;border-left:1px solid #000}.inputBox span{position:absolute;left:0;padding:10px;pointer-events:none;font-size:1em;color:#000;text-transform:uppercase;transition:.5s}*{margin:0;padding:0;box-sizing:border-box;font-family:Poppins,sans-serif}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CustomInputComponent, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{ selector: 'c-input', imports: [FormsModule], template: "<div class=\"inputBox\">\n <input\n [type]=\"type\"\n [required]=\"required\"\n [placeholder]=\"placeholder ?? ''\"\n [(ngModel)]=\"inputValue\" />\n <span>{{ name }}</span>\n</div>\n", styles: [".inputBox{position:relative;width:250px}.inputBox input{width:100%;padding:10px;border:1px solid #000;background:#fafafa;border-radius:5px;outline:none;color:#fafafa;font-size:1em}.inputBox input:valid~span,.inputBox input:focus~span{color:#000;transform:translate(10px) translateY(-10px);font-size:1em;padding:0 10px;background:#fafafa;border-left:1px solid #000}.inputBox span{position:absolute;left:0;padding:10px;pointer-events:none;font-size:1em;color:#000;text-transform:uppercase;transition:.5s}*{margin:0;padding:0;box-sizing:border-box;font-family:Poppins,sans-serif}\n"] }]
|
|
86
|
+
}], ctorParameters: () => [], propDecorators: { type: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], placeholder: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], required: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], name: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], inputValue: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}] } });
|
|
97
|
+
|
|
98
|
+
var SnackbarType;
|
|
99
|
+
(function (SnackbarType) {
|
|
100
|
+
SnackbarType["SUCCESS"] = "success";
|
|
101
|
+
SnackbarType["ERROR"] = "error";
|
|
102
|
+
SnackbarType["WARNING"] = "warning";
|
|
103
|
+
SnackbarType["INFO"] = "info";
|
|
104
|
+
})(SnackbarType || (SnackbarType = {}));
|
|
105
|
+
|
|
106
|
+
class CustomSnackbarComponent {
|
|
107
|
+
data;
|
|
108
|
+
snackBarRef;
|
|
109
|
+
progress = 100;
|
|
110
|
+
subscription;
|
|
111
|
+
isPaused = false;
|
|
112
|
+
elapsedTime = 0;
|
|
113
|
+
constructor(data, snackBarRef) {
|
|
114
|
+
this.data = data;
|
|
115
|
+
this.snackBarRef = snackBarRef;
|
|
116
|
+
}
|
|
117
|
+
ngOnInit() {
|
|
118
|
+
this.startTimer();
|
|
119
|
+
}
|
|
120
|
+
ngOnDestroy() {
|
|
121
|
+
this.subscription?.unsubscribe();
|
|
122
|
+
}
|
|
123
|
+
startTimer() {
|
|
124
|
+
const tickInterval = 100;
|
|
125
|
+
this.subscription?.unsubscribe();
|
|
126
|
+
this.subscription = interval(tickInterval).subscribe(() => {
|
|
127
|
+
// Only count time when NOT paused
|
|
128
|
+
if (!this.isPaused) {
|
|
129
|
+
this.elapsedTime += tickInterval;
|
|
130
|
+
// Calculate progress
|
|
131
|
+
this.progress = 100 - (this.elapsedTime / this.data.duration) * 100;
|
|
132
|
+
// Dismiss when time runs out
|
|
133
|
+
if (this.elapsedTime >= this.data.duration) {
|
|
134
|
+
this.subscription?.unsubscribe();
|
|
135
|
+
this.snackBarRef.dismiss();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
pauseTimer() {
|
|
141
|
+
this.isPaused = true;
|
|
142
|
+
}
|
|
143
|
+
resumeTimer() {
|
|
144
|
+
this.isPaused = false;
|
|
145
|
+
}
|
|
146
|
+
dismiss() {
|
|
147
|
+
this.subscription?.unsubscribe();
|
|
148
|
+
this.snackBarRef.dismiss();
|
|
149
|
+
}
|
|
150
|
+
SnackbarType = SnackbarType;
|
|
151
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CustomSnackbarComponent, deps: [{ token: MAT_SNACK_BAR_DATA }, { token: i1$1.MatSnackBarRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: CustomSnackbarComponent, isStandalone: true, selector: "ud-custom-snackbar", ngImport: i0, template: "<div\n class=\"custom-snackbar\"\n [attr.data-type]=\"data.type\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\">\n <div class=\"snackbar-content\">\n <div class=\"snackbar-icon\">\n @switch (data.type) {\n @case (SnackbarType.SUCCESS) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7.5 10L9.16667 11.6667L12.5 8.33333M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n @case (SnackbarType.ERROR) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12.5 7.5L7.5 12.5M7.5 7.5L12.5 12.5M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n @case (SnackbarType.WARNING) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M10 6.66667V10M10 13.3333H10.0083M8.57465 3.21517L2.51132 13.3333C1.92535 14.3618 2.67592 15.6667 3.9368 15.6667H16.0632C17.3241 15.6667 18.0747 14.3618 17.4887 13.3333L11.4254 3.21517C10.8486 2.20371 9.15144 2.20371 8.57465 3.21517Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n @case (SnackbarType.INFO) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M10 13.3333V10M10 6.66667H10.0083M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n }\n </div>\n\n <span class=\"snackbar-message\">{{ data.message }}</span>\n\n @if (data.action) {\n <button class=\"snackbar-action\" (click)=\"dismiss()\">\n {{ data.action }}\n </button>\n }\n\n <button class=\"snackbar-close\" (click)=\"dismiss()\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <div class=\"progress-bar\">\n <div class=\"progress-fill\" [style.width.%]=\"progress\"></div>\n </div>\n</div>\n", styles: [".custom-snackbar{display:flex;flex-direction:column;min-width:320px;max-width:500px;border-radius:12px;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,0 0 0 1px #0000000d;background:#fff;transition:transform .2s ease,box-shadow .2s ease}.custom-snackbar:hover{transform:translateY(-2px);box-shadow:0 25px 30px -5px #00000026,0 15px 15px -5px #0000000f,0 0 0 1px #0000000d}.snackbar-content{display:flex;align-items:center;gap:12px;padding:16px}.snackbar-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.snackbar-message{flex:1;font-size:14px;font-weight:500;line-height:1.5;color:#1f2937}.snackbar-action{flex-shrink:0;padding:6px 12px;font-size:13px;font-weight:600;border:none;border-radius:6px;cursor:pointer;transition:all .15s ease;background:transparent}.snackbar-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;cursor:pointer;transition:all .15s ease;background:transparent;color:#6b7280}.snackbar-close:hover{background:#0000000d;color:#374151}.progress-bar{height:4px;background:#00000014;position:relative}.progress-fill{height:100%;transition:width .1s linear;border-radius:0 2px 2px 0}.custom-snackbar[data-type=success]{border-top:3px solid #10b981}.custom-snackbar[data-type=success] .snackbar-icon,.custom-snackbar[data-type=success] .snackbar-action{color:#10b981}.custom-snackbar[data-type=success] .snackbar-action:hover{background:#10b9811a}.custom-snackbar[data-type=success] .progress-fill{background:#10b981}.custom-snackbar[data-type=error]{border-top:3px solid #ef4444}.custom-snackbar[data-type=error] .snackbar-icon,.custom-snackbar[data-type=error] .snackbar-action{color:#ef4444}.custom-snackbar[data-type=error] .snackbar-action:hover{background:#ef44441a}.custom-snackbar[data-type=error] .progress-fill{background:#ef4444}.custom-snackbar[data-type=warning]{border-top:3px solid #f59e0b}.custom-snackbar[data-type=warning] .snackbar-icon,.custom-snackbar[data-type=warning] .snackbar-action{color:#f59e0b}.custom-snackbar[data-type=warning] .snackbar-action:hover{background:#f59e0b1a}.custom-snackbar[data-type=warning] .progress-fill{background:#f59e0b}.custom-snackbar[data-type=info]{border-top:3px solid #3b82f6}.custom-snackbar[data-type=info] .snackbar-icon,.custom-snackbar[data-type=info] .snackbar-action{color:#3b82f6}.custom-snackbar[data-type=info] .snackbar-action:hover{background:#3b82f61a}.custom-snackbar[data-type=info] .progress-fill{background:#3b82f6}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
153
|
+
}
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CustomSnackbarComponent, decorators: [{
|
|
155
|
+
type: Component,
|
|
156
|
+
args: [{ selector: 'ud-custom-snackbar', standalone: true, imports: [CommonModule], template: "<div\n class=\"custom-snackbar\"\n [attr.data-type]=\"data.type\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\">\n <div class=\"snackbar-content\">\n <div class=\"snackbar-icon\">\n @switch (data.type) {\n @case (SnackbarType.SUCCESS) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7.5 10L9.16667 11.6667L12.5 8.33333M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n @case (SnackbarType.ERROR) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12.5 7.5L7.5 12.5M7.5 7.5L12.5 12.5M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n @case (SnackbarType.WARNING) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M10 6.66667V10M10 13.3333H10.0083M8.57465 3.21517L2.51132 13.3333C1.92535 14.3618 2.67592 15.6667 3.9368 15.6667H16.0632C17.3241 15.6667 18.0747 14.3618 17.4887 13.3333L11.4254 3.21517C10.8486 2.20371 9.15144 2.20371 8.57465 3.21517Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n @case (SnackbarType.INFO) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M10 13.3333V10M10 6.66667H10.0083M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n }\n </div>\n\n <span class=\"snackbar-message\">{{ data.message }}</span>\n\n @if (data.action) {\n <button class=\"snackbar-action\" (click)=\"dismiss()\">\n {{ data.action }}\n </button>\n }\n\n <button class=\"snackbar-close\" (click)=\"dismiss()\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <div class=\"progress-bar\">\n <div class=\"progress-fill\" [style.width.%]=\"progress\"></div>\n </div>\n</div>\n", styles: [".custom-snackbar{display:flex;flex-direction:column;min-width:320px;max-width:500px;border-radius:12px;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,0 0 0 1px #0000000d;background:#fff;transition:transform .2s ease,box-shadow .2s ease}.custom-snackbar:hover{transform:translateY(-2px);box-shadow:0 25px 30px -5px #00000026,0 15px 15px -5px #0000000f,0 0 0 1px #0000000d}.snackbar-content{display:flex;align-items:center;gap:12px;padding:16px}.snackbar-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.snackbar-message{flex:1;font-size:14px;font-weight:500;line-height:1.5;color:#1f2937}.snackbar-action{flex-shrink:0;padding:6px 12px;font-size:13px;font-weight:600;border:none;border-radius:6px;cursor:pointer;transition:all .15s ease;background:transparent}.snackbar-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;cursor:pointer;transition:all .15s ease;background:transparent;color:#6b7280}.snackbar-close:hover{background:#0000000d;color:#374151}.progress-bar{height:4px;background:#00000014;position:relative}.progress-fill{height:100%;transition:width .1s linear;border-radius:0 2px 2px 0}.custom-snackbar[data-type=success]{border-top:3px solid #10b981}.custom-snackbar[data-type=success] .snackbar-icon,.custom-snackbar[data-type=success] .snackbar-action{color:#10b981}.custom-snackbar[data-type=success] .snackbar-action:hover{background:#10b9811a}.custom-snackbar[data-type=success] .progress-fill{background:#10b981}.custom-snackbar[data-type=error]{border-top:3px solid #ef4444}.custom-snackbar[data-type=error] .snackbar-icon,.custom-snackbar[data-type=error] .snackbar-action{color:#ef4444}.custom-snackbar[data-type=error] .snackbar-action:hover{background:#ef44441a}.custom-snackbar[data-type=error] .progress-fill{background:#ef4444}.custom-snackbar[data-type=warning]{border-top:3px solid #f59e0b}.custom-snackbar[data-type=warning] .snackbar-icon,.custom-snackbar[data-type=warning] .snackbar-action{color:#f59e0b}.custom-snackbar[data-type=warning] .snackbar-action:hover{background:#f59e0b1a}.custom-snackbar[data-type=warning] .progress-fill{background:#f59e0b}.custom-snackbar[data-type=info]{border-top:3px solid #3b82f6}.custom-snackbar[data-type=info] .snackbar-icon,.custom-snackbar[data-type=info] .snackbar-action{color:#3b82f6}.custom-snackbar[data-type=info] .snackbar-action:hover{background:#3b82f61a}.custom-snackbar[data-type=info] .progress-fill{background:#3b82f6}\n"] }]
|
|
157
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
158
|
+
type: Inject,
|
|
159
|
+
args: [MAT_SNACK_BAR_DATA]
|
|
160
|
+
}] }, { type: i1$1.MatSnackBarRef }] });
|
|
161
|
+
|
|
162
|
+
var ApplicationStatus;
|
|
163
|
+
(function (ApplicationStatus) {
|
|
164
|
+
ApplicationStatus["FINALIZED"] = "finalized";
|
|
165
|
+
ApplicationStatus["PRE_APPROVED"] = "pre-approved";
|
|
166
|
+
ApplicationStatus["SUBMITTED"] = "submitted";
|
|
167
|
+
})(ApplicationStatus || (ApplicationStatus = {}));
|
|
168
|
+
|
|
169
|
+
var FilterType;
|
|
170
|
+
(function (FilterType) {
|
|
171
|
+
FilterType["NONE"] = "none";
|
|
172
|
+
FilterType["ALL"] = "all";
|
|
173
|
+
FilterType["COLUMN"] = "column";
|
|
174
|
+
})(FilterType || (FilterType = {}));
|
|
175
|
+
var NumberOperator;
|
|
176
|
+
(function (NumberOperator) {
|
|
177
|
+
NumberOperator["EQUAL"] = "EQUAL";
|
|
178
|
+
NumberOperator["NOT_EQUAL"] = "NOT_EQUAL";
|
|
179
|
+
NumberOperator["GREATER_THAN"] = "GREATER_THAN";
|
|
180
|
+
NumberOperator["GREATER_THAN_OR_EQUAL"] = "GREATER_THAN_OR_EQUAL";
|
|
181
|
+
NumberOperator["LESS_THAN"] = "LESS_THAN";
|
|
182
|
+
NumberOperator["LESS_THAN_OR_EQUAL"] = "LESS_THAN_OR_EQUAL";
|
|
183
|
+
NumberOperator["BETWEEN"] = "BETWEEN";
|
|
184
|
+
})(NumberOperator || (NumberOperator = {}));
|
|
185
|
+
var StringOperator;
|
|
186
|
+
(function (StringOperator) {
|
|
187
|
+
StringOperator["CONTAINS"] = "CONTAINS";
|
|
188
|
+
StringOperator["EXACT"] = "EXACT";
|
|
189
|
+
StringOperator["STARTS_WITH"] = "STARTS_WITH";
|
|
190
|
+
StringOperator["ENDS_WITH"] = "ENDS_WITH";
|
|
191
|
+
StringOperator["NOT_CONTAINS"] = "NOT_CONTAINS";
|
|
192
|
+
StringOperator["NOT_EXACT"] = "NOT_EXACT";
|
|
193
|
+
})(StringOperator || (StringOperator = {}));
|
|
194
|
+
var DateOperator;
|
|
195
|
+
(function (DateOperator) {
|
|
196
|
+
DateOperator["BEFORE"] = "BEFORE";
|
|
197
|
+
DateOperator["AFTER"] = "AFTER";
|
|
198
|
+
DateOperator["DATE_RANGE"] = "DATE_RANGE";
|
|
199
|
+
})(DateOperator || (DateOperator = {}));
|
|
200
|
+
|
|
201
|
+
var Role;
|
|
202
|
+
(function (Role) {
|
|
203
|
+
Role["SUPER_USER"] = "super_user";
|
|
204
|
+
Role["ADMIN"] = "admin";
|
|
205
|
+
Role["FRONT_DESK"] = "front_desk";
|
|
206
|
+
Role["STUDENT_DEAN"] = "student_dean";
|
|
207
|
+
Role["RESIDENCE_ASSISTANT"] = "residence_assistant";
|
|
208
|
+
Role["STUDENT"] = "student";
|
|
209
|
+
Role["GUEST"] = "guest";
|
|
210
|
+
})(Role || (Role = {}));
|
|
211
|
+
|
|
212
|
+
var TableDisplayColumnType;
|
|
213
|
+
(function (TableDisplayColumnType) {
|
|
214
|
+
TableDisplayColumnType["ARRAY"] = "ARRAY";
|
|
215
|
+
TableDisplayColumnType["BOOLEAN"] = "BOOLEAN";
|
|
216
|
+
TableDisplayColumnType["CLICK"] = "CLICK";
|
|
217
|
+
TableDisplayColumnType["DATE"] = "DATE";
|
|
218
|
+
TableDisplayColumnType["DATETIME"] = "DATETIME";
|
|
219
|
+
TableDisplayColumnType["HYPERLINK"] = "HYPERLINK";
|
|
220
|
+
TableDisplayColumnType["ICON"] = "ICON";
|
|
221
|
+
TableDisplayColumnType["MONEY"] = "MONEY";
|
|
222
|
+
TableDisplayColumnType["PHONE"] = "PHONE";
|
|
223
|
+
TableDisplayColumnType["TEXT"] = "TEXT";
|
|
224
|
+
TableDisplayColumnType["TEXT_OBSERVABLES"] = "TEXT_OBSERVABLES";
|
|
225
|
+
TableDisplayColumnType["SELECT"] = "SELECT";
|
|
226
|
+
TableDisplayColumnType["NUMBER"] = "NUMBER";
|
|
227
|
+
})(TableDisplayColumnType || (TableDisplayColumnType = {}));
|
|
228
|
+
|
|
229
|
+
const capitalize = (word) => word ? word.charAt(0).toUpperCase() + word.slice(1) : word;
|
|
230
|
+
const pluralize = (word) => /(?<!e)y\b/.test(word) ? word.replace(/(?<!e)y\b/, 'ies') : `${word}s`;
|
|
231
|
+
const spaceCase = (word) => word.replace(/[-_]+/g, ' ');
|
|
232
|
+
const inListValidator = (list) => {
|
|
233
|
+
return (control) => {
|
|
234
|
+
const value = String(control.value);
|
|
235
|
+
return list.includes(value) ? { inList: true } : null;
|
|
236
|
+
};
|
|
237
|
+
};
|
|
238
|
+
const updateArray = (items, item, propertyId = 'id', addToEnd = true) => items.some(i => i[propertyId] === item[propertyId])
|
|
239
|
+
? items.map(i => (i[propertyId] === item[propertyId] ? item : i))
|
|
240
|
+
: addToEnd
|
|
241
|
+
? [...items, item]
|
|
242
|
+
: [item, ...items];
|
|
243
|
+
const formatPhoneNumber = (value) => {
|
|
244
|
+
// Remove all non-digits
|
|
245
|
+
const digitsOnly = value.replace(/\D/g, '');
|
|
246
|
+
// Format based on length
|
|
247
|
+
let formattedValue = '';
|
|
248
|
+
if (digitsOnly.length >= 10) {
|
|
249
|
+
// Format as (XXX) XXX-XXXX for 10+ digits
|
|
250
|
+
const match = digitsOnly.match(/^(\d{3})(\d{3})(\d{4})(\d*)$/);
|
|
251
|
+
if (match) {
|
|
252
|
+
formattedValue = `(${match[1]}) ${match[2]}-${match[3]}`;
|
|
253
|
+
if (match[4]) {
|
|
254
|
+
formattedValue += ` ext. ${match[4]}`;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Fallback for different lengths
|
|
259
|
+
formattedValue = digitsOnly.replace(/^(\d{3})(\d{3})(\d{0,4}).*/, '($1) $2-$3');
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else if (digitsOnly.length >= 7) {
|
|
263
|
+
// Format as XXX-XXXX for 7-9 digits
|
|
264
|
+
formattedValue = digitsOnly.replace(/^(\d{3})(\d{0,4})/, '$1-$2');
|
|
265
|
+
}
|
|
266
|
+
else if (digitsOnly.length >= 4) {
|
|
267
|
+
// Format as XXX-X for 4-6 digits
|
|
268
|
+
formattedValue = digitsOnly.replace(/^(\d{3})(\d{0,3})/, '$1-$2');
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
// Keep as is for less than 4 digits
|
|
272
|
+
formattedValue = digitsOnly;
|
|
273
|
+
}
|
|
274
|
+
return formattedValue;
|
|
275
|
+
};
|
|
276
|
+
// Parse local date string to Date object without time zone offset
|
|
277
|
+
function parseLocalDate(dateString) {
|
|
278
|
+
const [year, month, day] = dateString.split('-');
|
|
279
|
+
return new Date(Number(year), Number(month) - 1, Number(day));
|
|
280
|
+
}
|
|
281
|
+
// Format Date to Day Month Year HH:mm (LocalDateTime)
|
|
282
|
+
// Example: Tue Feb 12 2022 12:00 without commas
|
|
283
|
+
function formatLocalDateTimeLongForm(date) {
|
|
284
|
+
return date
|
|
285
|
+
.toLocaleString('en-US', {
|
|
286
|
+
weekday: 'short',
|
|
287
|
+
month: 'short',
|
|
288
|
+
day: '2-digit',
|
|
289
|
+
year: 'numeric',
|
|
290
|
+
hour: '2-digit',
|
|
291
|
+
minute: '2-digit',
|
|
292
|
+
})
|
|
293
|
+
.replace(',', '');
|
|
294
|
+
}
|
|
295
|
+
// Format Date to YYYY-MM-DDTHH:mm:ss (LocalDateTime)
|
|
296
|
+
function formatLocalDateTime(date) {
|
|
297
|
+
const year = date.getFullYear();
|
|
298
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
299
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
300
|
+
const hours = String(date.getHours()).padStart(2, '0');
|
|
301
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
302
|
+
const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
303
|
+
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;
|
|
304
|
+
}
|
|
305
|
+
// Format Date to HH:mm:ss (LocalTime)
|
|
306
|
+
function formatLocalTime(date) {
|
|
307
|
+
const hours = String(date.getHours()).padStart(2, '0');
|
|
308
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
309
|
+
const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
310
|
+
return `${hours}:${minutes}:${seconds}`;
|
|
311
|
+
}
|
|
312
|
+
// Format Date to HH:mm (LocalTime)
|
|
313
|
+
function formatLocalTimeWithMinutes(date) {
|
|
314
|
+
const hours = String(date.getHours()).padStart(2, '0');
|
|
315
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
316
|
+
return `${hours}:${minutes}`;
|
|
317
|
+
}
|
|
318
|
+
// Format Date to HH:mm with AM/PM format (LocalTime)
|
|
319
|
+
function formatLocalTimeWithMinutesAmPm(date) {
|
|
320
|
+
const hours = Number.parseInt(String(date.getHours()));
|
|
321
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
322
|
+
const ampm = hours >= 12 ? 'PM' : 'AM';
|
|
323
|
+
const normalizedHour = hours % 12 === 0 ? 12 : hours % 12;
|
|
324
|
+
return `${normalizedHour.toString().padStart(2, '0')}:${minutes} ${ampm}`;
|
|
325
|
+
}
|
|
326
|
+
// Format Date to YYYY-MM-DD (LocalDate)
|
|
327
|
+
function formatLocalDate(date) {
|
|
328
|
+
const year = date.getFullYear();
|
|
329
|
+
const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based
|
|
330
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
331
|
+
return `${year}-${month}-${day}`;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Formats an ISO date string to a readable format
|
|
335
|
+
* @param isoString - Date string in ISO format (e.g., "2025-09-12T21:30:00")
|
|
336
|
+
* @returns Formatted date string (e.g., "September 12, 2025, 9:30 PM")
|
|
337
|
+
*/
|
|
338
|
+
function formatStringDateTime(isoString) {
|
|
339
|
+
const date = new Date(isoString);
|
|
340
|
+
// Check if date is valid
|
|
341
|
+
if (isNaN(date.getTime())) {
|
|
342
|
+
throw new Error('Invalid date string provided');
|
|
343
|
+
}
|
|
344
|
+
const options = {
|
|
345
|
+
year: 'numeric',
|
|
346
|
+
month: 'long',
|
|
347
|
+
day: 'numeric',
|
|
348
|
+
hour: 'numeric',
|
|
349
|
+
minute: '2-digit',
|
|
350
|
+
hour12: true,
|
|
351
|
+
};
|
|
352
|
+
return date.toLocaleDateString('en-US', options);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Formats an ISO date string to a readable format
|
|
356
|
+
* @param isoString - Date string in ISO format (e.g., "2025-09-12")
|
|
357
|
+
* @returns Formatted date string (e.g., "September 12, 2025")
|
|
358
|
+
*/
|
|
359
|
+
function formatStringDate(isoString) {
|
|
360
|
+
const date = new Date(isoString);
|
|
361
|
+
// Check if date is valid
|
|
362
|
+
if (isNaN(date.getTime())) {
|
|
363
|
+
throw new Error('Invalid date string provided');
|
|
364
|
+
}
|
|
365
|
+
const options = {
|
|
366
|
+
year: 'numeric',
|
|
367
|
+
month: 'long',
|
|
368
|
+
day: 'numeric',
|
|
369
|
+
};
|
|
370
|
+
return date.toLocaleDateString('en-US', options);
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Format YYYY-MM to localized month year format
|
|
374
|
+
* @param dateStr Format: "2025-11"
|
|
375
|
+
* @param locale Language indicator
|
|
376
|
+
* @returns Format: "Nov 2025" (or localized equivalent)
|
|
377
|
+
*/
|
|
378
|
+
function formatMonthYear(dateStr, locale) {
|
|
379
|
+
const [year, month] = dateStr.split('-');
|
|
380
|
+
// Create date as first day of the month
|
|
381
|
+
const date = new Date(parseInt(year), parseInt(month) - 1, 1);
|
|
382
|
+
// Use Angular's formatDate with current locale
|
|
383
|
+
// 'MMM yyyy' format gives "Nov 2025", "déc. 2025" for French, etc.
|
|
384
|
+
return formatDate(date, 'MMM yyyy', locale);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
class CapitalizePipe {
|
|
388
|
+
transform(value) {
|
|
389
|
+
return value ? capitalize(value) : '';
|
|
390
|
+
}
|
|
391
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CapitalizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
392
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: CapitalizePipe, isStandalone: true, name: "capitalize" });
|
|
393
|
+
}
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CapitalizePipe, decorators: [{
|
|
395
|
+
type: Pipe,
|
|
396
|
+
args: [{
|
|
397
|
+
name: 'capitalize',
|
|
398
|
+
}]
|
|
399
|
+
}] });
|
|
400
|
+
|
|
401
|
+
class PluralizePipe {
|
|
402
|
+
transform(value) {
|
|
403
|
+
return value
|
|
404
|
+
? value.includes('|')
|
|
405
|
+
? value.split('|')[1].trim()
|
|
406
|
+
: value
|
|
407
|
+
: '';
|
|
408
|
+
}
|
|
409
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PluralizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
410
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: PluralizePipe, isStandalone: true, name: "pluralize" });
|
|
411
|
+
}
|
|
412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PluralizePipe, decorators: [{
|
|
413
|
+
type: Pipe,
|
|
414
|
+
args: [{
|
|
415
|
+
name: 'pluralize',
|
|
416
|
+
}]
|
|
417
|
+
}] });
|
|
418
|
+
|
|
419
|
+
class TranslateWrapperService {
|
|
420
|
+
translateService;
|
|
421
|
+
constructor(translateService) {
|
|
422
|
+
this.translateService = translateService;
|
|
423
|
+
}
|
|
424
|
+
get(translation, count, params) {
|
|
425
|
+
return this.translateService.stream(translation, params).pipe(map(v => {
|
|
426
|
+
if (v.includes('|')) {
|
|
427
|
+
return v.split('|')[count && count > 1 ? 1 : 0].trim();
|
|
428
|
+
}
|
|
429
|
+
return v;
|
|
430
|
+
}));
|
|
431
|
+
}
|
|
432
|
+
translate(translation, count, params) {
|
|
433
|
+
const value = this.translateService.instant(translation, params);
|
|
434
|
+
if (value.includes('|')) {
|
|
435
|
+
return value.split('|')[count && count > 1 ? 1 : 0].trim();
|
|
436
|
+
}
|
|
437
|
+
return value;
|
|
438
|
+
}
|
|
439
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TranslateWrapperService, deps: [{ token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
440
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TranslateWrapperService, providedIn: 'root' });
|
|
441
|
+
}
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TranslateWrapperService, decorators: [{
|
|
443
|
+
type: Injectable,
|
|
444
|
+
args: [{
|
|
445
|
+
providedIn: 'root',
|
|
446
|
+
}]
|
|
447
|
+
}], ctorParameters: () => [{ type: i1$2.TranslateService }] });
|
|
448
|
+
|
|
449
|
+
var ActionType;
|
|
450
|
+
(function (ActionType) {
|
|
451
|
+
ActionType["ADD"] = "add";
|
|
452
|
+
ActionType["APPROVE"] = "approve";
|
|
453
|
+
ActionType["DELETE"] = "delete";
|
|
454
|
+
ActionType["EXTEND"] = "extend";
|
|
455
|
+
ActionType["REJECT"] = "reject";
|
|
456
|
+
})(ActionType || (ActionType = {}));
|
|
457
|
+
class CustomTableComponent {
|
|
458
|
+
translateService;
|
|
459
|
+
destroyRef = inject(DestroyRef);
|
|
460
|
+
/**
|
|
461
|
+
* ID of the table, if present, we can use it to the table's pagination and filtering
|
|
462
|
+
*/
|
|
463
|
+
id;
|
|
464
|
+
/**
|
|
465
|
+
* Title of the table
|
|
466
|
+
*/
|
|
467
|
+
title = of('');
|
|
468
|
+
/**
|
|
469
|
+
* Icon of the table
|
|
470
|
+
*/
|
|
471
|
+
icon;
|
|
472
|
+
/**
|
|
473
|
+
* Actions
|
|
474
|
+
*/
|
|
475
|
+
actions = [];
|
|
476
|
+
/**
|
|
477
|
+
* Custom actions
|
|
478
|
+
*/
|
|
479
|
+
customActions = [];
|
|
480
|
+
/**
|
|
481
|
+
* Allowed roles
|
|
482
|
+
*/
|
|
483
|
+
allowedRoles = [Role.ADMIN];
|
|
484
|
+
/**
|
|
485
|
+
* Should have checkbox or not
|
|
486
|
+
*/
|
|
487
|
+
haveCheckbox;
|
|
488
|
+
/**
|
|
489
|
+
* Columns of the table
|
|
490
|
+
*/
|
|
491
|
+
displayedColumns;
|
|
492
|
+
/**
|
|
493
|
+
* Data source / rows
|
|
494
|
+
*/
|
|
495
|
+
dataSource;
|
|
496
|
+
/**
|
|
497
|
+
* Page size options
|
|
498
|
+
*/
|
|
499
|
+
paginationSizeOptions = [10, 20, 50, 100];
|
|
500
|
+
/**
|
|
501
|
+
* First page size
|
|
502
|
+
*/
|
|
503
|
+
initialPageSize = 10;
|
|
504
|
+
specificSelectRow = false;
|
|
505
|
+
/**
|
|
506
|
+
* If filters are enabled
|
|
507
|
+
*/
|
|
508
|
+
hasFilter = true;
|
|
509
|
+
/**
|
|
510
|
+
* If rows can be expandable
|
|
511
|
+
*/
|
|
512
|
+
expandableRows = false;
|
|
513
|
+
/**
|
|
514
|
+
* Expanded rows
|
|
515
|
+
*/
|
|
516
|
+
expandedItem;
|
|
517
|
+
emptyMessage;
|
|
518
|
+
/**
|
|
519
|
+
* Table loading status
|
|
520
|
+
*/
|
|
521
|
+
isLoading = false;
|
|
522
|
+
/**
|
|
523
|
+
* Whether to have one filter for all columns or one filter per column
|
|
524
|
+
*/
|
|
525
|
+
separateFilters = true;
|
|
526
|
+
/**
|
|
527
|
+
* Show paginator or not
|
|
528
|
+
*/
|
|
529
|
+
showPaginator = true;
|
|
530
|
+
/**
|
|
531
|
+
* Display message if there's no data
|
|
532
|
+
*/
|
|
533
|
+
noTableDataMessage;
|
|
534
|
+
/**
|
|
535
|
+
* Actions button shown or not
|
|
536
|
+
*/
|
|
537
|
+
actionsMenuEnabled = false;
|
|
538
|
+
/**
|
|
539
|
+
* Number of rows
|
|
540
|
+
*/
|
|
541
|
+
totalElements;
|
|
542
|
+
/**
|
|
543
|
+
* Use server side filtering or client side filtering
|
|
544
|
+
* Should only use client side if there aren't a lot of rows
|
|
545
|
+
*/
|
|
546
|
+
serverSideFiltering = false;
|
|
547
|
+
/**
|
|
548
|
+
* Remove header
|
|
549
|
+
*/
|
|
550
|
+
disableHeader = false;
|
|
551
|
+
/**
|
|
552
|
+
* Emits delete
|
|
553
|
+
*/
|
|
554
|
+
delete = new EventEmitter();
|
|
555
|
+
/**
|
|
556
|
+
* Emits approve
|
|
557
|
+
*/
|
|
558
|
+
approve = new EventEmitter();
|
|
559
|
+
/**
|
|
560
|
+
* Emits reject
|
|
561
|
+
*/
|
|
562
|
+
reject = new EventEmitter();
|
|
563
|
+
/**
|
|
564
|
+
* Emits extend
|
|
565
|
+
*/
|
|
566
|
+
extend = new EventEmitter();
|
|
567
|
+
/**
|
|
568
|
+
* Emits add
|
|
569
|
+
*/
|
|
570
|
+
add = new EventEmitter();
|
|
571
|
+
/**
|
|
572
|
+
* Emits clicked
|
|
573
|
+
*/
|
|
574
|
+
clicked = new EventEmitter();
|
|
575
|
+
/**
|
|
576
|
+
* Emits combined query change (filters + pagination)
|
|
577
|
+
*/
|
|
578
|
+
queryChange = new EventEmitter();
|
|
579
|
+
actionsTemplate;
|
|
580
|
+
selection = new SelectionModel(true, []);
|
|
581
|
+
selectedFilters = [];
|
|
582
|
+
expandedElement = null;
|
|
583
|
+
columnsToDisplayWithExpand = [];
|
|
584
|
+
tableDisplayColumnType = TableDisplayColumnType;
|
|
585
|
+
initSortedCol = null;
|
|
586
|
+
filterByColumnFormGroup = new FormGroup({});
|
|
587
|
+
/**
|
|
588
|
+
* Related to filtering and pagination on localStorage
|
|
589
|
+
*/
|
|
590
|
+
isRestoringState = false;
|
|
591
|
+
currentFilters = [];
|
|
592
|
+
/**
|
|
593
|
+
* Operators
|
|
594
|
+
*
|
|
595
|
+
* - Number
|
|
596
|
+
*/
|
|
597
|
+
numberOperations = Object.values(NumberOperator).map(operator => ({
|
|
598
|
+
label: this.translateService.get(`operators.numbers.${operator}`),
|
|
599
|
+
value: operator,
|
|
600
|
+
}));
|
|
601
|
+
paginatorRef;
|
|
602
|
+
set paginator(val) {
|
|
603
|
+
if (val && !this.serverSideFiltering) {
|
|
604
|
+
this.dataSource.paginator = val;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
set sort(val) {
|
|
608
|
+
if (val) {
|
|
609
|
+
this.dataSource.sort = val;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
allFilterInput;
|
|
613
|
+
constructor(translateService) {
|
|
614
|
+
this.translateService = translateService;
|
|
615
|
+
}
|
|
616
|
+
ngOnInit() {
|
|
617
|
+
this.setInitSort();
|
|
618
|
+
this.setInitFilter();
|
|
619
|
+
this.setEmptyMessage();
|
|
620
|
+
// Wait for filter controls to be built before restoring
|
|
621
|
+
if (this.id !== undefined) {
|
|
622
|
+
this.isRestoringState = true;
|
|
623
|
+
// Use a longer timeout to ensure controls are ready
|
|
624
|
+
setTimeout(() => {
|
|
625
|
+
this.restoreTableQuery();
|
|
626
|
+
}, 100); // Wait for controls to be built
|
|
627
|
+
}
|
|
628
|
+
if (this.hasFilter && this.separateFilters) {
|
|
629
|
+
if (!this.serverSideFiltering) {
|
|
630
|
+
this.applyFilterByColumn();
|
|
631
|
+
}
|
|
632
|
+
this.filterByColumnFormGroup.valueChanges
|
|
633
|
+
.pipe(debounceTime(400), map$1(formValue => {
|
|
634
|
+
return Object.entries(formValue)
|
|
635
|
+
.filter(([_key, value]) => value !== null && value !== '')
|
|
636
|
+
.reduce((acc, [key, value]) => {
|
|
637
|
+
acc[key] = value;
|
|
638
|
+
return acc;
|
|
639
|
+
}, {});
|
|
640
|
+
}), distinctUntilChanged((prev, curr) => isEqual(prev, curr)), takeUntilDestroyed(this.destroyRef))
|
|
641
|
+
.subscribe((formValue) => {
|
|
642
|
+
// Skip if we're still restoring
|
|
643
|
+
if (this.isRestoringState) {
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
if (this.serverSideFiltering) {
|
|
647
|
+
const filterCriteria = this.buildFilterCriteria(formValue);
|
|
648
|
+
this.queryChange.emit({
|
|
649
|
+
filters: filterCriteria,
|
|
650
|
+
pageIndex: 0,
|
|
651
|
+
pageSize: this.paginatorRef?.pageSize || this.initialPageSize || 10,
|
|
652
|
+
});
|
|
653
|
+
if (this.paginatorRef) {
|
|
654
|
+
this.paginatorRef.firstPage();
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
else {
|
|
658
|
+
// Client-side filtering - save to localStorage if id exists
|
|
659
|
+
this.buildFilterCriteria(formValue); // Saves to localStorage as a side effect
|
|
660
|
+
this.dataSource.filter = JSON.stringify(formValue);
|
|
661
|
+
if (this.dataSource.paginator) {
|
|
662
|
+
this.dataSource.paginator.firstPage();
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
// Reset the flag after a delay that's longer than debounceTime
|
|
667
|
+
if (this.id !== undefined) {
|
|
668
|
+
setTimeout(() => {
|
|
669
|
+
this.isRestoringState = false;
|
|
670
|
+
}, 600); // 600ms to account for 100ms + 400ms debounce + buffer
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
applyFilterToAllColumns(event) {
|
|
675
|
+
const filterValue = event.target.value;
|
|
676
|
+
// Apply the transformFn so that if the user filters based on that value we still keep the transformValue not the original one
|
|
677
|
+
const transformedDataSource = this.dataSource;
|
|
678
|
+
this.displayedColumns.forEach((column) => {
|
|
679
|
+
if (column.transformFn) {
|
|
680
|
+
transformedDataSource.data = transformedDataSource.data.map(data => ({
|
|
681
|
+
...data,
|
|
682
|
+
[column.property]: column.transformFn(data[column.property]),
|
|
683
|
+
}));
|
|
684
|
+
}
|
|
685
|
+
});
|
|
686
|
+
this.dataSource.filter = filterValue.trim().toLowerCase();
|
|
687
|
+
if (this.dataSource.paginator) {
|
|
688
|
+
this.dataSource.paginator.firstPage();
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
applyFilterByColumn() {
|
|
692
|
+
this.dataSource.filterPredicate = (data, filter) => {
|
|
693
|
+
const filterObj = JSON.parse(filter);
|
|
694
|
+
return Object.entries(filterObj).every(([key, value]) => {
|
|
695
|
+
const column = this.displayedColumns.find(col => col.property === key);
|
|
696
|
+
if (!column)
|
|
697
|
+
return true;
|
|
698
|
+
const dataValue = data[key];
|
|
699
|
+
// TEXTS
|
|
700
|
+
if ([
|
|
701
|
+
TableDisplayColumnType.TEXT,
|
|
702
|
+
TableDisplayColumnType.HYPERLINK,
|
|
703
|
+
TableDisplayColumnType.CLICK,
|
|
704
|
+
].includes(column.type)) {
|
|
705
|
+
const dataStr = dataValue?.toString().toLowerCase() || '';
|
|
706
|
+
const searchStr = value?.toLowerCase() || '';
|
|
707
|
+
return dataStr.includes(searchStr);
|
|
708
|
+
}
|
|
709
|
+
else if ([
|
|
710
|
+
TableDisplayColumnType.NUMBER,
|
|
711
|
+
TableDisplayColumnType.MONEY,
|
|
712
|
+
].includes(column.type)) {
|
|
713
|
+
// Number filtering (handle exact value or range)
|
|
714
|
+
const filterValue = value;
|
|
715
|
+
const numValue = Number(dataValue);
|
|
716
|
+
if (isNaN(numValue))
|
|
717
|
+
return false;
|
|
718
|
+
if (filterValue.value != null) {
|
|
719
|
+
switch (filterValue.operation) {
|
|
720
|
+
case NumberOperator.EQUAL:
|
|
721
|
+
return numValue === filterValue.value;
|
|
722
|
+
case NumberOperator.NOT_EQUAL:
|
|
723
|
+
return numValue !== filterValue.value;
|
|
724
|
+
case NumberOperator.GREATER_THAN:
|
|
725
|
+
return numValue > filterValue.value;
|
|
726
|
+
case NumberOperator.GREATER_THAN_OR_EQUAL:
|
|
727
|
+
return numValue >= filterValue.value;
|
|
728
|
+
case NumberOperator.LESS_THAN:
|
|
729
|
+
return numValue < filterValue.value;
|
|
730
|
+
case NumberOperator.LESS_THAN_OR_EQUAL:
|
|
731
|
+
return numValue <= filterValue.value;
|
|
732
|
+
default:
|
|
733
|
+
console.warn(`Unknown operator: ${filterValue.operation}`);
|
|
734
|
+
return true;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
else if (filterValue.min != null && filterValue.max != null) {
|
|
738
|
+
// Range filtering
|
|
739
|
+
return numValue >= filterValue.min && numValue <= filterValue.max;
|
|
740
|
+
}
|
|
741
|
+
else if (filterValue.min != null) {
|
|
742
|
+
return numValue >= filterValue.min;
|
|
743
|
+
}
|
|
744
|
+
else if (filterValue.max != null) {
|
|
745
|
+
return numValue <= filterValue.max;
|
|
746
|
+
}
|
|
747
|
+
return true;
|
|
748
|
+
}
|
|
749
|
+
else if (column.type === TableDisplayColumnType.BOOLEAN) {
|
|
750
|
+
return dataValue === value;
|
|
751
|
+
}
|
|
752
|
+
else if (column.type === TableDisplayColumnType.PHONE) {
|
|
753
|
+
if (dataValue.phoneNumber.length === 10) {
|
|
754
|
+
return dataValue.phoneNumber.includes(value.toString());
|
|
755
|
+
}
|
|
756
|
+
return dataValue.phoneNumber
|
|
757
|
+
.replace('(', '')
|
|
758
|
+
.replace(')', '')
|
|
759
|
+
.replace('-', '')
|
|
760
|
+
.includes(value.toString());
|
|
761
|
+
}
|
|
762
|
+
else if ([
|
|
763
|
+
TableDisplayColumnType.DATETIME,
|
|
764
|
+
TableDisplayColumnType.DATE,
|
|
765
|
+
].includes(column.type)) {
|
|
766
|
+
const filterValue = value;
|
|
767
|
+
const dataDate = dataValue instanceof Date ? dataValue : new Date(dataValue);
|
|
768
|
+
if (isNaN(dataDate.getTime()))
|
|
769
|
+
return false;
|
|
770
|
+
const startDate = filterValue.start instanceof Date
|
|
771
|
+
? filterValue.start
|
|
772
|
+
: filterValue.start
|
|
773
|
+
? new Date(filterValue.start)
|
|
774
|
+
: null;
|
|
775
|
+
const endDate = filterValue.end instanceof Date
|
|
776
|
+
? filterValue.end
|
|
777
|
+
: filterValue.end
|
|
778
|
+
? new Date(filterValue.end)
|
|
779
|
+
: null;
|
|
780
|
+
if (startDate && isNaN(startDate.getTime()))
|
|
781
|
+
return true;
|
|
782
|
+
if (endDate && isNaN(endDate.getTime()))
|
|
783
|
+
return true;
|
|
784
|
+
if (startDate && endDate) {
|
|
785
|
+
return dataDate >= startDate && dataDate <= endDate;
|
|
786
|
+
}
|
|
787
|
+
else if (startDate) {
|
|
788
|
+
return dataDate >= startDate;
|
|
789
|
+
}
|
|
790
|
+
else if (endDate) {
|
|
791
|
+
return dataDate <= endDate;
|
|
792
|
+
}
|
|
793
|
+
return true;
|
|
794
|
+
}
|
|
795
|
+
return true;
|
|
796
|
+
});
|
|
797
|
+
};
|
|
798
|
+
}
|
|
799
|
+
buildFilterCriteria(formValue) {
|
|
800
|
+
const filterCriteria = [];
|
|
801
|
+
Object.entries(formValue).forEach(([field, value]) => {
|
|
802
|
+
if (value === null || value === '')
|
|
803
|
+
return;
|
|
804
|
+
const column = this.displayedColumns.find(col => col.property === field);
|
|
805
|
+
if (!column)
|
|
806
|
+
return;
|
|
807
|
+
const filterField = column.filterProperty || column.property;
|
|
808
|
+
switch (column.type) {
|
|
809
|
+
case TableDisplayColumnType.TEXT:
|
|
810
|
+
case TableDisplayColumnType.HYPERLINK:
|
|
811
|
+
case TableDisplayColumnType.CLICK:
|
|
812
|
+
case TableDisplayColumnType.PHONE:
|
|
813
|
+
filterCriteria.push({
|
|
814
|
+
field: filterField,
|
|
815
|
+
operator: StringOperator.CONTAINS,
|
|
816
|
+
value: value,
|
|
817
|
+
});
|
|
818
|
+
break;
|
|
819
|
+
case TableDisplayColumnType.NUMBER:
|
|
820
|
+
case TableDisplayColumnType.MONEY:
|
|
821
|
+
// eslint-disable-next-line no-case-declarations
|
|
822
|
+
const numFilter = value;
|
|
823
|
+
if (numFilter.value != null && numFilter.operation) {
|
|
824
|
+
filterCriteria.push({
|
|
825
|
+
field: filterField,
|
|
826
|
+
operator: numFilter.operation,
|
|
827
|
+
value: numFilter.value,
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
else if (numFilter.min != null || numFilter.max != null) {
|
|
831
|
+
if (numFilter.min != null) {
|
|
832
|
+
filterCriteria.push({
|
|
833
|
+
field: filterField,
|
|
834
|
+
operator: NumberOperator.GREATER_THAN_OR_EQUAL,
|
|
835
|
+
value: numFilter.min,
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
if (numFilter.max != null) {
|
|
839
|
+
filterCriteria.push({
|
|
840
|
+
field: filterField,
|
|
841
|
+
operator: NumberOperator.LESS_THAN_OR_EQUAL,
|
|
842
|
+
value: numFilter.max,
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
break;
|
|
847
|
+
case TableDisplayColumnType.BOOLEAN:
|
|
848
|
+
if (value !== null) {
|
|
849
|
+
filterCriteria.push({
|
|
850
|
+
field: filterField,
|
|
851
|
+
operator: StringOperator.EXACT,
|
|
852
|
+
value: value,
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
break;
|
|
856
|
+
case TableDisplayColumnType.DATE:
|
|
857
|
+
case TableDisplayColumnType.DATETIME:
|
|
858
|
+
// eslint-disable-next-line no-case-declarations
|
|
859
|
+
const dateFilter = value;
|
|
860
|
+
if (dateFilter.start && dateFilter.end) {
|
|
861
|
+
filterCriteria.push({
|
|
862
|
+
field: filterField,
|
|
863
|
+
operator: DateOperator.DATE_RANGE,
|
|
864
|
+
value: JSON.stringify({
|
|
865
|
+
start: dateFilter.start.toISOString(),
|
|
866
|
+
end: dateFilter.end.toISOString(),
|
|
867
|
+
}),
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
else if (dateFilter.start) {
|
|
871
|
+
filterCriteria.push({
|
|
872
|
+
field: filterField,
|
|
873
|
+
operator: DateOperator.AFTER,
|
|
874
|
+
value: dateFilter.start.toISOString(),
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
else if (dateFilter.end) {
|
|
878
|
+
filterCriteria.push({
|
|
879
|
+
field: filterField,
|
|
880
|
+
operator: DateOperator.BEFORE,
|
|
881
|
+
value: dateFilter.end.toISOString(),
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
break;
|
|
885
|
+
}
|
|
886
|
+
});
|
|
887
|
+
if (this.id) {
|
|
888
|
+
this.setTableQuery(this.id, { filters: filterCriteria });
|
|
889
|
+
}
|
|
890
|
+
// Store current filters
|
|
891
|
+
this.currentFilters = filterCriteria;
|
|
892
|
+
return filterCriteria;
|
|
893
|
+
}
|
|
894
|
+
filterSelectionChanged(selectedFilters) {
|
|
895
|
+
this.selectedFilters = this.displayedColumns.filter(col => selectedFilters.includes(col.property));
|
|
896
|
+
if (this.hasFilter && this.separateFilters) {
|
|
897
|
+
const currentControls = Object.keys(this.filterByColumnFormGroup.controls);
|
|
898
|
+
// Add new controls for selected filters
|
|
899
|
+
this.selectedFilters.forEach(filter => {
|
|
900
|
+
if (!currentControls.includes(filter.property)) {
|
|
901
|
+
switch (filter.type) {
|
|
902
|
+
case TableDisplayColumnType.HYPERLINK:
|
|
903
|
+
case TableDisplayColumnType.TEXT:
|
|
904
|
+
case TableDisplayColumnType.PHONE:
|
|
905
|
+
case TableDisplayColumnType.CLICK:
|
|
906
|
+
case TableDisplayColumnType.ARRAY:
|
|
907
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormGroup({
|
|
908
|
+
operator: new FormControl(StringOperator.CONTAINS),
|
|
909
|
+
value: new FormControl(null),
|
|
910
|
+
}), { emitEvent: false });
|
|
911
|
+
break;
|
|
912
|
+
case TableDisplayColumnType.BOOLEAN:
|
|
913
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormControl(null), { emitEvent: false });
|
|
914
|
+
break;
|
|
915
|
+
case TableDisplayColumnType.MONEY:
|
|
916
|
+
case TableDisplayColumnType.NUMBER:
|
|
917
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormGroup({
|
|
918
|
+
operation: new FormControl(null),
|
|
919
|
+
min: new FormControl(null),
|
|
920
|
+
max: new FormControl(null),
|
|
921
|
+
value: new FormControl(null),
|
|
922
|
+
}), { emitEvent: false });
|
|
923
|
+
break;
|
|
924
|
+
case TableDisplayColumnType.DATE:
|
|
925
|
+
case TableDisplayColumnType.DATETIME:
|
|
926
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormGroup({
|
|
927
|
+
start: new FormControl(null),
|
|
928
|
+
end: new FormControl(null),
|
|
929
|
+
}), { emitEvent: false });
|
|
930
|
+
break;
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
currentControls.forEach(controlName => {
|
|
935
|
+
if (!this.selectedFilters.some(filter => filter.property === controlName)) {
|
|
936
|
+
this.filterByColumnFormGroup.removeControl(controlName, {
|
|
937
|
+
emitEvent: false,
|
|
938
|
+
});
|
|
939
|
+
}
|
|
940
|
+
});
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
deleteAction() {
|
|
944
|
+
this.delete.emit(this.selection);
|
|
945
|
+
}
|
|
946
|
+
approveAction() {
|
|
947
|
+
this.approve.emit(this.selection);
|
|
948
|
+
}
|
|
949
|
+
rejectAction() {
|
|
950
|
+
this.reject.emit(this.selection);
|
|
951
|
+
}
|
|
952
|
+
extendAction() {
|
|
953
|
+
this.extend.emit(this.selection);
|
|
954
|
+
}
|
|
955
|
+
addAction() {
|
|
956
|
+
this.add.emit();
|
|
957
|
+
}
|
|
958
|
+
clickedAction(item) {
|
|
959
|
+
this.clicked.emit(item);
|
|
960
|
+
if (this.haveCheckbox) {
|
|
961
|
+
this.selection.toggle(item);
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
onPageChange(event) {
|
|
965
|
+
if (this.id) {
|
|
966
|
+
this.setTableQuery(this.id, {
|
|
967
|
+
pageSize: event.pageSize,
|
|
968
|
+
pageNumber: event.pageIndex,
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
// Only emit for server-side filtering
|
|
972
|
+
if (this.serverSideFiltering) {
|
|
973
|
+
this.queryChange.emit({
|
|
974
|
+
filters: this.currentFilters,
|
|
975
|
+
pageIndex: event.pageIndex,
|
|
976
|
+
pageSize: event.pageSize,
|
|
977
|
+
});
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
/** Whether the number of selected elements matches the total number of rows. */
|
|
981
|
+
isAllSelected() {
|
|
982
|
+
const numSelected = this.selection.selected.length;
|
|
983
|
+
const dataSourceLength = this.specificSelectRow
|
|
984
|
+
? this.dataSource.data.filter(row => this.isApplicationSubmitted(row))
|
|
985
|
+
.length
|
|
986
|
+
: this.dataSource.data.length;
|
|
987
|
+
return numSelected === dataSourceLength;
|
|
988
|
+
}
|
|
989
|
+
/** Selects all rows if they are not all selected; otherwise clear selection. */
|
|
990
|
+
toggleAllRows() {
|
|
991
|
+
if (this.isAllSelected()) {
|
|
992
|
+
this.selection.clear();
|
|
993
|
+
return;
|
|
994
|
+
}
|
|
995
|
+
this.selection.select(...this.dataSource.data);
|
|
996
|
+
}
|
|
997
|
+
/** The label for the checkbox on the passed row */
|
|
998
|
+
checkboxLabel(row) {
|
|
999
|
+
if (!row) {
|
|
1000
|
+
return `${this.isAllSelected() ? 'deselect' : 'select'} all`;
|
|
1001
|
+
}
|
|
1002
|
+
return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.id}`;
|
|
1003
|
+
}
|
|
1004
|
+
selectRow(row) {
|
|
1005
|
+
if (!this.specificSelectRow) {
|
|
1006
|
+
this.selection.toggle(row);
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
setInitSort() {
|
|
1010
|
+
this.initSortedCol = this.displayedColumns.find((col) => col.initSort);
|
|
1011
|
+
}
|
|
1012
|
+
setInitFilter() {
|
|
1013
|
+
if (this.hasFilter && this.separateFilters) {
|
|
1014
|
+
setTimeout(() => {
|
|
1015
|
+
this.buildColumnFilterControls();
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
restoreTableQuery() {
|
|
1020
|
+
if (!this.id)
|
|
1021
|
+
return;
|
|
1022
|
+
const savedQuery = localStorage.getItem(this.id);
|
|
1023
|
+
if (!savedQuery) {
|
|
1024
|
+
if (this.serverSideFiltering) {
|
|
1025
|
+
this.queryChange.emit({
|
|
1026
|
+
filters: [],
|
|
1027
|
+
pageIndex: 0,
|
|
1028
|
+
pageSize: this.initialPageSize || 10,
|
|
1029
|
+
});
|
|
1030
|
+
}
|
|
1031
|
+
return;
|
|
1032
|
+
}
|
|
1033
|
+
try {
|
|
1034
|
+
const tableQuery = JSON.parse(savedQuery);
|
|
1035
|
+
if (tableQuery.pageSize && this.paginatorRef) {
|
|
1036
|
+
this.paginatorRef.pageSize = tableQuery.pageSize;
|
|
1037
|
+
}
|
|
1038
|
+
if (tableQuery.pageNumber !== undefined && this.paginatorRef) {
|
|
1039
|
+
this.paginatorRef.pageIndex = tableQuery.pageNumber;
|
|
1040
|
+
}
|
|
1041
|
+
if (tableQuery.filters && tableQuery.filters.length > 0) {
|
|
1042
|
+
this.restoreFiltersFromCriteria(tableQuery.filters);
|
|
1043
|
+
this.currentFilters = tableQuery.filters;
|
|
1044
|
+
}
|
|
1045
|
+
if (this.serverSideFiltering) {
|
|
1046
|
+
this.queryChange.emit({
|
|
1047
|
+
filters: tableQuery.filters || [],
|
|
1048
|
+
pageIndex: tableQuery.pageNumber || 0,
|
|
1049
|
+
pageSize: tableQuery.pageSize || this.initialPageSize || 10,
|
|
1050
|
+
});
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
catch (error) {
|
|
1054
|
+
console.error('Failed to restore table query:', error);
|
|
1055
|
+
localStorage.removeItem(this.id);
|
|
1056
|
+
if (this.serverSideFiltering) {
|
|
1057
|
+
this.queryChange.emit({
|
|
1058
|
+
filters: [],
|
|
1059
|
+
pageIndex: 0,
|
|
1060
|
+
pageSize: this.initialPageSize || 10,
|
|
1061
|
+
});
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
restoreFiltersFromCriteria(filterCriteria) {
|
|
1066
|
+
const formValue = {};
|
|
1067
|
+
filterCriteria.forEach(criteria => {
|
|
1068
|
+
const column = this.displayedColumns.find(col => (col.filterProperty || col.property) === criteria.field);
|
|
1069
|
+
if (!column)
|
|
1070
|
+
return;
|
|
1071
|
+
const property = column.property;
|
|
1072
|
+
switch (column.type) {
|
|
1073
|
+
case TableDisplayColumnType.TEXT:
|
|
1074
|
+
case TableDisplayColumnType.HYPERLINK:
|
|
1075
|
+
case TableDisplayColumnType.CLICK:
|
|
1076
|
+
case TableDisplayColumnType.PHONE:
|
|
1077
|
+
formValue[property] = criteria.value;
|
|
1078
|
+
break;
|
|
1079
|
+
case TableDisplayColumnType.BOOLEAN:
|
|
1080
|
+
formValue[property] = criteria.value;
|
|
1081
|
+
break;
|
|
1082
|
+
case TableDisplayColumnType.NUMBER:
|
|
1083
|
+
case TableDisplayColumnType.MONEY:
|
|
1084
|
+
if (!formValue[property]) {
|
|
1085
|
+
formValue[property] = {
|
|
1086
|
+
operation: null,
|
|
1087
|
+
min: null,
|
|
1088
|
+
max: null,
|
|
1089
|
+
value: null,
|
|
1090
|
+
};
|
|
1091
|
+
}
|
|
1092
|
+
if (criteria.operator === NumberOperator.GREATER_THAN_OR_EQUAL) {
|
|
1093
|
+
formValue[property].min = criteria.value;
|
|
1094
|
+
}
|
|
1095
|
+
else if (criteria.operator === NumberOperator.LESS_THAN_OR_EQUAL) {
|
|
1096
|
+
formValue[property].max = criteria.value;
|
|
1097
|
+
}
|
|
1098
|
+
else {
|
|
1099
|
+
formValue[property].operation = criteria.operator;
|
|
1100
|
+
formValue[property].value = criteria.value;
|
|
1101
|
+
}
|
|
1102
|
+
break;
|
|
1103
|
+
case TableDisplayColumnType.DATE:
|
|
1104
|
+
case TableDisplayColumnType.DATETIME:
|
|
1105
|
+
if (criteria.operator === DateOperator.DATE_RANGE) {
|
|
1106
|
+
const range = JSON.parse(criteria.value);
|
|
1107
|
+
formValue[property] = {
|
|
1108
|
+
start: new Date(range.start),
|
|
1109
|
+
end: new Date(range.end),
|
|
1110
|
+
};
|
|
1111
|
+
}
|
|
1112
|
+
else if (criteria.operator === DateOperator.AFTER) {
|
|
1113
|
+
formValue[property] = {
|
|
1114
|
+
start: new Date(criteria.value),
|
|
1115
|
+
end: null,
|
|
1116
|
+
};
|
|
1117
|
+
}
|
|
1118
|
+
else if (criteria.operator === DateOperator.BEFORE) {
|
|
1119
|
+
formValue[property] = {
|
|
1120
|
+
start: null,
|
|
1121
|
+
end: new Date(criteria.value),
|
|
1122
|
+
};
|
|
1123
|
+
}
|
|
1124
|
+
break;
|
|
1125
|
+
}
|
|
1126
|
+
});
|
|
1127
|
+
// Patch with emitEvent: false to prevent duplicate emissions during restoration
|
|
1128
|
+
this.filterByColumnFormGroup.patchValue(formValue, { emitEvent: false });
|
|
1129
|
+
// For client-side filtering, manually apply filter
|
|
1130
|
+
if (!this.serverSideFiltering && Object.keys(formValue).length > 0) {
|
|
1131
|
+
this.dataSource.filter = JSON.stringify(formValue);
|
|
1132
|
+
if (this.dataSource.paginator) {
|
|
1133
|
+
this.dataSource.paginator.firstPage();
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
setTableQuery(id, tableQueryParams) {
|
|
1138
|
+
let tableQuery;
|
|
1139
|
+
const existingQuery = localStorage.getItem(id);
|
|
1140
|
+
if (existingQuery) {
|
|
1141
|
+
tableQuery = JSON.parse(existingQuery);
|
|
1142
|
+
// If filters are being updated, reset page number to 0
|
|
1143
|
+
if (tableQueryParams.filters !== undefined) {
|
|
1144
|
+
tableQuery = {
|
|
1145
|
+
...tableQuery,
|
|
1146
|
+
...tableQueryParams,
|
|
1147
|
+
pageNumber: 0, // Reset to first page when filters change
|
|
1148
|
+
};
|
|
1149
|
+
}
|
|
1150
|
+
else {
|
|
1151
|
+
tableQuery = { ...tableQuery, ...tableQueryParams };
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
else {
|
|
1155
|
+
tableQuery = {
|
|
1156
|
+
filters: tableQueryParams.filters || [],
|
|
1157
|
+
pageSize: tableQueryParams.pageSize || this.initialPageSize || 10,
|
|
1158
|
+
pageNumber: tableQueryParams.pageNumber || 0,
|
|
1159
|
+
};
|
|
1160
|
+
}
|
|
1161
|
+
localStorage.setItem(id, JSON.stringify(tableQuery));
|
|
1162
|
+
}
|
|
1163
|
+
buildColumnFilterControls() {
|
|
1164
|
+
this.selectedFilters = this.displayedColumns.filter(col => !col.disableFiltering &&
|
|
1165
|
+
this.displayedColumnsWithoutSelect
|
|
1166
|
+
.map(c => c.property)
|
|
1167
|
+
.includes(col.property));
|
|
1168
|
+
if (this.hasFilter && this.separateFilters) {
|
|
1169
|
+
const currentControls = Object.keys(this.filterByColumnFormGroup.controls);
|
|
1170
|
+
// Add new controls for selected filters
|
|
1171
|
+
this.selectedFilters.forEach(filter => {
|
|
1172
|
+
if (!currentControls.includes(filter.property)) {
|
|
1173
|
+
switch (filter.type) {
|
|
1174
|
+
case TableDisplayColumnType.HYPERLINK:
|
|
1175
|
+
case TableDisplayColumnType.TEXT:
|
|
1176
|
+
case TableDisplayColumnType.PHONE:
|
|
1177
|
+
case TableDisplayColumnType.CLICK:
|
|
1178
|
+
case TableDisplayColumnType.ARRAY:
|
|
1179
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormControl(null), { emitEvent: false });
|
|
1180
|
+
break;
|
|
1181
|
+
case TableDisplayColumnType.BOOLEAN:
|
|
1182
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormControl(null), { emitEvent: false });
|
|
1183
|
+
break;
|
|
1184
|
+
case TableDisplayColumnType.MONEY:
|
|
1185
|
+
case TableDisplayColumnType.NUMBER:
|
|
1186
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormGroup({
|
|
1187
|
+
operation: new FormControl(null),
|
|
1188
|
+
min: new FormControl(null),
|
|
1189
|
+
max: new FormControl(null),
|
|
1190
|
+
value: new FormControl(null),
|
|
1191
|
+
}), { emitEvent: false });
|
|
1192
|
+
break;
|
|
1193
|
+
case TableDisplayColumnType.DATE:
|
|
1194
|
+
case TableDisplayColumnType.DATETIME:
|
|
1195
|
+
this.filterByColumnFormGroup.addControl(filter.property, new FormGroup({
|
|
1196
|
+
start: new FormControl(null),
|
|
1197
|
+
end: new FormControl(null),
|
|
1198
|
+
}), { emitEvent: false });
|
|
1199
|
+
break;
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
});
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
setEmptyMessage() {
|
|
1206
|
+
this.emptyMessage = this.title.pipe(switchMap(title => iif(() => this.actions.includes(ActionType.ADD), this.translateService.get('messages.emptyMessageTableAdd', 1, {
|
|
1207
|
+
value: title,
|
|
1208
|
+
}), this.translateService.get('messages.emptyMessageTable'))));
|
|
1209
|
+
}
|
|
1210
|
+
formatPhoneNumber(value) {
|
|
1211
|
+
if (value && value.length === 10 && /^\d{10}$/.test(value)) {
|
|
1212
|
+
return `(${value.slice(0, 3)}) ${value.slice(3, 6)}-${value.slice(6, 10)}`;
|
|
1213
|
+
}
|
|
1214
|
+
return value;
|
|
1215
|
+
}
|
|
1216
|
+
getRowBackgroundColor(index) {
|
|
1217
|
+
return index % 2 == 1 ? 'bg-accent' : 'bg-white';
|
|
1218
|
+
}
|
|
1219
|
+
getHyperlinkRoute(row, column) {
|
|
1220
|
+
return column.route + (column.routeId ? row[column.routeId] : row.id);
|
|
1221
|
+
}
|
|
1222
|
+
isApplicationSubmitted(row) {
|
|
1223
|
+
return row.status === ApplicationStatus.SUBMITTED;
|
|
1224
|
+
}
|
|
1225
|
+
get hasSelectedRow() {
|
|
1226
|
+
return this.selection.hasValue();
|
|
1227
|
+
}
|
|
1228
|
+
get actionColumnStyleWidth() {
|
|
1229
|
+
return '5%';
|
|
1230
|
+
}
|
|
1231
|
+
get generalColumnStyleWidth() {
|
|
1232
|
+
const availableWidths = 100 - (this.haveCheckbox ? 5 : 0) - (this.expandableRows ? 5 : 0);
|
|
1233
|
+
const widthPerColumn = availableWidths / this.displayedColumns.length;
|
|
1234
|
+
return `${widthPerColumn}%`;
|
|
1235
|
+
}
|
|
1236
|
+
get displayedColumnsProperty() {
|
|
1237
|
+
return this.displayedColumns
|
|
1238
|
+
.filter(x => this.displayCheckbox || x.property !== 'select')
|
|
1239
|
+
.map(col => col.property);
|
|
1240
|
+
}
|
|
1241
|
+
get displayedColumnsWithoutSelect() {
|
|
1242
|
+
return this.displayedColumns.filter(x => x.property !== 'select');
|
|
1243
|
+
}
|
|
1244
|
+
get displayCheckbox() {
|
|
1245
|
+
return this.haveCheckbox;
|
|
1246
|
+
}
|
|
1247
|
+
capitalize = capitalize;
|
|
1248
|
+
TableDisplayColumnType = TableDisplayColumnType;
|
|
1249
|
+
NumberOperator = NumberOperator;
|
|
1250
|
+
ActionType = ActionType;
|
|
1251
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CustomTableComponent, deps: [{ token: TranslateWrapperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1252
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: CustomTableComponent, isStandalone: true, selector: "custom-table", inputs: { id: "id", title: "title", icon: "icon", actions: "actions", customActions: "customActions", allowedRoles: "allowedRoles", haveCheckbox: "haveCheckbox", displayedColumns: "displayedColumns", dataSource: "dataSource", paginationSizeOptions: "paginationSizeOptions", initialPageSize: "initialPageSize", specificSelectRow: "specificSelectRow", hasFilter: "hasFilter", expandableRows: "expandableRows", expandedItem: "expandedItem", emptyMessage: "emptyMessage", isLoading: "isLoading", separateFilters: "separateFilters", showPaginator: "showPaginator", noTableDataMessage: "noTableDataMessage", actionsMenuEnabled: "actionsMenuEnabled", totalElements: "totalElements", serverSideFiltering: "serverSideFiltering", disableHeader: "disableHeader" }, outputs: { delete: "delete", approve: "approve", reject: "reject", extend: "extend", add: "add", clicked: "clicked", queryChange: "queryChange" }, queries: [{ propertyName: "actionsTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "paginatorRef", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "allFilterInput", first: true, predicate: ["allFilterInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"table-div px-4 mx-4\">\n <mat-card\n appearance=\"outlined\"\n class=\"px-0 table-card\"\n [ngClass]=\"[actions.length === 0 ? 'pt-2' : 'pb-0']\"\n style=\"border-color: var(--accent-darker-color)\">\n @if (!disableHeader) {\n <mat-card-header\n class=\"d-flex justify-content-between align-items-center table-header\"\n [ngClass]=\"[actions.length === 0 ? 'pb-3' : 'pb-0']\">\n <div class=\"d-flex align-items-center\">\n @if (icon) {\n <mat-icon fontSet=\"material-icons-outlined\" class=\"table-header-icon ml-3\">\n {{ icon }}\n </mat-icon>\n }\n <h6 class=\"ml-2 table-title\">{{ title | async | capitalize }}</h6>\n </div>\n <div class=\"d-flex align-items-center action-buttons-group pr-2\">\n @if (actions.includes(ActionType.ADD)) {\n <button\n mat-flat-button\n color=\"primary\"\n class=\"action-btn action-btn--add\"\n (click)=\"addAction()\">\n <mat-icon class=\"btn-icon\">add</mat-icon>\n <span>{{ 'actions.add' | translate | capitalize }}</span>\n </button>\n }\n @if (displayCheckbox) {\n @if (actions.includes(ActionType.APPROVE)) {\n <button\n mat-stroked-button\n class=\"action-btn action-btn--approve\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"approveAction()\">\n <mat-icon class=\"btn-icon\">check_circle_outline</mat-icon>\n <span>{{ 'actions.approve' | translate | capitalize }}</span>\n </button>\n }\n @if (actions.includes(ActionType.REJECT)) {\n <button\n mat-stroked-button\n class=\"action-btn action-btn--reject\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"rejectAction()\">\n <mat-icon class=\"btn-icon\">cancel</mat-icon>\n <span>{{ 'actions.reject' | translate | capitalize }}</span>\n </button>\n }\n @if (actions.includes(ActionType.EXTEND)) {\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"action-btn\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"extendAction()\">\n <mat-icon class=\"btn-icon extend-icon\">call_missed</mat-icon>\n <span>{{ 'actions.extend' | translate | capitalize }}</span>\n </button>\n }\n @if (actions.includes(ActionType.DELETE)) {\n <button\n mat-stroked-button\n class=\"action-btn action-btn--delete\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"deleteAction()\">\n <mat-icon class=\"btn-icon\">delete_outline</mat-icon>\n <span>{{ 'actions.delete' | translate | capitalize }}</span>\n </button>\n }\n @for (custom of customActions; track custom) {\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"action-btn\"\n [disabled]=\"!hasSelectedRow || custom.disabled?.(selection)\"\n (click)=\"custom.clickFn(selection)\">\n <mat-icon class=\"btn-icon\">{{ custom.icon }}</mat-icon>\n <span>{{ custom.tooltipText | translate | capitalize }}</span>\n </button>\n }\n }\n @if (actionsMenuEnabled) {\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"action-btn\"\n [matMenuTriggerFor]=\"menu\">\n <span>{{\n 'names.action' | translate | pluralize | capitalize\n }}</span>\n <mat-icon class=\"btn-icon\">keyboard_arrow_down</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container\n *ngTemplateOutlet=\"\n actionsTemplate;\n context: {\n selection: selection,\n data: dataSource.data,\n selectedRows: selection.selected,\n }\n \"></ng-container>\n </mat-menu>\n }\n </div>\n </mat-card-header>\n }\n <mat-card-content>\n @if (!separateFilters) {\n <mat-form-field\n class=\"ml-4\"\n appearance=\"outline\"\n [ngStyle]=\"{ display: hasFilter ? '' : 'none' }\">\n <mat-icon class=\"filter p-0\" matSuffix>filter_alt</mat-icon>\n <mat-label>Filter</mat-label>\n <input\n #allFilterInput\n matInput\n (keyup)=\"applyFilterToAllColumns($event)\"\n placeholder=\"Sort On Any Field\" />\n </mat-form-field>\n } @else {\n <div class=\"separate-filters\">\n <form [formGroup]=\"filterByColumnFormGroup\" class=\"filters\">\n @for (filter of selectedFilters; track filter) {\n <div class=\"filter\">\n @if (\n filter.type === TableDisplayColumnType.HYPERLINK ||\n filter.type === TableDisplayColumnType.TEXT ||\n filter.type === TableDisplayColumnType.PHONE ||\n filter.type === TableDisplayColumnType.CLICK ||\n filter.type === TableDisplayColumnType.ARRAY\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n class=\"custom-input\"\n appearance=\"outline\">\n <mat-label>\n {{ filter.name | async | capitalize }}\n </mat-label>\n <input\n matInput\n type=\"text\"\n [formControlName]=\"filter.property\" />\n </mat-form-field>\n } @else {\n <button\n class=\"filter-button-trigger\"\n mat-stroked-button\n [matMenuTriggerFor]=\"dropdownMenu\">\n {{ filter.name | async | capitalize }}\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <mat-menu #dropdownMenu=\"matMenu\" class=\"custom-dropdown\">\n <div\n class=\"dropdown-content\"\n (click)=\"$event.stopPropagation()\">\n @if (filter.type === TableDisplayColumnType.BOOLEAN) {\n <mat-slide-toggle [formControlName]=\"filter.property\" />\n } @else if (\n filter.type === TableDisplayColumnType.NUMBER ||\n filter.type === TableDisplayColumnType.MONEY\n ) {\n <div\n class=\"number-content\"\n [formGroupName]=\"filter.property\">\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label>Operation type</mat-label>\n <mat-select formControlName=\"operation\">\n @for (\n operator of numberOperations;\n track operator\n ) {\n <mat-option [value]=\"operator.value\">\n {{ operator.label | async | capitalize }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (\n filterByColumnFormGroup.controls[filter.property]\n .value.operation &&\n filterByColumnFormGroup.controls[filter.property]\n .value.operation !== NumberOperator.BETWEEN\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label\n >{{\n 'operators.' +\n filterByColumnFormGroup.controls[\n filter.property\n ].value.operation\n | translate\n | capitalize\n }}\n </mat-label>\n <input\n formControlName=\"value\"\n matInput\n type=\"number\" />\n </mat-form-field>\n } @else if (\n filterByColumnFormGroup.controls[filter.property]\n .value.operation\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label\n >{{\n 'operators.minimum' | translate | capitalize\n }}\n </mat-label>\n <input\n formControlName=\"min\"\n matInput\n type=\"number\" />\n </mat-form-field>\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label\n >{{\n 'operators.maximum' | translate | capitalize\n }}\n </mat-label>\n <input\n formControlName=\"max\"\n matInput\n type=\"number\" />\n </mat-form-field>\n }\n </div>\n } @else if (\n filter.type === TableDisplayColumnType.DATETIME ||\n filter.type === TableDisplayColumnType.DATE\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label>Enter a date range</mat-label>\n <mat-date-range-input\n [formGroupName]=\"filter.property\"\n [rangePicker]=\"picker\">\n <input\n matStartDate\n formControlName=\"start\"\n placeholder=\"Start date\" />\n <input\n matEndDate\n formControlName=\"end\"\n placeholder=\"End date\" />\n </mat-date-range-input>\n <mat-hint>MM/DD/YYYY \u2013 MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" />\n <mat-date-range-picker #picker />\n </mat-form-field>\n }\n </div>\n </mat-menu>\n }\n </div>\n }\n </form>\n </div>\n }\n @if (!isLoading) {\n @if (dataSource.filteredData.length > 0) {\n <table\n mat-table\n matSort\n [matSortActive]=\"initSortedCol?.property!\"\n [matSortDirection]=\"initSortedCol?.initSort!\"\n [multiTemplateDataRows]=\"expandableRows\"\n [dataSource]=\"dataSource\">\n <!-- Checkbox Column -->\n @if (displayCheckbox) {\n <ng-container matColumnDef=\"select\">\n <th\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n class=\"checkbox-header\"\n mat-header-cell\n *matHeaderCellDef>\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [aria-label]=\"checkboxLabel()\"\n color=\"primary\">\n </mat-checkbox>\n </th>\n <td\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n class=\"checkbox-cell\"\n mat-cell\n *matCellDef=\"let row\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\"\n [aria-label]=\"checkboxLabel(row)\"\n class=\"mt-2 mr-2\"\n color=\"primary\">\n </mat-checkbox>\n </td>\n </ng-container>\n }\n @for (column of displayedColumnsWithoutSelect; track column) {\n <ng-container matColumnDef=\"{{ column.property }}\">\n <th\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-header-cell\n *matHeaderCellDef>\n {{ column.name | async | capitalize }}\n </th>\n @if (column.dataCellTemplate !== undefined) {\n <td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n (click)=\"$event.stopPropagation()\">\n <ng-container\n *ngTemplateOutlet=\"\n column.dataCellTemplate;\n context: { $implicit: row, index }\n \" />\n </td>\n } @else if (column.type) {\n <ng-container>\n @switch (column.type) {\n @case (tableDisplayColumnType.ARRAY) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span>\n {{\n column.transformFn?.(row[column.property]) ??\n row[column.property].join(', ')\n }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.TEXT) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span\n [innerHTML]=\"\n column.transformFn?.(row[column.property]) ??\n row[column.property]\n \">\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.NUMBER) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span\n [innerHTML]=\"\n column.transformFn?.(row[column.property]) ??\n row[column.property]\n \">\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.TEXT_OBSERVABLES) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span>\n {{ row[column.property] | async | capitalize }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.BOOLEAN) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <mat-icon\n class=\"mt-2\"\n [matTooltip]=\"\n (row[column.property]\n ? 'names.active'\n : 'names.inactive'\n )\n | translate\n | capitalize\n \"\n matTooltipPosition=\"right\">\n {{ row[column.property] ? 'check' : 'close' }}\n </mat-icon>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.CLICK) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span (click)=\"clickedAction(row)\" class=\"link\">\n {{ row[column.property] }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.DATE) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n {{ row[column.property] | date: 'MMMM dd, yyyy' }}\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.DATETIME) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n {{\n row[column.property]\n | date: 'MMMM dd, yyyy h:mm a'\n }}\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.HYPERLINK) {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n <span\n class=\"link\"\n [routerLink]=\"getHyperlinkRoute(row, column)\"\n (click)=\"$event.stopPropagation()\">\n {{ row[column.property] }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.ICON) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <mat-icon\n [ngStyle]=\"{\n color:\n column.icons![row[column.property]].color,\n }\">\n {{ column.icons![row[column.property]].name }}\n </mat-icon>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.MONEY) {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n ${{ row[column.property] }}\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.PHONE) {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n @if (row[column.property].countryCode?.code) {\n <span>\n (+{{\n row[column.property].countryCode.code || ''\n }})\n </span>\n }\n {{\n formatPhoneNumber(\n row[column.property].phoneNumber\n )\n }}\n </td>\n </ng-container>\n }\n }\n </ng-container>\n } @else {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n {{ row[column.property] }}\n </td>\n </ng-container>\n }\n </ng-container>\n }\n <ng-container matColumnDef=\"expand\">\n <th\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n mat-header-cell\n *matHeaderCellDef\n aria-label=\"row actions\">\n \n </th>\n <td\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let element\">\n <button\n mat-icon-button\n aria-label=\"expand row\"\n (click)=\"\n expandedElement =\n expandedElement === element ? null : element;\n $event.stopPropagation()\n \">\n @if (expandedElement !== element) {\n <mat-icon> keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon> keyboard_arrow_up</mat-icon>\n }\n </button>\n </td>\n </ng-container>\n\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n class=\"ml-auto\"\n *matCellDef=\"let element\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n <div\n class=\"element-detail justify-content-center\"\n [@detailExpand]=\"\n element === expandedElement ? 'expanded' : 'collapsed'\n \">\n @if (expandedItem.type === 'image') {\n <img\n class=\"pb-4\"\n [src]=\"element[expandedItem.property]\"\n alt=\"\" />\n }\n </div>\n </td>\n </ng-container>\n\n @if (!expandableRows) {\n <ng-container>\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumnsProperty\"></tr>\n <tr\n mat-row\n *matRowDef=\"\n let row;\n columns: displayedColumnsProperty;\n let i = index\n \"\n (click)=\"selectRow(row)\"\n [ngClass]=\"getRowBackgroundColor(i)\"></tr>\n </ng-container>\n } @else {\n <ng-container>\n <tr\n mat-header-row\n *matHeaderRowDef=\"columnsToDisplayWithExpand\"></tr>\n <tr\n mat-row\n *matRowDef=\"\n let row;\n columns: columnsToDisplayWithExpand;\n let i = dataIndex\n \"\n [id]=\"i\"\n class=\"element-row\"\n [class.expanded-row]=\"expandedElement === row\"\n [ngClass]=\"getRowBackgroundColor(i)\"></tr>\n <tr\n mat-row\n *matRowDef=\"\n let row;\n columns: ['expandedDetail'];\n let i = dataIndex\n \"\n [id]=\"i\"\n [ngClass]=\"getRowBackgroundColor(i)\"\n [ngStyle]=\"{\n display: expandedElement === row ? 'contents' : 'none',\n }\"\n class=\"detail-row\"></tr>\n </ng-container>\n }\n\n <!-- Row shown when there is no matching data. -->\n @if (separateFilters && allFilterInput) {\n <div>\n <tr\n class=\"mat-row\"\n *matNoDataRow\n style=\"background: var(--accent-color)\">\n @if (separateFilters && allFilterInput) {\n <td\n class=\"mat-cell\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n No data matching the filter \"{{\n allFilterInput.nativeElement.value\n }}\"\n </td>\n } @else {\n <td\n class=\"mat-cell\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n {{ emptyMessage | async }}\n </td>\n }\n </tr>\n </div>\n }\n </table>\n } @else {\n <div class=\"no-data-found\">\n <mat-icon class=\"no-data-icon\">\n {{ dataSource.data.length > 0 ? 'search_off' : 'inbox' }}\n </mat-icon>\n <p class=\"no-data-text\">\n {{\n dataSource.data.length > 0\n ? ('messages.modifyFilter' | translate | capitalize)\n : noTableDataMessage\n }}\n </p>\n </div>\n }\n } @else {\n <div class=\"loading-container\">\n <mat-progress-spinner\n class=\"mx-auto\"\n [diameter]=\"32\"\n color=\"primary\"\n mode=\"indeterminate\" />\n </div>\n }\n @if (showPaginator) {\n <mat-paginator\n aria-label=\"Select page of users\"\n [ngClass]=\"getRowBackgroundColor(dataSource.data.length)\"\n [length]=\"totalElements ?? dataSource.data.length\"\n [pageSize]=\"initialPageSize\"\n [pageSizeOptions]=\"paginationSizeOptions\"\n (page)=\"onPageChange($event)\"\n showFirstLastButtons />\n }\n </mat-card-content>\n </mat-card>\n</div>\n", styles: ["@charset \"UTF-8\";:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}small,.small{font-size:.875em;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:\"\\2014\\a0\"}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-sm-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-md-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-lg-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#28a745e6;border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") right .75rem center/8px 10px no-repeat,#fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") center right 1.75rem/ calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#28a745}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#28a745}.was-validated .custom-control-input:valid~.custom-control-label:before,.custom-control-input.is-valid~.custom-control-label:before{border-color:#28a745}.was-validated .custom-control-input:valid:checked~.custom-control-label:before,.custom-control-input.is-valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus~.custom-control-label:before,.custom-control-input.is-valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #28a74540}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before{border-color:#28a745}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#dc3545e6;border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") right .75rem center/8px 10px no-repeat,#fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") center right 1.75rem/ calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid~.custom-control-label:before,.custom-control-input.is-invalid~.custom-control-label:before{border-color:#dc3545}.was-validated .custom-control-input:invalid:checked~.custom-control-label:before,.custom-control-input.is-invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus~.custom-control-label:before,.custom-control-input.is-invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #dc354540}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before{border-color:#dc3545}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem #007bff40}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem #268fff80}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #268fff80}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem #828a9180}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #828a9180}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem #48b46180}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #48b46180}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem #3ab0c380}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #3ab0c380}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem #deaa0c80}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #deaa0c80}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem #e1536180}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #e1536180}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem #d8d9db80}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem #52585d80}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #52585d80}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem #007bff80}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #007bff80}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem #6c757d80}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #6c757d80}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem #28a74580}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #28a74580}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem #17a2b880}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #17a2b880}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem #ffc10780}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ffc10780}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem #dc354580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #dc354580}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem #343a4080}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #343a4080}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width: 576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width: 768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width: 992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width: 1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width: 576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width: 768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width: 576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width: 768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width: 992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width: 1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width: 576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width: 768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width: 992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width: 1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;inset:0;z-index:1;pointer-events:auto;content:\"\";background-color:#0000}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width: 576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:hover,a.text-primary:focus{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:hover,a.text-success:focus{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:hover,a.text-info:focus{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:hover,a.text-light:focus{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:hover,a.text-dark:focus{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}:root{--swiper-theme-color: #007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;.swiper-slide,.swiper-cube-shadow{transform-style:preserve-3d}}.swiper-css-mode{>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}}>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{>.swiper-wrapper{scroll-snap-type:x mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{>.swiper-wrapper{scroll-snap-type:y mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{>.swiper-wrapper{scroll-snap-type:none}>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{>.swiper-wrapper:before{content:\"\";flex-shrink:0;order:9999}>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}}}.swiper-3d{.swiper-slide-shadow,.swiper-slide-shadow-left,.swiper-slide-shadow-right,.swiper-slide-shadow-top,.swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-slide-shadow{background:#00000026}.swiper-slide-shadow-left{background-image:linear-gradient(to left,#00000080,#0000)}.swiper-slide-shadow-right{background-image:linear-gradient(to right,#00000080,#0000)}.swiper-slide-shadow-top{background-image:linear-gradient(to top,#00000080,#0000)}.swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,#00000080,#0000)}}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper:not(.swiper-watch-progress),.swiper-watch-progress .swiper-slide-visible{.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}html{--mat-ripple-color: rgba(0, 0, 0, .1)}html{--mat-option-selected-state-label-text-color: #1b2535;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #f2f2f7;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-warn{--mat-option-selected-state-label-text-color: #f44336;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}html{--mat-full-pseudo-checkbox-selected-icon-color: #f2f2f7;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}html{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f2f2f7;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-primary{--mat-full-pseudo-checkbox-selected-icon-color: #1b2535;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-primary{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #1b2535;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-accent{--mat-full-pseudo-checkbox-selected-icon-color: #f2f2f7;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-accent{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f2f2f7;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-warn{--mat-full-pseudo-checkbox-selected-icon-color: #f44336;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-warn{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html{--mat-app-background-color: #fafafa;--mat-app-text-color: rgba(0, 0, 0, .87);--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mdc-elevated-card-container-shape: 4px}html{--mdc-outlined-card-container-shape: 4px;--mdc-outlined-card-outline-width: 1px}html{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}html{--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1b2535;--mdc-linear-progress-track-color: rgba(27, 37, 53, .25)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #f2f2f7;--mdc-linear-progress-track-color: rgba(242, 242, 247, .25)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}html{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px}html{--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px}html{--mdc-filled-text-field-caret-color: #1b2535;--mdc-filled-text-field-focus-active-indicator-color: #1b2535;--mdc-filled-text-field-focus-label-text-color: rgba(27, 37, 53, .87);--mdc-filled-text-field-container-color: rgb(244.8, 244.8, 244.8);--mdc-filled-text-field-disabled-container-color: rgb(249.9, 249.9, 249.9);--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color: #f44336;--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336}html{--mdc-outlined-text-field-caret-color: #1b2535;--mdc-outlined-text-field-focus-outline-color: #1b2535;--mdc-outlined-text-field-focus-label-text-color: rgba(27, 37, 53, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-error-hover-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336}html{--mat-form-field-focus-select-arrow-color: rgba(27, 37, 53, .87);--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38);--mat-form-field-state-layer-color: rgba(0, 0, 0, .87);--mat-form-field-error-text-color: #f44336;--mat-form-field-select-option-text-color: inherit;--mat-form-field-select-disabled-option-text-color: GrayText;--mat-form-field-leading-icon-color: unset;--mat-form-field-disabled-leading-icon-color: unset;--mat-form-field-trailing-icon-color: unset;--mat-form-field-disabled-trailing-icon-color: unset;--mat-form-field-error-focus-trailing-icon-color: unset;--mat-form-field-error-hover-trailing-icon-color: unset;--mat-form-field-error-trailing-icon-color: unset;--mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity: .04;--mat-form-field-focus-state-layer-opacity: .08}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #f2f2f7;--mdc-filled-text-field-focus-active-indicator-color: #f2f2f7;--mdc-filled-text-field-focus-label-text-color: rgba(242, 242, 247, .87)}.mat-mdc-form-field.mat-accent{--mdc-outlined-text-field-caret-color: #f2f2f7;--mdc-outlined-text-field-focus-outline-color: #f2f2f7;--mdc-outlined-text-field-focus-label-text-color: rgba(242, 242, 247, .87)}.mat-mdc-form-field.mat-accent{--mat-form-field-focus-select-arrow-color: rgba(242, 242, 247, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn{--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn{--mat-form-field-focus-select-arrow-color: rgba(244, 67, 54, .87)}html{--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}html{--mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(27, 37, 53, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(242, 242, 247, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-select-arrow-transform: translateY(-8px)}html{--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-autocomplete-background-color: white}html{--mdc-dialog-container-shape: 4px}html{--mat-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width: 80vw;--mat-dialog-container-small-max-width: 80vw;--mat-dialog-container-min-width: 0;--mat-dialog-actions-alignment: start;--mat-dialog-actions-padding: 8px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px;--mat-dialog-headline-padding: 0 24px 9px}html{--mdc-dialog-container-color: white;--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-container-shape-radius: 16px;--mdc-chip-with-avatar-avatar-shape-radius: 14px;--mdc-chip-with-avatar-avatar-size: 28px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 0;--mdc-chip-outline-color: transparent;--mdc-chip-disabled-outline-color: transparent;--mdc-chip-focus-outline-color: transparent;--mdc-chip-hover-state-layer-opacity: .04;--mdc-chip-with-avatar-disabled-avatar-opacity: 1;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-selected-hover-state-layer-opacity: .04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;--mdc-chip-with-icon-disabled-icon-opacity: 1}.mat-mdc-standard-chip{--mat-chip-disabled-container-opacity: .4;--mat-chip-trailing-action-opacity: .54;--mat-chip-trailing-action-focus-opacity: 1;--mat-chip-trailing-action-state-layer-color: transparent;--mat-chip-selected-trailing-action-state-layer-color: transparent;--mat-chip-trailing-action-hover-state-layer-opacity: 0;--mat-chip-trailing-action-focus-state-layer-opacity: 0}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-disabled-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-flat-disabled-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-selected-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip{--mat-chip-selected-disabled-trailing-icon-color: #212121;--mat-chip-selected-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #1b2535;--mdc-chip-elevated-selected-container-color: #1b2535;--mdc-chip-elevated-disabled-container-color: #1b2535;--mdc-chip-flat-disabled-selected-container-color: #1b2535;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: black;--mdc-chip-elevated-container-color: #f2f2f7;--mdc-chip-elevated-selected-container-color: #f2f2f7;--mdc-chip-elevated-disabled-container-color: #f2f2f7;--mdc-chip-flat-disabled-selected-container-color: #f2f2f7;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: black;--mdc-chip-selected-label-text-color: black;--mdc-chip-with-icon-icon-color: black;--mdc-chip-with-icon-disabled-icon-color: black;--mdc-chip-with-icon-selected-icon-color: black;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: black;--mdc-chip-with-trailing-icon-trailing-icon-color: black}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mat-chip-selected-disabled-trailing-icon-color: black;--mat-chip-selected-trailing-icon-color: black}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-selected-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-flat-disabled-selected-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}html{--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-height: 20px;--mdc-switch-handle-shape: 10px;--mdc-switch-handle-width: 20px;--mdc-switch-selected-icon-size: 18px;--mdc-switch-track-height: 14px;--mdc-switch-track-shape: 7px;--mdc-switch-track-width: 36px;--mdc-switch-unselected-icon-size: 18px;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .04;--mdc-switch-selected-pressed-state-layer-opacity: .1;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .04;--mdc-switch-unselected-pressed-state-layer-opacity: .1}html .mat-mdc-slide-toggle{--mat-switch-disabled-selected-handle-opacity: .38;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 20px;--mat-switch-selected-handle-size: 20px;--mat-switch-pressed-handle-size: 20px;--mat-switch-with-icon-handle-size: 20px;--mat-switch-selected-handle-horizontal-margin: 0;--mat-switch-selected-with-icon-handle-horizontal-margin: 0;--mat-switch-selected-pressed-handle-horizontal-margin: 0;--mat-switch-unselected-handle-horizontal-margin: 0;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0;--mat-switch-unselected-pressed-handle-horizontal-margin: 0;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 1;--mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width: 1px;--mat-switch-track-outline-color: transparent;--mat-switch-selected-track-outline-width: 1px;--mat-switch-selected-track-outline-color: transparent;--mat-switch-disabled-unselected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-color: transparent}html{--mdc-switch-selected-focus-state-layer-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-handle-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-hover-state-layer-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-pressed-state-layer-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-focus-handle-color: black;--mdc-switch-selected-hover-handle-color: black;--mdc-switch-selected-pressed-handle-color: black;--mdc-switch-selected-focus-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-selected-hover-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-selected-pressed-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-selected-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: #fff;--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html .mat-mdc-slide-toggle{--mat-switch-label-text-color: rgba(0, 0, 0, .87)}html .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-handle-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-hover-state-layer-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-pressed-state-layer-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-focus-handle-color: rgb(115.7142857143, 115.7142857143, 169.2857142857);--mdc-switch-selected-hover-handle-color: rgb(115.7142857143, 115.7142857143, 169.2857142857);--mdc-switch-selected-pressed-handle-color: rgb(115.7142857143, 115.7142857143, 169.2857142857);--mdc-switch-selected-focus-track-color: white;--mdc-switch-selected-hover-track-color: white;--mdc-switch-selected-pressed-track-color: white;--mdc-switch-selected-track-color: white}html .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}html{--mdc-switch-state-layer-size: 40px}html{--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mdc-radio-state-layer-size: 40px}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #1b2535;--mdc-radio-selected-hover-icon-color: #1b2535;--mdc-radio-selected-icon-color: #1b2535;--mdc-radio-selected-pressed-icon-color: #1b2535}.mat-mdc-radio-button.mat-primary{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #1b2535;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f2f2f7;--mdc-radio-selected-hover-icon-color: #f2f2f7;--mdc-radio-selected-icon-color: #f2f2f7;--mdc-radio-selected-pressed-icon-color: #f2f2f7}.mat-mdc-radio-button.mat-accent{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f2f2f7;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-radio-button.mat-warn{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}html{--mdc-radio-state-layer-size: 40px}html{--mat-radio-touch-target-display: block}html{--mdc-slider-active-track-height: 6px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 50%;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .6;--mdc-slider-with-tick-marks-container-shape: 50%;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .6;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mat-slider-value-indicator-width: auto;--mat-slider-value-indicator-height: 32px;--mat-slider-value-indicator-caret-display: block;--mat-slider-value-indicator-border-radius: 4px;--mat-slider-value-indicator-padding: 0 12px;--mat-slider-value-indicator-text-transform: none;--mat-slider-value-indicator-container-transform: translateX(-50%)}html{--mdc-slider-handle-color: #1b2535;--mdc-slider-focus-handle-color: #1b2535;--mdc-slider-hover-handle-color: #1b2535;--mdc-slider-active-track-color: #1b2535;--mdc-slider-inactive-track-color: #1b2535;--mdc-slider-with-tick-marks-inactive-container-color: #1b2535;--mdc-slider-with-tick-marks-active-container-color: white;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-label-container-color: #000;--mdc-slider-label-label-text-color: #fff;--mdc-slider-with-overlap-handle-outline-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #000}html{--mat-slider-ripple-color: #1b2535;--mat-slider-hover-state-layer-color: rgba(27, 37, 53, .05);--mat-slider-focus-state-layer-color: rgba(27, 37, 53, .2);--mat-slider-value-indicator-opacity: .6}html .mat-accent{--mdc-slider-handle-color: #f2f2f7;--mdc-slider-focus-handle-color: #f2f2f7;--mdc-slider-hover-handle-color: #f2f2f7;--mdc-slider-active-track-color: #f2f2f7;--mdc-slider-inactive-track-color: #f2f2f7;--mdc-slider-with-tick-marks-inactive-container-color: #f2f2f7;--mdc-slider-with-tick-marks-active-container-color: black}html .mat-accent{--mat-slider-ripple-color: #f2f2f7;--mat-slider-hover-state-layer-color: rgba(242, 242, 247, .05);--mat-slider-focus-state-layer-color: rgba(242, 242, 247, .2)}html .mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: white}html .mat-warn{--mat-slider-ripple-color: #f44336;--mat-slider-hover-state-layer-color: rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color: rgba(244, 67, 54, .2)}html{--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 0;--mat-menu-divider-top-spacing: 0;--mat-menu-item-spacing: 16px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 16px;--mat-menu-item-trailing-spacing: 16px;--mat-menu-item-with-icon-leading-spacing: 16px;--mat-menu-item-with-icon-trailing-spacing: 16px;--mat-menu-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white;--mat-menu-divider-color: rgba(0, 0, 0, .12)}html{--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 50%;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-selected-container-color: transparent;--mdc-list-list-item-leading-avatar-color: transparent;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-state-layer-color: transparent;--mdc-list-list-item-disabled-state-layer-opacity: 0;--mdc-list-list-item-disabled-label-text-opacity: .38;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38}html{--mat-list-active-indicator-color: transparent;--mat-list-active-indicator-shape: 4px}html{--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}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #1b2535;--mdc-radio-selected-hover-icon-color: #1b2535;--mdc-radio-selected-icon-color: #1b2535;--mdc-radio-selected-pressed-icon-color: #1b2535}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f2f2f7;--mdc-radio-selected-hover-icon-color: #f2f2f7;--mdc-radio-selected-icon-color: #f2f2f7;--mdc-radio-selected-pressed-icon-color: #f2f2f7}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #1b2535;--mdc-checkbox-selected-hover-icon-color: #1b2535;--mdc-checkbox-selected-icon-color: #1b2535;--mdc-checkbox-selected-pressed-icon-color: #1b2535;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #1b2535;--mdc-checkbox-selected-hover-state-layer-color: #1b2535;--mdc-checkbox-selected-pressed-state-layer-color: #1b2535;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #f2f2f7;--mdc-checkbox-selected-hover-icon-color: #f2f2f7;--mdc-checkbox-selected-icon-color: #f2f2f7;--mdc-checkbox-selected-pressed-icon-color: #f2f2f7;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f2f2f7;--mdc-checkbox-selected-hover-state-layer-color: #f2f2f7;--mdc-checkbox-selected-pressed-state-layer-color: #f2f2f7;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.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--selected .mdc-list-item__start,.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--activated .mdc-list-item__start{color:#1b2535}.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}html{--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}html{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-state-layer-size: 40px}.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}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block}html{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0}html{--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #1b2535}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #1b2535;--mat-tab-header-active-ripple-color: #1b2535;--mat-tab-header-inactive-ripple-color: #1b2535;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #1b2535;--mat-tab-header-active-hover-label-text-color: #1b2535;--mat-tab-header-active-focus-indicator-color: #1b2535;--mat-tab-header-active-hover-indicator-color: #1b2535}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #f2f2f7}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f2f2f7;--mat-tab-header-active-ripple-color: #f2f2f7;--mat-tab-header-inactive-ripple-color: #f2f2f7;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f2f2f7;--mat-tab-header-active-hover-label-text-color: #f2f2f7;--mat-tab-header-active-focus-indicator-color: #f2f2f7;--mat-tab-header-active-hover-indicator-color: #f2f2f7}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #1b2535;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #f2f2f7;--mat-tab-header-with-background-foreground-color: black}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-state-layer-opacity: .16;--mdc-checkbox-selected-hover-state-layer-opacity: .04;--mdc-checkbox-selected-pressed-state-layer-opacity: .16;--mdc-checkbox-unselected-focus-state-layer-opacity: .16;--mdc-checkbox-unselected-hover-state-layer-opacity: .04;--mdc-checkbox-unselected-pressed-state-layer-opacity: .16}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #f2f2f7;--mdc-checkbox-selected-hover-icon-color: #f2f2f7;--mdc-checkbox-selected-icon-color: #f2f2f7;--mdc-checkbox-selected-pressed-icon-color: #f2f2f7;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f2f2f7;--mdc-checkbox-selected-hover-state-layer-color: #f2f2f7;--mdc-checkbox-selected-pressed-state-layer-color: #f2f2f7;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html{--mat-checkbox-disabled-label-color: rgba(0, 0, 0, .38);--mat-checkbox-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #1b2535;--mdc-checkbox-selected-hover-icon-color: #1b2535;--mdc-checkbox-selected-icon-color: #1b2535;--mdc-checkbox-selected-pressed-icon-color: #1b2535;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #1b2535;--mdc-checkbox-selected-hover-state-layer-color: #1b2535;--mdc-checkbox-selected-pressed-state-layer-color: #1b2535;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html{--mdc-checkbox-state-layer-size: 40px}html{--mat-checkbox-touch-target-display: block}html{--mdc-text-button-container-shape: 4px;--mdc-text-button-keep-touch-target: false}html{--mdc-filled-button-container-shape: 4px;--mdc-filled-button-keep-touch-target: false}html{--mdc-protected-button-container-shape: 4px;--mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mdc-outlined-button-keep-touch-target: false;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 4px}html{--mat-text-button-horizontal-padding: 8px;--mat-text-button-with-icon-horizontal-padding: 8px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: 0}html{--mat-filled-button-horizontal-padding: 16px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -4px}html{--mat-protected-button-horizontal-padding: 16px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -4px}html{--mat-outlined-button-horizontal-padding: 15px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -4px}html{--mdc-text-button-label-text-color: black;--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html{--mat-text-button-state-layer-color: black;--mat-text-button-disabled-state-layer-color: black;--mat-text-button-ripple-color: rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity: .04;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12}html{--mdc-filled-button-container-color: white;--mdc-filled-button-label-text-color: black;--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html{--mat-filled-button-state-layer-color: black;--mat-filled-button-disabled-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity: .04;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12}html{--mdc-protected-button-container-color: white;--mdc-protected-button-label-text-color: black;--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html{--mat-protected-button-state-layer-color: black;--mat-protected-button-disabled-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity: .04;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12}html{--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color: black;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}html{--mat-outlined-button-state-layer-color: black;--mat-outlined-button-disabled-state-layer-color: black;--mat-outlined-button-ripple-color: rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity: .04;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1b2535}.mat-mdc-button.mat-primary{--mat-text-button-state-layer-color: #1b2535;--mat-text-button-ripple-color: rgba(27, 37, 53, .1)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #f2f2f7}.mat-mdc-button.mat-accent{--mat-text-button-state-layer-color: #f2f2f7;--mat-text-button-ripple-color: rgba(242, 242, 247, .1)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button.mat-warn{--mat-text-button-state-layer-color: #f44336;--mat-text-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1b2535;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-primary{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #f2f2f7;--mdc-filled-button-label-text-color: black}.mat-mdc-unelevated-button.mat-accent{--mat-filled-button-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-warn{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1b2535;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-primary{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #f2f2f7;--mdc-protected-button-label-text-color: black}.mat-mdc-raised-button.mat-accent{--mat-protected-button-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-warn{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1b2535;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-primary{--mat-outlined-button-state-layer-color: #1b2535;--mat-outlined-button-ripple-color: rgba(27, 37, 53, .1)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #f2f2f7;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-accent{--mat-outlined-button-state-layer-color: #f2f2f7;--mat-outlined-button-ripple-color: rgba(242, 242, 247, .1)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-warn{--mat-outlined-button-state-layer-color: #f44336;--mat-outlined-button-ripple-color: rgba(244, 67, 54, .1)}html{--mdc-text-button-container-height: 36px}html{--mdc-filled-button-container-height: 36px}html{--mdc-protected-button-container-height: 36px}html{--mdc-outlined-button-container-height: 36px}html{--mat-text-button-touch-target-display: block}html{--mat-filled-button-touch-target-display: block}html{--mat-protected-button-touch-target-display: block}html{--mat-outlined-button-touch-target-display: block}html{--mdc-icon-button-icon-size: 24px}html{--mdc-icon-button-icon-color: inherit;--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}html{--mat-icon-button-state-layer-color: black;--mat-icon-button-disabled-state-layer-color: black;--mat-icon-button-ripple-color: rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity: .04;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12}html .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1b2535}html .mat-mdc-icon-button.mat-primary{--mat-icon-button-state-layer-color: #1b2535;--mat-icon-button-ripple-color: rgba(27, 37, 53, .1)}html .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #f2f2f7}html .mat-mdc-icon-button.mat-accent{--mat-icon-button-state-layer-color: #f2f2f7;--mat-icon-button-ripple-color: rgba(242, 242, 247, .1)}html .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336}html .mat-mdc-icon-button.mat-warn{--mat-icon-button-state-layer-color: #f44336;--mat-icon-button-ripple-color: rgba(244, 67, 54, .1)}html{--mat-icon-button-touch-target-display: block}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html{--mdc-fab-container-shape: 50%;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mdc-fab-small-container-shape: 50%;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mdc-extended-fab-container-height: 48px;--mdc-extended-fab-container-shape: 24px;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mdc-fab-container-color: white}html{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-disabled-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity: .04;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html{--mdc-fab-small-container-color: white}html{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-disabled-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity: .04;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html .mat-mdc-fab.mat-primary{--mdc-fab-container-color: #1b2535}html .mat-mdc-fab.mat-primary{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-accent{--mdc-fab-container-color: #f2f2f7}html .mat-mdc-fab.mat-accent{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1)}html .mat-mdc-fab.mat-warn{--mdc-fab-container-color: #f44336}html .mat-mdc-fab.mat-warn{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-primary{--mdc-fab-small-container-color: #1b2535}html .mat-mdc-mini-fab.mat-primary{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-accent{--mdc-fab-small-container-color: #f2f2f7}html .mat-mdc-mini-fab.mat-accent{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1)}html .mat-mdc-mini-fab.mat-warn{--mdc-fab-small-container-color: #f44336}html .mat-mdc-mini-fab.mat-warn{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html{--mat-fab-touch-target-display: block}html{--mat-fab-small-touch-target-display: block}html{--mdc-snackbar-container-shape: 4px}html{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}html{--mat-snack-bar-button-color: rgb(105.275, 133.525, 178.725)}html{--mat-table-row-item-outline-width: 1px}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}html{--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px}html{--mdc-circular-progress-active-indicator-color: #1b2535}html .mat-accent{--mdc-circular-progress-active-indicator-color: #f2f2f7}html .mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}html{--mat-badge-container-shape: 50%;--mat-badge-container-size: unset;--mat-badge-small-size-container-size: unset;--mat-badge-large-size-container-size: unset;--mat-badge-legacy-container-size: 22px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 28px;--mat-badge-container-offset: -11px 0;--mat-badge-small-size-container-offset: -8px 0;--mat-badge-large-size-container-offset: -14px 0;--mat-badge-container-overlap-offset: -11px;--mat-badge-small-size-container-overlap-offset: -8px;--mat-badge-large-size-container-overlap-offset: -14px;--mat-badge-container-padding: 0;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0}html{--mat-badge-background-color: #1b2535;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #f2f2f7;--mat-badge-text-color: black}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-shape: 4px}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1}html{--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd}html{--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: rgb(224.4, 224.4, 224.4)}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-container-shape: 4px;--mat-datepicker-calendar-container-touch-shape: 4px;--mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #1b2535;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(27, 37, 53, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(27, 37, 53, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(27, 37, 53, .3);--mat-datepicker-toggle-active-state-icon-color: #1b2535;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(27, 37, 53, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032);--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color: black;--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: black;--mat-datepicker-calendar-date-selected-state-background-color: #f2f2f7;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(242, 242, 247, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: black;--mat-datepicker-calendar-date-focus-state-background-color: rgba(242, 242, 247, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(242, 242, 247, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(242, 242, 247, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #f2f2f7}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls{--mat-icon-button-touch-target-display: none}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html{--mat-divider-width: 1px}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape: 4px;--mat-expansion-legacy-header-indicator-display: inline-block;--mat-expansion-header-indicator-display: none}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #1b2535}.mat-icon.mat-accent{--mat-icon-color: #f2f2f7}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width: auto}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #1b2535;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #1b2535;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #1b2535;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: black;--mat-stepper-header-selected-state-icon-background-color: #f2f2f7;--mat-stepper-header-selected-state-icon-foreground-color: black;--mat-stepper-header-done-state-icon-background-color: #f2f2f7;--mat-stepper-header-done-state-icon-foreground-color: black;--mat-stepper-header-edit-state-icon-background-color: #f2f2f7;--mat-stepper-header-edit-state-icon-foreground-color: black}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}html{--mat-sort-arrow-color: rgb(117.3, 117.3, 117.3)}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #1b2535;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #f2f2f7;--mat-toolbar-container-text-color: black}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}html{--mat-tree-container-background-color: white;--mat-tree-node-text-color: rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height: 48px}html{--mat-timepicker-container-shape: 4px;--mat-timepicker-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-timepicker-container-background-color: white}:root{--primary-color: #1b2535;--primary-lighter-color: rgb(78.6375, 107.7625, 154.3625);--primary-darker-color: black;--accent-color: #f2f2f7;--accent-lighter-color: #f3f5f9;--accent-lightest-color: white;--accent-darker-color: rgb(178.8571428571, 178.8571428571, 208.1428571429);--warn-color: #f44336;--warn-lighter-color: #ef9a9a;--warn-darker-color: #d32f2f;--background-color: #f2f2f7;--border-color: #e1e1e1;--text-color: #4a5568}html,body{margin:0}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #fafafa inset!important;background-color:#fafafa!important}p{font:20px Roboto,Helvetica Neue,sans-serif}.w-max-content{width:max-content}.ud-text-theme-primary{color:#28db25}.ud-text-theme-primary-darker{color:#1c881a}.ud-text-primary,.ud-text-white{color:#f5f6f7}.ud-dashed-container{border:1px dashed #373f4c;border-radius:10px}.text-large{font-size:large}.text-small{font-size:small}.text-smaller{font-size:smaller}.bg-accent{background-color:var(--accent-color)}.bg-accent-lighter{background-color:var(--accent-lighter-color)}.bg-accent-lightest{background-color:var(--accent-lightest-color)}.pointer:hover{cursor:pointer;outline:1px solid var(--accent-color);background-color:var(--accent-lightest-color)}.custom-snackbar-container.mat-mdc-snack-bar-container{--mat-snack-bar-button-color: transparent;--mdc-snackbar-container-color: transparent !important;--mdc-snackbar-supporting-text-color: transparent;box-shadow:none!important;padding:0!important;margin:8px!important;background:transparent!important}.mat-mdc-snack-bar-container.custom-snackbar-container .mdc-snackbar__surface{background:transparent!important;background-color:transparent!important;box-shadow:none!important;padding:0!important}.mat-mdc-snack-bar-container.custom-snackbar-container .mat-mdc-snack-bar-label{padding:0!important;margin:0!important}.mat-mdc-snack-bar-container.custom-snackbar-container .mdc-snackbar__label{padding:0!important}.table-div{margin:20px}.table-div .separate-filters{display:flex;flex-direction:column}.table-div .separate-filters .filter-dropdown{width:fit-content}.table-div .separate-filters .filters{display:flex;flex-direction:row;gap:8px;margin:0 24px 1rem}.table-div .separate-filters .filters .filter .filter-button-trigger{display:flex;flex-direction:row-reverse;gap:1rem;border-radius:8px}.table-div .separate-filters .filters .filter mat-icon{margin-right:0!important}.table-div mat-card.table-card{border-radius:10px!important;overflow:hidden;box-shadow:0 2px 12px #373f4c1a!important;background:#fff!important}.table-div mat-card.table-card mat-card-header.table-header{padding:14px 16px 14px 12px;background:var(--accent-lightest-color);border-bottom:1px solid var(--accent-color);min-height:65px}.table-div mat-card.table-card mat-card-header.table-header ::ng-deep .mat-mdc-card-header-text{display:none}.table-div mat-card.table-card mat-card-header.table-header .table-header-icon{color:var(--primary-color);font-size:20px;width:20px;height:20px}.table-div mat-card.table-card mat-card-header.table-header .table-title{margin-bottom:0;font-size:.9375rem;font-weight:600;letter-spacing:.01em;color:#373f4c}.table-div mat-card.table-card mat-card-content{padding:0}.table-div mat-card.table-card mat-card-content .no-data-found{display:flex;flex-direction:column;justify-content:center;align-items:center;height:140px;gap:8px;background:#fff}.table-div mat-card.table-card mat-card-content .no-data-found .no-data-icon{font-size:40px;width:40px;height:40px;color:var(--accent-darker-color);opacity:.45}.table-div mat-card.table-card mat-card-content .no-data-found .no-data-text{font-size:.875rem;color:#373f4c80;margin:0}.table-div mat-card.table-card mat-card-content .loading-container{display:flex;justify-content:center;align-items:center;padding:32px;background:#fff}.table-div mat-card.table-card mat-card-content mat-paginator{border-radius:0 0 10px 10px;background-color:#dde3ec!important;border-top:1px solid #c8c8d4}.table-div .action-buttons-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.table-div tr td,.table-div tr th{border-bottom:1px solid var(--accent-color);color:#373f4c;padding:10px 8px}.table-div tr th{background-color:#dde3ec;font-weight:600;font-size:.9rem;letter-spacing:.05em}.table-div tr th:first-of-type,.table-div tr td:first-of-type{padding-left:20px}.table-div tr th:last-of-type,.table-div tr td:last-of-type{padding-right:20px}.action-btn{height:34px!important;min-width:0!important;padding:0 14px!important;border-radius:6px!important;font-size:13px!important;font-weight:500!important;letter-spacing:.02em;display:inline-flex!important;align-items:center!important;gap:4px}.action-btn .btn-icon{font-size:16px!important;width:16px!important;height:16px!important;line-height:16px!important;flex-shrink:0}.action-btn .extend-icon{transform:rotate(180deg)}.action-btn.action-btn--approve{color:#1c881a!important;border-color:#1c881a!important}.action-btn.action-btn--approve:not([disabled]):hover{background-color:#1c881a0f!important}.action-btn.action-btn--reject,.action-btn.action-btn--delete{color:#c62828!important;border-color:#c62828!important}.action-btn.action-btn--reject:not([disabled]):hover,.action-btn.action-btn--delete:not([disabled]):hover{background-color:#c628280f!important}.action-btn[disabled]{opacity:.45}table{width:100%}.mat-mdc-form-field{font-size:14px}.mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper{max-height:45px;padding-left:4px}.mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper [class^=mdc-notched-outline__]{border:none;border-bottom:1px solid #929293;border-radius:0}.mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper [class^=mdc-notched-outline__]:first-of-type{display:none}.mat-mdc-icon-button.mat-mdc-button-base{padding:10px}.spacer{flex:1 1 auto}.link{color:#459fff;font-weight:600;cursor:pointer}.filter{font-size:100%;border-top:.84375em solid rgba(0,0,0,0)}tr.detail-row{height:0}.element-row td{border-bottom-width:0}.element-detail{overflow:hidden;display:flex}.element-detail>img{max-height:100%}.element-symbol{font-weight:700;font-size:40px;line-height:normal}.element-description{padding:16px}.element-description-attribution{opacity:.5}.pills{display:flex;flex-direction:column;gap:16px;margin:8px 2px}.custom-input{--mat-form-field-container-height: 36px;--mat-form-field-container-vertical-padding: 8px;--mdc-outlined-text-field-container-shape: 8px;--mdc-outlined-text-field-outline-color: var( --mdc-outlined-button-outline-color )}.custom-input ::ng-deep .mat-mdc-text-field-wrapper{max-height:36px}.custom-input ::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:auto}.custom-input ::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-input-element{padding-left:12px}::ng-deep .custom-dropdown{min-width:400px!important;min-height:150px!important;max-width:650px!important;width:auto!important;max-height:none!important;overflow:visible!important}::ng-deep .custom-dropdown .mat-mdc-menu-content{padding:18px 12px;border-radius:8px;width:100%;box-sizing:border-box}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content{box-sizing:border-box}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content .string-content{display:flex;gap:1rem}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-form-field{width:100%}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-form-field .mat-mdc-form-field{font-size:14px}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-form-field input{width:100%;box-sizing:border-box}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-slide-toggle{margin:8px 0}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content .number-content{display:flex;gap:8px;width:100%}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content .number-content mat-select{width:100%}\n"], dependencies: [{ kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "pipe", type: PluralizePipe, name: "pluralize" }], animations: [
|
|
1253
|
+
trigger('detailExpand', [
|
|
1254
|
+
state('collapsed, void', style({ height: '0px', minHeight: '0' })),
|
|
1255
|
+
state('expanded', style({ height: '*' })),
|
|
1256
|
+
transition('* <=> *', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
1257
|
+
]),
|
|
1258
|
+
] });
|
|
1259
|
+
}
|
|
1260
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: CustomTableComponent, decorators: [{
|
|
1261
|
+
type: Component,
|
|
1262
|
+
args: [{ selector: 'custom-table', animations: [
|
|
1263
|
+
trigger('detailExpand', [
|
|
1264
|
+
state('collapsed, void', style({ height: '0px', minHeight: '0' })),
|
|
1265
|
+
state('expanded', style({ height: '*' })),
|
|
1266
|
+
transition('* <=> *', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
1267
|
+
]),
|
|
1268
|
+
], imports: [
|
|
1269
|
+
MatPaginator,
|
|
1270
|
+
NgClass,
|
|
1271
|
+
MatProgressSpinner,
|
|
1272
|
+
CapitalizePipe,
|
|
1273
|
+
TranslatePipe,
|
|
1274
|
+
MatIcon,
|
|
1275
|
+
AsyncPipe,
|
|
1276
|
+
MatRow,
|
|
1277
|
+
MatHeaderRow,
|
|
1278
|
+
MatCell,
|
|
1279
|
+
MatColumnDef,
|
|
1280
|
+
MatIconButton,
|
|
1281
|
+
MatHeaderCell,
|
|
1282
|
+
MatMenu,
|
|
1283
|
+
MatCellDef,
|
|
1284
|
+
NgStyle,
|
|
1285
|
+
DatePipe,
|
|
1286
|
+
MatTooltip,
|
|
1287
|
+
MatHeaderCellDef,
|
|
1288
|
+
MatCheckbox,
|
|
1289
|
+
MatTable,
|
|
1290
|
+
MatSort,
|
|
1291
|
+
MatDatepickerToggle,
|
|
1292
|
+
MatDateRangePicker,
|
|
1293
|
+
MatHint,
|
|
1294
|
+
MatDateRangeInput,
|
|
1295
|
+
MatLabel,
|
|
1296
|
+
MatSlideToggle,
|
|
1297
|
+
ReactiveFormsModule,
|
|
1298
|
+
MatButton,
|
|
1299
|
+
MatMenuTrigger,
|
|
1300
|
+
MatSelect,
|
|
1301
|
+
MatFormField,
|
|
1302
|
+
MatInput,
|
|
1303
|
+
MatSuffix,
|
|
1304
|
+
MatCardContent,
|
|
1305
|
+
MatCardHeader,
|
|
1306
|
+
MatCard,
|
|
1307
|
+
MatOption,
|
|
1308
|
+
NgTemplateOutlet,
|
|
1309
|
+
RouterLink,
|
|
1310
|
+
MatHeaderRowDef,
|
|
1311
|
+
MatRowDef,
|
|
1312
|
+
MatDatepickerModule,
|
|
1313
|
+
PluralizePipe,
|
|
1314
|
+
], template: "<div class=\"table-div px-4 mx-4\">\n <mat-card\n appearance=\"outlined\"\n class=\"px-0 table-card\"\n [ngClass]=\"[actions.length === 0 ? 'pt-2' : 'pb-0']\"\n style=\"border-color: var(--accent-darker-color)\">\n @if (!disableHeader) {\n <mat-card-header\n class=\"d-flex justify-content-between align-items-center table-header\"\n [ngClass]=\"[actions.length === 0 ? 'pb-3' : 'pb-0']\">\n <div class=\"d-flex align-items-center\">\n @if (icon) {\n <mat-icon fontSet=\"material-icons-outlined\" class=\"table-header-icon ml-3\">\n {{ icon }}\n </mat-icon>\n }\n <h6 class=\"ml-2 table-title\">{{ title | async | capitalize }}</h6>\n </div>\n <div class=\"d-flex align-items-center action-buttons-group pr-2\">\n @if (actions.includes(ActionType.ADD)) {\n <button\n mat-flat-button\n color=\"primary\"\n class=\"action-btn action-btn--add\"\n (click)=\"addAction()\">\n <mat-icon class=\"btn-icon\">add</mat-icon>\n <span>{{ 'actions.add' | translate | capitalize }}</span>\n </button>\n }\n @if (displayCheckbox) {\n @if (actions.includes(ActionType.APPROVE)) {\n <button\n mat-stroked-button\n class=\"action-btn action-btn--approve\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"approveAction()\">\n <mat-icon class=\"btn-icon\">check_circle_outline</mat-icon>\n <span>{{ 'actions.approve' | translate | capitalize }}</span>\n </button>\n }\n @if (actions.includes(ActionType.REJECT)) {\n <button\n mat-stroked-button\n class=\"action-btn action-btn--reject\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"rejectAction()\">\n <mat-icon class=\"btn-icon\">cancel</mat-icon>\n <span>{{ 'actions.reject' | translate | capitalize }}</span>\n </button>\n }\n @if (actions.includes(ActionType.EXTEND)) {\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"action-btn\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"extendAction()\">\n <mat-icon class=\"btn-icon extend-icon\">call_missed</mat-icon>\n <span>{{ 'actions.extend' | translate | capitalize }}</span>\n </button>\n }\n @if (actions.includes(ActionType.DELETE)) {\n <button\n mat-stroked-button\n class=\"action-btn action-btn--delete\"\n [disabled]=\"!hasSelectedRow\"\n (click)=\"deleteAction()\">\n <mat-icon class=\"btn-icon\">delete_outline</mat-icon>\n <span>{{ 'actions.delete' | translate | capitalize }}</span>\n </button>\n }\n @for (custom of customActions; track custom) {\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"action-btn\"\n [disabled]=\"!hasSelectedRow || custom.disabled?.(selection)\"\n (click)=\"custom.clickFn(selection)\">\n <mat-icon class=\"btn-icon\">{{ custom.icon }}</mat-icon>\n <span>{{ custom.tooltipText | translate | capitalize }}</span>\n </button>\n }\n }\n @if (actionsMenuEnabled) {\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"action-btn\"\n [matMenuTriggerFor]=\"menu\">\n <span>{{\n 'names.action' | translate | pluralize | capitalize\n }}</span>\n <mat-icon class=\"btn-icon\">keyboard_arrow_down</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container\n *ngTemplateOutlet=\"\n actionsTemplate;\n context: {\n selection: selection,\n data: dataSource.data,\n selectedRows: selection.selected,\n }\n \"></ng-container>\n </mat-menu>\n }\n </div>\n </mat-card-header>\n }\n <mat-card-content>\n @if (!separateFilters) {\n <mat-form-field\n class=\"ml-4\"\n appearance=\"outline\"\n [ngStyle]=\"{ display: hasFilter ? '' : 'none' }\">\n <mat-icon class=\"filter p-0\" matSuffix>filter_alt</mat-icon>\n <mat-label>Filter</mat-label>\n <input\n #allFilterInput\n matInput\n (keyup)=\"applyFilterToAllColumns($event)\"\n placeholder=\"Sort On Any Field\" />\n </mat-form-field>\n } @else {\n <div class=\"separate-filters\">\n <form [formGroup]=\"filterByColumnFormGroup\" class=\"filters\">\n @for (filter of selectedFilters; track filter) {\n <div class=\"filter\">\n @if (\n filter.type === TableDisplayColumnType.HYPERLINK ||\n filter.type === TableDisplayColumnType.TEXT ||\n filter.type === TableDisplayColumnType.PHONE ||\n filter.type === TableDisplayColumnType.CLICK ||\n filter.type === TableDisplayColumnType.ARRAY\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n class=\"custom-input\"\n appearance=\"outline\">\n <mat-label>\n {{ filter.name | async | capitalize }}\n </mat-label>\n <input\n matInput\n type=\"text\"\n [formControlName]=\"filter.property\" />\n </mat-form-field>\n } @else {\n <button\n class=\"filter-button-trigger\"\n mat-stroked-button\n [matMenuTriggerFor]=\"dropdownMenu\">\n {{ filter.name | async | capitalize }}\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <mat-menu #dropdownMenu=\"matMenu\" class=\"custom-dropdown\">\n <div\n class=\"dropdown-content\"\n (click)=\"$event.stopPropagation()\">\n @if (filter.type === TableDisplayColumnType.BOOLEAN) {\n <mat-slide-toggle [formControlName]=\"filter.property\" />\n } @else if (\n filter.type === TableDisplayColumnType.NUMBER ||\n filter.type === TableDisplayColumnType.MONEY\n ) {\n <div\n class=\"number-content\"\n [formGroupName]=\"filter.property\">\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label>Operation type</mat-label>\n <mat-select formControlName=\"operation\">\n @for (\n operator of numberOperations;\n track operator\n ) {\n <mat-option [value]=\"operator.value\">\n {{ operator.label | async | capitalize }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (\n filterByColumnFormGroup.controls[filter.property]\n .value.operation &&\n filterByColumnFormGroup.controls[filter.property]\n .value.operation !== NumberOperator.BETWEEN\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label\n >{{\n 'operators.' +\n filterByColumnFormGroup.controls[\n filter.property\n ].value.operation\n | translate\n | capitalize\n }}\n </mat-label>\n <input\n formControlName=\"value\"\n matInput\n type=\"number\" />\n </mat-form-field>\n } @else if (\n filterByColumnFormGroup.controls[filter.property]\n .value.operation\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label\n >{{\n 'operators.minimum' | translate | capitalize\n }}\n </mat-label>\n <input\n formControlName=\"min\"\n matInput\n type=\"number\" />\n </mat-form-field>\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label\n >{{\n 'operators.maximum' | translate | capitalize\n }}\n </mat-label>\n <input\n formControlName=\"max\"\n matInput\n type=\"number\" />\n </mat-form-field>\n }\n </div>\n } @else if (\n filter.type === TableDisplayColumnType.DATETIME ||\n filter.type === TableDisplayColumnType.DATE\n ) {\n <mat-form-field\n subscriptSizing=\"dynamic\"\n appearance=\"outline\">\n <mat-label>Enter a date range</mat-label>\n <mat-date-range-input\n [formGroupName]=\"filter.property\"\n [rangePicker]=\"picker\">\n <input\n matStartDate\n formControlName=\"start\"\n placeholder=\"Start date\" />\n <input\n matEndDate\n formControlName=\"end\"\n placeholder=\"End date\" />\n </mat-date-range-input>\n <mat-hint>MM/DD/YYYY \u2013 MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" />\n <mat-date-range-picker #picker />\n </mat-form-field>\n }\n </div>\n </mat-menu>\n }\n </div>\n }\n </form>\n </div>\n }\n @if (!isLoading) {\n @if (dataSource.filteredData.length > 0) {\n <table\n mat-table\n matSort\n [matSortActive]=\"initSortedCol?.property!\"\n [matSortDirection]=\"initSortedCol?.initSort!\"\n [multiTemplateDataRows]=\"expandableRows\"\n [dataSource]=\"dataSource\">\n <!-- Checkbox Column -->\n @if (displayCheckbox) {\n <ng-container matColumnDef=\"select\">\n <th\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n class=\"checkbox-header\"\n mat-header-cell\n *matHeaderCellDef>\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [aria-label]=\"checkboxLabel()\"\n color=\"primary\">\n </mat-checkbox>\n </th>\n <td\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n class=\"checkbox-cell\"\n mat-cell\n *matCellDef=\"let row\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\"\n [aria-label]=\"checkboxLabel(row)\"\n class=\"mt-2 mr-2\"\n color=\"primary\">\n </mat-checkbox>\n </td>\n </ng-container>\n }\n @for (column of displayedColumnsWithoutSelect; track column) {\n <ng-container matColumnDef=\"{{ column.property }}\">\n <th\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-header-cell\n *matHeaderCellDef>\n {{ column.name | async | capitalize }}\n </th>\n @if (column.dataCellTemplate !== undefined) {\n <td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n (click)=\"$event.stopPropagation()\">\n <ng-container\n *ngTemplateOutlet=\"\n column.dataCellTemplate;\n context: { $implicit: row, index }\n \" />\n </td>\n } @else if (column.type) {\n <ng-container>\n @switch (column.type) {\n @case (tableDisplayColumnType.ARRAY) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span>\n {{\n column.transformFn?.(row[column.property]) ??\n row[column.property].join(', ')\n }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.TEXT) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span\n [innerHTML]=\"\n column.transformFn?.(row[column.property]) ??\n row[column.property]\n \">\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.NUMBER) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span\n [innerHTML]=\"\n column.transformFn?.(row[column.property]) ??\n row[column.property]\n \">\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.TEXT_OBSERVABLES) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span>\n {{ row[column.property] | async | capitalize }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.BOOLEAN) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <mat-icon\n class=\"mt-2\"\n [matTooltip]=\"\n (row[column.property]\n ? 'names.active'\n : 'names.inactive'\n )\n | translate\n | capitalize\n \"\n matTooltipPosition=\"right\">\n {{ row[column.property] ? 'check' : 'close' }}\n </mat-icon>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.CLICK) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <span (click)=\"clickedAction(row)\" class=\"link\">\n {{ row[column.property] }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.DATE) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n {{ row[column.property] | date: 'MMMM dd, yyyy' }}\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.DATETIME) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n {{\n row[column.property]\n | date: 'MMMM dd, yyyy h:mm a'\n }}\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.HYPERLINK) {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n <span\n class=\"link\"\n [routerLink]=\"getHyperlinkRoute(row, column)\"\n (click)=\"$event.stopPropagation()\">\n {{ row[column.property] }}\n </span>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.ICON) {\n <ng-container>\n <td mat-cell *matCellDef=\"let row\">\n <mat-icon\n [ngStyle]=\"{\n color:\n column.icons![row[column.property]].color,\n }\">\n {{ column.icons![row[column.property]].name }}\n </mat-icon>\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.MONEY) {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n ${{ row[column.property] }}\n </td>\n </ng-container>\n }\n @case (tableDisplayColumnType.PHONE) {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n @if (row[column.property].countryCode?.code) {\n <span>\n (+{{\n row[column.property].countryCode.code || ''\n }})\n </span>\n }\n {{\n formatPhoneNumber(\n row[column.property].phoneNumber\n )\n }}\n </td>\n </ng-container>\n }\n }\n </ng-container>\n } @else {\n <ng-container>\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let row\">\n {{ row[column.property] }}\n </td>\n </ng-container>\n }\n </ng-container>\n }\n <ng-container matColumnDef=\"expand\">\n <th\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n mat-header-cell\n *matHeaderCellDef\n aria-label=\"row actions\">\n \n </th>\n <td\n [ngStyle]=\"{ width: actionColumnStyleWidth }\"\n mat-cell\n *matCellDef=\"let element\">\n <button\n mat-icon-button\n aria-label=\"expand row\"\n (click)=\"\n expandedElement =\n expandedElement === element ? null : element;\n $event.stopPropagation()\n \">\n @if (expandedElement !== element) {\n <mat-icon> keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon> keyboard_arrow_up</mat-icon>\n }\n </button>\n </td>\n </ng-container>\n\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n [ngStyle]=\"{ width: generalColumnStyleWidth }\"\n mat-cell\n class=\"ml-auto\"\n *matCellDef=\"let element\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n <div\n class=\"element-detail justify-content-center\"\n [@detailExpand]=\"\n element === expandedElement ? 'expanded' : 'collapsed'\n \">\n @if (expandedItem.type === 'image') {\n <img\n class=\"pb-4\"\n [src]=\"element[expandedItem.property]\"\n alt=\"\" />\n }\n </div>\n </td>\n </ng-container>\n\n @if (!expandableRows) {\n <ng-container>\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumnsProperty\"></tr>\n <tr\n mat-row\n *matRowDef=\"\n let row;\n columns: displayedColumnsProperty;\n let i = index\n \"\n (click)=\"selectRow(row)\"\n [ngClass]=\"getRowBackgroundColor(i)\"></tr>\n </ng-container>\n } @else {\n <ng-container>\n <tr\n mat-header-row\n *matHeaderRowDef=\"columnsToDisplayWithExpand\"></tr>\n <tr\n mat-row\n *matRowDef=\"\n let row;\n columns: columnsToDisplayWithExpand;\n let i = dataIndex\n \"\n [id]=\"i\"\n class=\"element-row\"\n [class.expanded-row]=\"expandedElement === row\"\n [ngClass]=\"getRowBackgroundColor(i)\"></tr>\n <tr\n mat-row\n *matRowDef=\"\n let row;\n columns: ['expandedDetail'];\n let i = dataIndex\n \"\n [id]=\"i\"\n [ngClass]=\"getRowBackgroundColor(i)\"\n [ngStyle]=\"{\n display: expandedElement === row ? 'contents' : 'none',\n }\"\n class=\"detail-row\"></tr>\n </ng-container>\n }\n\n <!-- Row shown when there is no matching data. -->\n @if (separateFilters && allFilterInput) {\n <div>\n <tr\n class=\"mat-row\"\n *matNoDataRow\n style=\"background: var(--accent-color)\">\n @if (separateFilters && allFilterInput) {\n <td\n class=\"mat-cell\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n No data matching the filter \"{{\n allFilterInput.nativeElement.value\n }}\"\n </td>\n } @else {\n <td\n class=\"mat-cell\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n {{ emptyMessage | async }}\n </td>\n }\n </tr>\n </div>\n }\n </table>\n } @else {\n <div class=\"no-data-found\">\n <mat-icon class=\"no-data-icon\">\n {{ dataSource.data.length > 0 ? 'search_off' : 'inbox' }}\n </mat-icon>\n <p class=\"no-data-text\">\n {{\n dataSource.data.length > 0\n ? ('messages.modifyFilter' | translate | capitalize)\n : noTableDataMessage\n }}\n </p>\n </div>\n }\n } @else {\n <div class=\"loading-container\">\n <mat-progress-spinner\n class=\"mx-auto\"\n [diameter]=\"32\"\n color=\"primary\"\n mode=\"indeterminate\" />\n </div>\n }\n @if (showPaginator) {\n <mat-paginator\n aria-label=\"Select page of users\"\n [ngClass]=\"getRowBackgroundColor(dataSource.data.length)\"\n [length]=\"totalElements ?? dataSource.data.length\"\n [pageSize]=\"initialPageSize\"\n [pageSizeOptions]=\"paginationSizeOptions\"\n (page)=\"onPageChange($event)\"\n showFirstLastButtons />\n }\n </mat-card-content>\n </mat-card>\n</div>\n", styles: ["@charset \"UTF-8\";:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}small,.small{font-size:.875em;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:\"\\2014\\a0\"}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-sm-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-md-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-lg-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#28a745e6;border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") right .75rem center/8px 10px no-repeat,#fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") center right 1.75rem/ calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#28a745}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#28a745}.was-validated .custom-control-input:valid~.custom-control-label:before,.custom-control-input.is-valid~.custom-control-label:before{border-color:#28a745}.was-validated .custom-control-input:valid:checked~.custom-control-label:before,.custom-control-input.is-valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus~.custom-control-label:before,.custom-control-input.is-valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #28a74540}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before{border-color:#28a745}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#dc3545e6;border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") right .75rem center/8px 10px no-repeat,#fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") center right 1.75rem/ calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid~.custom-control-label:before,.custom-control-input.is-invalid~.custom-control-label:before{border-color:#dc3545}.was-validated .custom-control-input:invalid:checked~.custom-control-label:before,.custom-control-input.is-invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus~.custom-control-label:before,.custom-control-input.is-invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #dc354540}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before{border-color:#dc3545}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem #007bff40}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem #268fff80}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #268fff80}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem #828a9180}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #828a9180}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem #48b46180}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #48b46180}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem #3ab0c380}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #3ab0c380}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem #deaa0c80}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #deaa0c80}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem #e1536180}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #e1536180}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem #d8d9db80}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem #52585d80}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #52585d80}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem #007bff80}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #007bff80}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem #6c757d80}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #6c757d80}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem #28a74580}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #28a74580}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem #17a2b880}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #17a2b880}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem #ffc10780}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ffc10780}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem #dc354580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #dc354580}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem #343a4080}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #343a4080}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width: 576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width: 768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width: 992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width: 1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width: 576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width: 768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width: 576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width: 768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width: 992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width: 1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width: 576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width: 768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width: 992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width: 1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;inset:0;z-index:1;pointer-events:auto;content:\"\";background-color:#0000}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width: 576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:hover,a.text-primary:focus{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:hover,a.text-success:focus{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:hover,a.text-info:focus{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:hover,a.text-light:focus{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:hover,a.text-dark:focus{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}:root{--swiper-theme-color: #007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;.swiper-slide,.swiper-cube-shadow{transform-style:preserve-3d}}.swiper-css-mode{>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}}>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{>.swiper-wrapper{scroll-snap-type:x mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{>.swiper-wrapper{scroll-snap-type:y mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{>.swiper-wrapper{scroll-snap-type:none}>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{>.swiper-wrapper:before{content:\"\";flex-shrink:0;order:9999}>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}}}.swiper-3d{.swiper-slide-shadow,.swiper-slide-shadow-left,.swiper-slide-shadow-right,.swiper-slide-shadow-top,.swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-slide-shadow{background:#00000026}.swiper-slide-shadow-left{background-image:linear-gradient(to left,#00000080,#0000)}.swiper-slide-shadow-right{background-image:linear-gradient(to right,#00000080,#0000)}.swiper-slide-shadow-top{background-image:linear-gradient(to top,#00000080,#0000)}.swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,#00000080,#0000)}}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper:not(.swiper-watch-progress),.swiper-watch-progress .swiper-slide-visible{.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}html{--mat-ripple-color: rgba(0, 0, 0, .1)}html{--mat-option-selected-state-label-text-color: #1b2535;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #f2f2f7;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-warn{--mat-option-selected-state-label-text-color: #f44336;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}html{--mat-full-pseudo-checkbox-selected-icon-color: #f2f2f7;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}html{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f2f2f7;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-primary{--mat-full-pseudo-checkbox-selected-icon-color: #1b2535;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-primary{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #1b2535;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-accent{--mat-full-pseudo-checkbox-selected-icon-color: #f2f2f7;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-accent{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f2f2f7;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-warn{--mat-full-pseudo-checkbox-selected-icon-color: #f44336;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-warn{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html{--mat-app-background-color: #fafafa;--mat-app-text-color: rgba(0, 0, 0, .87);--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mdc-elevated-card-container-shape: 4px}html{--mdc-outlined-card-container-shape: 4px;--mdc-outlined-card-outline-width: 1px}html{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}html{--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1b2535;--mdc-linear-progress-track-color: rgba(27, 37, 53, .25)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #f2f2f7;--mdc-linear-progress-track-color: rgba(242, 242, 247, .25)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}html{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px}html{--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px}html{--mdc-filled-text-field-caret-color: #1b2535;--mdc-filled-text-field-focus-active-indicator-color: #1b2535;--mdc-filled-text-field-focus-label-text-color: rgba(27, 37, 53, .87);--mdc-filled-text-field-container-color: rgb(244.8, 244.8, 244.8);--mdc-filled-text-field-disabled-container-color: rgb(249.9, 249.9, 249.9);--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color: #f44336;--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336}html{--mdc-outlined-text-field-caret-color: #1b2535;--mdc-outlined-text-field-focus-outline-color: #1b2535;--mdc-outlined-text-field-focus-label-text-color: rgba(27, 37, 53, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-error-hover-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336}html{--mat-form-field-focus-select-arrow-color: rgba(27, 37, 53, .87);--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38);--mat-form-field-state-layer-color: rgba(0, 0, 0, .87);--mat-form-field-error-text-color: #f44336;--mat-form-field-select-option-text-color: inherit;--mat-form-field-select-disabled-option-text-color: GrayText;--mat-form-field-leading-icon-color: unset;--mat-form-field-disabled-leading-icon-color: unset;--mat-form-field-trailing-icon-color: unset;--mat-form-field-disabled-trailing-icon-color: unset;--mat-form-field-error-focus-trailing-icon-color: unset;--mat-form-field-error-hover-trailing-icon-color: unset;--mat-form-field-error-trailing-icon-color: unset;--mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity: .04;--mat-form-field-focus-state-layer-opacity: .08}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #f2f2f7;--mdc-filled-text-field-focus-active-indicator-color: #f2f2f7;--mdc-filled-text-field-focus-label-text-color: rgba(242, 242, 247, .87)}.mat-mdc-form-field.mat-accent{--mdc-outlined-text-field-caret-color: #f2f2f7;--mdc-outlined-text-field-focus-outline-color: #f2f2f7;--mdc-outlined-text-field-focus-label-text-color: rgba(242, 242, 247, .87)}.mat-mdc-form-field.mat-accent{--mat-form-field-focus-select-arrow-color: rgba(242, 242, 247, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn{--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn{--mat-form-field-focus-select-arrow-color: rgba(244, 67, 54, .87)}html{--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}html{--mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(27, 37, 53, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(242, 242, 247, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-select-arrow-transform: translateY(-8px)}html{--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-autocomplete-background-color: white}html{--mdc-dialog-container-shape: 4px}html{--mat-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width: 80vw;--mat-dialog-container-small-max-width: 80vw;--mat-dialog-container-min-width: 0;--mat-dialog-actions-alignment: start;--mat-dialog-actions-padding: 8px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px;--mat-dialog-headline-padding: 0 24px 9px}html{--mdc-dialog-container-color: white;--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-container-shape-radius: 16px;--mdc-chip-with-avatar-avatar-shape-radius: 14px;--mdc-chip-with-avatar-avatar-size: 28px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 0;--mdc-chip-outline-color: transparent;--mdc-chip-disabled-outline-color: transparent;--mdc-chip-focus-outline-color: transparent;--mdc-chip-hover-state-layer-opacity: .04;--mdc-chip-with-avatar-disabled-avatar-opacity: 1;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-selected-hover-state-layer-opacity: .04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;--mdc-chip-with-icon-disabled-icon-opacity: 1}.mat-mdc-standard-chip{--mat-chip-disabled-container-opacity: .4;--mat-chip-trailing-action-opacity: .54;--mat-chip-trailing-action-focus-opacity: 1;--mat-chip-trailing-action-state-layer-color: transparent;--mat-chip-selected-trailing-action-state-layer-color: transparent;--mat-chip-trailing-action-hover-state-layer-opacity: 0;--mat-chip-trailing-action-focus-state-layer-opacity: 0}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-disabled-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-flat-disabled-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-selected-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip{--mat-chip-selected-disabled-trailing-icon-color: #212121;--mat-chip-selected-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #1b2535;--mdc-chip-elevated-selected-container-color: #1b2535;--mdc-chip-elevated-disabled-container-color: #1b2535;--mdc-chip-flat-disabled-selected-container-color: #1b2535;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: black;--mdc-chip-elevated-container-color: #f2f2f7;--mdc-chip-elevated-selected-container-color: #f2f2f7;--mdc-chip-elevated-disabled-container-color: #f2f2f7;--mdc-chip-flat-disabled-selected-container-color: #f2f2f7;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: black;--mdc-chip-selected-label-text-color: black;--mdc-chip-with-icon-icon-color: black;--mdc-chip-with-icon-disabled-icon-color: black;--mdc-chip-with-icon-selected-icon-color: black;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: black;--mdc-chip-with-trailing-icon-trailing-icon-color: black}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mat-chip-selected-disabled-trailing-icon-color: black;--mat-chip-selected-trailing-icon-color: black}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-selected-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-flat-disabled-selected-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}html{--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-height: 20px;--mdc-switch-handle-shape: 10px;--mdc-switch-handle-width: 20px;--mdc-switch-selected-icon-size: 18px;--mdc-switch-track-height: 14px;--mdc-switch-track-shape: 7px;--mdc-switch-track-width: 36px;--mdc-switch-unselected-icon-size: 18px;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .04;--mdc-switch-selected-pressed-state-layer-opacity: .1;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .04;--mdc-switch-unselected-pressed-state-layer-opacity: .1}html .mat-mdc-slide-toggle{--mat-switch-disabled-selected-handle-opacity: .38;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 20px;--mat-switch-selected-handle-size: 20px;--mat-switch-pressed-handle-size: 20px;--mat-switch-with-icon-handle-size: 20px;--mat-switch-selected-handle-horizontal-margin: 0;--mat-switch-selected-with-icon-handle-horizontal-margin: 0;--mat-switch-selected-pressed-handle-horizontal-margin: 0;--mat-switch-unselected-handle-horizontal-margin: 0;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0;--mat-switch-unselected-pressed-handle-horizontal-margin: 0;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 1;--mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width: 1px;--mat-switch-track-outline-color: transparent;--mat-switch-selected-track-outline-width: 1px;--mat-switch-selected-track-outline-color: transparent;--mat-switch-disabled-unselected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-color: transparent}html{--mdc-switch-selected-focus-state-layer-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-handle-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-hover-state-layer-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-pressed-state-layer-color: rgb(9.7875, 13.4125, 19.2125);--mdc-switch-selected-focus-handle-color: black;--mdc-switch-selected-hover-handle-color: black;--mdc-switch-selected-pressed-handle-color: black;--mdc-switch-selected-focus-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-selected-hover-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-selected-pressed-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-selected-track-color: rgb(61.425, 84.175, 120.575);--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: #fff;--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html .mat-mdc-slide-toggle{--mat-switch-label-text-color: rgba(0, 0, 0, .87)}html .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-handle-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-hover-state-layer-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-pressed-state-layer-color: rgb(210.4285714286, 210.4285714286, 227.5714285714);--mdc-switch-selected-focus-handle-color: rgb(115.7142857143, 115.7142857143, 169.2857142857);--mdc-switch-selected-hover-handle-color: rgb(115.7142857143, 115.7142857143, 169.2857142857);--mdc-switch-selected-pressed-handle-color: rgb(115.7142857143, 115.7142857143, 169.2857142857);--mdc-switch-selected-focus-track-color: white;--mdc-switch-selected-hover-track-color: white;--mdc-switch-selected-pressed-track-color: white;--mdc-switch-selected-track-color: white}html .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}html{--mdc-switch-state-layer-size: 40px}html{--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mdc-radio-state-layer-size: 40px}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #1b2535;--mdc-radio-selected-hover-icon-color: #1b2535;--mdc-radio-selected-icon-color: #1b2535;--mdc-radio-selected-pressed-icon-color: #1b2535}.mat-mdc-radio-button.mat-primary{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #1b2535;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f2f2f7;--mdc-radio-selected-hover-icon-color: #f2f2f7;--mdc-radio-selected-icon-color: #f2f2f7;--mdc-radio-selected-pressed-icon-color: #f2f2f7}.mat-mdc-radio-button.mat-accent{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f2f2f7;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-radio-button.mat-warn{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}html{--mdc-radio-state-layer-size: 40px}html{--mat-radio-touch-target-display: block}html{--mdc-slider-active-track-height: 6px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 50%;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .6;--mdc-slider-with-tick-marks-container-shape: 50%;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .6;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mat-slider-value-indicator-width: auto;--mat-slider-value-indicator-height: 32px;--mat-slider-value-indicator-caret-display: block;--mat-slider-value-indicator-border-radius: 4px;--mat-slider-value-indicator-padding: 0 12px;--mat-slider-value-indicator-text-transform: none;--mat-slider-value-indicator-container-transform: translateX(-50%)}html{--mdc-slider-handle-color: #1b2535;--mdc-slider-focus-handle-color: #1b2535;--mdc-slider-hover-handle-color: #1b2535;--mdc-slider-active-track-color: #1b2535;--mdc-slider-inactive-track-color: #1b2535;--mdc-slider-with-tick-marks-inactive-container-color: #1b2535;--mdc-slider-with-tick-marks-active-container-color: white;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-label-container-color: #000;--mdc-slider-label-label-text-color: #fff;--mdc-slider-with-overlap-handle-outline-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #000}html{--mat-slider-ripple-color: #1b2535;--mat-slider-hover-state-layer-color: rgba(27, 37, 53, .05);--mat-slider-focus-state-layer-color: rgba(27, 37, 53, .2);--mat-slider-value-indicator-opacity: .6}html .mat-accent{--mdc-slider-handle-color: #f2f2f7;--mdc-slider-focus-handle-color: #f2f2f7;--mdc-slider-hover-handle-color: #f2f2f7;--mdc-slider-active-track-color: #f2f2f7;--mdc-slider-inactive-track-color: #f2f2f7;--mdc-slider-with-tick-marks-inactive-container-color: #f2f2f7;--mdc-slider-with-tick-marks-active-container-color: black}html .mat-accent{--mat-slider-ripple-color: #f2f2f7;--mat-slider-hover-state-layer-color: rgba(242, 242, 247, .05);--mat-slider-focus-state-layer-color: rgba(242, 242, 247, .2)}html .mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: white}html .mat-warn{--mat-slider-ripple-color: #f44336;--mat-slider-hover-state-layer-color: rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color: rgba(244, 67, 54, .2)}html{--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 0;--mat-menu-divider-top-spacing: 0;--mat-menu-item-spacing: 16px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 16px;--mat-menu-item-trailing-spacing: 16px;--mat-menu-item-with-icon-leading-spacing: 16px;--mat-menu-item-with-icon-trailing-spacing: 16px;--mat-menu-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white;--mat-menu-divider-color: rgba(0, 0, 0, .12)}html{--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 50%;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-selected-container-color: transparent;--mdc-list-list-item-leading-avatar-color: transparent;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-state-layer-color: transparent;--mdc-list-list-item-disabled-state-layer-opacity: 0;--mdc-list-list-item-disabled-label-text-opacity: .38;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38}html{--mat-list-active-indicator-color: transparent;--mat-list-active-indicator-shape: 4px}html{--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}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #1b2535;--mdc-radio-selected-hover-icon-color: #1b2535;--mdc-radio-selected-icon-color: #1b2535;--mdc-radio-selected-pressed-icon-color: #1b2535}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f2f2f7;--mdc-radio-selected-hover-icon-color: #f2f2f7;--mdc-radio-selected-icon-color: #f2f2f7;--mdc-radio-selected-pressed-icon-color: #f2f2f7}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-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: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #1b2535;--mdc-checkbox-selected-hover-icon-color: #1b2535;--mdc-checkbox-selected-icon-color: #1b2535;--mdc-checkbox-selected-pressed-icon-color: #1b2535;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #1b2535;--mdc-checkbox-selected-hover-state-layer-color: #1b2535;--mdc-checkbox-selected-pressed-state-layer-color: #1b2535;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #f2f2f7;--mdc-checkbox-selected-hover-icon-color: #f2f2f7;--mdc-checkbox-selected-icon-color: #f2f2f7;--mdc-checkbox-selected-pressed-icon-color: #f2f2f7;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f2f2f7;--mdc-checkbox-selected-hover-state-layer-color: #f2f2f7;--mdc-checkbox-selected-pressed-state-layer-color: #f2f2f7;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.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--selected .mdc-list-item__start,.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--activated .mdc-list-item__start{color:#1b2535}.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}html{--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}html{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-state-layer-size: 40px}.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}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block}html{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0}html{--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #1b2535}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #1b2535;--mat-tab-header-active-ripple-color: #1b2535;--mat-tab-header-inactive-ripple-color: #1b2535;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #1b2535;--mat-tab-header-active-hover-label-text-color: #1b2535;--mat-tab-header-active-focus-indicator-color: #1b2535;--mat-tab-header-active-hover-indicator-color: #1b2535}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #f2f2f7}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f2f2f7;--mat-tab-header-active-ripple-color: #f2f2f7;--mat-tab-header-inactive-ripple-color: #f2f2f7;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f2f2f7;--mat-tab-header-active-hover-label-text-color: #f2f2f7;--mat-tab-header-active-focus-indicator-color: #f2f2f7;--mat-tab-header-active-hover-indicator-color: #f2f2f7}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #1b2535;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #f2f2f7;--mat-tab-header-with-background-foreground-color: black}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-state-layer-opacity: .16;--mdc-checkbox-selected-hover-state-layer-opacity: .04;--mdc-checkbox-selected-pressed-state-layer-opacity: .16;--mdc-checkbox-unselected-focus-state-layer-opacity: .16;--mdc-checkbox-unselected-hover-state-layer-opacity: .04;--mdc-checkbox-unselected-pressed-state-layer-opacity: .16}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #f2f2f7;--mdc-checkbox-selected-hover-icon-color: #f2f2f7;--mdc-checkbox-selected-icon-color: #f2f2f7;--mdc-checkbox-selected-pressed-icon-color: #f2f2f7;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f2f2f7;--mdc-checkbox-selected-hover-state-layer-color: #f2f2f7;--mdc-checkbox-selected-pressed-state-layer-color: #f2f2f7;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html{--mat-checkbox-disabled-label-color: rgba(0, 0, 0, .38);--mat-checkbox-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #1b2535;--mdc-checkbox-selected-hover-icon-color: #1b2535;--mdc-checkbox-selected-icon-color: #1b2535;--mdc-checkbox-selected-pressed-icon-color: #1b2535;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #1b2535;--mdc-checkbox-selected-hover-state-layer-color: #1b2535;--mdc-checkbox-selected-pressed-state-layer-color: #1b2535;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html{--mdc-checkbox-state-layer-size: 40px}html{--mat-checkbox-touch-target-display: block}html{--mdc-text-button-container-shape: 4px;--mdc-text-button-keep-touch-target: false}html{--mdc-filled-button-container-shape: 4px;--mdc-filled-button-keep-touch-target: false}html{--mdc-protected-button-container-shape: 4px;--mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mdc-outlined-button-keep-touch-target: false;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 4px}html{--mat-text-button-horizontal-padding: 8px;--mat-text-button-with-icon-horizontal-padding: 8px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: 0}html{--mat-filled-button-horizontal-padding: 16px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -4px}html{--mat-protected-button-horizontal-padding: 16px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -4px}html{--mat-outlined-button-horizontal-padding: 15px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -4px}html{--mdc-text-button-label-text-color: black;--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html{--mat-text-button-state-layer-color: black;--mat-text-button-disabled-state-layer-color: black;--mat-text-button-ripple-color: rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity: .04;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12}html{--mdc-filled-button-container-color: white;--mdc-filled-button-label-text-color: black;--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html{--mat-filled-button-state-layer-color: black;--mat-filled-button-disabled-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity: .04;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12}html{--mdc-protected-button-container-color: white;--mdc-protected-button-label-text-color: black;--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html{--mat-protected-button-state-layer-color: black;--mat-protected-button-disabled-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity: .04;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12}html{--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color: black;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}html{--mat-outlined-button-state-layer-color: black;--mat-outlined-button-disabled-state-layer-color: black;--mat-outlined-button-ripple-color: rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity: .04;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1b2535}.mat-mdc-button.mat-primary{--mat-text-button-state-layer-color: #1b2535;--mat-text-button-ripple-color: rgba(27, 37, 53, .1)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #f2f2f7}.mat-mdc-button.mat-accent{--mat-text-button-state-layer-color: #f2f2f7;--mat-text-button-ripple-color: rgba(242, 242, 247, .1)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button.mat-warn{--mat-text-button-state-layer-color: #f44336;--mat-text-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1b2535;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-primary{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #f2f2f7;--mdc-filled-button-label-text-color: black}.mat-mdc-unelevated-button.mat-accent{--mat-filled-button-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-warn{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1b2535;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-primary{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #f2f2f7;--mdc-protected-button-label-text-color: black}.mat-mdc-raised-button.mat-accent{--mat-protected-button-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-warn{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1b2535;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-primary{--mat-outlined-button-state-layer-color: #1b2535;--mat-outlined-button-ripple-color: rgba(27, 37, 53, .1)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #f2f2f7;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-accent{--mat-outlined-button-state-layer-color: #f2f2f7;--mat-outlined-button-ripple-color: rgba(242, 242, 247, .1)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-warn{--mat-outlined-button-state-layer-color: #f44336;--mat-outlined-button-ripple-color: rgba(244, 67, 54, .1)}html{--mdc-text-button-container-height: 36px}html{--mdc-filled-button-container-height: 36px}html{--mdc-protected-button-container-height: 36px}html{--mdc-outlined-button-container-height: 36px}html{--mat-text-button-touch-target-display: block}html{--mat-filled-button-touch-target-display: block}html{--mat-protected-button-touch-target-display: block}html{--mat-outlined-button-touch-target-display: block}html{--mdc-icon-button-icon-size: 24px}html{--mdc-icon-button-icon-color: inherit;--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}html{--mat-icon-button-state-layer-color: black;--mat-icon-button-disabled-state-layer-color: black;--mat-icon-button-ripple-color: rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity: .04;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12}html .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1b2535}html .mat-mdc-icon-button.mat-primary{--mat-icon-button-state-layer-color: #1b2535;--mat-icon-button-ripple-color: rgba(27, 37, 53, .1)}html .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #f2f2f7}html .mat-mdc-icon-button.mat-accent{--mat-icon-button-state-layer-color: #f2f2f7;--mat-icon-button-ripple-color: rgba(242, 242, 247, .1)}html .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336}html .mat-mdc-icon-button.mat-warn{--mat-icon-button-state-layer-color: #f44336;--mat-icon-button-ripple-color: rgba(244, 67, 54, .1)}html{--mat-icon-button-touch-target-display: block}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html{--mdc-fab-container-shape: 50%;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mdc-fab-small-container-shape: 50%;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mdc-extended-fab-container-height: 48px;--mdc-extended-fab-container-shape: 24px;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mdc-fab-container-color: white}html{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-disabled-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity: .04;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html{--mdc-fab-small-container-color: white}html{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-disabled-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity: .04;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html .mat-mdc-fab.mat-primary{--mdc-fab-container-color: #1b2535}html .mat-mdc-fab.mat-primary{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-accent{--mdc-fab-container-color: #f2f2f7}html .mat-mdc-fab.mat-accent{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1)}html .mat-mdc-fab.mat-warn{--mdc-fab-container-color: #f44336}html .mat-mdc-fab.mat-warn{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-primary{--mdc-fab-small-container-color: #1b2535}html .mat-mdc-mini-fab.mat-primary{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-accent{--mdc-fab-small-container-color: #f2f2f7}html .mat-mdc-mini-fab.mat-accent{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1)}html .mat-mdc-mini-fab.mat-warn{--mdc-fab-small-container-color: #f44336}html .mat-mdc-mini-fab.mat-warn{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html{--mat-fab-touch-target-display: block}html{--mat-fab-small-touch-target-display: block}html{--mdc-snackbar-container-shape: 4px}html{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}html{--mat-snack-bar-button-color: rgb(105.275, 133.525, 178.725)}html{--mat-table-row-item-outline-width: 1px}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}html{--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px}html{--mdc-circular-progress-active-indicator-color: #1b2535}html .mat-accent{--mdc-circular-progress-active-indicator-color: #f2f2f7}html .mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}html{--mat-badge-container-shape: 50%;--mat-badge-container-size: unset;--mat-badge-small-size-container-size: unset;--mat-badge-large-size-container-size: unset;--mat-badge-legacy-container-size: 22px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 28px;--mat-badge-container-offset: -11px 0;--mat-badge-small-size-container-offset: -8px 0;--mat-badge-large-size-container-offset: -14px 0;--mat-badge-container-overlap-offset: -11px;--mat-badge-small-size-container-overlap-offset: -8px;--mat-badge-large-size-container-overlap-offset: -14px;--mat-badge-container-padding: 0;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0}html{--mat-badge-background-color: #1b2535;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #f2f2f7;--mat-badge-text-color: black}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-shape: 4px}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1}html{--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd}html{--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: rgb(224.4, 224.4, 224.4)}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-container-shape: 4px;--mat-datepicker-calendar-container-touch-shape: 4px;--mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #1b2535;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(27, 37, 53, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(27, 37, 53, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(27, 37, 53, .3);--mat-datepicker-toggle-active-state-icon-color: #1b2535;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(27, 37, 53, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032);--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color: black;--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: black;--mat-datepicker-calendar-date-selected-state-background-color: #f2f2f7;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(242, 242, 247, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: black;--mat-datepicker-calendar-date-focus-state-background-color: rgba(242, 242, 247, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(242, 242, 247, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(242, 242, 247, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #f2f2f7}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls{--mat-icon-button-touch-target-display: none}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html{--mat-divider-width: 1px}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape: 4px;--mat-expansion-legacy-header-indicator-display: inline-block;--mat-expansion-header-indicator-display: none}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #1b2535}.mat-icon.mat-accent{--mat-icon-color: #f2f2f7}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width: auto}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #1b2535;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #1b2535;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #1b2535;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: black;--mat-stepper-header-selected-state-icon-background-color: #f2f2f7;--mat-stepper-header-selected-state-icon-foreground-color: black;--mat-stepper-header-done-state-icon-background-color: #f2f2f7;--mat-stepper-header-done-state-icon-foreground-color: black;--mat-stepper-header-edit-state-icon-background-color: #f2f2f7;--mat-stepper-header-edit-state-icon-foreground-color: black}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}html{--mat-sort-arrow-color: rgb(117.3, 117.3, 117.3)}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #1b2535;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #f2f2f7;--mat-toolbar-container-text-color: black}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}html{--mat-tree-container-background-color: white;--mat-tree-node-text-color: rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height: 48px}html{--mat-timepicker-container-shape: 4px;--mat-timepicker-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-timepicker-container-background-color: white}:root{--primary-color: #1b2535;--primary-lighter-color: rgb(78.6375, 107.7625, 154.3625);--primary-darker-color: black;--accent-color: #f2f2f7;--accent-lighter-color: #f3f5f9;--accent-lightest-color: white;--accent-darker-color: rgb(178.8571428571, 178.8571428571, 208.1428571429);--warn-color: #f44336;--warn-lighter-color: #ef9a9a;--warn-darker-color: #d32f2f;--background-color: #f2f2f7;--border-color: #e1e1e1;--text-color: #4a5568}html,body{margin:0}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #fafafa inset!important;background-color:#fafafa!important}p{font:20px Roboto,Helvetica Neue,sans-serif}.w-max-content{width:max-content}.ud-text-theme-primary{color:#28db25}.ud-text-theme-primary-darker{color:#1c881a}.ud-text-primary,.ud-text-white{color:#f5f6f7}.ud-dashed-container{border:1px dashed #373f4c;border-radius:10px}.text-large{font-size:large}.text-small{font-size:small}.text-smaller{font-size:smaller}.bg-accent{background-color:var(--accent-color)}.bg-accent-lighter{background-color:var(--accent-lighter-color)}.bg-accent-lightest{background-color:var(--accent-lightest-color)}.pointer:hover{cursor:pointer;outline:1px solid var(--accent-color);background-color:var(--accent-lightest-color)}.custom-snackbar-container.mat-mdc-snack-bar-container{--mat-snack-bar-button-color: transparent;--mdc-snackbar-container-color: transparent !important;--mdc-snackbar-supporting-text-color: transparent;box-shadow:none!important;padding:0!important;margin:8px!important;background:transparent!important}.mat-mdc-snack-bar-container.custom-snackbar-container .mdc-snackbar__surface{background:transparent!important;background-color:transparent!important;box-shadow:none!important;padding:0!important}.mat-mdc-snack-bar-container.custom-snackbar-container .mat-mdc-snack-bar-label{padding:0!important;margin:0!important}.mat-mdc-snack-bar-container.custom-snackbar-container .mdc-snackbar__label{padding:0!important}.table-div{margin:20px}.table-div .separate-filters{display:flex;flex-direction:column}.table-div .separate-filters .filter-dropdown{width:fit-content}.table-div .separate-filters .filters{display:flex;flex-direction:row;gap:8px;margin:0 24px 1rem}.table-div .separate-filters .filters .filter .filter-button-trigger{display:flex;flex-direction:row-reverse;gap:1rem;border-radius:8px}.table-div .separate-filters .filters .filter mat-icon{margin-right:0!important}.table-div mat-card.table-card{border-radius:10px!important;overflow:hidden;box-shadow:0 2px 12px #373f4c1a!important;background:#fff!important}.table-div mat-card.table-card mat-card-header.table-header{padding:14px 16px 14px 12px;background:var(--accent-lightest-color);border-bottom:1px solid var(--accent-color);min-height:65px}.table-div mat-card.table-card mat-card-header.table-header ::ng-deep .mat-mdc-card-header-text{display:none}.table-div mat-card.table-card mat-card-header.table-header .table-header-icon{color:var(--primary-color);font-size:20px;width:20px;height:20px}.table-div mat-card.table-card mat-card-header.table-header .table-title{margin-bottom:0;font-size:.9375rem;font-weight:600;letter-spacing:.01em;color:#373f4c}.table-div mat-card.table-card mat-card-content{padding:0}.table-div mat-card.table-card mat-card-content .no-data-found{display:flex;flex-direction:column;justify-content:center;align-items:center;height:140px;gap:8px;background:#fff}.table-div mat-card.table-card mat-card-content .no-data-found .no-data-icon{font-size:40px;width:40px;height:40px;color:var(--accent-darker-color);opacity:.45}.table-div mat-card.table-card mat-card-content .no-data-found .no-data-text{font-size:.875rem;color:#373f4c80;margin:0}.table-div mat-card.table-card mat-card-content .loading-container{display:flex;justify-content:center;align-items:center;padding:32px;background:#fff}.table-div mat-card.table-card mat-card-content mat-paginator{border-radius:0 0 10px 10px;background-color:#dde3ec!important;border-top:1px solid #c8c8d4}.table-div .action-buttons-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.table-div tr td,.table-div tr th{border-bottom:1px solid var(--accent-color);color:#373f4c;padding:10px 8px}.table-div tr th{background-color:#dde3ec;font-weight:600;font-size:.9rem;letter-spacing:.05em}.table-div tr th:first-of-type,.table-div tr td:first-of-type{padding-left:20px}.table-div tr th:last-of-type,.table-div tr td:last-of-type{padding-right:20px}.action-btn{height:34px!important;min-width:0!important;padding:0 14px!important;border-radius:6px!important;font-size:13px!important;font-weight:500!important;letter-spacing:.02em;display:inline-flex!important;align-items:center!important;gap:4px}.action-btn .btn-icon{font-size:16px!important;width:16px!important;height:16px!important;line-height:16px!important;flex-shrink:0}.action-btn .extend-icon{transform:rotate(180deg)}.action-btn.action-btn--approve{color:#1c881a!important;border-color:#1c881a!important}.action-btn.action-btn--approve:not([disabled]):hover{background-color:#1c881a0f!important}.action-btn.action-btn--reject,.action-btn.action-btn--delete{color:#c62828!important;border-color:#c62828!important}.action-btn.action-btn--reject:not([disabled]):hover,.action-btn.action-btn--delete:not([disabled]):hover{background-color:#c628280f!important}.action-btn[disabled]{opacity:.45}table{width:100%}.mat-mdc-form-field{font-size:14px}.mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper{max-height:45px;padding-left:4px}.mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper [class^=mdc-notched-outline__]{border:none;border-bottom:1px solid #929293;border-radius:0}.mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper [class^=mdc-notched-outline__]:first-of-type{display:none}.mat-mdc-icon-button.mat-mdc-button-base{padding:10px}.spacer{flex:1 1 auto}.link{color:#459fff;font-weight:600;cursor:pointer}.filter{font-size:100%;border-top:.84375em solid rgba(0,0,0,0)}tr.detail-row{height:0}.element-row td{border-bottom-width:0}.element-detail{overflow:hidden;display:flex}.element-detail>img{max-height:100%}.element-symbol{font-weight:700;font-size:40px;line-height:normal}.element-description{padding:16px}.element-description-attribution{opacity:.5}.pills{display:flex;flex-direction:column;gap:16px;margin:8px 2px}.custom-input{--mat-form-field-container-height: 36px;--mat-form-field-container-vertical-padding: 8px;--mdc-outlined-text-field-container-shape: 8px;--mdc-outlined-text-field-outline-color: var( --mdc-outlined-button-outline-color )}.custom-input ::ng-deep .mat-mdc-text-field-wrapper{max-height:36px}.custom-input ::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:auto}.custom-input ::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-input-element{padding-left:12px}::ng-deep .custom-dropdown{min-width:400px!important;min-height:150px!important;max-width:650px!important;width:auto!important;max-height:none!important;overflow:visible!important}::ng-deep .custom-dropdown .mat-mdc-menu-content{padding:18px 12px;border-radius:8px;width:100%;box-sizing:border-box}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content{box-sizing:border-box}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content .string-content{display:flex;gap:1rem}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-form-field{width:100%}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-form-field .mat-mdc-form-field{font-size:14px}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-form-field input{width:100%;box-sizing:border-box}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content mat-slide-toggle{margin:8px 0}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content .number-content{display:flex;gap:8px;width:100%}::ng-deep .custom-dropdown .mat-mdc-menu-content .dropdown-content .number-content mat-select{width:100%}\n"] }]
|
|
1315
|
+
}], ctorParameters: () => [{ type: TranslateWrapperService }], propDecorators: { id: [{
|
|
1316
|
+
type: Input
|
|
1317
|
+
}], title: [{
|
|
1318
|
+
type: Input
|
|
1319
|
+
}], icon: [{
|
|
1320
|
+
type: Input
|
|
1321
|
+
}], actions: [{
|
|
1322
|
+
type: Input
|
|
1323
|
+
}], customActions: [{
|
|
1324
|
+
type: Input
|
|
1325
|
+
}], allowedRoles: [{
|
|
1326
|
+
type: Input
|
|
1327
|
+
}], haveCheckbox: [{
|
|
1328
|
+
type: Input
|
|
1329
|
+
}], displayedColumns: [{
|
|
1330
|
+
type: Input
|
|
1331
|
+
}], dataSource: [{
|
|
1332
|
+
type: Input
|
|
1333
|
+
}], paginationSizeOptions: [{
|
|
1334
|
+
type: Input
|
|
1335
|
+
}], initialPageSize: [{
|
|
1336
|
+
type: Input
|
|
1337
|
+
}], specificSelectRow: [{
|
|
1338
|
+
type: Input
|
|
1339
|
+
}], hasFilter: [{
|
|
1340
|
+
type: Input
|
|
1341
|
+
}], expandableRows: [{
|
|
1342
|
+
type: Input
|
|
1343
|
+
}], expandedItem: [{
|
|
1344
|
+
type: Input
|
|
1345
|
+
}], emptyMessage: [{
|
|
1346
|
+
type: Input
|
|
1347
|
+
}], isLoading: [{
|
|
1348
|
+
type: Input
|
|
1349
|
+
}], separateFilters: [{
|
|
1350
|
+
type: Input
|
|
1351
|
+
}], showPaginator: [{
|
|
1352
|
+
type: Input
|
|
1353
|
+
}], noTableDataMessage: [{
|
|
1354
|
+
type: Input
|
|
1355
|
+
}], actionsMenuEnabled: [{
|
|
1356
|
+
type: Input
|
|
1357
|
+
}], totalElements: [{
|
|
1358
|
+
type: Input
|
|
1359
|
+
}], serverSideFiltering: [{
|
|
1360
|
+
type: Input
|
|
1361
|
+
}], disableHeader: [{
|
|
1362
|
+
type: Input
|
|
1363
|
+
}], delete: [{
|
|
1364
|
+
type: Output
|
|
1365
|
+
}], approve: [{
|
|
1366
|
+
type: Output
|
|
1367
|
+
}], reject: [{
|
|
1368
|
+
type: Output
|
|
1369
|
+
}], extend: [{
|
|
1370
|
+
type: Output
|
|
1371
|
+
}], add: [{
|
|
1372
|
+
type: Output
|
|
1373
|
+
}], clicked: [{
|
|
1374
|
+
type: Output
|
|
1375
|
+
}], queryChange: [{
|
|
1376
|
+
type: Output
|
|
1377
|
+
}], actionsTemplate: [{
|
|
1378
|
+
type: ContentChild,
|
|
1379
|
+
args: [TemplateRef]
|
|
1380
|
+
}], paginatorRef: [{
|
|
1381
|
+
type: ViewChild,
|
|
1382
|
+
args: [MatPaginator, { static: false }]
|
|
1383
|
+
}], paginator: [{
|
|
1384
|
+
type: ViewChild,
|
|
1385
|
+
args: [MatPaginator, { static: false }]
|
|
1386
|
+
}], sort: [{
|
|
1387
|
+
type: ViewChild,
|
|
1388
|
+
args: [MatSort, { static: false }]
|
|
1389
|
+
}], allFilterInput: [{
|
|
1390
|
+
type: ViewChild,
|
|
1391
|
+
args: ['allFilterInput', { static: true }]
|
|
1392
|
+
}] } });
|
|
1393
|
+
|
|
1394
|
+
class DynamicComponentComponent {
|
|
1395
|
+
component;
|
|
1396
|
+
properties = {};
|
|
1397
|
+
container;
|
|
1398
|
+
componentRef;
|
|
1399
|
+
constructor() { }
|
|
1400
|
+
ngAfterViewInit() {
|
|
1401
|
+
if (this.componentRef) {
|
|
1402
|
+
this.componentRef.destroy();
|
|
1403
|
+
}
|
|
1404
|
+
this.componentRef = this.container.createComponent(this.component);
|
|
1405
|
+
Object.keys(this.properties).forEach(key => {
|
|
1406
|
+
this.componentRef.instance[key] = this.properties[key];
|
|
1407
|
+
});
|
|
1408
|
+
}
|
|
1409
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicComponentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1410
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: DynamicComponentComponent, isStandalone: true, selector: "ud-dynamic-component", inputs: { component: "component", properties: "properties" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div #container></div>\n", styles: [""] });
|
|
1411
|
+
}
|
|
1412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicComponentComponent, decorators: [{
|
|
1413
|
+
type: Component,
|
|
1414
|
+
args: [{ selector: 'ud-dynamic-component', template: "<div #container></div>\n" }]
|
|
1415
|
+
}], ctorParameters: () => [], propDecorators: { component: [{
|
|
1416
|
+
type: Input
|
|
1417
|
+
}], properties: [{
|
|
1418
|
+
type: Input
|
|
1419
|
+
}], container: [{
|
|
1420
|
+
type: ViewChild,
|
|
1421
|
+
args: ['container', { read: ViewContainerRef }]
|
|
1422
|
+
}] } });
|
|
1423
|
+
|
|
1424
|
+
class EditViewSectionDirective {
|
|
1425
|
+
templateRef;
|
|
1426
|
+
constructor(templateRef) {
|
|
1427
|
+
this.templateRef = templateRef;
|
|
1428
|
+
}
|
|
1429
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: EditViewSectionDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1430
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: EditViewSectionDirective, isStandalone: true, selector: "[editViewSection]", ngImport: i0 });
|
|
1431
|
+
}
|
|
1432
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: EditViewSectionDirective, decorators: [{
|
|
1433
|
+
type: Directive,
|
|
1434
|
+
args: [{
|
|
1435
|
+
selector: '[editViewSection]',
|
|
1436
|
+
standalone: true,
|
|
1437
|
+
}]
|
|
1438
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
1439
|
+
|
|
1440
|
+
class EditViewComponent {
|
|
1441
|
+
title = '';
|
|
1442
|
+
loading = false;
|
|
1443
|
+
skeletonTitleHeight = '20px';
|
|
1444
|
+
skeletonBodyHeight = '150px';
|
|
1445
|
+
sections;
|
|
1446
|
+
get sectionsArray() {
|
|
1447
|
+
return this.sections?.toArray() ?? [];
|
|
1448
|
+
}
|
|
1449
|
+
get hasSections() {
|
|
1450
|
+
return (this.sections?.length ?? 0) > 0;
|
|
1451
|
+
}
|
|
1452
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: EditViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1453
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: EditViewComponent, isStandalone: true, selector: "ud-edit-view", inputs: { title: "title", loading: "loading", skeletonTitleHeight: "skeletonTitleHeight", skeletonBodyHeight: "skeletonBodyHeight" }, queries: [{ propertyName: "sections", predicate: EditViewSectionDirective }], ngImport: i0, template: "<div class=\"container\">\n <div class=\"header\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"loading col-6\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonTitleHeight }\" />\n } @else {\n <h4>{{ title }}</h4>\n }\n <ng-content select=\"[header-actions]\"></ng-content>\n </div>\n <div class=\"content\" [ngClass]=\"{ loading: loading }\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"col\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonBodyHeight }\" />\n } @else {\n @if (hasSections) {\n @for (sec of sectionsArray; track sec) {\n <div class=\"section\">\n <ng-container [ngTemplateOutlet]=\"sec.templateRef\"></ng-container>\n </div>\n }\n }\n <ng-content select=\"[main]\"></ng-content>\n }\n </div>\n @if (!loading) {\n <ng-content select=\"[footer]\"></ng-content>\n }\n</div>\n", styles: [".container{padding-top:1rem;justify-self:center;max-width:1080px}.header{display:flex;justify-content:space-between;height:48px}.header .loading{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background-color:var(--accent-lightest-color)}.content{display:flex;flex-wrap:wrap;padding:.4rem .8rem;margin:0 -15px}.content.loading{margin-top:1rem;background-color:var(--accent-lightest-color);border:1px solid var(--border-color);border-radius:4px}.content .section{padding:1rem;margin-bottom:1.5rem;background-color:var(--accent-lightest-color);border:1px solid var(--border-color);border-radius:4px;width:100%}mat-label{font-weight:300}::ng-deep mat-form-field{width:inherit}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "component", type: i2.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
|
|
1454
|
+
}
|
|
1455
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: EditViewComponent, decorators: [{
|
|
1456
|
+
type: Component,
|
|
1457
|
+
args: [{ selector: 'ud-edit-view', standalone: true, imports: [
|
|
1458
|
+
CommonModule,
|
|
1459
|
+
NgxSkeletonLoaderModule,
|
|
1460
|
+
MatIconModule,
|
|
1461
|
+
MatButtonModule,
|
|
1462
|
+
], template: "<div class=\"container\">\n <div class=\"header\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"loading col-6\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonTitleHeight }\" />\n } @else {\n <h4>{{ title }}</h4>\n }\n <ng-content select=\"[header-actions]\"></ng-content>\n </div>\n <div class=\"content\" [ngClass]=\"{ loading: loading }\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"col\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonBodyHeight }\" />\n } @else {\n @if (hasSections) {\n @for (sec of sectionsArray; track sec) {\n <div class=\"section\">\n <ng-container [ngTemplateOutlet]=\"sec.templateRef\"></ng-container>\n </div>\n }\n }\n <ng-content select=\"[main]\"></ng-content>\n }\n </div>\n @if (!loading) {\n <ng-content select=\"[footer]\"></ng-content>\n }\n</div>\n", styles: [".container{padding-top:1rem;justify-self:center;max-width:1080px}.header{display:flex;justify-content:space-between;height:48px}.header .loading{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background-color:var(--accent-lightest-color)}.content{display:flex;flex-wrap:wrap;padding:.4rem .8rem;margin:0 -15px}.content.loading{margin-top:1rem;background-color:var(--accent-lightest-color);border:1px solid var(--border-color);border-radius:4px}.content .section{padding:1rem;margin-bottom:1.5rem;background-color:var(--accent-lightest-color);border:1px solid var(--border-color);border-radius:4px;width:100%}mat-label{font-weight:300}::ng-deep mat-form-field{width:inherit}\n"] }]
|
|
1463
|
+
}], propDecorators: { title: [{
|
|
1464
|
+
type: Input
|
|
1465
|
+
}], loading: [{
|
|
1466
|
+
type: Input
|
|
1467
|
+
}], skeletonTitleHeight: [{
|
|
1468
|
+
type: Input
|
|
1469
|
+
}], skeletonBodyHeight: [{
|
|
1470
|
+
type: Input
|
|
1471
|
+
}], sections: [{
|
|
1472
|
+
type: ContentChildren,
|
|
1473
|
+
args: [EditViewSectionDirective]
|
|
1474
|
+
}] } });
|
|
1475
|
+
|
|
1476
|
+
var ModalInputType;
|
|
1477
|
+
(function (ModalInputType) {
|
|
1478
|
+
ModalInputType["DATERANGE"] = "daterange";
|
|
1479
|
+
ModalInputType["DATETIME"] = "datetime";
|
|
1480
|
+
ModalInputType["TIME"] = "time";
|
|
1481
|
+
ModalInputType["FILE"] = "file";
|
|
1482
|
+
ModalInputType["INPUT"] = "input";
|
|
1483
|
+
ModalInputType["OPTIONS"] = "options";
|
|
1484
|
+
ModalInputType["MULTI_SELECT"] = "multiselect";
|
|
1485
|
+
ModalInputType["AUTOCOMPLETE"] = "autocomplete";
|
|
1486
|
+
ModalInputType["PHONE"] = "phone";
|
|
1487
|
+
ModalInputType["TEXT_AREA"] = "text_area";
|
|
1488
|
+
ModalInputType["CHIPS"] = "chips";
|
|
1489
|
+
})(ModalInputType || (ModalInputType = {}));
|
|
1490
|
+
|
|
1491
|
+
class SingularPipe {
|
|
1492
|
+
transform(value) {
|
|
1493
|
+
return value.includes('|') ? value.split('|')[0].trim() : value;
|
|
1494
|
+
}
|
|
1495
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SingularPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1496
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: SingularPipe, isStandalone: true, name: "singular" });
|
|
1497
|
+
}
|
|
1498
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SingularPipe, decorators: [{
|
|
1499
|
+
type: Pipe,
|
|
1500
|
+
args: [{
|
|
1501
|
+
name: 'singular',
|
|
1502
|
+
}]
|
|
1503
|
+
}] });
|
|
1504
|
+
|
|
1505
|
+
const generateTimeOptions = (start, end, intervalMinutes = 5) => {
|
|
1506
|
+
const options = [];
|
|
1507
|
+
const cursor = new Date(start);
|
|
1508
|
+
cursor.setSeconds(0, 0);
|
|
1509
|
+
while (cursor <= end) {
|
|
1510
|
+
options.push({
|
|
1511
|
+
label: formatLocalTimeWithMinutesAmPm(cursor),
|
|
1512
|
+
value: new Date(cursor),
|
|
1513
|
+
});
|
|
1514
|
+
cursor.setMinutes(cursor.getMinutes() + intervalMinutes, 0, 0);
|
|
1515
|
+
}
|
|
1516
|
+
return options;
|
|
1517
|
+
};
|
|
1518
|
+
|
|
1519
|
+
class TelInputComponent {
|
|
1520
|
+
group;
|
|
1521
|
+
appearance = 'fill';
|
|
1522
|
+
width = 400;
|
|
1523
|
+
showIcon = true;
|
|
1524
|
+
static COUNTRIES = [
|
|
1525
|
+
{ country: 'Canada', flag: '🇨🇦', code: 1 },
|
|
1526
|
+
{ country: 'US', flag: '🇺🇸', code: 1 },
|
|
1527
|
+
// { country: 'Moldova', flag: '🇲🇩', code: 373 },
|
|
1528
|
+
// { country: 'Armenia', flag: '🇦🇲', code: 374 },
|
|
1529
|
+
];
|
|
1530
|
+
countries = TelInputComponent.COUNTRIES;
|
|
1531
|
+
selectedCountry = TelInputComponent.COUNTRIES[0];
|
|
1532
|
+
ngOnInit() {
|
|
1533
|
+
const countryCodeValue = this.countryCode.value;
|
|
1534
|
+
if (!countryCodeValue) {
|
|
1535
|
+
this.countryCode.setValue(this.countries[0]);
|
|
1536
|
+
}
|
|
1537
|
+
else {
|
|
1538
|
+
// this seems redundant, but mat-select-trigger for
|
|
1539
|
+
// some reason doesn't show the initial value, so this
|
|
1540
|
+
// operation kind of jumpstarts it
|
|
1541
|
+
this.countryCode.setValue(this.countries.find(c => countryCodeValue.country === c.country));
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
get countryCode() {
|
|
1545
|
+
return this.group.controls['countryCode'];
|
|
1546
|
+
}
|
|
1547
|
+
get phoneNumber() {
|
|
1548
|
+
return this.group.controls['phoneNumber'];
|
|
1549
|
+
}
|
|
1550
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TelInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1551
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TelInputComponent, isStandalone: true, selector: "ud-tel-input", inputs: { group: "group", appearance: "appearance", width: "width", showIcon: "showIcon" }, ngImport: i0, template: "<div class=\"d-flex\">\n <mat-form-field class=\"select\" [ngStyle]=\"{ width: (2 * width) / 7 + 'px' }\">\n <mat-select [formControl]=\"$any(countryCode)\">\n <mat-select-trigger>\n {{ countryCode.value.flag }} +{{ countryCode.value.code }}\n </mat-select-trigger>\n @for (country of countries; track country) {\n <mat-option [value]=\"country\">\n <b>\n {{ country.flag }} {{ country.country }}\n <span class=\"text-secondary\">+{{ country.code }}</span>\n </b>\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field\n [appearance]=\"appearance\"\n [ngStyle]=\"{ width: (5 * width) / 7 + 'px' }\">\n @if (showIcon) {\n <mat-icon matPrefix fontSet=\"material-icons-outlined\" class=\"mr-2\">\n phone\n </mat-icon>\n }\n <mat-label>{{ 'names.phone' | translate | capitalize }}</mat-label>\n <input\n matInput\n type=\"number\"\n [formControl]=\"$any(phoneNumber)\"\n placeholder=\"{{ 'names.phone' | translate | capitalize }}\" />\n @if (!phoneNumber.valid && phoneNumber.value !== '') {\n <mat-error class=\"text-break text-wrap\">\n {{ 'messages.validation.validPhoneNumber' | translate }}\n </mat-error>\n }\n </mat-form-field>\n</div>\n", styles: ["::ng-deep input,::ng-deep mat-label,::ng-deep mat-option,::ng-deep mat-select-trigger,::ng-deep .mat-select-min-line{font-size:13px!important}::ng-deep .cdk-overlay-pane{min-width:300px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "component", type: MatFormField$1, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }] });
|
|
1552
|
+
}
|
|
1553
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TelInputComponent, decorators: [{
|
|
1554
|
+
type: Component,
|
|
1555
|
+
args: [{ selector: 'ud-tel-input', imports: [
|
|
1556
|
+
MatFormField$1,
|
|
1557
|
+
MatSelect,
|
|
1558
|
+
MatSelectTrigger,
|
|
1559
|
+
TranslatePipe,
|
|
1560
|
+
CapitalizePipe,
|
|
1561
|
+
ReactiveFormsModule,
|
|
1562
|
+
NgStyle,
|
|
1563
|
+
MatOption,
|
|
1564
|
+
MatIcon,
|
|
1565
|
+
MatInput,
|
|
1566
|
+
MatError,
|
|
1567
|
+
MatLabel,
|
|
1568
|
+
], template: "<div class=\"d-flex\">\n <mat-form-field class=\"select\" [ngStyle]=\"{ width: (2 * width) / 7 + 'px' }\">\n <mat-select [formControl]=\"$any(countryCode)\">\n <mat-select-trigger>\n {{ countryCode.value.flag }} +{{ countryCode.value.code }}\n </mat-select-trigger>\n @for (country of countries; track country) {\n <mat-option [value]=\"country\">\n <b>\n {{ country.flag }} {{ country.country }}\n <span class=\"text-secondary\">+{{ country.code }}</span>\n </b>\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field\n [appearance]=\"appearance\"\n [ngStyle]=\"{ width: (5 * width) / 7 + 'px' }\">\n @if (showIcon) {\n <mat-icon matPrefix fontSet=\"material-icons-outlined\" class=\"mr-2\">\n phone\n </mat-icon>\n }\n <mat-label>{{ 'names.phone' | translate | capitalize }}</mat-label>\n <input\n matInput\n type=\"number\"\n [formControl]=\"$any(phoneNumber)\"\n placeholder=\"{{ 'names.phone' | translate | capitalize }}\" />\n @if (!phoneNumber.valid && phoneNumber.value !== '') {\n <mat-error class=\"text-break text-wrap\">\n {{ 'messages.validation.validPhoneNumber' | translate }}\n </mat-error>\n }\n </mat-form-field>\n</div>\n", styles: ["::ng-deep input,::ng-deep mat-label,::ng-deep mat-option,::ng-deep mat-select-trigger,::ng-deep .mat-select-min-line{font-size:13px!important}::ng-deep .cdk-overlay-pane{min-width:300px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
|
|
1569
|
+
}], propDecorators: { group: [{
|
|
1570
|
+
type: Input
|
|
1571
|
+
}], appearance: [{
|
|
1572
|
+
type: Input
|
|
1573
|
+
}], width: [{
|
|
1574
|
+
type: Input
|
|
1575
|
+
}], showIcon: [{
|
|
1576
|
+
type: Input
|
|
1577
|
+
}] } });
|
|
1578
|
+
|
|
1579
|
+
class ModalComponent {
|
|
1580
|
+
data;
|
|
1581
|
+
form;
|
|
1582
|
+
modalInputType = ModalInputType;
|
|
1583
|
+
showClose = true;
|
|
1584
|
+
// Picture related
|
|
1585
|
+
pictureUrls;
|
|
1586
|
+
currentPictureIndex;
|
|
1587
|
+
// Autocomplete
|
|
1588
|
+
autocompleteFilteredOptions = [];
|
|
1589
|
+
// Timepicker
|
|
1590
|
+
defaultMinTime = '00:00';
|
|
1591
|
+
defaultMaxTime = '23:59';
|
|
1592
|
+
DEFAULT_TIME_OPTIONS = generateTimeOptions(new Date(new Date().setHours(0, 0, 0, 0)), new Date(new Date().setHours(23, 55, 0, 0)));
|
|
1593
|
+
constructor(data) {
|
|
1594
|
+
this.data = data;
|
|
1595
|
+
if (this.data.formGroup) {
|
|
1596
|
+
this.form = this.data.formGroup;
|
|
1597
|
+
}
|
|
1598
|
+
if (this.data.pictureUrls && this.data.index != undefined) {
|
|
1599
|
+
this.pictureUrls = this.data.pictureUrls;
|
|
1600
|
+
this.currentPictureIndex = this.data.index;
|
|
1601
|
+
}
|
|
1602
|
+
if (this.data.showClose != undefined) {
|
|
1603
|
+
this.showClose = this.data.showClose;
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
previous() {
|
|
1607
|
+
if (this.currentPictureIndex != undefined && this.currentPictureIndex > 0) {
|
|
1608
|
+
this.currentPictureIndex -= 1;
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
next() {
|
|
1612
|
+
if (this.currentPictureIndex != undefined &&
|
|
1613
|
+
this.currentPictureIndex < (this.pictureUrls || []).length - 1) {
|
|
1614
|
+
this.currentPictureIndex += 1;
|
|
1615
|
+
}
|
|
1616
|
+
}
|
|
1617
|
+
getMinimumDate() {
|
|
1618
|
+
return new Date();
|
|
1619
|
+
}
|
|
1620
|
+
getDefaultTime() {
|
|
1621
|
+
const date = new Date();
|
|
1622
|
+
return [date.getHours(), Math.ceil(date.getMinutes() / 5) * 5, 0];
|
|
1623
|
+
}
|
|
1624
|
+
onAutocompleteInputChange(event, options) {
|
|
1625
|
+
const input = event.target;
|
|
1626
|
+
this.autocompleteFilteredOptions = options.filter(o => o.label.toLowerCase().includes(input.value.toLowerCase()));
|
|
1627
|
+
}
|
|
1628
|
+
autocompleteDisplayFn(option) {
|
|
1629
|
+
return option?.label || '';
|
|
1630
|
+
}
|
|
1631
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ModalComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
1632
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: ModalComponent, isStandalone: true, selector: "ud-modal", ngImport: i0, template: "<div class=\"m-4\">\n <h3 mat-dialog-title>{{ data.title | translate | capitalize }}</h3>\n <div mat-dialog-content>\n @if (pictureUrls && currentPictureIndex != undefined) {\n <div class=\"image-container\">\n <mat-icon class=\"arrow-picture-icon\" (click)=\"previous()\"\n >keyboard_arrow_left\n </mat-icon>\n <img [src]=\"pictureUrls[currentPictureIndex]\" alt=\"Picture\" />\n <mat-icon class=\"arrow-picture-icon\" (click)=\"next()\"\n >keyboard_arrow_right\n </mat-icon>\n </div>\n <div class=\"footer\">\n {{ currentPictureIndex + 1 }} {{ 'names.of' | translate }}\n {{ pictureUrls.length }}\n </div>\n }\n @if (form) {\n <form [formGroup]=\"form\">\n <div class=\"d-flex flex-column pt-2\">\n @for (formType of data.forms; track formType) {\n @switch (formType.type) {\n @case (modalInputType.INPUT) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n matInput\n [type]=\"formType.inputType ?? 'text'\"\n [formControlName]=\"formType.property\" />\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.PHONE) {\n <ng-container>\n <ud-tel-input\n [group]=\"form.controls[formType.property]\"\n [width]=\"300\"\n [showIcon]=\"false\"></ud-tel-input>\n </ng-container>\n }\n @case (modalInputType.TEXT_AREA) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <textarea\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"2\"\n cdkAutosizeMaxRows=\"6\"\n maxlength=\"150\"\n [formControlName]=\"formType.property\"></textarea>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.OPTIONS) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-select [formControlName]=\"formType.property\">\n @for (type of formType.availableOptions; track type) {\n @if (type.value) {\n <mat-option [value]=\"type.value\">\n {{ type.label | translate | capitalize }}\n </mat-option>\n } @else {\n <mat-option [value]=\"type\">\n {{ type }}\n </mat-option>\n }\n }\n </mat-select>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.MULTI_SELECT) {\n <ng-container>\n <mat-form-field class=\"large\" appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-select [formControlName]=\"formType.property\" multiple>\n @for (type of formType.availableOptions; track type) {\n @if (type.value) {\n <mat-option [value]=\"type.value\">\n {{ type.label | translate | capitalize }}\n </mat-option>\n } @else {\n <mat-option [value]=\"type\">\n {{ type }}\n </mat-option>\n }\n }\n </mat-select>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.AUTOCOMPLETE) {\n <mat-form-field appearance=\"outline\">\n <mat-icon matPrefix fontSet=\"material-icons-outlined\">\n person\n </mat-icon>\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n type=\"text\"\n matInput\n [formControlName]=\"formType.property\"\n (input)=\"\n onAutocompleteInputChange(\n $event,\n formType.availableOptions\n )\n \"\n [matAutocomplete]=\"autoComplete\" />\n <mat-autocomplete\n #autoComplete=\"matAutocomplete\"\n [displayWith]=\"autocompleteDisplayFn\">\n @for (\n option of autocompleteFilteredOptions.length > 0\n ? autocompleteFilteredOptions\n : formType.availableOptions;\n track option\n ) {\n <mat-option [value]=\"option\">\n {{ option.label }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n }\n @case (modalInputType.DATERANGE) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [formControlName]=\"'start' + formType.property\"\n placeholder=\"{{\n 'names.startDate' | translate | capitalize\n }}\" />\n <input\n matEndDate\n [formControlName]=\"'end' + formType.property\"\n placeholder=\"{{\n 'names.endDate' | translate | capitalize\n }}\" />\n </mat-date-range-input>\n <mat-hint>MM/DD/YYYY - MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matSuffix [for]=\"picker\" />\n <mat-date-range-picker #picker></mat-date-range-picker>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.DATETIME) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n matInput\n [formControlName]=\"formType.property\"\n [matDatepicker]=\"picker\" />\n <mat-hint>MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" />\n <mat-datepicker #picker />\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.TIME) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n matInput\n [matTimepicker]=\"timepicker\"\n [matTimepickerMin]=\"formType.minTime || defaultMinTime\"\n [matTimepickerMax]=\"formType.maxTime || defaultMaxTime\"\n [formControlName]=\"formType.property\" />\n <mat-timepicker-toggle matIconSuffix [for]=\"timepicker\" />\n <mat-timepicker\n #timepicker\n [options]=\"\n formType.availableOptions || DEFAULT_TIME_OPTIONS\n \"\n [interval]=\"formType.dateTimeInterval || '30m'\" />\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.CHIPS) {\n <ng-container>\n <mat-form-field\n class=\"example-form-field\"\n appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-chip-grid\n #chipGrid\n aria-label=\"Enter options\"\n [formControlName]=\"formType.property\">\n @for (option of formType.availableOptions; track option) {\n <mat-chip-row (removed)=\"formType.removeOption(option)\">\n {{ option }}\n <button matChipRemove aria-label=\"'remove ' + option\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <input\n placeholder=\"New option...\"\n [matChipInputFor]=\"chipGrid\"\n (matChipInputTokenEnd)=\"formType.addOption($event)\" />\n </mat-form-field>\n </ng-container>\n }\n }\n }\n </div>\n </form>\n } @else {\n <p>\n {{ data.bodyText }}\n </p>\n }\n </div>\n <div class=\"d-flex justify-content-end\">\n <div mat-dialog-actions>\n @if (showClose) {\n <button mat-button mat-dialog-close>\n {{ 'actions.close' | translate | capitalize }}\n </button>\n }\n <button\n [disabled]=\"form && form.invalid\"\n mat-raised-button\n color=\"primary\"\n mat-dialog-close\n (click)=\"form ? data.save(form.getRawValue()) : data.confirm()\">\n {{ (form ? 'actions.save' : 'actions.ok') | translate | capitalize }}\n </button>\n </div>\n </div>\n</div>\n", styles: [".image-container{display:flex;justify-content:space-between;align-items:center}.image-container .arrow-picture-icon{display:flex;justify-content:center;align-items:center;padding:1rem;font-size:2rem;cursor:pointer;background:#5f665e;color:#fff}.image-container img{width:550px}.footer{display:flex;justify-content:center;align-items:center;color:var(--text-color)}mat-form-field{width:300px}mat-form-field.large{width:420px!important}mat-label{font-size:12px}\n"], dependencies: [{ kind: "pipe", type: CapitalizePipe, name: "capitalize" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "component", type: MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "pipe", type: SingularPipe, name: "singular" }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatTimepickerInput, selector: "input[matTimepicker]", inputs: ["value", "matTimepicker", "matTimepickerMin", "matTimepickerMax", "disabled"], outputs: ["valueChange"], exportAs: ["matTimepickerInput"] }, { kind: "component", type: MatTimepicker, selector: "mat-timepicker", inputs: ["interval", "options", "disableRipple", "aria-label", "aria-labelledby"], outputs: ["selected", "opened", "closed"], exportAs: ["matTimepicker"] }, { kind: "component", type: MatTimepickerToggle, selector: "mat-timepicker-toggle", inputs: ["for", "aria-label", "aria-labelledby", "disabled", "tabIndex", "disableRipple"], exportAs: ["matTimepickerToggle"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: TelInputComponent, selector: "ud-tel-input", inputs: ["group", "appearance", "width", "showIcon"] }] });
|
|
1633
|
+
}
|
|
1634
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ModalComponent, decorators: [{
|
|
1635
|
+
type: Component,
|
|
1636
|
+
args: [{ selector: 'ud-modal', imports: [
|
|
1637
|
+
CapitalizePipe,
|
|
1638
|
+
TranslatePipe,
|
|
1639
|
+
MatButton,
|
|
1640
|
+
MatDialogClose,
|
|
1641
|
+
MatDialogActions,
|
|
1642
|
+
MatChipInput,
|
|
1643
|
+
MatChipRow,
|
|
1644
|
+
MatIcon,
|
|
1645
|
+
ReactiveFormsModule,
|
|
1646
|
+
MatChipGrid,
|
|
1647
|
+
SingularPipe,
|
|
1648
|
+
MatFormField,
|
|
1649
|
+
MatFormField,
|
|
1650
|
+
MatHint,
|
|
1651
|
+
MatFormField,
|
|
1652
|
+
MatDateRangePicker,
|
|
1653
|
+
MatDatepickerToggle,
|
|
1654
|
+
MatSuffix,
|
|
1655
|
+
MatEndDate,
|
|
1656
|
+
MatStartDate,
|
|
1657
|
+
MatDateRangeInput,
|
|
1658
|
+
MatFormField,
|
|
1659
|
+
MatLabel,
|
|
1660
|
+
MatOption,
|
|
1661
|
+
MatSelect,
|
|
1662
|
+
MatLabel,
|
|
1663
|
+
MatFormField,
|
|
1664
|
+
CdkTextareaAutosize,
|
|
1665
|
+
MatInput,
|
|
1666
|
+
MatLabel,
|
|
1667
|
+
MatFormField,
|
|
1668
|
+
MatDialogContent,
|
|
1669
|
+
MatDialogTitle,
|
|
1670
|
+
MatDatepickerInput,
|
|
1671
|
+
MatDatepicker,
|
|
1672
|
+
MatTimepickerInput,
|
|
1673
|
+
MatTimepicker,
|
|
1674
|
+
MatTimepickerToggle,
|
|
1675
|
+
MatChipRemove,
|
|
1676
|
+
MatAutocomplete,
|
|
1677
|
+
MatAutocompleteTrigger,
|
|
1678
|
+
CapitalizePipe,
|
|
1679
|
+
SingularPipe,
|
|
1680
|
+
TelInputComponent,
|
|
1681
|
+
], template: "<div class=\"m-4\">\n <h3 mat-dialog-title>{{ data.title | translate | capitalize }}</h3>\n <div mat-dialog-content>\n @if (pictureUrls && currentPictureIndex != undefined) {\n <div class=\"image-container\">\n <mat-icon class=\"arrow-picture-icon\" (click)=\"previous()\"\n >keyboard_arrow_left\n </mat-icon>\n <img [src]=\"pictureUrls[currentPictureIndex]\" alt=\"Picture\" />\n <mat-icon class=\"arrow-picture-icon\" (click)=\"next()\"\n >keyboard_arrow_right\n </mat-icon>\n </div>\n <div class=\"footer\">\n {{ currentPictureIndex + 1 }} {{ 'names.of' | translate }}\n {{ pictureUrls.length }}\n </div>\n }\n @if (form) {\n <form [formGroup]=\"form\">\n <div class=\"d-flex flex-column pt-2\">\n @for (formType of data.forms; track formType) {\n @switch (formType.type) {\n @case (modalInputType.INPUT) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n matInput\n [type]=\"formType.inputType ?? 'text'\"\n [formControlName]=\"formType.property\" />\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.PHONE) {\n <ng-container>\n <ud-tel-input\n [group]=\"form.controls[formType.property]\"\n [width]=\"300\"\n [showIcon]=\"false\"></ud-tel-input>\n </ng-container>\n }\n @case (modalInputType.TEXT_AREA) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <textarea\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"2\"\n cdkAutosizeMaxRows=\"6\"\n maxlength=\"150\"\n [formControlName]=\"formType.property\"></textarea>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.OPTIONS) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-select [formControlName]=\"formType.property\">\n @for (type of formType.availableOptions; track type) {\n @if (type.value) {\n <mat-option [value]=\"type.value\">\n {{ type.label | translate | capitalize }}\n </mat-option>\n } @else {\n <mat-option [value]=\"type\">\n {{ type }}\n </mat-option>\n }\n }\n </mat-select>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.MULTI_SELECT) {\n <ng-container>\n <mat-form-field class=\"large\" appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-select [formControlName]=\"formType.property\" multiple>\n @for (type of formType.availableOptions; track type) {\n @if (type.value) {\n <mat-option [value]=\"type.value\">\n {{ type.label | translate | capitalize }}\n </mat-option>\n } @else {\n <mat-option [value]=\"type\">\n {{ type }}\n </mat-option>\n }\n }\n </mat-select>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.AUTOCOMPLETE) {\n <mat-form-field appearance=\"outline\">\n <mat-icon matPrefix fontSet=\"material-icons-outlined\">\n person\n </mat-icon>\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n type=\"text\"\n matInput\n [formControlName]=\"formType.property\"\n (input)=\"\n onAutocompleteInputChange(\n $event,\n formType.availableOptions\n )\n \"\n [matAutocomplete]=\"autoComplete\" />\n <mat-autocomplete\n #autoComplete=\"matAutocomplete\"\n [displayWith]=\"autocompleteDisplayFn\">\n @for (\n option of autocompleteFilteredOptions.length > 0\n ? autocompleteFilteredOptions\n : formType.availableOptions;\n track option\n ) {\n <mat-option [value]=\"option\">\n {{ option.label }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n }\n @case (modalInputType.DATERANGE) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [formControlName]=\"'start' + formType.property\"\n placeholder=\"{{\n 'names.startDate' | translate | capitalize\n }}\" />\n <input\n matEndDate\n [formControlName]=\"'end' + formType.property\"\n placeholder=\"{{\n 'names.endDate' | translate | capitalize\n }}\" />\n </mat-date-range-input>\n <mat-hint>MM/DD/YYYY - MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matSuffix [for]=\"picker\" />\n <mat-date-range-picker #picker></mat-date-range-picker>\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.DATETIME) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n matInput\n [formControlName]=\"formType.property\"\n [matDatepicker]=\"picker\" />\n <mat-hint>MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" />\n <mat-datepicker #picker />\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.TIME) {\n <ng-container>\n <mat-form-field appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <input\n matInput\n [matTimepicker]=\"timepicker\"\n [matTimepickerMin]=\"formType.minTime || defaultMinTime\"\n [matTimepickerMax]=\"formType.maxTime || defaultMaxTime\"\n [formControlName]=\"formType.property\" />\n <mat-timepicker-toggle matIconSuffix [for]=\"timepicker\" />\n <mat-timepicker\n #timepicker\n [options]=\"\n formType.availableOptions || DEFAULT_TIME_OPTIONS\n \"\n [interval]=\"formType.dateTimeInterval || '30m'\" />\n </mat-form-field>\n </ng-container>\n }\n @case (modalInputType.CHIPS) {\n <ng-container>\n <mat-form-field\n class=\"example-form-field\"\n appearance=\"outline\">\n <mat-label>\n {{ formType.title | translate | singular | capitalize }}\n </mat-label>\n <mat-chip-grid\n #chipGrid\n aria-label=\"Enter options\"\n [formControlName]=\"formType.property\">\n @for (option of formType.availableOptions; track option) {\n <mat-chip-row (removed)=\"formType.removeOption(option)\">\n {{ option }}\n <button matChipRemove aria-label=\"'remove ' + option\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <input\n placeholder=\"New option...\"\n [matChipInputFor]=\"chipGrid\"\n (matChipInputTokenEnd)=\"formType.addOption($event)\" />\n </mat-form-field>\n </ng-container>\n }\n }\n }\n </div>\n </form>\n } @else {\n <p>\n {{ data.bodyText }}\n </p>\n }\n </div>\n <div class=\"d-flex justify-content-end\">\n <div mat-dialog-actions>\n @if (showClose) {\n <button mat-button mat-dialog-close>\n {{ 'actions.close' | translate | capitalize }}\n </button>\n }\n <button\n [disabled]=\"form && form.invalid\"\n mat-raised-button\n color=\"primary\"\n mat-dialog-close\n (click)=\"form ? data.save(form.getRawValue()) : data.confirm()\">\n {{ (form ? 'actions.save' : 'actions.ok') | translate | capitalize }}\n </button>\n </div>\n </div>\n</div>\n", styles: [".image-container{display:flex;justify-content:space-between;align-items:center}.image-container .arrow-picture-icon{display:flex;justify-content:center;align-items:center;padding:1rem;font-size:2rem;cursor:pointer;background:#5f665e;color:#fff}.image-container img{width:550px}.footer{display:flex;justify-content:center;align-items:center;color:var(--text-color)}mat-form-field{width:300px}mat-form-field.large{width:420px!important}mat-label{font-size:12px}\n"] }]
|
|
1682
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1683
|
+
type: Inject,
|
|
1684
|
+
args: [MAT_DIALOG_DATA]
|
|
1685
|
+
}] }] });
|
|
1686
|
+
|
|
1687
|
+
class SafePipe {
|
|
1688
|
+
sanitizer;
|
|
1689
|
+
constructor(sanitizer) {
|
|
1690
|
+
this.sanitizer = sanitizer;
|
|
1691
|
+
}
|
|
1692
|
+
transform(url) {
|
|
1693
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
|
|
1694
|
+
}
|
|
1695
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SafePipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1696
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: SafePipe, isStandalone: true, name: "safe" });
|
|
1697
|
+
}
|
|
1698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SafePipe, decorators: [{
|
|
1699
|
+
type: Pipe,
|
|
1700
|
+
args: [{
|
|
1701
|
+
name: 'safe',
|
|
1702
|
+
}]
|
|
1703
|
+
}], ctorParameters: () => [{ type: i1$4.DomSanitizer }] });
|
|
1704
|
+
|
|
1705
|
+
class FileInputComponent {
|
|
1706
|
+
dialog;
|
|
1707
|
+
accept = '.jpg,.png';
|
|
1708
|
+
label = 'actions.uploadImage';
|
|
1709
|
+
multiple = true;
|
|
1710
|
+
icon;
|
|
1711
|
+
initialFiles = input();
|
|
1712
|
+
filesSelected = new EventEmitter();
|
|
1713
|
+
files = [];
|
|
1714
|
+
previewUrls = [];
|
|
1715
|
+
uploadStatus = null;
|
|
1716
|
+
constructor(dialog) {
|
|
1717
|
+
this.dialog = dialog;
|
|
1718
|
+
effect(() => {
|
|
1719
|
+
if (this.initialFiles() && Array.isArray(this.initialFiles())) {
|
|
1720
|
+
const response = this.initialFiles();
|
|
1721
|
+
this.files = response.map(file => file.file);
|
|
1722
|
+
this.previewUrls = response.map(file => file.signedUrl);
|
|
1723
|
+
}
|
|
1724
|
+
else {
|
|
1725
|
+
const response = this.initialFiles();
|
|
1726
|
+
if (response) {
|
|
1727
|
+
this.files = [response.file];
|
|
1728
|
+
this.previewUrls = [response.signedUrl];
|
|
1729
|
+
}
|
|
1730
|
+
else {
|
|
1731
|
+
this.files = [];
|
|
1732
|
+
this.previewUrls = [];
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1737
|
+
async dropped(droppedFiles) {
|
|
1738
|
+
const newFiles = [];
|
|
1739
|
+
for (const droppedFile of droppedFiles) {
|
|
1740
|
+
if (droppedFile.fileEntry.isFile) {
|
|
1741
|
+
const fileEntry = droppedFile.fileEntry;
|
|
1742
|
+
// Use Promise to handle the file callback
|
|
1743
|
+
await new Promise(resolve => {
|
|
1744
|
+
fileEntry.file((file) => {
|
|
1745
|
+
newFiles.push(file);
|
|
1746
|
+
// Create preview URL
|
|
1747
|
+
const previewUrl = URL.createObjectURL(file);
|
|
1748
|
+
this.previewUrls.push(previewUrl);
|
|
1749
|
+
this.uploadStatus = `Added ${file.name}`;
|
|
1750
|
+
resolve();
|
|
1751
|
+
});
|
|
1752
|
+
});
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
if (!this.multiple) {
|
|
1756
|
+
// Replace existing files
|
|
1757
|
+
this.files = newFiles;
|
|
1758
|
+
}
|
|
1759
|
+
else {
|
|
1760
|
+
// Add to existing files
|
|
1761
|
+
this.files = [...this.files, ...newFiles];
|
|
1762
|
+
}
|
|
1763
|
+
// Emit the files to parent component
|
|
1764
|
+
this.filesSelected.emit(this.files);
|
|
1765
|
+
}
|
|
1766
|
+
removeFile(index) {
|
|
1767
|
+
// Revoke the object URL to prevent memory leaks
|
|
1768
|
+
URL.revokeObjectURL(this.previewUrls[index]);
|
|
1769
|
+
// Remove the file and its preview
|
|
1770
|
+
this.files.splice(index, 1);
|
|
1771
|
+
this.previewUrls.splice(index, 1);
|
|
1772
|
+
// Emit the updated files array
|
|
1773
|
+
this.filesSelected.emit(this.files);
|
|
1774
|
+
}
|
|
1775
|
+
clearFiles() {
|
|
1776
|
+
// Revoke all object URLs
|
|
1777
|
+
this.previewUrls.forEach(url => URL.revokeObjectURL(url));
|
|
1778
|
+
this.files = [];
|
|
1779
|
+
this.previewUrls = [];
|
|
1780
|
+
this.filesSelected.emit([]);
|
|
1781
|
+
}
|
|
1782
|
+
openImageDialog(index) {
|
|
1783
|
+
const dialogConfig = new MatDialogConfig();
|
|
1784
|
+
dialogConfig.data = {
|
|
1785
|
+
pictureUrls: this.previewUrls,
|
|
1786
|
+
index,
|
|
1787
|
+
showClose: false,
|
|
1788
|
+
confirm: () => { },
|
|
1789
|
+
};
|
|
1790
|
+
dialogConfig.width = '50vw';
|
|
1791
|
+
this.dialog.open(ModalComponent, dialogConfig);
|
|
1792
|
+
}
|
|
1793
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: FileInputComponent, deps: [{ token: i1$5.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
1794
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: FileInputComponent, isStandalone: true, selector: "ud-file-input", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, initialFiles: { classPropertyName: "initialFiles", publicName: "initialFiles", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesSelected: "filesSelected" }, ngImport: i0, template: "<div class=\"mt-3\">\n <ngx-file-drop\n dropZoneLabel=\"Drop files here\"\n (onFileDrop)=\"dropped($event)\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [directory]=\"false\">\n <ng-template\n ngx-file-drop-content-tmp\n let-openFileSelector=\"openFileSelector\">\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\">\n @if (icon) {\n <mat-icon matPrefix>\n {{ icon }}\n </mat-icon>\n }\n <span class=\"text-wrap\">{{ label | translate | capitalize }}</span>\n </button>\n </ng-template>\n </ngx-file-drop>\n <div class=\"mt-3\">\n @for (image of previewUrls; track $index) {\n <div\n class=\"d-flex justify-content-between align-items-center mb-2 p-1 file\">\n @if (image) {\n <div class=\"d-flex\">\n @if (image.substring(0, 30).includes('pdf')) {\n <iframe\n [src]=\"image | safe\"\n class=\"mr-3 border\"\n allowFullscreen></iframe>\n } @else {\n <img\n [src]=\"image\"\n alt=\"\"\n class=\"mr-3 border\"\n (click)=\"openImageDialog($index)\" />\n }\n </div>\n }\n <button mat-icon-button (click)=\"removeFile($index)\">\n <mat-icon fontSet=\"material-icons-outlined\"> cancel</mat-icon>\n </button>\n </div>\n }\n </div>\n</div>\n", styles: [".cancel{padding:0;min-width:fit-content;height:fit-content;margin-left:-13px;margin-top:-12px}.cancel ::ng-deep .mat-button-wrapper{display:flex}.cancel ::ng-deep .mat-button-wrapper mat-icon{background:#fff;border-radius:20px}img,iframe{width:65px;height:65px;object-fit:cover;border-radius:10px;cursor:pointer}img:hover,iframe:hover{opacity:.6}.file{border:1px dashed #373f4c;border-radius:10px}\n"], dependencies: [{ kind: "ngmodule", type: NgxFileDropModule }, { kind: "component", type: i2$1.NgxFileDropComponent, selector: "ngx-file-drop", inputs: ["accept", "directory", "multiple", "dropZoneLabel", "dropZoneClassName", "useDragEnter", "contentClassName", "showBrowseBtn", "browseBtnClassName", "browseBtnLabel", "disabled"], outputs: ["onFileDrop", "onFileOver", "onFileLeave"] }, { kind: "directive", type: i2$1.NgxFileDropContentTemplateDirective, selector: "[ngx-file-drop-content-tmp]" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: SafePipe, name: "safe" }] });
|
|
1795
|
+
}
|
|
1796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
1797
|
+
type: Component,
|
|
1798
|
+
args: [{ selector: 'ud-file-input', imports: [
|
|
1799
|
+
NgxFileDropModule,
|
|
1800
|
+
MatButton,
|
|
1801
|
+
MatIcon,
|
|
1802
|
+
MatPrefix,
|
|
1803
|
+
CapitalizePipe,
|
|
1804
|
+
TranslatePipe,
|
|
1805
|
+
MatIconButton,
|
|
1806
|
+
SafePipe,
|
|
1807
|
+
], template: "<div class=\"mt-3\">\n <ngx-file-drop\n dropZoneLabel=\"Drop files here\"\n (onFileDrop)=\"dropped($event)\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [directory]=\"false\">\n <ng-template\n ngx-file-drop-content-tmp\n let-openFileSelector=\"openFileSelector\">\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\">\n @if (icon) {\n <mat-icon matPrefix>\n {{ icon }}\n </mat-icon>\n }\n <span class=\"text-wrap\">{{ label | translate | capitalize }}</span>\n </button>\n </ng-template>\n </ngx-file-drop>\n <div class=\"mt-3\">\n @for (image of previewUrls; track $index) {\n <div\n class=\"d-flex justify-content-between align-items-center mb-2 p-1 file\">\n @if (image) {\n <div class=\"d-flex\">\n @if (image.substring(0, 30).includes('pdf')) {\n <iframe\n [src]=\"image | safe\"\n class=\"mr-3 border\"\n allowFullscreen></iframe>\n } @else {\n <img\n [src]=\"image\"\n alt=\"\"\n class=\"mr-3 border\"\n (click)=\"openImageDialog($index)\" />\n }\n </div>\n }\n <button mat-icon-button (click)=\"removeFile($index)\">\n <mat-icon fontSet=\"material-icons-outlined\"> cancel</mat-icon>\n </button>\n </div>\n }\n </div>\n</div>\n", styles: [".cancel{padding:0;min-width:fit-content;height:fit-content;margin-left:-13px;margin-top:-12px}.cancel ::ng-deep .mat-button-wrapper{display:flex}.cancel ::ng-deep .mat-button-wrapper mat-icon{background:#fff;border-radius:20px}img,iframe{width:65px;height:65px;object-fit:cover;border-radius:10px;cursor:pointer}img:hover,iframe:hover{opacity:.6}.file{border:1px dashed #373f4c;border-radius:10px}\n"] }]
|
|
1808
|
+
}], ctorParameters: () => [{ type: i1$5.MatDialog }], propDecorators: { accept: [{
|
|
1809
|
+
type: Input
|
|
1810
|
+
}], label: [{
|
|
1811
|
+
type: Input
|
|
1812
|
+
}], multiple: [{
|
|
1813
|
+
type: Input
|
|
1814
|
+
}], icon: [{
|
|
1815
|
+
type: Input
|
|
1816
|
+
}], filesSelected: [{
|
|
1817
|
+
type: Output
|
|
1818
|
+
}] } });
|
|
1819
|
+
|
|
1820
|
+
var KpiDataType;
|
|
1821
|
+
(function (KpiDataType) {
|
|
1822
|
+
KpiDataType["PROGRESS_BAR"] = "PROGRESS_BAR";
|
|
1823
|
+
KpiDataType["PILLS"] = "PILLS";
|
|
1824
|
+
KpiDataType["TEXT"] = "TEXT";
|
|
1825
|
+
})(KpiDataType || (KpiDataType = {}));
|
|
1826
|
+
var KpiProgressBarType;
|
|
1827
|
+
(function (KpiProgressBarType) {
|
|
1828
|
+
KpiProgressBarType["PERCENTAGE"] = "PERCENTAGE";
|
|
1829
|
+
KpiProgressBarType["DIVISION"] = "DIVISION";
|
|
1830
|
+
})(KpiProgressBarType || (KpiProgressBarType = {}));
|
|
1831
|
+
var KpiPillType;
|
|
1832
|
+
(function (KpiPillType) {
|
|
1833
|
+
KpiPillType["SUCCESS"] = "success";
|
|
1834
|
+
KpiPillType["WARNING"] = "warning";
|
|
1835
|
+
KpiPillType["DANGER"] = "danger";
|
|
1836
|
+
KpiPillType["INFO"] = "info";
|
|
1837
|
+
})(KpiPillType || (KpiPillType = {}));
|
|
1838
|
+
var IconColor;
|
|
1839
|
+
(function (IconColor) {
|
|
1840
|
+
IconColor["PURPLE"] = "purple";
|
|
1841
|
+
IconColor["AMBER"] = "amber";
|
|
1842
|
+
IconColor["GREEN"] = "green";
|
|
1843
|
+
IconColor["BLUE"] = "blue";
|
|
1844
|
+
IconColor["RED"] = "red";
|
|
1845
|
+
})(IconColor || (IconColor = {}));
|
|
1846
|
+
|
|
1847
|
+
class PillComponent {
|
|
1848
|
+
text;
|
|
1849
|
+
type;
|
|
1850
|
+
get observableText() {
|
|
1851
|
+
return typeof this.text === 'string' ? of(this.text) : this.text;
|
|
1852
|
+
}
|
|
1853
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1854
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PillComponent, isStandalone: true, selector: "ud-pill", inputs: { text: "text", type: "type" }, ngImport: i0, template: "<span class=\"pill\" [ngClass]=\"type\">\n {{ (observableText | async) ?? '' | capitalize }}\n</span>\n", styles: [".pill{display:inline-flex;align-items:center;padding:.375rem .75rem;border-radius:12px;font-size:.8125rem;font-weight:600;text-align:center;transition:all .2s ease;letter-spacing:.025em;white-space:nowrap}.pill.success{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#065f46;border:1.5px solid #6ee7b7;box-shadow:0 2px 8px #10b98126}.pill.success:hover{background:linear-gradient(135deg,#a7f3d0,#86efac);box-shadow:0 4px 12px #10b98133;transform:translateY(-1px)}.pill.warning{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;border:1.5px solid #fcd34d;box-shadow:0 2px 8px #f59e0b26}.pill.warning:hover{background:linear-gradient(135deg,#fde68a,#fcd34d);box-shadow:0 4px 12px #f59e0b33;transform:translateY(-1px)}.pill.danger{background:linear-gradient(135deg,#fecaca,#fca5a5);color:#991b1b;border:1.5px solid #f87171;box-shadow:0 2px 8px #ef444426}.pill.danger:hover{background:linear-gradient(135deg,#fca5a5,#f87171);box-shadow:0 4px 12px #ef444433;transform:translateY(-1px)}.pill.info{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border:1.5px solid #93c5fd;box-shadow:0 2px 8px #3b82f626}.pill.info:hover{background:linear-gradient(135deg,#bfdbfe,#93c5fd);box-shadow:0 4px 12px #3b82f633;transform:translateY(-1px)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }] });
|
|
1855
|
+
}
|
|
1856
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PillComponent, decorators: [{
|
|
1857
|
+
type: Component,
|
|
1858
|
+
args: [{ selector: 'ud-pill', imports: [NgClass, AsyncPipe, CapitalizePipe], template: "<span class=\"pill\" [ngClass]=\"type\">\n {{ (observableText | async) ?? '' | capitalize }}\n</span>\n", styles: [".pill{display:inline-flex;align-items:center;padding:.375rem .75rem;border-radius:12px;font-size:.8125rem;font-weight:600;text-align:center;transition:all .2s ease;letter-spacing:.025em;white-space:nowrap}.pill.success{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#065f46;border:1.5px solid #6ee7b7;box-shadow:0 2px 8px #10b98126}.pill.success:hover{background:linear-gradient(135deg,#a7f3d0,#86efac);box-shadow:0 4px 12px #10b98133;transform:translateY(-1px)}.pill.warning{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;border:1.5px solid #fcd34d;box-shadow:0 2px 8px #f59e0b26}.pill.warning:hover{background:linear-gradient(135deg,#fde68a,#fcd34d);box-shadow:0 4px 12px #f59e0b33;transform:translateY(-1px)}.pill.danger{background:linear-gradient(135deg,#fecaca,#fca5a5);color:#991b1b;border:1.5px solid #f87171;box-shadow:0 2px 8px #ef444426}.pill.danger:hover{background:linear-gradient(135deg,#fca5a5,#f87171);box-shadow:0 4px 12px #ef444433;transform:translateY(-1px)}.pill.info{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border:1.5px solid #93c5fd;box-shadow:0 2px 8px #3b82f626}.pill.info:hover{background:linear-gradient(135deg,#bfdbfe,#93c5fd);box-shadow:0 4px 12px #3b82f633;transform:translateY(-1px)}\n"] }]
|
|
1859
|
+
}], propDecorators: { text: [{
|
|
1860
|
+
type: Input
|
|
1861
|
+
}], type: [{
|
|
1862
|
+
type: Input
|
|
1863
|
+
}] } });
|
|
1864
|
+
|
|
1865
|
+
class ProgressBarComponent {
|
|
1866
|
+
value = 0;
|
|
1867
|
+
height = '20px';
|
|
1868
|
+
borderRadius = '10px';
|
|
1869
|
+
backgroundColor = '#e0e0e0';
|
|
1870
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1871
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: ProgressBarComponent, isStandalone: true, selector: "ud-progress-bar", inputs: { value: "value", height: "height", borderRadius: "borderRadius", backgroundColor: "backgroundColor" }, ngImport: i0, template: "<div\n class=\"progress-container\"\n [style.height]=\"height\"\n [style.borderRadius]=\"borderRadius\"\n [style.backgroundColor]=\"backgroundColor\">\n <div\n class=\"progress-fill\"\n [style.width.%]=\"value\"\n [style.borderRadius]=\"borderRadius\"></div>\n</div>\n", styles: [".progress-container{width:100%;position:relative;overflow:hidden}.progress-fill{height:100%;transition:width .3s ease-in-out;background:var(--primary-color)}\n"] });
|
|
1872
|
+
}
|
|
1873
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
1874
|
+
type: Component,
|
|
1875
|
+
args: [{ selector: 'ud-progress-bar', template: "<div\n class=\"progress-container\"\n [style.height]=\"height\"\n [style.borderRadius]=\"borderRadius\"\n [style.backgroundColor]=\"backgroundColor\">\n <div\n class=\"progress-fill\"\n [style.width.%]=\"value\"\n [style.borderRadius]=\"borderRadius\"></div>\n</div>\n", styles: [".progress-container{width:100%;position:relative;overflow:hidden}.progress-fill{height:100%;transition:width .3s ease-in-out;background:var(--primary-color)}\n"] }]
|
|
1876
|
+
}], propDecorators: { value: [{
|
|
1877
|
+
type: Input
|
|
1878
|
+
}], height: [{
|
|
1879
|
+
type: Input
|
|
1880
|
+
}], borderRadius: [{
|
|
1881
|
+
type: Input
|
|
1882
|
+
}], backgroundColor: [{
|
|
1883
|
+
type: Input
|
|
1884
|
+
}] } });
|
|
1885
|
+
|
|
1886
|
+
class KpiComponent {
|
|
1887
|
+
title;
|
|
1888
|
+
subtitle;
|
|
1889
|
+
dataType;
|
|
1890
|
+
data;
|
|
1891
|
+
icon;
|
|
1892
|
+
iconColor;
|
|
1893
|
+
titleRef;
|
|
1894
|
+
getProgressData() {
|
|
1895
|
+
return this.data;
|
|
1896
|
+
}
|
|
1897
|
+
getProgressBarValue() {
|
|
1898
|
+
const { value, max } = this.getProgressData().data;
|
|
1899
|
+
return (value / max) * 100;
|
|
1900
|
+
}
|
|
1901
|
+
getPillData() {
|
|
1902
|
+
return this.data;
|
|
1903
|
+
}
|
|
1904
|
+
getTextData() {
|
|
1905
|
+
return this.data;
|
|
1906
|
+
}
|
|
1907
|
+
KpiDataType = KpiDataType;
|
|
1908
|
+
KpiProgressBarType = KpiProgressBarType;
|
|
1909
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KpiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1910
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: KpiComponent, isStandalone: true, selector: "ud-kpi", inputs: { title: "title", subtitle: "subtitle", dataType: "dataType", data: "data", icon: "icon", iconColor: "iconColor", titleRef: "titleRef" }, ngImport: i0, template: "<mat-card class=\"kpi-card\" [ngClass]=\"iconColor\" appearance=\"outlined\">\n <div class=\"kpi-header\">\n <div class=\"kpi-icon\">\n <mat-icon>{{ icon }}</mat-icon>\n </div>\n <div class=\"kpi-title-section\">\n <span class=\"kpi-label\">\n @if (titleRef) {\n <a [routerLink]=\"titleRef\">{{ title }}</a>\n } @else {\n {{ title }}\n }\n </span>\n @if (subtitle) {\n <span class=\"kpi-subtitle\">{{ subtitle }}</span>\n }\n </div>\n </div>\n\n <div class=\"kpi-content\">\n <div [ngSwitch]=\"dataType\">\n @switch (dataType) {\n @case (KpiDataType.PROGRESS_BAR) {\n <div class=\"progress-section\">\n @if (getProgressData().type === KpiProgressBarType.PERCENTAGE) {\n <div class=\"value-display\">\n <span class=\"kpi-value\">{{\n getProgressData().data.value\n }}</span>\n <span class=\"value-unit\">%</span>\n </div>\n } @else if (\n getProgressData().type === KpiProgressBarType.DIVISION\n ) {\n <div class=\"value-display\">\n <span class=\"kpi-value\">{{\n getProgressData().data.value\n }}</span>\n <span class=\"value-separator\">/</span>\n <span class=\"value-max\">{{ getProgressData().data.max }}</span>\n </div>\n }\n <ud-progress-bar\n [value]=\"getProgressBarValue()\"></ud-progress-bar>\n </div>\n }\n @case (KpiDataType.PILLS) {\n <div class=\"pills-section\">\n <span class=\"kpi-value\">{{ getPillData().value }}</span>\n <div class=\"pills-container\">\n @for (pill of getPillData().pills; track pill) {\n <ud-pill\n [text]=\"pill.value + ' ' + (pill.label | async | capitalize)\"\n [type]=\"pill.type\"></ud-pill>\n }\n </div>\n </div>\n }\n @case (KpiDataType.TEXT) {\n <div class=\"text-section\">\n <span class=\"kpi-value\">{{ getTextData().value }}</span>\n @if (getTextData().unit) {\n <span class=\"value-unit\">{{ getTextData().unit }}</span>\n }\n <ng-content></ng-content>\n </div>\n }\n }\n </div>\n </div>\n</mat-card>\n", styles: [".kpi-card{padding:1.5rem;border-radius:15px;transition:all .2s ease;display:flex;flex-direction:column;gap:1rem;min-width:280px}.kpi-card:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.kpi-card .kpi-header{display:flex;gap:1rem;align-items:flex-start}.kpi-card .kpi-header .kpi-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.kpi-card .kpi-header .kpi-icon ::ng-deep mat-icon{font-size:28px;width:28px;height:28px}.kpi-card .kpi-header .kpi-title-section{display:flex;flex-direction:column;gap:.25rem;flex:1}.kpi-card .kpi-header .kpi-title-section .kpi-label{font-size:.875rem;color:#6b7280;font-weight:500}.kpi-card .kpi-header .kpi-title-section .kpi-label a{color:#3b82f6;text-decoration:none;transition:color .2s ease}.kpi-card .kpi-header .kpi-title-section .kpi-label a:hover{color:#2563eb;text-decoration:underline}.kpi-card .kpi-header .kpi-title-section .kpi-subtitle{font-size:.75rem;color:#9ca3af;font-weight:500}.kpi-card .kpi-content .progress-section{display:flex;flex-direction:column;gap:.75rem}.kpi-card .kpi-content .progress-section .value-display{display:flex;align-items:baseline;gap:.25rem}.kpi-card .kpi-content .progress-section .value-display .kpi-value{font-size:1.875rem;font-weight:700;color:#111827;line-height:1.2}.kpi-card .kpi-content .progress-section .value-display .value-unit{font-size:1rem;color:#9ca3af;font-weight:500}.kpi-card .kpi-content .progress-section .value-display .value-separator{font-size:1.5rem;color:#d1d5db;font-weight:600}.kpi-card .kpi-content .progress-section .value-display .value-max{font-size:1.25rem;color:#6b7280;font-weight:600}.kpi-card .kpi-content .pills-section{display:flex;flex-direction:column;gap:.75rem}.kpi-card .kpi-content .pills-section .kpi-value{font-size:1.875rem;font-weight:700;color:#111827;line-height:1.2}.kpi-card .kpi-content .pills-section .pills-container{display:flex;gap:.5rem;flex-wrap:wrap}.kpi-card .kpi-content .text-section{display:flex;flex-direction:column;gap:.5rem}.kpi-card .kpi-content .text-section .kpi-value{font-size:1.875rem;font-weight:700;color:#111827;line-height:1.2}.kpi-card .kpi-content .text-section .value-unit{font-size:.875rem;color:#6b7280;font-weight:500;margin-top:.25rem}.kpi-card.purple .kpi-icon{background:linear-gradient(135deg,#e0e7ff,#c7d2fe)}.kpi-card.purple .kpi-icon ::ng-deep mat-icon{color:#4338ca}.kpi-card.amber .kpi-icon{background:linear-gradient(135deg,#fef3c7,#fde68a)}.kpi-card.amber .kpi-icon ::ng-deep mat-icon{color:#d97706}.kpi-card.green .kpi-icon{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.kpi-card.green .kpi-icon ::ng-deep mat-icon{color:#059669}.kpi-card.blue .kpi-icon{background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.kpi-card.blue .kpi-icon ::ng-deep mat-icon{color:#1e40af}.kpi-card.red .kpi-icon{background:linear-gradient(135deg,#fee2e2,#fecaca)}.kpi-card.red .kpi-icon ::ng-deep mat-icon{color:#dc2626}@media (max-width: 1280px){.kpi-card{min-width:240px}}@media (max-width: 768px){.kpi-card{min-width:100%}}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ProgressBarComponent, selector: "ud-progress-bar", inputs: ["value", "height", "borderRadius", "backgroundColor"] }, { kind: "component", type: PillComponent, selector: "ud-pill", inputs: ["text", "type"] }] });
|
|
1911
|
+
}
|
|
1912
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KpiComponent, decorators: [{
|
|
1913
|
+
type: Component,
|
|
1914
|
+
args: [{ selector: 'ud-kpi', imports: [
|
|
1915
|
+
AsyncPipe,
|
|
1916
|
+
CapitalizePipe,
|
|
1917
|
+
NgSwitch,
|
|
1918
|
+
MatIcon,
|
|
1919
|
+
RouterLink,
|
|
1920
|
+
MatCard,
|
|
1921
|
+
NgClass,
|
|
1922
|
+
ProgressBarComponent,
|
|
1923
|
+
PillComponent,
|
|
1924
|
+
], template: "<mat-card class=\"kpi-card\" [ngClass]=\"iconColor\" appearance=\"outlined\">\n <div class=\"kpi-header\">\n <div class=\"kpi-icon\">\n <mat-icon>{{ icon }}</mat-icon>\n </div>\n <div class=\"kpi-title-section\">\n <span class=\"kpi-label\">\n @if (titleRef) {\n <a [routerLink]=\"titleRef\">{{ title }}</a>\n } @else {\n {{ title }}\n }\n </span>\n @if (subtitle) {\n <span class=\"kpi-subtitle\">{{ subtitle }}</span>\n }\n </div>\n </div>\n\n <div class=\"kpi-content\">\n <div [ngSwitch]=\"dataType\">\n @switch (dataType) {\n @case (KpiDataType.PROGRESS_BAR) {\n <div class=\"progress-section\">\n @if (getProgressData().type === KpiProgressBarType.PERCENTAGE) {\n <div class=\"value-display\">\n <span class=\"kpi-value\">{{\n getProgressData().data.value\n }}</span>\n <span class=\"value-unit\">%</span>\n </div>\n } @else if (\n getProgressData().type === KpiProgressBarType.DIVISION\n ) {\n <div class=\"value-display\">\n <span class=\"kpi-value\">{{\n getProgressData().data.value\n }}</span>\n <span class=\"value-separator\">/</span>\n <span class=\"value-max\">{{ getProgressData().data.max }}</span>\n </div>\n }\n <ud-progress-bar\n [value]=\"getProgressBarValue()\"></ud-progress-bar>\n </div>\n }\n @case (KpiDataType.PILLS) {\n <div class=\"pills-section\">\n <span class=\"kpi-value\">{{ getPillData().value }}</span>\n <div class=\"pills-container\">\n @for (pill of getPillData().pills; track pill) {\n <ud-pill\n [text]=\"pill.value + ' ' + (pill.label | async | capitalize)\"\n [type]=\"pill.type\"></ud-pill>\n }\n </div>\n </div>\n }\n @case (KpiDataType.TEXT) {\n <div class=\"text-section\">\n <span class=\"kpi-value\">{{ getTextData().value }}</span>\n @if (getTextData().unit) {\n <span class=\"value-unit\">{{ getTextData().unit }}</span>\n }\n <ng-content></ng-content>\n </div>\n }\n }\n </div>\n </div>\n</mat-card>\n", styles: [".kpi-card{padding:1.5rem;border-radius:15px;transition:all .2s ease;display:flex;flex-direction:column;gap:1rem;min-width:280px}.kpi-card:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.kpi-card .kpi-header{display:flex;gap:1rem;align-items:flex-start}.kpi-card .kpi-header .kpi-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.kpi-card .kpi-header .kpi-icon ::ng-deep mat-icon{font-size:28px;width:28px;height:28px}.kpi-card .kpi-header .kpi-title-section{display:flex;flex-direction:column;gap:.25rem;flex:1}.kpi-card .kpi-header .kpi-title-section .kpi-label{font-size:.875rem;color:#6b7280;font-weight:500}.kpi-card .kpi-header .kpi-title-section .kpi-label a{color:#3b82f6;text-decoration:none;transition:color .2s ease}.kpi-card .kpi-header .kpi-title-section .kpi-label a:hover{color:#2563eb;text-decoration:underline}.kpi-card .kpi-header .kpi-title-section .kpi-subtitle{font-size:.75rem;color:#9ca3af;font-weight:500}.kpi-card .kpi-content .progress-section{display:flex;flex-direction:column;gap:.75rem}.kpi-card .kpi-content .progress-section .value-display{display:flex;align-items:baseline;gap:.25rem}.kpi-card .kpi-content .progress-section .value-display .kpi-value{font-size:1.875rem;font-weight:700;color:#111827;line-height:1.2}.kpi-card .kpi-content .progress-section .value-display .value-unit{font-size:1rem;color:#9ca3af;font-weight:500}.kpi-card .kpi-content .progress-section .value-display .value-separator{font-size:1.5rem;color:#d1d5db;font-weight:600}.kpi-card .kpi-content .progress-section .value-display .value-max{font-size:1.25rem;color:#6b7280;font-weight:600}.kpi-card .kpi-content .pills-section{display:flex;flex-direction:column;gap:.75rem}.kpi-card .kpi-content .pills-section .kpi-value{font-size:1.875rem;font-weight:700;color:#111827;line-height:1.2}.kpi-card .kpi-content .pills-section .pills-container{display:flex;gap:.5rem;flex-wrap:wrap}.kpi-card .kpi-content .text-section{display:flex;flex-direction:column;gap:.5rem}.kpi-card .kpi-content .text-section .kpi-value{font-size:1.875rem;font-weight:700;color:#111827;line-height:1.2}.kpi-card .kpi-content .text-section .value-unit{font-size:.875rem;color:#6b7280;font-weight:500;margin-top:.25rem}.kpi-card.purple .kpi-icon{background:linear-gradient(135deg,#e0e7ff,#c7d2fe)}.kpi-card.purple .kpi-icon ::ng-deep mat-icon{color:#4338ca}.kpi-card.amber .kpi-icon{background:linear-gradient(135deg,#fef3c7,#fde68a)}.kpi-card.amber .kpi-icon ::ng-deep mat-icon{color:#d97706}.kpi-card.green .kpi-icon{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.kpi-card.green .kpi-icon ::ng-deep mat-icon{color:#059669}.kpi-card.blue .kpi-icon{background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.kpi-card.blue .kpi-icon ::ng-deep mat-icon{color:#1e40af}.kpi-card.red .kpi-icon{background:linear-gradient(135deg,#fee2e2,#fecaca)}.kpi-card.red .kpi-icon ::ng-deep mat-icon{color:#dc2626}@media (max-width: 1280px){.kpi-card{min-width:240px}}@media (max-width: 768px){.kpi-card{min-width:100%}}\n"] }]
|
|
1925
|
+
}], propDecorators: { title: [{
|
|
1926
|
+
type: Input
|
|
1927
|
+
}], subtitle: [{
|
|
1928
|
+
type: Input
|
|
1929
|
+
}], dataType: [{
|
|
1930
|
+
type: Input
|
|
1931
|
+
}], data: [{
|
|
1932
|
+
type: Input
|
|
1933
|
+
}], icon: [{
|
|
1934
|
+
type: Input
|
|
1935
|
+
}], iconColor: [{
|
|
1936
|
+
type: Input
|
|
1937
|
+
}], titleRef: [{
|
|
1938
|
+
type: Input
|
|
1939
|
+
}] } });
|
|
1940
|
+
|
|
1941
|
+
class SummaryViewComponent {
|
|
1942
|
+
title = '';
|
|
1943
|
+
editOptions = null;
|
|
1944
|
+
summaryFields = [];
|
|
1945
|
+
loading = false;
|
|
1946
|
+
layout = 'text-left';
|
|
1947
|
+
skeletonTitleHeight = '20px';
|
|
1948
|
+
skeletonBodyHeight = '150px';
|
|
1949
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SummaryViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1950
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: SummaryViewComponent, isStandalone: true, selector: "ud-summary-view", inputs: { title: "title", editOptions: "editOptions", summaryFields: "summaryFields", loading: "loading", layout: "layout", skeletonTitleHeight: "skeletonTitleHeight", skeletonBodyHeight: "skeletonBodyHeight" }, ngImport: i0, template: "<div class=\"summary-view-container\">\n <div class=\"header\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"loading col-6\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonTitleHeight }\" />\n } @else {\n <h5 class=\"header-title\">{{ title }}</h5>\n }\n <ng-content select=\"[header-actions]\">\n @if (editOptions) {\n <button\n mat-stroked-button\n class=\"header-edit-btn\"\n [matTooltip]=\"\n editOptions.tooltip ?? 'actions.edit' | translate | capitalize\n \"\n color=\"primary\"\n [routerLink]=\"editOptions.routerLink\"\n [disabled]=\"editOptions.disabled\">\n <mat-icon class=\"btn-icon\">edit</mat-icon>\n <span>{{ 'actions.edit' | translate | capitalize }}</span>\n </button>\n }\n </ng-content>\n </div>\n <div class=\"content\" [ngClass]=\"{ reverse: layout === 'text-right' }\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"col\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonBodyHeight }\" />\n } @else {\n @if (layout !== 'text-none') {\n <div class=\"col-6\">\n <div class=\"summary\">\n @for (summaryField of summaryFields; track $index) {\n <div class=\"summary-field\">\n @if (summaryField.label) {\n <span>{{ summaryField.label | capitalize }}</span>\n }\n <div class=\"summary-row\">\n <mat-icon matPrefix fontSet=\"material-icons-outlined\">\n {{ summaryField.icon }}\n </mat-icon>\n <mat-label>{{ summaryField.value }}</mat-label>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div\n class=\"px-0\"\n [ngClass]=\"{\n 'col-12': layout === 'text-none',\n 'col-6': layout !== 'text-none',\n }\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n</div>\n", styles: [".summary-view-container{justify-self:center;width:90%;border-radius:10px;overflow:hidden;box-shadow:0 2px 10px #373f4c14;border:1px solid rgba(0,0,0,.07)}.header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:#dddde8;border-bottom:1px solid rgba(0,0,0,.08);min-height:52px}.header .header-title{margin:0;font-size:.9375rem;font-weight:600;color:#373f4c;letter-spacing:.01em}.header .header-edit-btn{height:32px!important;padding:0 12px!important;border-radius:6px!important;font-size:13px!important;font-weight:500!important;display:inline-flex!important;align-items:center!important;gap:4px}.header .header-edit-btn .btn-icon{font-size:15px!important;width:15px!important;height:15px!important}.header .loading{padding:.5rem;border-radius:4px}.content{display:flex;flex-wrap:wrap;padding:1.2rem .8rem;margin:0;background-color:#fff}.content.reverse{flex-direction:row-reverse}.summary{display:flex;flex-direction:column;gap:1rem}.summary .summary-field{display:flex;flex-direction:column;gap:.1rem}.summary .summary-field span{font-size:14px;font-weight:300;color:var(--text-color)}.summary .summary-row{display:flex;align-items:flex-start;gap:.5rem}.summary .summary-row mat-icon{height:18px;width:18px;min-width:18px;margin-top:2px;font-size:20px;color:var(--text-color)}mat-label{font-weight:300}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "component", type: i2.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }] });
|
|
1951
|
+
}
|
|
1952
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SummaryViewComponent, decorators: [{
|
|
1953
|
+
type: Component,
|
|
1954
|
+
args: [{ selector: 'ud-summary-view', standalone: true, imports: [
|
|
1955
|
+
CommonModule,
|
|
1956
|
+
CapitalizePipe,
|
|
1957
|
+
TranslatePipe,
|
|
1958
|
+
NgxSkeletonLoaderModule,
|
|
1959
|
+
MatIconModule,
|
|
1960
|
+
MatButtonModule,
|
|
1961
|
+
MatLabel,
|
|
1962
|
+
RouterLink,
|
|
1963
|
+
MatTooltip,
|
|
1964
|
+
CapitalizePipe,
|
|
1965
|
+
MatPrefix,
|
|
1966
|
+
], template: "<div class=\"summary-view-container\">\n <div class=\"header\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"loading col-6\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonTitleHeight }\" />\n } @else {\n <h5 class=\"header-title\">{{ title }}</h5>\n }\n <ng-content select=\"[header-actions]\">\n @if (editOptions) {\n <button\n mat-stroked-button\n class=\"header-edit-btn\"\n [matTooltip]=\"\n editOptions.tooltip ?? 'actions.edit' | translate | capitalize\n \"\n color=\"primary\"\n [routerLink]=\"editOptions.routerLink\"\n [disabled]=\"editOptions.disabled\">\n <mat-icon class=\"btn-icon\">edit</mat-icon>\n <span>{{ 'actions.edit' | translate | capitalize }}</span>\n </button>\n }\n </ng-content>\n </div>\n <div class=\"content\" [ngClass]=\"{ reverse: layout === 'text-right' }\">\n @if (loading) {\n <ngx-skeleton-loader\n class=\"col\"\n [count]=\"1\"\n [theme]=\"{ height: skeletonBodyHeight }\" />\n } @else {\n @if (layout !== 'text-none') {\n <div class=\"col-6\">\n <div class=\"summary\">\n @for (summaryField of summaryFields; track $index) {\n <div class=\"summary-field\">\n @if (summaryField.label) {\n <span>{{ summaryField.label | capitalize }}</span>\n }\n <div class=\"summary-row\">\n <mat-icon matPrefix fontSet=\"material-icons-outlined\">\n {{ summaryField.icon }}\n </mat-icon>\n <mat-label>{{ summaryField.value }}</mat-label>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div\n class=\"px-0\"\n [ngClass]=\"{\n 'col-12': layout === 'text-none',\n 'col-6': layout !== 'text-none',\n }\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n</div>\n", styles: [".summary-view-container{justify-self:center;width:90%;border-radius:10px;overflow:hidden;box-shadow:0 2px 10px #373f4c14;border:1px solid rgba(0,0,0,.07)}.header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:#dddde8;border-bottom:1px solid rgba(0,0,0,.08);min-height:52px}.header .header-title{margin:0;font-size:.9375rem;font-weight:600;color:#373f4c;letter-spacing:.01em}.header .header-edit-btn{height:32px!important;padding:0 12px!important;border-radius:6px!important;font-size:13px!important;font-weight:500!important;display:inline-flex!important;align-items:center!important;gap:4px}.header .header-edit-btn .btn-icon{font-size:15px!important;width:15px!important;height:15px!important}.header .loading{padding:.5rem;border-radius:4px}.content{display:flex;flex-wrap:wrap;padding:1.2rem .8rem;margin:0;background-color:#fff}.content.reverse{flex-direction:row-reverse}.summary{display:flex;flex-direction:column;gap:1rem}.summary .summary-field{display:flex;flex-direction:column;gap:.1rem}.summary .summary-field span{font-size:14px;font-weight:300;color:var(--text-color)}.summary .summary-row{display:flex;align-items:flex-start;gap:.5rem}.summary .summary-row mat-icon{height:18px;width:18px;min-width:18px;margin-top:2px;font-size:20px;color:var(--text-color)}mat-label{font-weight:300}\n"] }]
|
|
1967
|
+
}], propDecorators: { title: [{
|
|
1968
|
+
type: Input
|
|
1969
|
+
}], editOptions: [{
|
|
1970
|
+
type: Input
|
|
1971
|
+
}], summaryFields: [{
|
|
1972
|
+
type: Input
|
|
1973
|
+
}], loading: [{
|
|
1974
|
+
type: Input
|
|
1975
|
+
}], layout: [{
|
|
1976
|
+
type: Input
|
|
1977
|
+
}], skeletonTitleHeight: [{
|
|
1978
|
+
type: Input
|
|
1979
|
+
}], skeletonBodyHeight: [{
|
|
1980
|
+
type: Input
|
|
1981
|
+
}] } });
|
|
1982
|
+
|
|
1983
|
+
class TabsComponent {
|
|
1984
|
+
tabs = [];
|
|
1985
|
+
tabChange = new EventEmitter();
|
|
1986
|
+
tabItems;
|
|
1987
|
+
activeTab;
|
|
1988
|
+
sliderStyle = { width: '0px', transform: 'translateX(0px)' };
|
|
1989
|
+
ngOnInit() {
|
|
1990
|
+
if (this.tabs.length > 0) {
|
|
1991
|
+
this.activeTab = this.tabs[0];
|
|
1992
|
+
this.tabChange.emit(this.activeTab);
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1995
|
+
ngAfterViewInit() {
|
|
1996
|
+
this.updateSliderPosition();
|
|
1997
|
+
this.tabItems.changes.subscribe(() => this.updateSliderPosition());
|
|
1998
|
+
}
|
|
1999
|
+
setActiveTab(tab) {
|
|
2000
|
+
this.activeTab = tab;
|
|
2001
|
+
this.tabChange.emit(this.activeTab);
|
|
2002
|
+
this.updateSliderPosition();
|
|
2003
|
+
}
|
|
2004
|
+
updateSliderPosition() {
|
|
2005
|
+
const activeTabIndex = this.tabs.indexOf(this.activeTab);
|
|
2006
|
+
const tabElement = this.tabItems.toArray()[activeTabIndex]?.nativeElement;
|
|
2007
|
+
if (tabElement) {
|
|
2008
|
+
const width = tabElement.offsetWidth;
|
|
2009
|
+
const offsetLeft = tabElement.offsetLeft - 3;
|
|
2010
|
+
this.sliderStyle = {
|
|
2011
|
+
width: `${width}px`,
|
|
2012
|
+
transform: `translateX(${offsetLeft}px)`,
|
|
2013
|
+
};
|
|
2014
|
+
}
|
|
2015
|
+
}
|
|
2016
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2017
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TabsComponent, isStandalone: true, selector: "ud-tabs", inputs: { tabs: "tabs" }, outputs: { tabChange: "tabChange" }, viewQueries: [{ propertyName: "tabItems", predicate: ["tabItem"], descendants: true }], ngImport: i0, template: "<div class=\"tabs-container\">\n <div class=\"tab-list\">\n <div class=\"slider\" [ngStyle]=\"sliderStyle\"></div>\n @for (tab of tabs; track tab) {\n <div\n #tabItem\n [class.active]=\"tab.value === activeTab.value\"\n class=\"tab-item\"\n (click)=\"setActiveTab(tab)\">\n {{ tab.label | async | capitalize }}\n </div>\n }\n </div>\n</div>\n", styles: [".tabs-container{width:100%;margin:0 auto}.tab-list{position:relative;display:flex;gap:4px;padding:4px 7px 4px 4px;background:#e5e7eb;border-radius:8px;margin-bottom:16px}.slider{position:absolute;top:4px;left:4px;height:calc(100% - 8px);background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000001a;transition:all .3s ease}.tab-item{position:relative;padding:8px 16px;text-align:center;cursor:pointer;background:transparent;border-radius:6px;transition:color .3s ease;color:#6b7280;font-weight:500;font-size:14px;z-index:1;white-space:nowrap}.tab-item:hover{color:#374151}.tab-item.active{color:#111827}.tab-content{padding:16px;background:#fff;border-radius:8px;transition:opacity .3s ease}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }] });
|
|
2018
|
+
}
|
|
2019
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TabsComponent, decorators: [{
|
|
2020
|
+
type: Component,
|
|
2021
|
+
args: [{ selector: 'ud-tabs', imports: [NgStyle, AsyncPipe, CapitalizePipe], template: "<div class=\"tabs-container\">\n <div class=\"tab-list\">\n <div class=\"slider\" [ngStyle]=\"sliderStyle\"></div>\n @for (tab of tabs; track tab) {\n <div\n #tabItem\n [class.active]=\"tab.value === activeTab.value\"\n class=\"tab-item\"\n (click)=\"setActiveTab(tab)\">\n {{ tab.label | async | capitalize }}\n </div>\n }\n </div>\n</div>\n", styles: [".tabs-container{width:100%;margin:0 auto}.tab-list{position:relative;display:flex;gap:4px;padding:4px 7px 4px 4px;background:#e5e7eb;border-radius:8px;margin-bottom:16px}.slider{position:absolute;top:4px;left:4px;height:calc(100% - 8px);background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000001a;transition:all .3s ease}.tab-item{position:relative;padding:8px 16px;text-align:center;cursor:pointer;background:transparent;border-radius:6px;transition:color .3s ease;color:#6b7280;font-weight:500;font-size:14px;z-index:1;white-space:nowrap}.tab-item:hover{color:#374151}.tab-item.active{color:#111827}.tab-content{padding:16px;background:#fff;border-radius:8px;transition:opacity .3s ease}\n"] }]
|
|
2022
|
+
}], propDecorators: { tabs: [{
|
|
2023
|
+
type: Input
|
|
2024
|
+
}], tabChange: [{
|
|
2025
|
+
type: Output
|
|
2026
|
+
}], tabItems: [{
|
|
2027
|
+
type: ViewChildren,
|
|
2028
|
+
args: ['tabItem']
|
|
2029
|
+
}] } });
|
|
2030
|
+
|
|
2031
|
+
/*
|
|
2032
|
+
* Public API Surface of ud-components
|
|
2033
|
+
*/
|
|
2034
|
+
|
|
2035
|
+
/**
|
|
2036
|
+
* Generated bundle index. Do not edit.
|
|
2037
|
+
*/
|
|
2038
|
+
|
|
2039
|
+
export { ActionType, CarouselComponent, CustomInputComponent, CustomSnackbarComponent, CustomTableComponent, DynamicComponentComponent, EditViewComponent, FileInputComponent, KpiComponent, ModalComponent, PillComponent, ProgressBarComponent, SummaryViewComponent, TabsComponent, TelInputComponent };
|
|
2040
|
+
//# sourceMappingURL=ud-components.mjs.map
|