@codetectonics/mantle 1.0.16 → 1.2.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.
@@ -9,13 +9,13 @@ import { NavigationStart, RouterModule } from '@angular/router';
9
9
  import * as i1$2 from '@angular/cdk/layout';
10
10
  import { Breakpoints, LayoutModule } from '@angular/cdk/layout';
11
11
  import { FlexLayoutModule } from '@angular/flex-layout';
12
- import * as i4$3 from '@angular/cdk/drag-drop';
12
+ import * as i5$2 from '@angular/cdk/drag-drop';
13
13
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
14
14
  import * as i1$6 from '@angular/platform-browser';
15
15
  import { BrowserModule } from '@angular/platform-browser';
16
16
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
17
17
  import * as i2$1 from '@angular/forms';
18
- import { FormGroup, FormControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms';
18
+ import { FormGroup, FormControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormArray, FormsModule, ReactiveFormsModule } from '@angular/forms';
19
19
  import * as i3$4 from 'highcharts-angular';
20
20
  import { HighchartsChartModule } from 'highcharts-angular';
21
21
  import * as i2 from 'ngx-markdown';
@@ -28,7 +28,7 @@ import * as i6 from '@ngx-translate/core';
28
28
  import { TranslateModule } from '@ngx-translate/core';
29
29
  import * as i6$1 from 'ngx-image-cropper';
30
30
  import { ImageCropperComponent as ImageCropperComponent$1 } from 'ngx-image-cropper';
31
- import * as i4$8 from '@angular/material/badge';
31
+ import * as i4$7 from '@angular/material/badge';
32
32
  import { MatBadgeModule } from '@angular/material/badge';
33
33
  import * as i4 from '@angular/material/button';
34
34
  import { MatButtonModule } from '@angular/material/button';
@@ -53,11 +53,11 @@ import * as i3$6 from '@angular/material/list';
53
53
  import { MatListModule } from '@angular/material/list';
54
54
  import * as i3$5 from '@angular/material/menu';
55
55
  import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
56
- import * as i4$6 from '@angular/material/select';
56
+ import * as i4$5 from '@angular/material/select';
57
57
  import { MatSelectModule } from '@angular/material/select';
58
58
  import * as i10 from '@angular/material/sidenav';
59
59
  import { MatSidenavModule } from '@angular/material/sidenav';
60
- import * as i4$7 from '@angular/material/tabs';
60
+ import * as i4$6 from '@angular/material/tabs';
61
61
  import { MatTabsModule } from '@angular/material/tabs';
62
62
  import { MatToolbarModule } from '@angular/material/toolbar';
63
63
  import * as i4$1 from '@angular/material/tooltip';
@@ -77,14 +77,14 @@ import { MAT_DATE_LOCALE, DateAdapter } from '@angular/material/core';
77
77
  import * as i8$2 from '@angular/material/tree';
78
78
  import { MatTreeModule, MatTreeFlattener, MatTreeFlatDataSource } from '@angular/material/tree';
79
79
  import { ENTER, COMMA } from '@angular/cdk/keycodes';
80
- import * as i5$3 from '@angular/material/autocomplete';
80
+ import * as i5$4 from '@angular/material/autocomplete';
81
81
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
82
82
  import { BehaviorSubject, Observable, Subject, merge, of } from 'rxjs';
83
- import * as i5$2 from '@ng-matero/extensions/select';
83
+ import * as i5$3 from '@ng-matero/extensions/select';
84
84
  import { MtxSelectModule } from '@ng-matero/extensions/select';
85
- import * as i4$5 from '@ng-matero/extensions/colorpicker';
85
+ import * as i4$4 from '@ng-matero/extensions/colorpicker';
86
86
  import { MtxColorpickerModule } from '@ng-matero/extensions/colorpicker';
87
- import * as i4$4 from '@ng-matero/extensions/datetimepicker';
87
+ import * as i4$3 from '@ng-matero/extensions/datetimepicker';
88
88
  import { MtxDatetimepickerModule } from '@ng-matero/extensions/datetimepicker';
89
89
  import { provideMomentDatetimeAdapter } from '@ng-matero/extensions-moment-adapter';
90
90
  import moment from 'moment';
@@ -1218,7 +1218,7 @@ class GridDetailsSectionComponent {
1218
1218
  getColSpanForField(attribute) {
1219
1219
  if (this.numColumns == 1)
1220
1220
  return 1;
1221
- else if (['text', 'markdown', 'rich-text'].includes(attribute.type))
1221
+ else if (['text', 'markdown', 'rich-text', 'report-viewer'].includes(attribute.type))
1222
1222
  return this.numColumns;
1223
1223
  else if (attribute.type.endsWith('-lg'))
1224
1224
  return this.numColumns;
@@ -1234,6 +1234,8 @@ class GridDetailsSectionComponent {
1234
1234
  return 4;
1235
1235
  else if (attribute.type == 'rich-text')
1236
1236
  return 4;
1237
+ else if (attribute.type == 'report-viewer')
1238
+ return 8;
1237
1239
  else
1238
1240
  return 1;
1239
1241
  }
@@ -1444,6 +1446,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
1444
1446
  type: Input
1445
1447
  }] } });
1446
1448
 
1449
+ class ReportViewerDisplayComponent {
1450
+ constructor() {
1451
+ this.value = '';
1452
+ this.columns = [];
1453
+ this.items = [];
1454
+ }
1455
+ ngOnChanges(changes) {
1456
+ this.columns = [];
1457
+ this.items = [];
1458
+ let values = changes.value.currentValue.generated_report || [];
1459
+ if (values.length == 0)
1460
+ return;
1461
+ let headers = Object.keys(values[0]);
1462
+ this.columns = headers.map((header) => {
1463
+ return {
1464
+ header: header,
1465
+ attr: header,
1466
+ type: 'string',
1467
+ options: {}
1468
+ };
1469
+ });
1470
+ this.items = values;
1471
+ }
1472
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ReportViewerDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1473
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: ReportViewerDisplayComponent, isStandalone: false, selector: "mantle-report-viewer-display", inputs: { value: "value" }, usesOnChanges: true, ngImport: i0, template: "<mantle-dynamic-table [columns]=\"columns\"\n [items]=\"items\"\n [withClickableRows]=\"false\">\n</mantle-dynamic-table>\n", styles: [""], dependencies: [{ kind: "component", type: DynamicTableComponent, selector: "mantle-dynamic-table", inputs: ["columns", "items", "withClickableRows"], outputs: ["rowClicked"] }] }); }
1474
+ }
1475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ReportViewerDisplayComponent, decorators: [{
1476
+ type: Component,
1477
+ args: [{ selector: 'mantle-report-viewer-display', standalone: false, template: "<mantle-dynamic-table [columns]=\"columns\"\n [items]=\"items\"\n [withClickableRows]=\"false\">\n</mantle-dynamic-table>\n" }]
1478
+ }], propDecorators: { value: [{
1479
+ type: Input
1480
+ }] } });
1481
+
1482
+ class ReportDetailsSectionComponent {
1483
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ReportDetailsSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1484
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: ReportDetailsSectionComponent, isStandalone: false, selector: "mantle-report-details-section", inputs: { data: "data", section: "section" }, ngImport: i0, template: "<div class=\"table-section-content\">\n <ng-container *ngFor=\"let field of section.elements\">\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'report-viewer'\">\n <mantle-report-viewer-display [value]=\"data\">\n </mantle-report-viewer-display>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ReportViewerDisplayComponent, selector: "mantle-report-viewer-display", inputs: ["value"] }] }); }
1485
+ }
1486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ReportDetailsSectionComponent, decorators: [{
1487
+ type: Component,
1488
+ args: [{ selector: 'mantle-report-details-section', standalone: false, template: "<div class=\"table-section-content\">\n <ng-container *ngFor=\"let field of section.elements\">\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'report-viewer'\">\n <mantle-report-viewer-display [value]=\"data\">\n </mantle-report-viewer-display>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n" }]
1489
+ }], propDecorators: { data: [{
1490
+ type: Input
1491
+ }], section: [{
1492
+ type: Input
1493
+ }] } });
1494
+
1447
1495
  /**
1448
1496
  * Data source for the List Page view. This class should
1449
1497
  * encapsulate all logic for fetching and manipulating the displayed data
@@ -1515,7 +1563,7 @@ class DraggableTableComponent {
1515
1563
  });
1516
1564
  }
1517
1565
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DraggableTableComponent, deps: [{ token: ArrayService }], target: i0.ɵɵFactoryTarget.Component }); }
1518
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DraggableTableComponent, isStandalone: false, selector: "mantle-draggable-table", inputs: { columns: "columns", items: "items", sortAttr: "sortAttr", writable: "writable" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-table\n #table\n [ngClass]=\"{ 'draggable-table-details': !writable, 'draggable-table-form': writable }\"\n [dataSource]=\"dataSource\"\n cdkDropList\n (cdkDropListDropped)=\"onDropped($event)\"\n cdkDropListData=\"items\"\n [cdkDropListDisabled]=\"!writable\"\n [cdkDropListSortingDisabled]=\"!writable\">\n\n <!-- Drag Column -->\n <ng-container matColumnDef=\"drag\" *ngIf=\"writable\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-icon class=\"drag-cursor\" (mousedown)=\"true;\">\n drag_indicator\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let column of columns\">\n <ng-container matColumnDef=\"{{ column.attr }}\">\n <th mat-header-cell *matHeaderCellDef>{{ column.header | translate }}</th>\n <td mat-cell *matCellDef=\"let row\">\n <mantle-dynamic-attribute-display [fieldType]=\"column.type\" [value]=\"row[column.attr]\" [field]=\"column\"></mantle-dynamic-attribute-display>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\" *ngIf=\"writable\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <button mat-icon-button (click)=\"onDeleteClicked(row)\">\n <mat-icon>\n delete\n </mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"dataSource.columns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: dataSource.columns;\"\n cdkDrag\n [cdkDragData]=\"row\">\n </tr>\n</mat-table>\n", styles: [".mat-mdc-table{width:100%}.mat-mdc-table tr{height:40px;vertical-align:middle}.mat-mdc-table th,.mat-mdc-table td{padding-left:10px!important;padding-right:10px!important;border-width:0px}.mat-mdc-table th:first-of-type,.mat-mdc-table td:first-of-type{padding-left:5px!important}.mat-mdc-table th:last-of-type,.mat-mdc-table td:last-of-type{padding-right:5px!important}.draggable-table-details th,.draggable-table-details td{border-width:0px}.draggable-table-form tr{border-width:1px;border-style:solid}.draggable-table-form td{border-top:1px solid gray;border-bottom:1px solid gray}.draggable-table-form td:first-of-type{border-left:1px solid gray}.draggable-table-form td:last-of-type{border-right:1px solid gray}.drag-cursor{margin-right:16px;cursor:move}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .mat-mdc-row:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i4$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: DynamicAttributeDisplayComponent, selector: "mantle-dynamic-attribute-display", inputs: ["value", "field", "fieldType", "options"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1566
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DraggableTableComponent, isStandalone: false, selector: "mantle-draggable-table", inputs: { columns: "columns", items: "items", sortAttr: "sortAttr", writable: "writable" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-table\n #table\n [ngClass]=\"{ 'draggable-table-details': !writable, 'draggable-table-form': writable }\"\n [dataSource]=\"dataSource\"\n cdkDropList\n (cdkDropListDropped)=\"onDropped($event)\"\n cdkDropListData=\"items\"\n [cdkDropListDisabled]=\"!writable\"\n [cdkDropListSortingDisabled]=\"!writable\">\n\n <!-- Drag Column -->\n <ng-container matColumnDef=\"drag\" *ngIf=\"writable\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-icon class=\"drag-cursor\" (mousedown)=\"true;\">\n drag_indicator\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let column of columns\">\n <ng-container matColumnDef=\"{{ column.attr }}\">\n <th mat-header-cell *matHeaderCellDef>{{ column.header | translate }}</th>\n <td mat-cell *matCellDef=\"let row\">\n <mantle-dynamic-attribute-display [fieldType]=\"column.type\" [value]=\"row[column.attr]\" [field]=\"column\"></mantle-dynamic-attribute-display>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\" *ngIf=\"writable\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <button mat-icon-button (click)=\"onDeleteClicked(row)\">\n <mat-icon>\n delete\n </mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"dataSource.columns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: dataSource.columns;\"\n cdkDrag\n [cdkDragData]=\"row\">\n </tr>\n</mat-table>\n", styles: [".mat-mdc-table{width:100%}.mat-mdc-table tr{height:40px;vertical-align:middle}.mat-mdc-table th,.mat-mdc-table td{padding-left:10px!important;padding-right:10px!important;border-width:0px}.mat-mdc-table th:first-of-type,.mat-mdc-table td:first-of-type{padding-left:5px!important}.mat-mdc-table th:last-of-type,.mat-mdc-table td:last-of-type{padding-right:5px!important}.draggable-table-details th,.draggable-table-details td{border-width:0px}.draggable-table-form tr{border-width:1px;border-style:solid}.draggable-table-form td{border-top:1px solid gray;border-bottom:1px solid gray}.draggable-table-form td:first-of-type{border-left:1px solid gray}.draggable-table-form td:last-of-type{border-right:1px solid gray}.drag-cursor{margin-right:16px;cursor:move}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .mat-mdc-row:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i5$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: DynamicAttributeDisplayComponent, selector: "mantle-dynamic-attribute-display", inputs: ["value", "field", "fieldType", "options"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1519
1567
  }
1520
1568
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DraggableTableComponent, decorators: [{
1521
1569
  type: Component,
@@ -1734,7 +1782,7 @@ class DatepickerComponent {
1734
1782
  useExisting: forwardRef(() => DatepickerComponent),
1735
1783
  multi: true
1736
1784
  }
1737
- ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxDatetimepicker]=\"picker\"\n [(ngModel)]=\"selectedDate\"\n (change)=\"onDateEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onDateSelected($event.value)\"\n autocomplete=\"off\">\n <mtx-datetimepicker #picker type=\"date\"></mtx-datetimepicker>\n <mtx-datetimepicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-datetimepicker-toggle>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$4.MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "showWeekNumbers", "startView", "mode", "timeInterval", "preventSameDateTimeSelection", "calendarHeaderComponent", "panelClass", "opened", "color", "startAt", "type", "touchUi", "timeInput", "timeInputAutoFocus", "disabled", "xPosition", "yPosition", "restoreFocus"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["mtxDatetimepicker"] }, { kind: "component", type: i4$4.MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxDatetimepickerToggle"] }, { kind: "directive", type: i4$4.MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: ["mtxDatetimepicker", "mtxDatetimepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["mtxDatetimepickerInput"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1785
+ ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxDatetimepicker]=\"picker\"\n [(ngModel)]=\"selectedDate\"\n (change)=\"onDateEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onDateSelected($event.value)\"\n autocomplete=\"off\">\n <mtx-datetimepicker #picker type=\"date\"></mtx-datetimepicker>\n <mtx-datetimepicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-datetimepicker-toggle>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$3.MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "showWeekNumbers", "startView", "mode", "timeInterval", "preventSameDateTimeSelection", "calendarHeaderComponent", "panelClass", "opened", "color", "startAt", "type", "touchUi", "timeInput", "timeInputAutoFocus", "disabled", "xPosition", "yPosition", "restoreFocus"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["mtxDatetimepicker"] }, { kind: "component", type: i4$3.MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxDatetimepickerToggle"] }, { kind: "directive", type: i4$3.MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: ["mtxDatetimepicker", "mtxDatetimepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["mtxDatetimepickerInput"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1738
1786
  }
1739
1787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DatepickerComponent, decorators: [{
1740
1788
  type: Component,
@@ -1813,7 +1861,7 @@ class DatetimepickerComponent {
1813
1861
  useExisting: forwardRef(() => DatetimepickerComponent),
1814
1862
  multi: true
1815
1863
  }
1816
- ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxDatetimepicker]=\"picker\"\n [(ngModel)]=\"selectedDateTime\"\n (change)=\"onDateTimeEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onDateTimeSelected($event.value)\"\n autocomplete=\"off\">\n <mtx-datetimepicker #picker type=\"datetime\"></mtx-datetimepicker>\n <mtx-datetimepicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-datetimepicker-toggle>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$4.MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "showWeekNumbers", "startView", "mode", "timeInterval", "preventSameDateTimeSelection", "calendarHeaderComponent", "panelClass", "opened", "color", "startAt", "type", "touchUi", "timeInput", "timeInputAutoFocus", "disabled", "xPosition", "yPosition", "restoreFocus"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["mtxDatetimepicker"] }, { kind: "component", type: i4$4.MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxDatetimepickerToggle"] }, { kind: "directive", type: i4$4.MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: ["mtxDatetimepicker", "mtxDatetimepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["mtxDatetimepickerInput"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1864
+ ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxDatetimepicker]=\"picker\"\n [(ngModel)]=\"selectedDateTime\"\n (change)=\"onDateTimeEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onDateTimeSelected($event.value)\"\n autocomplete=\"off\">\n <mtx-datetimepicker #picker type=\"datetime\"></mtx-datetimepicker>\n <mtx-datetimepicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-datetimepicker-toggle>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$3.MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "showWeekNumbers", "startView", "mode", "timeInterval", "preventSameDateTimeSelection", "calendarHeaderComponent", "panelClass", "opened", "color", "startAt", "type", "touchUi", "timeInput", "timeInputAutoFocus", "disabled", "xPosition", "yPosition", "restoreFocus"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["mtxDatetimepicker"] }, { kind: "component", type: i4$3.MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxDatetimepickerToggle"] }, { kind: "directive", type: i4$3.MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: ["mtxDatetimepicker", "mtxDatetimepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["mtxDatetimepickerInput"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1817
1865
  }
1818
1866
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DatetimepickerComponent, decorators: [{
1819
1867
  type: Component,
@@ -1858,7 +1906,7 @@ class ColorPickerInputComponent {
1858
1906
  useExisting: forwardRef(() => ColorPickerInputComponent),
1859
1907
  multi: true
1860
1908
  }
1861
- ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxColorpicker]=\"picker\"\n [(ngModel)]=\"value\"\n (colorChange)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n format=\"hex\"\n autocomplete=\"off\" />\n <mtx-colorpicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-colorpicker-toggle>\n <mtx-colorpicker #picker></mtx-colorpicker>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$5.MtxColorpicker, selector: "mtx-colorpicker", inputs: ["content", "disabled", "xPosition", "yPosition", "restoreFocus", "opened", "color", "format"], outputs: ["opened", "closed"], exportAs: ["mtxColorpicker"] }, { kind: "directive", type: i4$5.MtxColorpickerInput, selector: "input[mtxColorpicker]", inputs: ["mtxColorpicker", "disabled", "value", "format"], outputs: ["colorChange", "colorInput"], exportAs: ["mtxColorpickerInput"] }, { kind: "component", type: i4$5.MtxColorpickerToggle, selector: "mtx-colorpicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxColorpickerToggle"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1909
+ ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxColorpicker]=\"picker\"\n [(ngModel)]=\"value\"\n (colorChange)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n format=\"hex\"\n autocomplete=\"off\" />\n <mtx-colorpicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-colorpicker-toggle>\n <mtx-colorpicker #picker></mtx-colorpicker>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$4.MtxColorpicker, selector: "mtx-colorpicker", inputs: ["content", "disabled", "xPosition", "yPosition", "restoreFocus", "opened", "color", "format"], outputs: ["opened", "closed"], exportAs: ["mtxColorpicker"] }, { kind: "directive", type: i4$4.MtxColorpickerInput, selector: "input[mtxColorpicker]", inputs: ["mtxColorpicker", "disabled", "value", "format"], outputs: ["colorChange", "colorInput"], exportAs: ["mtxColorpickerInput"] }, { kind: "component", type: i4$4.MtxColorpickerToggle, selector: "mtx-colorpicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxColorpickerToggle"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1862
1910
  }
1863
1911
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ColorPickerInputComponent, decorators: [{
1864
1912
  type: Component,
@@ -1883,6 +1931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
1883
1931
 
1884
1932
  class DropdownComponent {
1885
1933
  constructor() {
1934
+ this.change = new EventEmitter();
1886
1935
  this.value = null;
1887
1936
  this.dropdownValues = [];
1888
1937
  this.onChange = (newValue) => { };
@@ -1903,6 +1952,7 @@ class DropdownComponent {
1903
1952
  }
1904
1953
  onValueChanged(event) {
1905
1954
  this.onChange(this.value);
1955
+ this.change.emit(this.value);
1906
1956
  }
1907
1957
  filterDropdownValues() {
1908
1958
  this.dropdownValues = this.options.values.filter((item) => {
@@ -1912,13 +1962,13 @@ class DropdownComponent {
1912
1962
  });
1913
1963
  }
1914
1964
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1915
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DropdownComponent, isStandalone: false, selector: "mantle-dropdown", inputs: { label: "label", tooltip: "tooltip", options: "options", disable: "disable", required: "required", error: "error" }, providers: [
1965
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DropdownComponent, isStandalone: false, selector: "mantle-dropdown", inputs: { label: "label", tooltip: "tooltip", options: "options", disable: "disable", required: "required", error: "error" }, outputs: { change: "change" }, providers: [
1916
1966
  {
1917
1967
  provide: NG_VALUE_ACCESSOR,
1918
1968
  useExisting: forwardRef(() => DropdownComponent),
1919
1969
  multi: true
1920
1970
  }
1921
- ], usesOnChanges: true, ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <mtx-select\n [(ngModel)]=\"value\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [matTooltip]=\"(tooltip! | translate)\"\n appendTo=\"body\">\n <mtx-option value=\"\"></mtx-option>\n <mtx-option *ngFor=\"let option of dropdownValues\" [value]=\"option.value\">\n {{option.label}}\n </mtx-option>\n </mtx-select>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5$2.MtxSelect, selector: "mtx-select", inputs: ["addTag", "addTagText", "appearance", "appendTo", "bindLabel", "bindValue", "closeOnSelect", "clearAllText", "clearable", "clearOnBackspace", "compareWith", "dropdownPosition", "groupBy", "groupValue", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "hideSelected", "loading", "loadingText", "labelForId", "markFirst", "maxSelectedItems", "multiple", "notFoundText", "searchable", "readonly", "searchFn", "searchWhileComposing", "selectOnTab", "trackByFn", "inputAttrs", "tabIndex", "openOnEnter", "minTermLength", "editableSearchTerm", "keyDownFn", "virtualScroll", "typeToSearchText", "typeahead", "isOpen", "fixedPlaceholder", "deselectOnClick", "clearSearchOnAdd", "items", "value", "id", "placeholder", "disabled", "required", "errorStateMatcher", "aria-label", "aria-labelledby"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["mtxSelect"] }, { kind: "component", type: i5$2.MtxOption, selector: "mtx-option", inputs: ["value", "disabled"], exportAs: ["mtxOption"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1971
+ ], usesOnChanges: true, ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <mtx-select\n [(ngModel)]=\"value\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [matTooltip]=\"(tooltip! | translate)\"\n appendTo=\"body\">\n <mtx-option value=\"\"></mtx-option>\n <mtx-option *ngFor=\"let option of dropdownValues\" [value]=\"option.value\">\n {{option.label}}\n </mtx-option>\n </mtx-select>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5$3.MtxSelect, selector: "mtx-select", inputs: ["addTag", "addTagText", "appearance", "appendTo", "bindLabel", "bindValue", "closeOnSelect", "clearAllText", "clearable", "clearOnBackspace", "compareWith", "dropdownPosition", "groupBy", "groupValue", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "hideSelected", "loading", "loadingText", "labelForId", "markFirst", "maxSelectedItems", "multiple", "notFoundText", "searchable", "readonly", "searchFn", "searchWhileComposing", "selectOnTab", "trackByFn", "inputAttrs", "tabIndex", "openOnEnter", "minTermLength", "editableSearchTerm", "keyDownFn", "virtualScroll", "typeToSearchText", "typeahead", "isOpen", "fixedPlaceholder", "deselectOnClick", "clearSearchOnAdd", "items", "value", "id", "placeholder", "disabled", "required", "errorStateMatcher", "aria-label", "aria-labelledby"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["mtxSelect"] }, { kind: "component", type: i5$3.MtxOption, selector: "mtx-option", inputs: ["value", "disabled"], exportAs: ["mtxOption"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
1922
1972
  }
1923
1973
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DropdownComponent, decorators: [{
1924
1974
  type: Component,
@@ -1941,6 +1991,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
1941
1991
  type: Input
1942
1992
  }], error: [{
1943
1993
  type: Input
1994
+ }], change: [{
1995
+ type: Output
1944
1996
  }] } });
1945
1997
 
1946
1998
  class FilepickerComponent {
@@ -2234,13 +2286,13 @@ class NumberInputComponent {
2234
2286
  return null;
2235
2287
  }
2236
2288
  const errors = {};
2237
- if (this.options.min !== undefined && val < this.options.min) {
2289
+ if (this.options?.min !== undefined && val < this.options.min) {
2238
2290
  errors.min = `must be greater than or equal to ${this.options.min}`;
2239
2291
  }
2240
- if (this.options.max !== undefined && val > this.options.max) {
2292
+ if (this.options?.max !== undefined && val > this.options.max) {
2241
2293
  errors.max = `must be lower than or equal to ${this.options.max}`;
2242
2294
  }
2243
- if (this.options.decimal_places !== undefined) {
2295
+ if (this.options?.decimal_places !== undefined) {
2244
2296
  const factor = Math.pow(10, this.options.decimal_places);
2245
2297
  if (Math.round(val * factor) / factor !== val) {
2246
2298
  errors.decimal_places =
@@ -2494,7 +2546,7 @@ class TimeInputComponent {
2494
2546
  useExisting: forwardRef(() => TimeInputComponent),
2495
2547
  multi: true
2496
2548
  }
2497
- ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxDatetimepicker]=\"picker\"\n [(ngModel)]=\"selectedTime\"\n (change)=\"onTimeEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onTimeSelected($event.value)\"\n autocomplete=\"off\">\n <mtx-datetimepicker #picker type=\"time\"></mtx-datetimepicker>\n <mtx-datetimepicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-datetimepicker-toggle>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$4.MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "showWeekNumbers", "startView", "mode", "timeInterval", "preventSameDateTimeSelection", "calendarHeaderComponent", "panelClass", "opened", "color", "startAt", "type", "touchUi", "timeInput", "timeInputAutoFocus", "disabled", "xPosition", "yPosition", "restoreFocus"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["mtxDatetimepicker"] }, { kind: "component", type: i4$4.MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxDatetimepickerToggle"] }, { kind: "directive", type: i4$4.MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: ["mtxDatetimepicker", "mtxDatetimepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["mtxDatetimepickerInput"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
2549
+ ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n [mtxDatetimepicker]=\"picker\"\n [(ngModel)]=\"selectedTime\"\n (change)=\"onTimeEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onTimeSelected($event.value)\"\n autocomplete=\"off\">\n <mtx-datetimepicker #picker type=\"time\"></mtx-datetimepicker>\n <mtx-datetimepicker-toggle matSuffix [for]=\"picker\" tabindex=\"-1\"></mtx-datetimepicker-toggle>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$3.MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "showWeekNumbers", "startView", "mode", "timeInterval", "preventSameDateTimeSelection", "calendarHeaderComponent", "panelClass", "opened", "color", "startAt", "type", "touchUi", "timeInput", "timeInputAutoFocus", "disabled", "xPosition", "yPosition", "restoreFocus"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["mtxDatetimepicker"] }, { kind: "component", type: i4$3.MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["mtxDatetimepickerToggle"] }, { kind: "directive", type: i4$3.MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: ["mtxDatetimepicker", "mtxDatetimepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["mtxDatetimepickerInput"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
2498
2550
  }
2499
2551
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: TimeInputComponent, decorators: [{
2500
2552
  type: Component,
@@ -2611,7 +2663,7 @@ class MultiselectInputComponent {
2611
2663
  useExisting: forwardRef(() => MultiselectInputComponent),
2612
2664
  multi: true
2613
2665
  }
2614
- ], usesOnChanges: true, ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <mtx-select\n [(ngModel)]=\"multiselectValues\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [multiple]=\"true\"\n [matTooltip]=\"(tooltip! | translate)\"\n (add)=\"add()\"\n (remove)=\"remove()\"\n appendTo=\"body\">\n <mtx-option value=\"\"></mtx-option>\n <mtx-option *ngFor=\"let option of dropdownValues\" [value]=\"option.value\">\n {{option.label}}\n </mtx-option>\n </mtx-select>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5$2.MtxSelect, selector: "mtx-select", inputs: ["addTag", "addTagText", "appearance", "appendTo", "bindLabel", "bindValue", "closeOnSelect", "clearAllText", "clearable", "clearOnBackspace", "compareWith", "dropdownPosition", "groupBy", "groupValue", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "hideSelected", "loading", "loadingText", "labelForId", "markFirst", "maxSelectedItems", "multiple", "notFoundText", "searchable", "readonly", "searchFn", "searchWhileComposing", "selectOnTab", "trackByFn", "inputAttrs", "tabIndex", "openOnEnter", "minTermLength", "editableSearchTerm", "keyDownFn", "virtualScroll", "typeToSearchText", "typeahead", "isOpen", "fixedPlaceholder", "deselectOnClick", "clearSearchOnAdd", "items", "value", "id", "placeholder", "disabled", "required", "errorStateMatcher", "aria-label", "aria-labelledby"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["mtxSelect"] }, { kind: "component", type: i5$2.MtxOption, selector: "mtx-option", inputs: ["value", "disabled"], exportAs: ["mtxOption"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
2666
+ ], usesOnChanges: true, ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <mtx-select\n [(ngModel)]=\"multiselectValues\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [multiple]=\"true\"\n [matTooltip]=\"(tooltip! | translate)\"\n (add)=\"add()\"\n (remove)=\"remove()\"\n appendTo=\"body\">\n <mtx-option value=\"\"></mtx-option>\n <mtx-option *ngFor=\"let option of dropdownValues\" [value]=\"option.value\">\n {{option.label}}\n </mtx-option>\n </mtx-select>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5$3.MtxSelect, selector: "mtx-select", inputs: ["addTag", "addTagText", "appearance", "appendTo", "bindLabel", "bindValue", "closeOnSelect", "clearAllText", "clearable", "clearOnBackspace", "compareWith", "dropdownPosition", "groupBy", "groupValue", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "hideSelected", "loading", "loadingText", "labelForId", "markFirst", "maxSelectedItems", "multiple", "notFoundText", "searchable", "readonly", "searchFn", "searchWhileComposing", "selectOnTab", "trackByFn", "inputAttrs", "tabIndex", "openOnEnter", "minTermLength", "editableSearchTerm", "keyDownFn", "virtualScroll", "typeToSearchText", "typeahead", "isOpen", "fixedPlaceholder", "deselectOnClick", "clearSearchOnAdd", "items", "value", "id", "placeholder", "disabled", "required", "errorStateMatcher", "aria-label", "aria-labelledby"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["mtxSelect"] }, { kind: "component", type: i5$3.MtxOption, selector: "mtx-option", inputs: ["value", "disabled"], exportAs: ["mtxOption"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
2615
2667
  }
2616
2668
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: MultiselectInputComponent, decorators: [{
2617
2669
  type: Component,
@@ -2741,6 +2793,331 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
2741
2793
  type: Input
2742
2794
  }] } });
2743
2795
 
2796
+ class ReportConfigInputComponent {
2797
+ constructor(arrayService, localeService) {
2798
+ this.arrayService = arrayService;
2799
+ this.localeService = localeService;
2800
+ this.value = { dataset: '', aggregated: false, columns: [], filters: [] };
2801
+ this.filterPickerOptions = { values: [] };
2802
+ this.filterFormArray = new FormArray([]);
2803
+ this.onChange = (newValue) => { };
2804
+ this.onTouched = () => { };
2805
+ }
2806
+ registerOnChange(fn) { this.onChange = fn; }
2807
+ registerOnTouched(fn) { this.onTouched = fn; }
2808
+ writeValue(newValue) {
2809
+ this.value = newValue;
2810
+ this.applyReportOptions();
2811
+ this.applyValueToDatasetColumns();
2812
+ this.refreshValueColumns();
2813
+ this.onChange(newValue);
2814
+ this.filterFormArray.clear();
2815
+ this.value.filters.forEach(filter => {
2816
+ let column = this.arrayService.findByAttribute(this.datasetColumns, 'name', filter.name);
2817
+ this.refreshFilterConfig(filter, column, filter.value);
2818
+ this.addFilterFormGroup(filter);
2819
+ });
2820
+ }
2821
+ onValueChanged(event) {
2822
+ this.onChange(this.value);
2823
+ }
2824
+ applyReportOptions() {
2825
+ this.datasets = this.options.datasets.map((dataset) => { return dataset.name; });
2826
+ this.datasetColumns = [];
2827
+ let config = this.arrayService.findByAttribute(this.options.datasets, 'name', this.value.dataset);
2828
+ if (!config)
2829
+ return;
2830
+ this.datasetColumns = config.columns.map((column) => {
2831
+ return { name: column.name, type: column.type, options: column.options || {}, selected: false, group_by: false, count: false, count_distinct: false, average: false, max: false, min: false, sum: false };
2832
+ });
2833
+ this.filterPickerOptions.values = this.datasetColumns.map((column) => {
2834
+ return { label: column.name, value: column.name, hidden: false };
2835
+ });
2836
+ }
2837
+ applyValueToDatasetColumns() {
2838
+ this.datasetColumns.forEach((datasetColumn) => {
2839
+ let attribute = datasetColumn.name;
2840
+ let valueColumn = this.arrayService.findByAttribute(this.value.columns, 'name', attribute) || {};
2841
+ datasetColumn.selected = valueColumn.selected || false;
2842
+ datasetColumn.group_by = valueColumn.group_by || false;
2843
+ datasetColumn.count = valueColumn.count || false;
2844
+ datasetColumn.count_distinct = valueColumn.count_distinct || false;
2845
+ datasetColumn.average = valueColumn.average || false;
2846
+ datasetColumn.max = valueColumn.max || false;
2847
+ datasetColumn.min = valueColumn.min || false;
2848
+ datasetColumn.sum = valueColumn.sum || false;
2849
+ });
2850
+ }
2851
+ refreshValueColumns() {
2852
+ this.value.columns = this.datasetColumns.filter((column) => {
2853
+ return column.selected;
2854
+ });
2855
+ }
2856
+ setDataset(dataset) {
2857
+ this.value.dataset = dataset;
2858
+ this.value.aggregated = false;
2859
+ this.value.columns = [];
2860
+ this.value.filters = [];
2861
+ this.applyReportOptions();
2862
+ this.onChange(this.value);
2863
+ }
2864
+ setAggregated(aggregated) {
2865
+ this.value.aggregated = aggregated;
2866
+ if (!aggregated) {
2867
+ this.value.columns.forEach((item) => {
2868
+ item.group_by = false;
2869
+ item.count = false;
2870
+ item.count_distinct = false;
2871
+ item.average = false;
2872
+ item.max = false;
2873
+ item.min = false;
2874
+ item.sum = false;
2875
+ });
2876
+ }
2877
+ this.onChange(this.value);
2878
+ }
2879
+ setSelected(item, selected) {
2880
+ item.selected = selected;
2881
+ if (!selected) {
2882
+ item.group_by = false;
2883
+ item.count = false;
2884
+ item.count_distinct = false;
2885
+ item.average = false;
2886
+ item.max = false;
2887
+ item.min = false;
2888
+ item.sum = false;
2889
+ }
2890
+ this.refreshValueColumns();
2891
+ this.onChange(this.value);
2892
+ }
2893
+ setGroupBy(item, groupBy) {
2894
+ item.group_by = groupBy;
2895
+ if (groupBy) {
2896
+ item.count = false;
2897
+ item.count_distinct = false;
2898
+ item.average = false;
2899
+ item.max = false;
2900
+ item.min = false;
2901
+ item.sum = false;
2902
+ }
2903
+ this.onChange(this.value);
2904
+ }
2905
+ onAggregationChange() {
2906
+ this.onChange(this.value);
2907
+ }
2908
+ drop(event) {
2909
+ const list = [...this.value.columns];
2910
+ moveItemInArray(list, event.previousIndex, event.currentIndex);
2911
+ this.datasetColumns = list;
2912
+ this.refreshValueColumns();
2913
+ }
2914
+ addFilter() {
2915
+ let filter = {};
2916
+ this.refreshFilterConfig(filter, this.datasetColumns[0], null);
2917
+ this.value.filters.push(filter);
2918
+ this.addFilterFormGroup(filter);
2919
+ this.onChange(this.value);
2920
+ setTimeout(() => {
2921
+ this.filterContainer.nativeElement.scrollTop = this.filterContainer.nativeElement.scrollHeight;
2922
+ }, 0);
2923
+ }
2924
+ addFilterFormGroup(filter) {
2925
+ const fg = new FormGroup({
2926
+ name: new FormControl(filter.name),
2927
+ operator: new FormControl(filter.operator),
2928
+ value: new FormControl(filter.value)
2929
+ });
2930
+ this.filterFormArray.push(fg);
2931
+ fg.valueChanges.subscribe(val => {
2932
+ filter.name = val.name;
2933
+ filter.operator = val.operator;
2934
+ filter.value = val.value;
2935
+ this.onChange(this.value);
2936
+ });
2937
+ }
2938
+ updateFilterFormGroup(filter) {
2939
+ const i = this.value.filters.indexOf(filter);
2940
+ const fg = this.filterFormArray.at(i);
2941
+ fg.patchValue({
2942
+ name: filter.name,
2943
+ operator: filter.operator,
2944
+ value: filter.value
2945
+ });
2946
+ }
2947
+ setFilterColumn(filter, columnName) {
2948
+ let column = this.arrayService.findByAttribute(this.datasetColumns, 'name', columnName);
2949
+ this.refreshFilterConfig(filter, column, null);
2950
+ this.updateFilterFormGroup(filter);
2951
+ this.onChange(this.value);
2952
+ }
2953
+ setFilterOperator(filter, operator) {
2954
+ filter.operator = operator;
2955
+ this.onChange(this.value);
2956
+ }
2957
+ removeFilter(index) {
2958
+ this.value.filters.splice(index, 1);
2959
+ this.filterFormArray.removeAt(index);
2960
+ this.onChange(this.value);
2961
+ }
2962
+ refreshFilterConfig(filter, column, value) {
2963
+ if (!!column) {
2964
+ filter.name = column.name;
2965
+ filter.type = this.getFilterTypeForColumn(column);
2966
+ let operators = this.getOperatorsForFilterType(filter.type);
2967
+ let isOperatorAvailable = this.arrayService.findByAttribute(operators, 'value', filter.operator) != null;
2968
+ filter.operator = isOperatorAvailable ? filter.operator : operators[0].value;
2969
+ filter.options = {
2970
+ operators: {
2971
+ values: operators.map((operator) => {
2972
+ return { label: this.localeService.getTranslation(operator.label), value: operator.value };
2973
+ })
2974
+ },
2975
+ preSelectedValues: {
2976
+ values: column.options.values
2977
+ }
2978
+ };
2979
+ }
2980
+ else {
2981
+ filter.name = '';
2982
+ filter.type = '';
2983
+ filter.operator = '';
2984
+ filter.options = { operators: { values: [] } };
2985
+ }
2986
+ filter.value = value;
2987
+ }
2988
+ getFilterTypeForColumn(column) {
2989
+ let type = '';
2990
+ switch (column.type) {
2991
+ case 'integer':
2992
+ case 'decimal':
2993
+ type = 'number';
2994
+ break;
2995
+ case 'date':
2996
+ type = 'date';
2997
+ break;
2998
+ case 'datetime':
2999
+ type = 'datetime';
3000
+ break;
3001
+ case 'string':
3002
+ type = (!!column.options.values) ? 'dropdown' : 'string';
3003
+ break;
3004
+ }
3005
+ return type;
3006
+ }
3007
+ getOperatorsForFilterType(type) {
3008
+ let operators = [];
3009
+ switch (type) {
3010
+ case 'number':
3011
+ case 'date':
3012
+ case 'datetime':
3013
+ operators = [
3014
+ { label: 'mantle.report_config.operators.=', value: '=' },
3015
+ { label: 'mantle.report_config.operators.!=', value: '!=' },
3016
+ { label: 'mantle.report_config.operators.>', value: '>' },
3017
+ { label: 'mantle.report_config.operators.<', value: '<' },
3018
+ { label: 'mantle.report_config.operators.>=', value: '>=' },
3019
+ { label: 'mantle.report_config.operators.<=', value: '<=' }
3020
+ ];
3021
+ break;
3022
+ case 'string':
3023
+ operators = [
3024
+ { label: 'mantle.report_config.operators.=', value: '=' },
3025
+ { label: 'mantle.report_config.operators.!=', value: '!=' },
3026
+ { label: 'mantle.report_config.operators.contains', value: 'contains' },
3027
+ { label: 'mantle.report_config.operators.starts_with', value: 'starts_with' },
3028
+ { label: 'mantle.report_config.operators.ends_with', value: 'ends_with' }
3029
+ ];
3030
+ break;
3031
+ case 'dropdown':
3032
+ operators = [
3033
+ { label: 'mantle.report_config.operators.one_of', value: 'one_of' },
3034
+ { label: 'mantle.report_config.operators.not_one_of', value: 'not_one_of' }
3035
+ ];
3036
+ break;
3037
+ }
3038
+ return operators;
3039
+ }
3040
+ validate(control) {
3041
+ const errors = {};
3042
+ if (!this.value.dataset) {
3043
+ errors.dataset = 'Dataset is required';
3044
+ }
3045
+ if (this.value.columns.length === 0) {
3046
+ errors.columns = 'You must select at least one column';
3047
+ }
3048
+ if (this.value.aggregated) {
3049
+ const notFullyAggregated = this.value.columns.some((column) => {
3050
+ return !(column.group_by || column.count || column.count_distinct || column.average || column.max || column.min || column.sum);
3051
+ });
3052
+ if (notFullyAggregated) {
3053
+ errors.aggregation = 'All selected columns must be aggregated when the report is set to aggregated';
3054
+ }
3055
+ }
3056
+ if (this.value.filters.length > 0) {
3057
+ const filterWithoutName = this.value.filters.some((filter) => {
3058
+ return !filter.name;
3059
+ });
3060
+ if (filterWithoutName)
3061
+ errors.filterNames = 'All filters must specify a column name';
3062
+ const filterWithoutOperator = this.value.filters.some((filter) => {
3063
+ return !filter.operator;
3064
+ });
3065
+ if (filterWithoutOperator)
3066
+ errors.filterOperators = 'All filters must specify an operator';
3067
+ const filterWithoutValue = this.value.filters.some((filter) => {
3068
+ return !filter.value;
3069
+ });
3070
+ if (filterWithoutValue)
3071
+ errors.filterValues = 'All filters must specify a value';
3072
+ }
3073
+ this.errorMessage = Object.values(errors).filter(Boolean).join(', ');
3074
+ return Object.keys(errors).length > 0 ? errors : null;
3075
+ }
3076
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ReportConfigInputComponent, deps: [{ token: ArrayService }, { token: LocaleService }], target: i0.ɵɵFactoryTarget.Component }); }
3077
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: ReportConfigInputComponent, isStandalone: false, selector: "mantle-report-config-input", inputs: { label: "label", tooltip: "tooltip", options: "options", disable: "disable", required: "required", error: "error" }, providers: [
3078
+ {
3079
+ provide: NG_VALUE_ACCESSOR,
3080
+ useExisting: forwardRef(() => ReportConfigInputComponent),
3081
+ multi: true
3082
+ },
3083
+ {
3084
+ provide: NG_VALIDATORS,
3085
+ useExisting: forwardRef(() => ReportConfigInputComponent),
3086
+ multi: true,
3087
+ }
3088
+ ], viewQueries: [{ propertyName: "filterContainer", first: true, predicate: ["filterContainer"], descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"rich-text-editor-wrapper mat-mdc-form-field\" [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-form-field fxFlex=\"0 0 auto\" [class.mat-mdc-form-field-invalid]=\"error\">\n <label>\n {{ 'mantle.report_config.dataset' | translate }}\n </label>\n <mtx-select\n [(ngModel)]=\"value.dataset\"\n (change)=\"setDataset($event)\"\n appendTo=\"body\">\n <mtx-option value=\"\"></mtx-option>\n <mtx-option *ngFor=\"let option of datasets\" [value]=\"option\">\n {{option}}\n </mtx-option>\n </mtx-select>\n </mat-form-field>\n\n <div fxFlex=\"0 0 auto\">\n <mat-checkbox [checked]=\"value.aggregated\" (change)=\"setAggregated($event.checked)\">\n {{ 'mantle.report_config.use_aggregation' | translate }}\n </mat-checkbox>\n </div>\n\n <h3 fxFlex=\"0 0 auto\" class=\"report-config-subsection-header\">{{ 'mantle.report_config.columns' | translate }}</h3>\n\n <div fxFlex=\"1 0 1px\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"items-container\">\n \n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"header-row\">\n <div fxFlex=\"0 0 24px\" class=\"header-row-label\"></div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label selection-check-header\">{{ 'mantle.report_config.select' | translate }}</div>\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.column' | translate }}</div>\n <ng-container *ngIf=\"value.aggregated\">\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.group_by' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.count' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.count_distinct' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.average' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.max' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.min' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.sum' | translate }}</div>\n </ng-container>\n </div>\n\n <div fxFlex=\"1 0 0\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"field-rows\"\n cdkDropList [cdkDropListData]=\"value.columns\" (cdkDropListDropped)=\"drop($event)\">\n\n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch center\" fxLayoutGap=\"8px\" class=\"field-row\"\n *ngFor=\"let item of datasetColumns; let i = index\" cdkDrag>\n\n <!-- Drag handle -->\n <div fxFlex=\"0 0 24px\" class=\"drag-handle\" cdkDragHandle>\n <mat-icon>drag_indicator</mat-icon>\n </div>\n\n <!-- Left checkbox -->\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"selection-check\" [checked]=\"item.selected\" (change)=\"setSelected(item, $event.checked)\"></mat-checkbox>\n\n <!-- Label -->\n <div fxFlex=\"1 1 0\">{{ item.name }}</div>\n\n <!-- Right checkboxes -->\n <ng-container *ngIf=\"value.aggregated\">\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [checked]=\"item.group_by\" (change)=\"setGroupBy(item, $event.checked)\" [disabled]=\"!item.selected\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.count\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.count_distinct\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.average\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean'].includes(item.type)\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.max\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean'].includes(item.type)\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.min\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean'].includes(item.type)\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.sum\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean', 'date', 'datetime'].includes(item.type)\"></mat-checkbox>\n </ng-container>\n </div>\n\n </div>\n\n </div>\n\n <h3 fxFlex=\"0 0 auto\" class=\"report-config-subsection-header\">{{ 'mantle.report_config.filters' | translate }}</h3>\n\n <div fxFlex=\"1 0 1px\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"filters-container\">\n\n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"header-row\">\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.filter' | translate }}</div>\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.operator' | translate }}</div>\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.filter_value' | translate }}</div>\n <div fxFlex=\"0 0 48px\" class=\"header-row-label\"></div>\n </div>\n\n <div #filterContainer fxFlex=\"1 0 0\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"0\" class=\"filter-rows\">\n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch center\" fxLayoutGap=\"8px\"\n *ngFor=\"let filter of value.filters; let i = index\">\n\n <ng-container [formGroup]=\"filterFormArray.at(i)\">\n <div fxFlex=\"1 1 0\">\n <mantle-dropdown\n [id]=\"'filterName' + i\"\n [formControlName]=\"'name'\"\n [options]=\"filterPickerOptions\"\n [required]=\"true\"\n (change)=\"setFilterColumn(filter, $event)\">\n </mantle-dropdown>\n </div>\n <div fxFlex=\"1 1 0\">\n <mantle-dropdown\n [id]=\"'filterOperator' + i\"\n [formControlName]=\"'operator'\"\n [options]=\"filter.options.operators\"\n [required]=\"true\"\n [disable]=\"!filter.name\"\n (change)=\"setFilterOperator(filter, $event)\">\n </mantle-dropdown>\n </div>\n <div fxFlex=\"1 1 0\">\n <ng-container [ngSwitch]=\"filter.type\">\n\n <mantle-number-input *ngSwitchCase=\"'number'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-number-input>\n\n <mantle-datepicker *ngSwitchCase=\"'date'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-datepicker>\n\n <mantle-datetimepicker *ngSwitchCase=\"'datetime'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-datetimepicker>\n\n <mantle-text-input *ngSwitchCase=\"'string'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-text-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'dropdown'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [options]=\"filter.options.preSelectedValues\"\n [required]=\"true\">\n </mantle-multiselect-input>\n\n </ng-container>\n </div>\n </ng-container>\n\n <div fxFlex=\"0 0 48px\">\n <button matIconButton color=\"warn\" type=\"button\" (click)=\"removeFilter(i)\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n\n </div>\n </div>\n\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addFilter()\">{{ 'mantle.report_config.add_filter' | translate }}</button>\n\n </div>\n\n <mat-hint *ngIf=\"value.dataset && errorMessage\" class=\"error-message\">{{ errorMessage }}</mat-hint>\n</div>\n", styles: ["label{text-transform:uppercase}.report-config-subsection-header{margin-top:16px;font-size:16px;font-weight:600}.items-container,.filters-container{width:100%;margin:0;border:1px solid #ccc;border-radius:8px;padding:8px}.items-container .header-row,.filters-container .header-row{align-items:center;padding:8px 12px;border-bottom:2px solid #ccc}.items-container .header-row .header-row-label,.filters-container .header-row .header-row-label{font-weight:700;font-size:14px;text-align:left}.items-container .header-row .selection-check-header,.items-container .header-row .aggregation-check-header,.filters-container .header-row .selection-check-header,.filters-container .header-row .aggregation-check-header{text-align:center}.field-rows,.filter-rows{overflow-y:auto}.field-row{padding:8px 12px;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:14px}.field-row .drag-handle{cursor:grab;display:flex;align-items:center}.field-row .selection-check,.field-row .aggregation-check{text-align:center}.error-message{color:#f44336;font-size:12px;margin-top:4px;width:100%;text-align:center}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i5$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5$2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8$1.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: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i5$3.MtxSelect, selector: "mtx-select", inputs: ["addTag", "addTagText", "appearance", "appendTo", "bindLabel", "bindValue", "closeOnSelect", "clearAllText", "clearable", "clearOnBackspace", "compareWith", "dropdownPosition", "groupBy", "groupValue", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "hideSelected", "loading", "loadingText", "labelForId", "markFirst", "maxSelectedItems", "multiple", "notFoundText", "searchable", "readonly", "searchFn", "searchWhileComposing", "selectOnTab", "trackByFn", "inputAttrs", "tabIndex", "openOnEnter", "minTermLength", "editableSearchTerm", "keyDownFn", "virtualScroll", "typeToSearchText", "typeahead", "isOpen", "fixedPlaceholder", "deselectOnClick", "clearSearchOnAdd", "items", "value", "id", "placeholder", "disabled", "required", "errorStateMatcher", "aria-label", "aria-labelledby"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["mtxSelect"] }, { kind: "component", type: i5$3.MtxOption, selector: "mtx-option", inputs: ["value", "disabled"], exportAs: ["mtxOption"] }, { kind: "component", type: DatepickerComponent, selector: "mantle-datepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DatetimepickerComponent, selector: "mantle-datetimepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DropdownComponent, selector: "mantle-dropdown", inputs: ["label", "tooltip", "options", "disable", "required", "error"], outputs: ["change"] }, { kind: "component", type: NumberInputComponent, selector: "mantle-number-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: TextInputComponent, selector: "mantle-text-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: MultiselectInputComponent, selector: "mantle-multiselect-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
3089
+ }
3090
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: ReportConfigInputComponent, decorators: [{
3091
+ type: Component,
3092
+ args: [{ selector: 'mantle-report-config-input', standalone: false, providers: [
3093
+ {
3094
+ provide: NG_VALUE_ACCESSOR,
3095
+ useExisting: forwardRef(() => ReportConfigInputComponent),
3096
+ multi: true
3097
+ },
3098
+ {
3099
+ provide: NG_VALIDATORS,
3100
+ useExisting: forwardRef(() => ReportConfigInputComponent),
3101
+ multi: true,
3102
+ }
3103
+ ], template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"rich-text-editor-wrapper mat-mdc-form-field\" [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-form-field fxFlex=\"0 0 auto\" [class.mat-mdc-form-field-invalid]=\"error\">\n <label>\n {{ 'mantle.report_config.dataset' | translate }}\n </label>\n <mtx-select\n [(ngModel)]=\"value.dataset\"\n (change)=\"setDataset($event)\"\n appendTo=\"body\">\n <mtx-option value=\"\"></mtx-option>\n <mtx-option *ngFor=\"let option of datasets\" [value]=\"option\">\n {{option}}\n </mtx-option>\n </mtx-select>\n </mat-form-field>\n\n <div fxFlex=\"0 0 auto\">\n <mat-checkbox [checked]=\"value.aggregated\" (change)=\"setAggregated($event.checked)\">\n {{ 'mantle.report_config.use_aggregation' | translate }}\n </mat-checkbox>\n </div>\n\n <h3 fxFlex=\"0 0 auto\" class=\"report-config-subsection-header\">{{ 'mantle.report_config.columns' | translate }}</h3>\n\n <div fxFlex=\"1 0 1px\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"items-container\">\n \n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"header-row\">\n <div fxFlex=\"0 0 24px\" class=\"header-row-label\"></div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label selection-check-header\">{{ 'mantle.report_config.select' | translate }}</div>\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.column' | translate }}</div>\n <ng-container *ngIf=\"value.aggregated\">\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.group_by' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.count' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.count_distinct' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.average' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.max' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.min' | translate }}</div>\n <div fxFlex=\"0 0 80px\" class=\"header-row-label aggregation-check-header\">{{ 'mantle.report_config.sum' | translate }}</div>\n </ng-container>\n </div>\n\n <div fxFlex=\"1 0 0\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"field-rows\"\n cdkDropList [cdkDropListData]=\"value.columns\" (cdkDropListDropped)=\"drop($event)\">\n\n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch center\" fxLayoutGap=\"8px\" class=\"field-row\"\n *ngFor=\"let item of datasetColumns; let i = index\" cdkDrag>\n\n <!-- Drag handle -->\n <div fxFlex=\"0 0 24px\" class=\"drag-handle\" cdkDragHandle>\n <mat-icon>drag_indicator</mat-icon>\n </div>\n\n <!-- Left checkbox -->\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"selection-check\" [checked]=\"item.selected\" (change)=\"setSelected(item, $event.checked)\"></mat-checkbox>\n\n <!-- Label -->\n <div fxFlex=\"1 1 0\">{{ item.name }}</div>\n\n <!-- Right checkboxes -->\n <ng-container *ngIf=\"value.aggregated\">\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [checked]=\"item.group_by\" (change)=\"setGroupBy(item, $event.checked)\" [disabled]=\"!item.selected\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.count\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.count_distinct\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.average\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean'].includes(item.type)\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.max\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean'].includes(item.type)\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.min\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean'].includes(item.type)\"></mat-checkbox>\n <mat-checkbox fxFlex=\"0 0 80px\" class=\"aggregation-check\" [(ngModel)]=\"item.sum\" (change)=\"onAggregationChange()\" [disabled]=\"!item.selected || item.group_by || ['string', 'boolean', 'date', 'datetime'].includes(item.type)\"></mat-checkbox>\n </ng-container>\n </div>\n\n </div>\n\n </div>\n\n <h3 fxFlex=\"0 0 auto\" class=\"report-config-subsection-header\">{{ 'mantle.report_config.filters' | translate }}</h3>\n\n <div fxFlex=\"1 0 1px\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"filters-container\">\n\n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"8px\" class=\"header-row\">\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.filter' | translate }}</div>\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.operator' | translate }}</div>\n <div fxFlex=\"1 1 0\" class=\"header-row-label\">{{ 'mantle.report_config.filter_value' | translate }}</div>\n <div fxFlex=\"0 0 48px\" class=\"header-row-label\"></div>\n </div>\n\n <div #filterContainer fxFlex=\"1 0 0\" fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"0\" class=\"filter-rows\">\n <div fxFlex=\"0 0 auto\" fxLayout=\"row\" fxLayoutAlign=\"stretch center\" fxLayoutGap=\"8px\"\n *ngFor=\"let filter of value.filters; let i = index\">\n\n <ng-container [formGroup]=\"filterFormArray.at(i)\">\n <div fxFlex=\"1 1 0\">\n <mantle-dropdown\n [id]=\"'filterName' + i\"\n [formControlName]=\"'name'\"\n [options]=\"filterPickerOptions\"\n [required]=\"true\"\n (change)=\"setFilterColumn(filter, $event)\">\n </mantle-dropdown>\n </div>\n <div fxFlex=\"1 1 0\">\n <mantle-dropdown\n [id]=\"'filterOperator' + i\"\n [formControlName]=\"'operator'\"\n [options]=\"filter.options.operators\"\n [required]=\"true\"\n [disable]=\"!filter.name\"\n (change)=\"setFilterOperator(filter, $event)\">\n </mantle-dropdown>\n </div>\n <div fxFlex=\"1 1 0\">\n <ng-container [ngSwitch]=\"filter.type\">\n\n <mantle-number-input *ngSwitchCase=\"'number'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-number-input>\n\n <mantle-datepicker *ngSwitchCase=\"'date'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-datepicker>\n\n <mantle-datetimepicker *ngSwitchCase=\"'datetime'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-datetimepicker>\n\n <mantle-text-input *ngSwitchCase=\"'string'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [required]=\"true\"\n [disable]=\"!filter.name\">\n </mantle-text-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'dropdown'\"\n [id]=\"'filterValue' + i\"\n [formControlName]=\"'value'\"\n [options]=\"filter.options.preSelectedValues\"\n [required]=\"true\">\n </mantle-multiselect-input>\n\n </ng-container>\n </div>\n </ng-container>\n\n <div fxFlex=\"0 0 48px\">\n <button matIconButton color=\"warn\" type=\"button\" (click)=\"removeFilter(i)\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n\n </div>\n </div>\n\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addFilter()\">{{ 'mantle.report_config.add_filter' | translate }}</button>\n\n </div>\n\n <mat-hint *ngIf=\"value.dataset && errorMessage\" class=\"error-message\">{{ errorMessage }}</mat-hint>\n</div>\n", styles: ["label{text-transform:uppercase}.report-config-subsection-header{margin-top:16px;font-size:16px;font-weight:600}.items-container,.filters-container{width:100%;margin:0;border:1px solid #ccc;border-radius:8px;padding:8px}.items-container .header-row,.filters-container .header-row{align-items:center;padding:8px 12px;border-bottom:2px solid #ccc}.items-container .header-row .header-row-label,.filters-container .header-row .header-row-label{font-weight:700;font-size:14px;text-align:left}.items-container .header-row .selection-check-header,.items-container .header-row .aggregation-check-header,.filters-container .header-row .selection-check-header,.filters-container .header-row .aggregation-check-header{text-align:center}.field-rows,.filter-rows{overflow-y:auto}.field-row{padding:8px 12px;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:14px}.field-row .drag-handle{cursor:grab;display:flex;align-items:center}.field-row .selection-check,.field-row .aggregation-check{text-align:center}.error-message{color:#f44336;font-size:12px;margin-top:4px;width:100%;text-align:center}\n"] }]
3104
+ }], ctorParameters: () => [{ type: ArrayService }, { type: LocaleService }], propDecorators: { label: [{
3105
+ type: Input
3106
+ }], tooltip: [{
3107
+ type: Input
3108
+ }], options: [{
3109
+ type: Input
3110
+ }], disable: [{
3111
+ type: Input
3112
+ }], required: [{
3113
+ type: Input
3114
+ }], error: [{
3115
+ type: Input
3116
+ }], filterContainer: [{
3117
+ type: ViewChild,
3118
+ args: ['filterContainer']
3119
+ }] } });
3120
+
2744
3121
  class AutocompleteInputComponent {
2745
3122
  constructor() {
2746
3123
  this.value = '';
@@ -2772,7 +3149,7 @@ class AutocompleteInputComponent {
2772
3149
  useExisting: forwardRef(() => AutocompleteInputComponent),
2773
3150
  multi: true
2774
3151
  }
2775
- ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n type=\"text\"\n [(ngModel)]=\"value\"\n (keyup)=\"onValueChanged($event)\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [matAutocomplete]=\"auto\">\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onValueChanged($event)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i4$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5$3.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: i5$3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
3152
+ ], ngImport: i0, template: "<mat-form-field [class.mat-mdc-form-field-invalid]=\"error\">\n <mat-label>\n {{ label | translate }}\n <mantle-tooltip *ngIf=\"tooltip\" [message]=\"tooltip\"></mantle-tooltip>\n </mat-label>\n <input matInput\n type=\"text\"\n [(ngModel)]=\"value\"\n (keyup)=\"onValueChanged($event)\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [matAutocomplete]=\"auto\">\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onValueChanged($event)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$3.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: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i4$5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5$4.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: i5$4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: TooltipComponent, selector: "mantle-tooltip", inputs: ["message"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
2776
3153
  }
2777
3154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AutocompleteInputComponent, decorators: [{
2778
3155
  type: Component,
@@ -2799,11 +3176,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
2799
3176
 
2800
3177
  class DynamicFormFieldComponent {
2801
3178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DynamicFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2802
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DynamicFormFieldComponent, isStandalone: false, selector: "mantle-dynamic-form-field", inputs: { field: "field", form: "form", error: "error" }, ngImport: i0, template: "<div class=\"dynamic-form-field-wrapper\" [formGroup]=\"form\">\n <ng-container [ngSwitch]=\"field.type\">\n\n <mantle-text-input *ngSwitchCase=\"'string'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-textarea *ngSwitchCase=\"'text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [rows]=\"4\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-textarea>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-datepicker *ngSwitchCase=\"'date'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datepicker>\n\n <mantle-datetimepicker *ngSwitchCase=\"'datetime'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datetimepicker>\n\n <mantle-time-input *ngSwitchCase=\"'time'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-time-input>\n\n <mantle-number-input *ngSwitchCase=\"'number'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-number-input *ngSwitchCase=\"'currency'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-filepicker *ngSwitchCase=\"'file'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-filepicker>\n\n <mantle-imagepicker *ngSwitchCase=\"'image'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-imagepicker>\n\n <mantle-chip-input *ngSwitchCase=\"'chips'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-chip-input *ngSwitchCase=\"'chips-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-password-input *ngSwitchCase=\"'password'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-password-input>\n\n <mantle-markdown-input *ngSwitchCase=\"'markdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-markdown-input>\n\n <mantle-rich-text-input *ngSwitchCase=\"'rich-text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-rich-text-input>\n\n <mantle-autocomplete-input *ngSwitchCase=\"'autocomplete'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-autocomplete-input>\n\n <mantle-text-input *ngSwitchCase=\"'link'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-colorpicker-input *ngSwitchCase=\"'color'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-colorpicker-input>\n </ng-container>\n</div>\n", styles: [":host,.dynamic-form-field-wrapper{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ChipInputComponent, selector: "mantle-chip-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DatepickerComponent, selector: "mantle-datepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DatetimepickerComponent, selector: "mantle-datetimepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: ColorPickerInputComponent, selector: "mantle-colorpicker-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DropdownComponent, selector: "mantle-dropdown", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: FilepickerComponent, selector: "mantle-filepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: ImagepickerComponent, selector: "mantle-imagepicker", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: NumberInputComponent, selector: "mantle-number-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: PasswordInputComponent, selector: "mantle-password-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: TextareaComponent, selector: "mantle-textarea", inputs: ["label", "tooltip", "rows", "disable", "required", "error"] }, { kind: "component", type: TextInputComponent, selector: "mantle-text-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: TimeInputComponent, selector: "mantle-time-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: MarkdownInputComponent, selector: "mantle-markdown-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: MultiselectInputComponent, selector: "mantle-multiselect-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: RichTextInputComponent, selector: "mantle-rich-text-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: AutocompleteInputComponent, selector: "mantle-autocomplete-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }] }); }
3179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DynamicFormFieldComponent, isStandalone: false, selector: "mantle-dynamic-form-field", inputs: { field: "field", form: "form", error: "error" }, ngImport: i0, template: "<div class=\"dynamic-form-field-wrapper\" [formGroup]=\"form\">\n <ng-container [ngSwitch]=\"field.type\">\n\n <mantle-text-input *ngSwitchCase=\"'string'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-textarea *ngSwitchCase=\"'text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [rows]=\"4\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-textarea>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-datepicker *ngSwitchCase=\"'date'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datepicker>\n\n <mantle-datetimepicker *ngSwitchCase=\"'datetime'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datetimepicker>\n\n <mantle-time-input *ngSwitchCase=\"'time'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-time-input>\n\n <mantle-number-input *ngSwitchCase=\"'number'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-number-input *ngSwitchCase=\"'currency'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-filepicker *ngSwitchCase=\"'file'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-filepicker>\n\n <mantle-imagepicker *ngSwitchCase=\"'image'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-imagepicker>\n\n <mantle-chip-input *ngSwitchCase=\"'chips'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-chip-input *ngSwitchCase=\"'chips-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-password-input *ngSwitchCase=\"'password'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-password-input>\n\n <mantle-markdown-input *ngSwitchCase=\"'markdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-markdown-input>\n\n <mantle-rich-text-input *ngSwitchCase=\"'rich-text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-rich-text-input>\n\n <mantle-autocomplete-input *ngSwitchCase=\"'autocomplete'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-autocomplete-input>\n\n <mantle-text-input *ngSwitchCase=\"'link'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-colorpicker-input *ngSwitchCase=\"'color'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-colorpicker-input>\n\n <mantle-report-config-input *ngSwitchCase=\"'report-config'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-report-config-input>\n </ng-container>\n</div>\n", styles: [":host,.dynamic-form-field-wrapper{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ChipInputComponent, selector: "mantle-chip-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DatepickerComponent, selector: "mantle-datepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DatetimepickerComponent, selector: "mantle-datetimepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: ColorPickerInputComponent, selector: "mantle-colorpicker-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: DropdownComponent, selector: "mantle-dropdown", inputs: ["label", "tooltip", "options", "disable", "required", "error"], outputs: ["change"] }, { kind: "component", type: FilepickerComponent, selector: "mantle-filepicker", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: ImagepickerComponent, selector: "mantle-imagepicker", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: NumberInputComponent, selector: "mantle-number-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: PasswordInputComponent, selector: "mantle-password-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: TextareaComponent, selector: "mantle-textarea", inputs: ["label", "tooltip", "rows", "disable", "required", "error"] }, { kind: "component", type: TextInputComponent, selector: "mantle-text-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: TimeInputComponent, selector: "mantle-time-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: MarkdownInputComponent, selector: "mantle-markdown-input", inputs: ["label", "tooltip", "disable", "required", "error"] }, { kind: "component", type: MultiselectInputComponent, selector: "mantle-multiselect-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: RichTextInputComponent, selector: "mantle-rich-text-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: ReportConfigInputComponent, selector: "mantle-report-config-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }, { kind: "component", type: AutocompleteInputComponent, selector: "mantle-autocomplete-input", inputs: ["label", "tooltip", "options", "disable", "required", "error"] }] }); }
2803
3180
  }
2804
3181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DynamicFormFieldComponent, decorators: [{
2805
3182
  type: Component,
2806
- args: [{ selector: 'mantle-dynamic-form-field', standalone: false, template: "<div class=\"dynamic-form-field-wrapper\" [formGroup]=\"form\">\n <ng-container [ngSwitch]=\"field.type\">\n\n <mantle-text-input *ngSwitchCase=\"'string'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-textarea *ngSwitchCase=\"'text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [rows]=\"4\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-textarea>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-datepicker *ngSwitchCase=\"'date'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datepicker>\n\n <mantle-datetimepicker *ngSwitchCase=\"'datetime'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datetimepicker>\n\n <mantle-time-input *ngSwitchCase=\"'time'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-time-input>\n\n <mantle-number-input *ngSwitchCase=\"'number'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-number-input *ngSwitchCase=\"'currency'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-filepicker *ngSwitchCase=\"'file'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-filepicker>\n\n <mantle-imagepicker *ngSwitchCase=\"'image'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-imagepicker>\n\n <mantle-chip-input *ngSwitchCase=\"'chips'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-chip-input *ngSwitchCase=\"'chips-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-password-input *ngSwitchCase=\"'password'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-password-input>\n\n <mantle-markdown-input *ngSwitchCase=\"'markdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-markdown-input>\n\n <mantle-rich-text-input *ngSwitchCase=\"'rich-text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-rich-text-input>\n\n <mantle-autocomplete-input *ngSwitchCase=\"'autocomplete'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-autocomplete-input>\n\n <mantle-text-input *ngSwitchCase=\"'link'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-colorpicker-input *ngSwitchCase=\"'color'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-colorpicker-input>\n </ng-container>\n</div>\n", styles: [":host,.dynamic-form-field-wrapper{display:block;width:100%;height:100%}\n"] }]
3183
+ args: [{ selector: 'mantle-dynamic-form-field', standalone: false, template: "<div class=\"dynamic-form-field-wrapper\" [formGroup]=\"form\">\n <ng-container [ngSwitch]=\"field.type\">\n\n <mantle-text-input *ngSwitchCase=\"'string'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-text-input *ngSwitchCase=\"'string-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-textarea *ngSwitchCase=\"'text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [rows]=\"4\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-textarea>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-dropdown *ngSwitchCase=\"'dropdown-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-dropdown>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-md'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-multiselect-input *ngSwitchCase=\"'multiselect-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-multiselect-input>\n\n <mantle-datepicker *ngSwitchCase=\"'date'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datepicker>\n\n <mantle-datetimepicker *ngSwitchCase=\"'datetime'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-datetimepicker>\n\n <mantle-time-input *ngSwitchCase=\"'time'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-time-input>\n\n <mantle-number-input *ngSwitchCase=\"'number'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-number-input *ngSwitchCase=\"'currency'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-number-input>\n\n <mantle-filepicker *ngSwitchCase=\"'file'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-filepicker>\n\n <mantle-imagepicker *ngSwitchCase=\"'image'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-imagepicker>\n\n <mantle-chip-input *ngSwitchCase=\"'chips'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-chip-input *ngSwitchCase=\"'chips-lg'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-chip-input>\n\n <mantle-password-input *ngSwitchCase=\"'password'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-password-input>\n\n <mantle-markdown-input *ngSwitchCase=\"'markdown'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-markdown-input>\n\n <mantle-rich-text-input *ngSwitchCase=\"'rich-text'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-rich-text-input>\n\n <mantle-autocomplete-input *ngSwitchCase=\"'autocomplete'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-autocomplete-input>\n\n <mantle-text-input *ngSwitchCase=\"'link'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-text-input>\n\n <mantle-colorpicker-input *ngSwitchCase=\"'color'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-colorpicker-input>\n\n <mantle-report-config-input *ngSwitchCase=\"'report-config'\"\n [id]=\"field.attr\"\n [formControlName]=\"field.attr\"\n [label]=\"field.label\"\n [tooltip]=\"field.tooltip\"\n [options]=\"field.options\"\n [required]=\"field.required\"\n [disable]=\"field.disabled\"\n [error]=\"error\">\n </mantle-report-config-input>\n </ng-container>\n</div>\n", styles: [":host,.dynamic-form-field-wrapper{display:block;width:100%;height:100%}\n"] }]
2807
3184
  }], propDecorators: { field: [{
2808
3185
  type: Input
2809
3186
  }], form: [{
@@ -2838,7 +3215,7 @@ class GridFormSectionComponent {
2838
3215
  return 1;
2839
3216
  else if (['text', 'markdown', 'rich-text'].includes(field.type))
2840
3217
  return this.numColumns;
2841
- else if (field.type.endsWith('-lg'))
3218
+ else if (['report-config'].includes(field.type) || field.type.endsWith('-lg'))
2842
3219
  return this.numColumns;
2843
3220
  else if (field.type.endsWith('-md'))
2844
3221
  return 2;
@@ -2848,10 +3225,10 @@ class GridFormSectionComponent {
2848
3225
  getRowSpanForField(field) {
2849
3226
  if (field.type == 'text')
2850
3227
  return 2;
2851
- else if (field.type == 'markdown')
2852
- return 4;
2853
- else if (field.type == 'rich-text')
3228
+ else if (['markdown', 'rich-text'].includes(field.type))
2854
3229
  return 4;
3230
+ else if (field.type == 'report-config')
3231
+ return 12;
2855
3232
  else
2856
3233
  return 1;
2857
3234
  }
@@ -3324,6 +3701,9 @@ class DynamicDetailsSectionComponent {
3324
3701
  asDynamicLayoutTableSection(section) {
3325
3702
  return section;
3326
3703
  }
3704
+ asDynamicLayoutReportSection(section) {
3705
+ return section;
3706
+ }
3327
3707
  asDynamicLayoutMarkdownSection(section) {
3328
3708
  return section;
3329
3709
  }
@@ -3337,11 +3717,11 @@ class DynamicDetailsSectionComponent {
3337
3717
  return detailPageService;
3338
3718
  }
3339
3719
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DynamicDetailsSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3340
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DynamicDetailsSectionComponent, isStandalone: false, selector: "mantle-dynamic-details-section", inputs: { detailPageService: "detailPageService", content: "content", section: "section" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-details-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [data]=\"content.data\">\n </mantle-grid-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-details-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [data]=\"content.data\"\n [detailPageService]=\"detailPageService\">\n </mantle-table-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dashboard'\">\n <mantle-dashboard-section\n [slug]=\"section.slug\"\n [section]=\"asDynamicLayoutDashboardSection(section)\"\n [data]=\"content.data\"\n [dashboardPageService]=\"asDashboardPageService(detailPageService)\">\n </mantle-dashboard-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'markdown'\">\n <mantle-markdown-details-section\n [section]=\"asDynamicLayoutMarkdownSection(section)\">\n </mantle-markdown-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'roster-shift-list'\">\n <mantle-roster-shift-list-details-section\n [section]=\"asDynamicLayoutRosterShiftListSection(section)\"\n [data]=\"content.data\">\n </mantle-roster-shift-list-details-section>\n </ng-container>\n\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: GridDetailsSectionComponent, selector: "mantle-grid-details-section", inputs: ["data", "section", "defaultRowHeight"] }, { kind: "component", type: TableDetailsSectionComponent, selector: "mantle-table-details-section", inputs: ["data", "section", "detailPageService"] }, { kind: "component", type: RosterShiftListDetailsSectionComponent, selector: "mantle-roster-shift-list-details-section", inputs: ["data", "section"] }, { kind: "component", type: DashboardSectionComponent, selector: "mantle-dashboard-section", inputs: ["dashboardPageService", "slug", "data", "section", "searchValues"] }, { kind: "component", type: MarkdownDetailsSectionComponent, selector: "mantle-markdown-details-section", inputs: ["section"] }] }); }
3720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: DynamicDetailsSectionComponent, isStandalone: false, selector: "mantle-dynamic-details-section", inputs: { detailPageService: "detailPageService", content: "content", section: "section" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-details-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [data]=\"content.data\">\n </mantle-grid-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-details-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [data]=\"content.data\"\n [detailPageService]=\"detailPageService\">\n </mantle-table-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dashboard'\">\n <mantle-dashboard-section\n [slug]=\"section.slug\"\n [section]=\"asDynamicLayoutDashboardSection(section)\"\n [data]=\"content.data\"\n [dashboardPageService]=\"asDashboardPageService(detailPageService)\">\n </mantle-dashboard-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'markdown'\">\n <mantle-markdown-details-section\n [section]=\"asDynamicLayoutMarkdownSection(section)\">\n </mantle-markdown-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'roster-shift-list'\">\n <mantle-roster-shift-list-details-section\n [section]=\"asDynamicLayoutRosterShiftListSection(section)\"\n [data]=\"content.data\">\n </mantle-roster-shift-list-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'report'\">\n <mantle-report-details-section\n [section]=\"asDynamicLayoutReportSection(section)\"\n [data]=\"content.data\">\n </mantle-report-details-section>\n </ng-container>\n\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: GridDetailsSectionComponent, selector: "mantle-grid-details-section", inputs: ["data", "section", "defaultRowHeight"] }, { kind: "component", type: TableDetailsSectionComponent, selector: "mantle-table-details-section", inputs: ["data", "section", "detailPageService"] }, { kind: "component", type: ReportDetailsSectionComponent, selector: "mantle-report-details-section", inputs: ["data", "section"] }, { kind: "component", type: RosterShiftListDetailsSectionComponent, selector: "mantle-roster-shift-list-details-section", inputs: ["data", "section"] }, { kind: "component", type: DashboardSectionComponent, selector: "mantle-dashboard-section", inputs: ["dashboardPageService", "slug", "data", "section", "searchValues"] }, { kind: "component", type: MarkdownDetailsSectionComponent, selector: "mantle-markdown-details-section", inputs: ["section"] }] }); }
3341
3721
  }
3342
3722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: DynamicDetailsSectionComponent, decorators: [{
3343
3723
  type: Component,
3344
- args: [{ selector: 'mantle-dynamic-details-section', standalone: false, template: "<ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-details-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [data]=\"content.data\">\n </mantle-grid-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-details-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [data]=\"content.data\"\n [detailPageService]=\"detailPageService\">\n </mantle-table-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dashboard'\">\n <mantle-dashboard-section\n [slug]=\"section.slug\"\n [section]=\"asDynamicLayoutDashboardSection(section)\"\n [data]=\"content.data\"\n [dashboardPageService]=\"asDashboardPageService(detailPageService)\">\n </mantle-dashboard-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'markdown'\">\n <mantle-markdown-details-section\n [section]=\"asDynamicLayoutMarkdownSection(section)\">\n </mantle-markdown-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'roster-shift-list'\">\n <mantle-roster-shift-list-details-section\n [section]=\"asDynamicLayoutRosterShiftListSection(section)\"\n [data]=\"content.data\">\n </mantle-roster-shift-list-details-section>\n </ng-container>\n\n</ng-container>\n" }]
3724
+ args: [{ selector: 'mantle-dynamic-details-section', standalone: false, template: "<ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-details-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [data]=\"content.data\">\n </mantle-grid-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-details-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [data]=\"content.data\"\n [detailPageService]=\"detailPageService\">\n </mantle-table-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dashboard'\">\n <mantle-dashboard-section\n [slug]=\"section.slug\"\n [section]=\"asDynamicLayoutDashboardSection(section)\"\n [data]=\"content.data\"\n [dashboardPageService]=\"asDashboardPageService(detailPageService)\">\n </mantle-dashboard-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'markdown'\">\n <mantle-markdown-details-section\n [section]=\"asDynamicLayoutMarkdownSection(section)\">\n </mantle-markdown-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'roster-shift-list'\">\n <mantle-roster-shift-list-details-section\n [section]=\"asDynamicLayoutRosterShiftListSection(section)\"\n [data]=\"content.data\">\n </mantle-roster-shift-list-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'report'\">\n <mantle-report-details-section\n [section]=\"asDynamicLayoutReportSection(section)\"\n [data]=\"content.data\">\n </mantle-report-details-section>\n </ng-container>\n\n</ng-container>\n" }]
3345
3725
  }], ctorParameters: () => [], propDecorators: { detailPageService: [{
3346
3726
  type: Input
3347
3727
  }], content: [{
@@ -5137,7 +5517,7 @@ class TabbedPageComponent {
5137
5517
  });
5138
5518
  }
5139
5519
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: TabbedPageComponent, deps: [{ token: i1$5.ActivatedRoute }, { token: i1$5.Router }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
5140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: TabbedPageComponent, isStandalone: false, selector: "mantle-tabbed-page", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"4px\" class=\"tabbed-page full-height-only\">\n\n <div fxFlex=\"0 0 auto\" class=\"tab-bar\">\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link *ngFor=\"let link of links\"\n (click)=\"activeLink = link.route\"\n [active]=\"activeLink == link.route\"\n [routerLink]=\"link.route\"> {{ link.label | translate }} </a>\n </nav>\n </div>\n\n <mat-tab-nav-panel #tabPanel fxFlex=\"1 0 1px\" class=\"tab-content vertically-scrollable\">\n <router-outlet></router-outlet>\n </mat-tab-nav-panel>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4$7.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i4$7.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i4$7.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
5520
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: TabbedPageComponent, isStandalone: false, selector: "mantle-tabbed-page", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"4px\" class=\"tabbed-page full-height-only\">\n\n <div fxFlex=\"0 0 auto\" class=\"tab-bar\">\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link *ngFor=\"let link of links\"\n (click)=\"activeLink = link.route\"\n [active]=\"activeLink == link.route\"\n [routerLink]=\"link.route\"> {{ link.label | translate }} </a>\n </nav>\n </div>\n\n <mat-tab-nav-panel #tabPanel fxFlex=\"1 0 1px\" class=\"tab-content vertically-scrollable\">\n <router-outlet></router-outlet>\n </mat-tab-nav-panel>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4$6.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i4$6.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i4$6.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
5141
5521
  }
5142
5522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: TabbedPageComponent, decorators: [{
5143
5523
  type: Component,
@@ -5390,7 +5770,7 @@ class NavTreeComponent {
5390
5770
  return node.children;
5391
5771
  }
5392
5772
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NavTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5393
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: NavTreeComponent, isStandalone: false, selector: "mantle-nav-tree", inputs: { notificationCount: "notificationCount", navTreeFeatures: "navTreeFeatures" }, usesOnChanges: true, ngImport: i0, template: "<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button mat-button [routerLink]=\"node.link\" routerLinkActive=\"active\" class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\"\n [matBadge]=\"(node.name == 'Notifications' && notificationCount > 0) ? notificationCount : undefined\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\">\n {{ node.icon }}\n </mat-icon>\n <div class=\"node-label\">{{ node.name | translate }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" fxLayout=\"row\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button fxFlex=\"1 0 1px\" mat-button matTreeNodeToggle class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\">{{ node.icon }}</mat-icon>\n <div class=\"node-label\">{{ node.name | translate }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n</mat-tree>\n", styles: [".mat-tree-node .tree-node-content{min-height:48px}.mat-tree-node .tree-node-content .tree-node-button{text-align:left;border-radius:0;width:239px;height:auto;padding:8px;margin:6px 0}.mat-tree-node .tree-node-content .tree-node-button .mat-icon{margin-right:8px}.mat-tree-node .tree-node-content .tree-node-button .node-label{display:inline-block;text-align:left;white-space:normal;line-height:1.25rem}.mat-tree-node.leaf-node .tree-node-indent{position:relative}.mat-tree-node.leaf-node .tree-node-indent .mat-divider{position:absolute;top:0;bottom:0;right:0;border-width:2px}.mat-tree-node.leaf-node .tree-node-button{width:191px!important;margin:4px 0 4px 16px!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4$8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i8$2.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8$2.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8$2.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8$2.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
5773
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: NavTreeComponent, isStandalone: false, selector: "mantle-nav-tree", inputs: { notificationCount: "notificationCount", navTreeFeatures: "navTreeFeatures" }, usesOnChanges: true, ngImport: i0, template: "<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button mat-button [routerLink]=\"node.link\" routerLinkActive=\"active\" class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\"\n [matBadge]=\"(node.name == 'Notifications' && notificationCount > 0) ? notificationCount : undefined\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\">\n {{ node.icon }}\n </mat-icon>\n <div class=\"node-label\">{{ node.name | translate }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" fxLayout=\"row\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button fxFlex=\"1 0 1px\" mat-button matTreeNodeToggle class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\">{{ node.icon }}</mat-icon>\n <div class=\"node-label\">{{ node.name | translate }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n</mat-tree>\n", styles: [".mat-tree-node .tree-node-content{min-height:48px}.mat-tree-node .tree-node-content .tree-node-button{text-align:left;border-radius:0;width:239px;height:auto;padding:8px;margin:6px 0}.mat-tree-node .tree-node-content .tree-node-button .mat-icon{margin-right:8px}.mat-tree-node .tree-node-content .tree-node-button .node-label{display:inline-block;text-align:left;white-space:normal;line-height:1.25rem}.mat-tree-node.leaf-node .tree-node-indent{position:relative}.mat-tree-node.leaf-node .tree-node-indent .mat-divider{position:absolute;top:0;bottom:0;right:0;border-width:2px}.mat-tree-node.leaf-node .tree-node-button{width:191px!important;margin:4px 0 4px 16px!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4$7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i8$2.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8$2.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8$2.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8$2.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
5394
5774
  }
5395
5775
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NavTreeComponent, decorators: [{
5396
5776
  type: Component,
@@ -5520,6 +5900,7 @@ class MantleModule {
5520
5900
  DynamicDetailsComponent,
5521
5901
  GridDetailsSectionComponent,
5522
5902
  TableDetailsSectionComponent,
5903
+ ReportDetailsSectionComponent,
5523
5904
  RosterShiftListDetailsSectionComponent,
5524
5905
  DynamicAttributeDisplayComponent,
5525
5906
  ActionsAttributeDisplayComponent,
@@ -5530,6 +5911,7 @@ class MantleModule {
5530
5911
  MarkdownAttributeDisplayComponent,
5531
5912
  MultiselectDisplayComponent,
5532
5913
  RichTextDisplayComponent,
5914
+ ReportViewerDisplayComponent,
5533
5915
  DialogFormComponent,
5534
5916
  DialogNestedFormComponent,
5535
5917
  DynamicFormComponent,
@@ -5553,6 +5935,7 @@ class MantleModule {
5553
5935
  MarkdownInputComponent,
5554
5936
  MultiselectInputComponent,
5555
5937
  RichTextInputComponent,
5938
+ ReportConfigInputComponent,
5556
5939
  AccordionLayoutEditorContainerComponent,
5557
5940
  DynamicLayoutEditorContainerComponent,
5558
5941
  PlainLayoutEditorContainerComponent,
@@ -5633,6 +6016,7 @@ class MantleModule {
5633
6016
  DynamicDetailsComponent,
5634
6017
  GridDetailsSectionComponent,
5635
6018
  TableDetailsSectionComponent,
6019
+ ReportDetailsSectionComponent,
5636
6020
  RosterShiftListDetailsSectionComponent,
5637
6021
  DynamicAttributeDisplayComponent,
5638
6022
  ActionsAttributeDisplayComponent,
@@ -5643,6 +6027,7 @@ class MantleModule {
5643
6027
  MarkdownAttributeDisplayComponent,
5644
6028
  MultiselectDisplayComponent,
5645
6029
  RichTextDisplayComponent,
6030
+ ReportViewerDisplayComponent,
5646
6031
  DialogFormComponent,
5647
6032
  DialogNestedFormComponent,
5648
6033
  DynamicFormComponent,
@@ -5666,6 +6051,7 @@ class MantleModule {
5666
6051
  MarkdownInputComponent,
5667
6052
  MultiselectInputComponent,
5668
6053
  RichTextInputComponent,
6054
+ ReportConfigInputComponent,
5669
6055
  AccordionLayoutEditorContainerComponent,
5670
6056
  DynamicLayoutEditorContainerComponent,
5671
6057
  PlainLayoutEditorContainerComponent,
@@ -5757,6 +6143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
5757
6143
  DynamicDetailsComponent,
5758
6144
  GridDetailsSectionComponent,
5759
6145
  TableDetailsSectionComponent,
6146
+ ReportDetailsSectionComponent,
5760
6147
  RosterShiftListDetailsSectionComponent,
5761
6148
  DynamicAttributeDisplayComponent,
5762
6149
  ActionsAttributeDisplayComponent,
@@ -5767,6 +6154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
5767
6154
  MarkdownAttributeDisplayComponent,
5768
6155
  MultiselectDisplayComponent,
5769
6156
  RichTextDisplayComponent,
6157
+ ReportViewerDisplayComponent,
5770
6158
  DialogFormComponent,
5771
6159
  DialogNestedFormComponent,
5772
6160
  DynamicFormComponent,
@@ -5790,6 +6178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
5790
6178
  MarkdownInputComponent,
5791
6179
  MultiselectInputComponent,
5792
6180
  RichTextInputComponent,
6181
+ ReportConfigInputComponent,
5793
6182
  AccordionLayoutEditorContainerComponent,
5794
6183
  DynamicLayoutEditorContainerComponent,
5795
6184
  PlainLayoutEditorContainerComponent,
@@ -5880,6 +6269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
5880
6269
  DynamicDetailsComponent,
5881
6270
  GridDetailsSectionComponent,
5882
6271
  TableDetailsSectionComponent,
6272
+ ReportDetailsSectionComponent,
5883
6273
  RosterShiftListDetailsSectionComponent,
5884
6274
  DynamicAttributeDisplayComponent,
5885
6275
  ActionsAttributeDisplayComponent,
@@ -5890,6 +6280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
5890
6280
  MarkdownAttributeDisplayComponent,
5891
6281
  MultiselectDisplayComponent,
5892
6282
  RichTextDisplayComponent,
6283
+ ReportViewerDisplayComponent,
5893
6284
  DialogFormComponent,
5894
6285
  DialogNestedFormComponent,
5895
6286
  DynamicFormComponent,
@@ -5913,6 +6304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
5913
6304
  MarkdownInputComponent,
5914
6305
  MultiselectInputComponent,
5915
6306
  RichTextInputComponent,
6307
+ ReportConfigInputComponent,
5916
6308
  AccordionLayoutEditorContainerComponent,
5917
6309
  DynamicLayoutEditorContainerComponent,
5918
6310
  PlainLayoutEditorContainerComponent,
@@ -6167,6 +6559,38 @@ const MANTLE_LANG_EN = {
6167
6559
  "original": "Original",
6168
6560
  "preview": "Preview"
6169
6561
  },
6562
+ "report_config": {
6563
+ "dataset": "Dataset",
6564
+ "use_aggregation": "Use Aggregation",
6565
+ "columns": "Columns",
6566
+ "select": "Select",
6567
+ "column": "Column",
6568
+ "group_by": "Group By",
6569
+ "count": "Count",
6570
+ "count_distinct": "Count Distinct",
6571
+ "average": "Average",
6572
+ "max": "Max",
6573
+ "min": "Min",
6574
+ "sum": "Sum",
6575
+ "filters": "Filters",
6576
+ "filter": "Filter",
6577
+ "operator": "Operator",
6578
+ "filter_value": "Filter Value",
6579
+ "operators": {
6580
+ "=": "=",
6581
+ "!=": "!=",
6582
+ ">": ">",
6583
+ "<": "<",
6584
+ ">=": ">=",
6585
+ "<=": "<=",
6586
+ "contains": "contains",
6587
+ "starts_with": "starts with",
6588
+ "ends_with": "ends with",
6589
+ "one_of": "one of",
6590
+ "not_one_of": "not one of"
6591
+ },
6592
+ "add_filter": "Add Filter"
6593
+ },
6170
6594
  "messages": {
6171
6595
  "are_you_sure": "Are you sure?",
6172
6596
  "confirm_deletion": "Do you want to delete this record?",
@@ -6230,6 +6654,38 @@ const MANTLE_LANG_MS = {
6230
6654
  "original": "Asal",
6231
6655
  "preview": "Pratonton"
6232
6656
  },
6657
+ "report_config": {
6658
+ "dataset": "Set Data",
6659
+ "use_aggregation": "Guna Agregasi",
6660
+ "columns": "Lajur",
6661
+ "select": "Pilih",
6662
+ "column": "Lajur",
6663
+ "group_by": "Kumpulkan Mengikut",
6664
+ "count": "Kira",
6665
+ "count_distinct": "Kira Berbeza",
6666
+ "average": "Purata",
6667
+ "max": "Maksimum",
6668
+ "min": "Minimum",
6669
+ "sum": "Jumlah",
6670
+ "filters": "Penapis",
6671
+ "filter": "Penapis",
6672
+ "operator": "Operator",
6673
+ "filter_value": "Nilai Penapis",
6674
+ "operators": {
6675
+ "=": "=",
6676
+ "!=": "!=",
6677
+ ">": ">",
6678
+ "<": "<",
6679
+ ">=": ">=",
6680
+ "<=": "<=",
6681
+ "contains": "mengandungi",
6682
+ "starts_with": "bermula dengan",
6683
+ "ends_with": "berakhir dengan",
6684
+ "one_of": "salah satu daripada",
6685
+ "not_one_of": "bukan salah satu daripada"
6686
+ },
6687
+ "add_filter": "Tambah Penapis"
6688
+ },
6233
6689
  "messages": {
6234
6690
  "are_you_sure": "Adakah anda pasti?",
6235
6691
  "confirm_deletion": "Adakah anda mahu memadamkan rekod ini?",
@@ -6919,5 +7375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
6919
7375
  * Generated bundle index. Do not edit.
6920
7376
  */
6921
7377
 
6922
- export { AccordionDetailsContainerComponent, AccordionFormContainerComponent, AccordionLayoutEditorContainerComponent, ActionsAttributeDisplayComponent, AnnouncementService, ArrayService, AutocompleteInputComponent, COLUMN_CHART, ChartService, ChipAttributeDisplayComponent, ChipInputComponent, ClickStopPropagationDirective, ColorPickerInputComponent, ConfirmationService, ContentTitleComponent, CurrentUserService, DashboardCardComponent, DashboardCardSearchMenuComponent, DashboardInfoCardComponent, DashboardLayoutEditorSectionComponent, DashboardPageComponent, DashboardSectionComponent, DashboardTableComponent, DashboardTableDataSource, DataBroadcastService, DatepickerComponent, DatetimepickerComponent, DeleteConfirmationDialogComponent, DetailPageComponent, DialogDetailsComponent, DialogFormComponent, DialogNestedDetailsComponent, DialogNestedFormComponent, DocumentsPageComponent, DraggableTableComponent, DraggableTableDataSource, DropdownComponent, DynamicAttributeDisplayComponent, DynamicChartComponent, DynamicDashboardComponent, DynamicDashboardContainerComponent, DynamicDetailsComponent, DynamicDetailsContainerComponent, DynamicDetailsSectionComponent, DynamicFormComponent, DynamicFormContainerComponent, DynamicFormField, DynamicFormFieldComponent, DynamicFormSectionComponent, DynamicFormService, DynamicLayoutEditorComponent, DynamicLayoutEditorContainerComponent, DynamicLayoutEditorElementComponent, DynamicLayoutEditorSectionComponent, DynamicPipe, DynamicTableComponent, DynamicTableDataSource, DynamicWidgetDisplayComponent, ENVIRONMENT, ExportPageComponent, FeatureConfigService, FeatureGuard, FileAttributeDisplayComponent, FileDropzoneDirective, FilePreviewDialogComponent, FilepickerComponent, FormPageComponent, GANTT_CHART, GridDetailsSectionComponent, GridFormSectionComponent, GridLayoutEditorSectionComponent, IconAttributeDisplayComponent, ImageAttributeDisplayComponent, ImageCropperComponent, ImagepickerComponent, LayoutEditorFieldElementComponent, LayoutEditorPageComponent, LayoutEditorTableColumnElementComponent, LayoutEditorWidgetElementComponent, LinkAttributeDisplayComponent, ListPageComponent, ListPageDataSource, LoaderComponent, LocaleService, MANTLE_LANG_EN, MANTLE_LANG_MS, MantleModule, MarkdownAttributeDisplayComponent, MarkdownDetailsSectionComponent, MarkdownInputComponent, MarkdownLayoutEditorSectionComponent, MaterialModule, MultiselectDisplayComponent, MultiselectInputComponent, NavTreeComponent, NumberInputComponent, ObjectService, PIE_CHART, PROGRESS_BAR_CHART, PageTitleComponent, PasswordCheckGuard, PasswordCheckService, PasswordInputComponent, PlainDashboardContainerComponent, PlainDetailsContainerComponent, PlainFormContainerComponent, PlainLayoutEditorContainerComponent, QrCodeDialogComponent, RerouteComponent, RichTextDisplayComponent, RichTextInputComponent, RosterPageComponent, RosterShiftListDetailsSectionComponent, RosterShiftListFormSectionComponent, SPLINE_CHART, SaveConfirmationDialogComponent, ScreenSizeMap, ScreenSizeService, SearchPanelComponent, SectionTitleComponent, SecureImagePipe, SessionGuard, SnackbarComponent, TabbedPageComponent, TableDetailsSectionComponent, TableFormSectionComponent, TableLayoutEditorSectionComponent, TextInputComponent, TextareaComponent, ThumbnailDisplayComponent, TimeInputComponent, TooltipComponent, WebApiListRequest, WebApiService, WebsocketService };
7378
+ export { AccordionDetailsContainerComponent, AccordionFormContainerComponent, AccordionLayoutEditorContainerComponent, ActionsAttributeDisplayComponent, AnnouncementService, ArrayService, AutocompleteInputComponent, COLUMN_CHART, ChartService, ChipAttributeDisplayComponent, ChipInputComponent, ClickStopPropagationDirective, ColorPickerInputComponent, ConfirmationService, ContentTitleComponent, CurrentUserService, DashboardCardComponent, DashboardCardSearchMenuComponent, DashboardInfoCardComponent, DashboardLayoutEditorSectionComponent, DashboardPageComponent, DashboardSectionComponent, DashboardTableComponent, DashboardTableDataSource, DataBroadcastService, DatepickerComponent, DatetimepickerComponent, DeleteConfirmationDialogComponent, DetailPageComponent, DialogDetailsComponent, DialogFormComponent, DialogNestedDetailsComponent, DialogNestedFormComponent, DocumentsPageComponent, DraggableTableComponent, DraggableTableDataSource, DropdownComponent, DynamicAttributeDisplayComponent, DynamicChartComponent, DynamicDashboardComponent, DynamicDashboardContainerComponent, DynamicDetailsComponent, DynamicDetailsContainerComponent, DynamicDetailsSectionComponent, DynamicFormComponent, DynamicFormContainerComponent, DynamicFormField, DynamicFormFieldComponent, DynamicFormSectionComponent, DynamicFormService, DynamicLayoutEditorComponent, DynamicLayoutEditorContainerComponent, DynamicLayoutEditorElementComponent, DynamicLayoutEditorSectionComponent, DynamicPipe, DynamicTableComponent, DynamicTableDataSource, DynamicWidgetDisplayComponent, ENVIRONMENT, ExportPageComponent, FeatureConfigService, FeatureGuard, FileAttributeDisplayComponent, FileDropzoneDirective, FilePreviewDialogComponent, FilepickerComponent, FormPageComponent, GANTT_CHART, GridDetailsSectionComponent, GridFormSectionComponent, GridLayoutEditorSectionComponent, IconAttributeDisplayComponent, ImageAttributeDisplayComponent, ImageCropperComponent, ImagepickerComponent, LayoutEditorFieldElementComponent, LayoutEditorPageComponent, LayoutEditorTableColumnElementComponent, LayoutEditorWidgetElementComponent, LinkAttributeDisplayComponent, ListPageComponent, ListPageDataSource, LoaderComponent, LocaleService, MANTLE_LANG_EN, MANTLE_LANG_MS, MantleModule, MarkdownAttributeDisplayComponent, MarkdownDetailsSectionComponent, MarkdownInputComponent, MarkdownLayoutEditorSectionComponent, MaterialModule, MultiselectDisplayComponent, MultiselectInputComponent, NavTreeComponent, NumberInputComponent, ObjectService, PIE_CHART, PROGRESS_BAR_CHART, PageTitleComponent, PasswordCheckGuard, PasswordCheckService, PasswordInputComponent, PlainDashboardContainerComponent, PlainDetailsContainerComponent, PlainFormContainerComponent, PlainLayoutEditorContainerComponent, QrCodeDialogComponent, ReportConfigInputComponent, ReportDetailsSectionComponent, ReportViewerDisplayComponent, RerouteComponent, RichTextDisplayComponent, RichTextInputComponent, RosterPageComponent, RosterShiftListDetailsSectionComponent, RosterShiftListFormSectionComponent, SPLINE_CHART, SaveConfirmationDialogComponent, ScreenSizeMap, ScreenSizeService, SearchPanelComponent, SectionTitleComponent, SecureImagePipe, SessionGuard, SnackbarComponent, TabbedPageComponent, TableDetailsSectionComponent, TableFormSectionComponent, TableLayoutEditorSectionComponent, TextInputComponent, TextareaComponent, ThumbnailDisplayComponent, TimeInputComponent, TooltipComponent, WebApiListRequest, WebApiService, WebsocketService };
6923
7379
  //# sourceMappingURL=codetectonics-mantle.mjs.map