@testgorilla/tgo-ui 1.1.1 → 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.
- package/components/alert-banner/alert-banner.component.d.ts +1 -1
- package/components/avatar/avatar.component.d.ts +1 -1
- package/components/banner-action/banner-action.component.d.ts +1 -1
- package/components/button/button.component.d.ts +1 -1
- package/components/card/card.component.d.ts +1 -1
- package/components/checkbox/checkbox.component.d.ts +1 -1
- package/components/create-account/create-account.component.d.ts +1 -1
- package/components/create-password/create-password.component.d.ts +1 -1
- package/components/datepicker/datepicker.component.d.ts +1 -1
- package/components/dialog/dialog.component.d.ts +1 -1
- package/components/dropdown/dropdown.component.d.ts +1 -1
- package/components/elevation-shadow/elevation-shadow.component.d.ts +1 -1
- package/components/field/field.component.d.ts +1 -1
- package/components/file-upload/file-upload.component.d.ts +1 -1
- package/components/forgot-password/forgot-password.component.d.ts +1 -1
- package/components/icon/icon.component.d.ts +1 -1
- package/components/icon-label/icon-label.component.d.ts +1 -1
- package/components/label/label.component.d.ts +1 -1
- package/components/login/login.component.d.ts +1 -1
- package/components/logo/logo.component.d.ts +1 -1
- package/components/navbar/navbar.component.d.ts +1 -1
- package/components/navigation/navigation.component.d.ts +1 -1
- package/components/paginator/paginator.component.d.ts +1 -1
- package/components/progress-bar/progress-bar.component.d.ts +1 -1
- package/components/radio-button/radio-button.component.d.ts +1 -1
- package/components/rating/rating.component.d.ts +1 -1
- package/components/snackbar/snackbar.component.d.ts +1 -1
- package/components/table/directives/dynamic-component.directive.d.ts +1 -1
- package/components/table/table.component.d.ts +1 -1
- package/components/tag/tag.component.d.ts +1 -1
- package/components/toggle/toggle.component.d.ts +1 -1
- package/components/tooltip/tooltip.component.d.ts +1 -1
- package/directives/digits-only.directive.d.ts +1 -1
- package/esm2022/components/alert-banner/alert-banner.component.mjs +98 -0
- package/{esm2020 → esm2022}/components/alert-banner/alert-banner.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/avatar/avatar.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/avatar/avatar.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/banner-action/banner-action.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/banner-action/banner-action.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/button/button.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/button/button.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/card/card.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/card/card.component.module.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.component.mjs +151 -0
- package/{esm2020 → esm2022}/components/checkbox/checkbox.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.component.module.mjs +8 -8
- package/{esm2020 → esm2022}/components/create-account/create-account.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/create-account/create-account.component.module.mjs +19 -19
- package/{esm2020 → esm2022}/components/create-password/create-password.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/create-password/create-password.component.module.mjs +17 -17
- package/esm2022/components/datepicker/datepicker.component.mjs +179 -0
- package/{esm2020 → esm2022}/components/datepicker/datepicker.component.module.mjs +19 -19
- package/{esm2020 → esm2022}/components/dialog/dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/dialog/dialog.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/dialog/dialog.service.mjs +4 -4
- package/esm2022/components/dropdown/dropdown.component.mjs +158 -0
- package/{esm2020 → esm2022}/components/dropdown/dropdown.component.module.mjs +19 -19
- package/{esm2020 → esm2022}/components/elevation-shadow/elevation-shadow.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/elevation-shadow/elevation-shadow.component.module.mjs +5 -5
- package/esm2022/components/field/field.component.mjs +212 -0
- package/{esm2020 → esm2022}/components/field/field.component.module.mjs +17 -17
- package/esm2022/components/file-upload/file-upload.component.mjs +191 -0
- package/{esm2020 → esm2022}/components/file-upload/file-upload.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/forgot-password/forgot-password.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/forgot-password/forgot-password.component.module.mjs +17 -17
- package/{esm2020 → esm2022}/components/icon/icon.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/icon/icon.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/icon-label/icon-label.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/icon-label/icon-label.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/label/label.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/label/label.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/login/login.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/login/login.component.module.mjs +17 -17
- package/{esm2020 → esm2022}/components/logo/logo.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/logo/logo.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/navbar/navbar.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/navbar/navbar.component.module.mjs +19 -19
- package/{esm2020 → esm2022}/components/navigation/navigation.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/navigation/navigation.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/paginator/paginator.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/paginator/paginator.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/progress-bar/progress-bar.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/progress-bar/progress-bar.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/radio-button/radio-button.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/radio-button/radio-button.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/rating/rating.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/rating/rating.component.module.mjs +5 -5
- package/esm2022/components/snackbar/snackbar.component.mjs +148 -0
- package/esm2022/components/snackbar/snackbar.component.module.mjs +44 -0
- package/{esm2020 → esm2022}/components/snackbar/snackbar.service.mjs +4 -4
- package/{esm2020 → esm2022}/components/spinner/spinner.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/spinner/spinner.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/table/directives/dynamic-component.directive.mjs +4 -4
- package/{esm2020 → esm2022}/components/table/pipes/data-property-getter.mjs +4 -4
- package/esm2022/components/table/table.component.mjs +158 -0
- package/{esm2020 → esm2022}/components/table/table.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/tag/tag.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/tag/tag.component.module.mjs +5 -5
- package/esm2022/components/toggle/toggle.component.mjs +78 -0
- package/{esm2020 → esm2022}/components/toggle/toggle.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/tooltip/tooltip.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/tooltip/tooltip.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/directives/digits-only.directive.mjs +4 -4
- package/{esm2020 → esm2022}/directives/drag-drop.directive.mjs +4 -4
- package/{esm2020 → esm2022}/pipes/name-initials.pipe.mjs +4 -4
- package/esm2022/utils/localization/language.service.mjs +78 -0
- package/{fesm2020 → fesm2022}/testgorilla-tgo-ui.mjs +459 -459
- package/{fesm2015 → fesm2022}/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +16 -22
- package/esm2020/components/alert-banner/alert-banner.component.mjs +0 -98
- package/esm2020/components/checkbox/checkbox.component.mjs +0 -151
- package/esm2020/components/datepicker/datepicker.component.mjs +0 -179
- package/esm2020/components/dropdown/dropdown.component.mjs +0 -158
- package/esm2020/components/field/field.component.mjs +0 -212
- package/esm2020/components/file-upload/file-upload.component.mjs +0 -191
- package/esm2020/components/snackbar/snackbar.component.mjs +0 -148
- package/esm2020/components/snackbar/snackbar.component.module.mjs +0 -44
- package/esm2020/components/table/table.component.mjs +0 -158
- package/esm2020/components/toggle/toggle.component.mjs +0 -78
- package/esm2020/utils/localization/language.service.mjs +0 -78
- package/fesm2015/testgorilla-tgo-ui.mjs +0 -4290
- package/fesm2020/testgorilla-tgo-ui.mjs.map +0 -1
- /package/{esm2020 → esm2022}/components/alert-banner/alert-banner.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/avatar/avatar.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/button/button.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/create-account/create-account.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/components/create-account/create-account.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/create-password/create-password.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/components/create-password/create-password.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/dropdown/dropdown.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/elevation-shadow/elevation-shadow.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/components/field/field.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/forgot-password/forgot-password.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/components/forgot-password/forgot-password.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/icon/icon.config.mjs +0 -0
- /package/{esm2020 → esm2022}/components/icon/icon.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/label/label.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/login/login.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/components/login/login.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/logo/logo.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/navbar/navbar.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/radio-button/radio-button.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/snackbar/snackbar.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/table/table.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/tag/tag.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/toggle/toggle.model.mjs +0 -0
- /package/{esm2020 → esm2022}/components/tooltip/tooltip.model.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testgorilla-tgo-ui.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/alert-bar.model.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/alert-bars.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/validators.utils.mjs +0 -0
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
-
import { MatSort } from '@angular/material/sort';
|
|
4
|
-
import { MatTableDataSource } from '@angular/material/table';
|
|
5
|
-
import { ColumnTypeEnum } from './table.model';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./pipes/data-property-getter";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
import * as i3 from "@angular/material/table";
|
|
10
|
-
import * as i4 from "@angular/material/sort";
|
|
11
|
-
import * as i5 from "@angular/material/icon";
|
|
12
|
-
import * as i6 from "@angular/material/tooltip";
|
|
13
|
-
import * as i7 from "./directives/dynamic-component.directive";
|
|
14
|
-
export class TableComponent {
|
|
15
|
-
/**
|
|
16
|
-
* @ignore
|
|
17
|
-
*/
|
|
18
|
-
set matSort(matSort) {
|
|
19
|
-
this.dataSource.sort = matSort;
|
|
20
|
-
this.dataSource.sortingDataAccessor = (item, property) => this.dataPropertyGetterPipe.transform(item, property);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Data to be rendered
|
|
24
|
-
*
|
|
25
|
-
* @ignore
|
|
26
|
-
* @type {IDataSource}
|
|
27
|
-
* @memberof TableComponent
|
|
28
|
-
*/
|
|
29
|
-
set tableData(data) {
|
|
30
|
-
if (data?.length) {
|
|
31
|
-
this.setTableDataSource(data);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
this.columnsToDisplay = this.tableColumns.map((tableColumn) => tableColumn.headerName);
|
|
36
|
-
if (this.tableDetailColumns) {
|
|
37
|
-
this.columnsDetailToDisplay = this.tableDetailColumns.columnDefs.map((tableColumn) => tableColumn.headerName);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
constructor(dataPropertyGetterPipe) {
|
|
41
|
-
this.dataPropertyGetterPipe = dataPropertyGetterPipe;
|
|
42
|
-
/**
|
|
43
|
-
* @ignore
|
|
44
|
-
*/
|
|
45
|
-
this.tableDetails = false;
|
|
46
|
-
/**
|
|
47
|
-
* Data structure to select which columns should be rendered and their capabilities
|
|
48
|
-
*
|
|
49
|
-
* @type {ITableColumn}
|
|
50
|
-
* @memberof TableComponent
|
|
51
|
-
*/
|
|
52
|
-
this.tableColumns = [];
|
|
53
|
-
/**
|
|
54
|
-
* @ignore
|
|
55
|
-
*/
|
|
56
|
-
this.onSortEvent = new EventEmitter();
|
|
57
|
-
/**
|
|
58
|
-
* @ignore
|
|
59
|
-
*/
|
|
60
|
-
this.onRowClickEvent = new EventEmitter();
|
|
61
|
-
/**
|
|
62
|
-
* @ignore
|
|
63
|
-
*/
|
|
64
|
-
this.onDetailRowClickEvent = new EventEmitter();
|
|
65
|
-
/**
|
|
66
|
-
* @ignore
|
|
67
|
-
*/
|
|
68
|
-
this.dataSource = new MatTableDataSource([]);
|
|
69
|
-
/**
|
|
70
|
-
* @ignore
|
|
71
|
-
*/
|
|
72
|
-
this.dataSourceDetail = new MatTableDataSource([]);
|
|
73
|
-
/**
|
|
74
|
-
* @ignore
|
|
75
|
-
*/
|
|
76
|
-
this.columnsToDisplay = [];
|
|
77
|
-
/**
|
|
78
|
-
* @ignore
|
|
79
|
-
*/
|
|
80
|
-
this.columnsDetailToDisplay = [];
|
|
81
|
-
/**
|
|
82
|
-
* @ignore
|
|
83
|
-
*/
|
|
84
|
-
this.DataType = ColumnTypeEnum;
|
|
85
|
-
}
|
|
86
|
-
onSort(sortParams) {
|
|
87
|
-
const columnSort = this.tableColumns.find((column) => column.headerName === sortParams.active);
|
|
88
|
-
if (columnSort?.field) {
|
|
89
|
-
sortParams.active = columnSort?.field;
|
|
90
|
-
}
|
|
91
|
-
this.onSortEvent.emit(sortParams);
|
|
92
|
-
}
|
|
93
|
-
onRowClick(rowParams) {
|
|
94
|
-
this.onRowClickEvent.emit(rowParams);
|
|
95
|
-
}
|
|
96
|
-
onDetailRowClick(rowParams) {
|
|
97
|
-
this.onDetailRowClickEvent.emit(rowParams);
|
|
98
|
-
}
|
|
99
|
-
toggleRow(element) {
|
|
100
|
-
this.elementDetail = this.elementDetail === element ? null : element;
|
|
101
|
-
if (this.elementDetail) {
|
|
102
|
-
this.tableDetailColumns.setDetailRowData({
|
|
103
|
-
data: element,
|
|
104
|
-
setDetailDataSource: this.setTableDetailDataSource.bind(this),
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* @ignore
|
|
110
|
-
*/
|
|
111
|
-
setTableDataSource(data) {
|
|
112
|
-
this.dataSource = new MatTableDataSource(data);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* @ignore
|
|
116
|
-
*/
|
|
117
|
-
setTableDetailDataSource(rowData) {
|
|
118
|
-
this.dataSourceDetail = new MatTableDataSource(rowData);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableComponent, deps: [{ token: i1.DataPropertyGetterPipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
122
|
-
TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableComponent, selector: "ui-table", inputs: { tableDetails: "tableDetails", tableData: "tableData", tableColumns: "tableColumns", tableDetailColumns: "tableDetailColumns" }, outputs: { onSortEvent: "onSortEvent", onRowClickEvent: "onRowClickEvent", onDetailRowClickEvent: "onDetailRowClickEvent" }, viewQueries: [{ propertyName: "matSort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<table *ngIf=\"!tableDetails\" mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSort($event)\">\n <ng-container *ngFor=\"let tableColumn of tableColumns; let i = index\" [matColumnDef]=\"tableColumn.headerName\">\n <ng-container *ngIf=\"tableColumn.sortable; else notSortable\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" [mat-sort-header]=\"tableColumn.field || ''\"\n arrowPosition=\"after\" [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-container>\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" (click)=\"onRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"[tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : '', onRowClickEvent.observed && i === tableColumns.length - 1 ? 'row-detail': '']\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n <mat-icon *ngIf=\"onRowClickEvent.observed && i === tableColumns.length - 1\" class=\"row-detail-icon\">navigate_next</mat-icon>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnsToDisplay;\" [ngClass]=\"{'row-clickable': onRowClickEvent.observed}\"></tr>\n</table>\n\n<table *ngIf=\"tableDetails\" mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSort($event)\"\n multiTemplateDataRows>\n <ng-container *ngFor=\"let tableColumn of tableColumns; let i = index\" [matColumnDef]=\"tableColumn.headerName\">\n <ng-container *ngIf=\"tableColumn.sortable; else notSortable\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" [mat-sort-header]=\"tableColumn.field || ''\"\n arrowPosition=\"after\" [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-container>\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" (click)=\"onRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"[tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : '', i === 0 ? 'row-expand' : '']\">\n <mat-icon *ngIf=\"i === 0\" class=\"row-expand-icon\">{{ element === elementDetail ? 'expand_less' : 'expand_more' }}</mat-icon>\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <!-- Expanded Content Column -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columnsToDisplay.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table mat-table [dataSource]=\"dataSourceDetail\">\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.headerName\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{tableColumn.headerName | uppercase}}\n </th>\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{padding: tableColumn.styles?.padding}\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let element; columns: columnsToDisplay;\" class=\"element-row\"\n [ngClass]=\"{'expanded-row': elementDetail === element, 'row-clickable': tableDetails}\"\n (click)=\"toggleRow(element)\">\n </tr>\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n</table>\n\n<ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{element | dataPropertyGetter: tableColumn.field}}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{tableColumn.function?.(element)}}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"tableColumn.renderer?.(element)\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{element | dataPropertyGetter: tableColumn.field}}\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #tableHeader let-tableColumn=\"tableColumn\">\n <div class=\"tooltip\" [ngStyle]=\"{'justify-content': tableColumn.styles?.alignment}\" [ngClass]=\"tableColumn.styles?.alignment\">\n <span>{{tableColumn.headerName | uppercase}}</span>\n <mat-icon *ngIf=\"tableColumn.headerTooltip\" [matTooltip]=\"tableColumn.headerTooltip\" class=\"tooltip-icon\" (click)=\"$event.stopPropagation()\">help</mat-icon>\n </div>\n</ng-template>\n", styles: ["table{cursor:initial;width:100%;overflow:hidden;border-radius:8px 8px 0 0;-webkit-user-select:none;user-select:none}table .mat-mdc-header-cell{font-weight:700;color:#000;padding:16px}table .mat-mdc-header-cell .tooltip{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center}table .mat-mdc-header-cell .tooltip mat-icon{color:#1f5260;font-size:18px;position:relative;top:3px;left:4px;cursor:pointer}table .mat-mdc-cell{padding:16px;text-align:justify}table td,table th,table .mat-mdc-row{border-width:.5px}table .mat-mdc-row:hover:not(.element-detail .mat-row).row-clickable{background-color:#ecf6f5;cursor:pointer}table ::ng-deep .mat-sort-header-arrow{color:#276678}table .label.active{background-color:#46a997;color:#fff}table .label{padding:0 8px;width:-moz-fit-content;width:fit-content;font-weight:600;font-size:10px;border-radius:4px;background-color:#e9f0f1;color:#000}table th.th-right{text-align:right}table th.th-right ::ng-deep .mat-sort-header-container{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .mat-sort-header-container{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .mat-sort-header-container{justify-content:center}table .row-detail{display:flex;justify-content:space-between}table .row-detail-icon{align-self:center;font-size:16px;height:16px;width:16px}table .row-expand{display:flex}table .row-expand-icon{align-self:center;font-size:14px;height:14px;width:14px;margin-right:8px}table .align-wrapper{display:flex}table td.td-right{text-align:right}table td.td-right .align-wrapper{justify-content:end}table td.td-left{text-align:left}table td.td-left .align-wrapper{justify-content:start}table td.td-center{text-align:center}table td.td-center .align-wrapper{justify-content:center}table tr.detail-row{height:0}table tr.element-row:not(.expanded-row):hover{background:whitesmoke}table tr.element-row:not(.expanded-row):active{background:#efefef}table .element-row td{border-bottom-width:0}table .mat-column-expandedDetail{padding:0}table .element-detail{overflow:hidden;display:flex}table .element-detail table{background-color:#f6f6f6}table .element-detail table .mat-mdc-header-row{visibility:collapse}table .element-detail table .mat-mdc-cell{border-width:0px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i7.DynamicComponentDirective, selector: "[dynamicComponent]", inputs: ["dynamicComponent"] }, { kind: "pipe", type: i2.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.DataPropertyGetterPipe, name: "dataPropertyGetter" }], animations: [
|
|
123
|
-
trigger('expandDetail', [
|
|
124
|
-
state('collapsed, void', style({ height: '0px' })),
|
|
125
|
-
state('expanded', style({ height: '*' })),
|
|
126
|
-
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
127
|
-
transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
128
|
-
]),
|
|
129
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableComponent, decorators: [{
|
|
131
|
-
type: Component,
|
|
132
|
-
args: [{ selector: 'ui-table', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
133
|
-
trigger('expandDetail', [
|
|
134
|
-
state('collapsed, void', style({ height: '0px' })),
|
|
135
|
-
state('expanded', style({ height: '*' })),
|
|
136
|
-
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
137
|
-
transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
138
|
-
]),
|
|
139
|
-
], template: "<table *ngIf=\"!tableDetails\" mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSort($event)\">\n <ng-container *ngFor=\"let tableColumn of tableColumns; let i = index\" [matColumnDef]=\"tableColumn.headerName\">\n <ng-container *ngIf=\"tableColumn.sortable; else notSortable\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" [mat-sort-header]=\"tableColumn.field || ''\"\n arrowPosition=\"after\" [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-container>\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" (click)=\"onRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"[tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : '', onRowClickEvent.observed && i === tableColumns.length - 1 ? 'row-detail': '']\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n <mat-icon *ngIf=\"onRowClickEvent.observed && i === tableColumns.length - 1\" class=\"row-detail-icon\">navigate_next</mat-icon>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnsToDisplay;\" [ngClass]=\"{'row-clickable': onRowClickEvent.observed}\"></tr>\n</table>\n\n<table *ngIf=\"tableDetails\" mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSort($event)\"\n multiTemplateDataRows>\n <ng-container *ngFor=\"let tableColumn of tableColumns; let i = index\" [matColumnDef]=\"tableColumn.headerName\">\n <ng-container *ngIf=\"tableColumn.sortable; else notSortable\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" [mat-sort-header]=\"tableColumn.field || ''\"\n arrowPosition=\"after\" [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-container>\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{width: tableColumn.styles?.width, minWidth: tableColumn.styles?.['min-width']}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n <ng-container *ngTemplateOutlet=\"tableHeader; context: {tableColumn}\"></ng-container>\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" (click)=\"onRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"[tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : '', i === 0 ? 'row-expand' : '']\">\n <mat-icon *ngIf=\"i === 0\" class=\"row-expand-icon\">{{ element === elementDetail ? 'expand_less' : 'expand_more' }}</mat-icon>\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <!-- Expanded Content Column -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columnsToDisplay.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table mat-table [dataSource]=\"dataSourceDetail\">\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.headerName\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{tableColumn.headerName | uppercase}}\n </th>\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{padding: tableColumn.styles?.padding}\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let element; columns: columnsToDisplay;\" class=\"element-row\"\n [ngClass]=\"{'expanded-row': elementDetail === element, 'row-clickable': tableDetails}\"\n (click)=\"toggleRow(element)\">\n </tr>\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n</table>\n\n<ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{element | dataPropertyGetter: tableColumn.field}}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{tableColumn.function?.(element)}}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"tableColumn.renderer?.(element)\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{element | dataPropertyGetter: tableColumn.field}}\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #tableHeader let-tableColumn=\"tableColumn\">\n <div class=\"tooltip\" [ngStyle]=\"{'justify-content': tableColumn.styles?.alignment}\" [ngClass]=\"tableColumn.styles?.alignment\">\n <span>{{tableColumn.headerName | uppercase}}</span>\n <mat-icon *ngIf=\"tableColumn.headerTooltip\" [matTooltip]=\"tableColumn.headerTooltip\" class=\"tooltip-icon\" (click)=\"$event.stopPropagation()\">help</mat-icon>\n </div>\n</ng-template>\n", styles: ["table{cursor:initial;width:100%;overflow:hidden;border-radius:8px 8px 0 0;-webkit-user-select:none;user-select:none}table .mat-mdc-header-cell{font-weight:700;color:#000;padding:16px}table .mat-mdc-header-cell .tooltip{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center}table .mat-mdc-header-cell .tooltip mat-icon{color:#1f5260;font-size:18px;position:relative;top:3px;left:4px;cursor:pointer}table .mat-mdc-cell{padding:16px;text-align:justify}table td,table th,table .mat-mdc-row{border-width:.5px}table .mat-mdc-row:hover:not(.element-detail .mat-row).row-clickable{background-color:#ecf6f5;cursor:pointer}table ::ng-deep .mat-sort-header-arrow{color:#276678}table .label.active{background-color:#46a997;color:#fff}table .label{padding:0 8px;width:-moz-fit-content;width:fit-content;font-weight:600;font-size:10px;border-radius:4px;background-color:#e9f0f1;color:#000}table th.th-right{text-align:right}table th.th-right ::ng-deep .mat-sort-header-container{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .mat-sort-header-container{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .mat-sort-header-container{justify-content:center}table .row-detail{display:flex;justify-content:space-between}table .row-detail-icon{align-self:center;font-size:16px;height:16px;width:16px}table .row-expand{display:flex}table .row-expand-icon{align-self:center;font-size:14px;height:14px;width:14px;margin-right:8px}table .align-wrapper{display:flex}table td.td-right{text-align:right}table td.td-right .align-wrapper{justify-content:end}table td.td-left{text-align:left}table td.td-left .align-wrapper{justify-content:start}table td.td-center{text-align:center}table td.td-center .align-wrapper{justify-content:center}table tr.detail-row{height:0}table tr.element-row:not(.expanded-row):hover{background:whitesmoke}table tr.element-row:not(.expanded-row):active{background:#efefef}table .element-row td{border-bottom-width:0}table .mat-column-expandedDetail{padding:0}table .element-detail{overflow:hidden;display:flex}table .element-detail table{background-color:#f6f6f6}table .element-detail table .mat-mdc-header-row{visibility:collapse}table .element-detail table .mat-mdc-cell{border-width:0px}\n"] }]
|
|
140
|
-
}], ctorParameters: function () { return [{ type: i1.DataPropertyGetterPipe }]; }, propDecorators: { matSort: [{
|
|
141
|
-
type: ViewChild,
|
|
142
|
-
args: [MatSort]
|
|
143
|
-
}], tableDetails: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], tableData: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], tableColumns: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], tableDetailColumns: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], onSortEvent: [{
|
|
152
|
-
type: Output
|
|
153
|
-
}], onRowClickEvent: [{
|
|
154
|
-
type: Output
|
|
155
|
-
}], onDetailRowClickEvent: [{
|
|
156
|
-
type: Output
|
|
157
|
-
}] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsT0FBTyxFQUFRLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGNBQWMsRUFBaUQsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQWdCOUYsTUFBTSxPQUFPLGNBQWM7SUFDekI7O09BRUc7SUFDSCxJQUF3QixPQUFPLENBQUMsT0FBZ0I7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBT0Q7Ozs7OztPQU1HO0lBQ0gsSUFBYSxTQUFTLENBQUMsSUFBZ0I7UUFDckMsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IERhdGFQcm9wZXJ0eUdldHRlclBpcGUgfSBmcm9tICcuL3BpcGVzL2RhdGEtcHJvcGVydHktZ2V0dGVyJztcbmltcG9ydCB7IENvbHVtblR5cGVFbnVtLCBJRGF0YVNvdXJjZSwgSVRhYmxlQ29sdW1uLCBJVGFibGVEZXRhaWxDb2x1bW4gfSBmcm9tICcuL3RhYmxlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2V4cGFuZERldGFpbCcsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQsIHZvaWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IHZvaWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBJRGF0YVNvdXJjZSwgVERldGFpbCBleHRlbmRzIElEYXRhU291cmNlPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNldCBtYXRTb3J0KG1hdFNvcnQ6IE1hdFNvcnQpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IG1hdFNvcnQ7XG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoaXRlbSwgcHJvcGVydHkpID0+IHRoaXMuZGF0YVByb3BlcnR5R2V0dGVyUGlwZS50cmFuc2Zvcm0oaXRlbSwgcHJvcGVydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlRGV0YWlscyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEYXRhIHRvIGJlIHJlbmRlcmVkXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICogQHR5cGUge0lEYXRhU291cmNlfVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB0YWJsZURhdGEoZGF0YTogVFtdIHwgbnVsbCkge1xuICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2V0VGFibGVEYXRhU291cmNlKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSB0byBzZWxlY3Qgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgcmVuZGVyZWQgYW5kIHRoZWlyIGNhcGFiaWxpdGllc1xuICAgKlxuICAgKiBAdHlwZSB7SVRhYmxlQ29sdW1ufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1uczogSVRhYmxlQ29sdW1uPFQ+W10gPSBbXTtcblxuICAvKipcbiAgICogRGF0YSBzdHJ1Y3R1cmUgdG8gc2VsZWN0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkIGFuZCB0aGVpciBjYXBhYmlsaXRpZXNcbiAgICpcbiAgICogQHR5cGUge0lUYWJsZUNvbHVtbn1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0YWJsZURldGFpbENvbHVtbnM6IElUYWJsZURldGFpbENvbHVtbjxULCBURGV0YWlsPjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIG9uU29ydEV2ZW50OiBFdmVudEVtaXR0ZXI8U29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBvbkRldGFpbFJvd0NsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oW10pO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkYXRhU291cmNlRGV0YWlsID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KFtdKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZWxlbWVudERldGFpbDogYW55O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb2x1bW5zVG9EaXNwbGF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBEYXRhVHlwZSA9IENvbHVtblR5cGVFbnVtO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uc1RvRGlzcGxheSA9IHRoaXMudGFibGVDb2x1bW5zLm1hcCgodGFibGVDb2x1bW46IElUYWJsZUNvbHVtbjxUPikgPT4gdGFibGVDb2x1bW4uaGVhZGVyTmFtZSk7XG4gICAgaWYgKHRoaXMudGFibGVEZXRhaWxDb2x1bW5zKSB7XG4gICAgICB0aGlzLmNvbHVtbnNEZXRhaWxUb0Rpc3BsYXkgPSB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5jb2x1bW5EZWZzLm1hcChcbiAgICAgICAgKHRhYmxlQ29sdW1uOiBJVGFibGVDb2x1bW48VERldGFpbD4pID0+IHRhYmxlQ29sdW1uLmhlYWRlck5hbWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhUHJvcGVydHlHZXR0ZXJQaXBlOiBEYXRhUHJvcGVydHlHZXR0ZXJQaXBlKSB7fVxuXG4gIG9uU29ydChzb3J0UGFyYW1zOiBTb3J0KSB7XG4gICAgY29uc3QgY29sdW1uU29ydCA9IHRoaXMudGFibGVDb2x1bW5zLmZpbmQoKGNvbHVtbjogSVRhYmxlQ29sdW1uPFQ+KSA9PiBjb2x1bW4uaGVhZGVyTmFtZSA9PT0gc29ydFBhcmFtcy5hY3RpdmUpO1xuICAgIGlmIChjb2x1bW5Tb3J0Py5maWVsZCkge1xuICAgICAgc29ydFBhcmFtcy5hY3RpdmUgPSBjb2x1bW5Tb3J0Py5maWVsZDtcbiAgICB9XG4gICAgdGhpcy5vblNvcnRFdmVudC5lbWl0KHNvcnRQYXJhbXMpO1xuICB9XG5cbiAgb25Sb3dDbGljayhyb3dQYXJhbXM6IGFueSkge1xuICAgIHRoaXMub25Sb3dDbGlja0V2ZW50LmVtaXQocm93UGFyYW1zKTtcbiAgfVxuXG4gIG9uRGV0YWlsUm93Q2xpY2socm93UGFyYW1zOiBhbnkpIHtcbiAgICB0aGlzLm9uRGV0YWlsUm93Q2xpY2tFdmVudC5lbWl0KHJvd1BhcmFtcyk7XG4gIH1cblxuICB0b2dnbGVSb3coZWxlbWVudDogVCkge1xuICAgIHRoaXMuZWxlbWVudERldGFpbCA9IHRoaXMuZWxlbWVudERldGFpbCA9PT0gZWxlbWVudCA/IG51bGwgOiBlbGVtZW50O1xuICAgIGlmICh0aGlzLmVsZW1lbnREZXRhaWwpIHtcbiAgICAgIHRoaXMudGFibGVEZXRhaWxDb2x1bW5zLnNldERldGFpbFJvd0RhdGEoe1xuICAgICAgICBkYXRhOiBlbGVtZW50LFxuICAgICAgICBzZXREZXRhaWxEYXRhU291cmNlOiB0aGlzLnNldFRhYmxlRGV0YWlsRGF0YVNvdXJjZS5iaW5kKHRoaXMpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgc2V0VGFibGVEYXRhU291cmNlKGRhdGE6IFRbXSkge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNldFRhYmxlRGV0YWlsRGF0YVNvdXJjZShyb3dEYXRhOiBURGV0YWlsW10pIHtcbiAgICB0aGlzLmRhdGFTb3VyY2VEZXRhaWwgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4ocm93RGF0YSk7XG4gIH1cbn1cbiIsIjx0YWJsZSAqbmdJZj1cIiF0YWJsZURldGFpbHNcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0KCRldmVudClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFibGVDb2x1bW4gb2YgdGFibGVDb2x1bW5zOyBsZXQgaSA9IGluZGV4XCIgW21hdENvbHVtbkRlZl09XCJ0YWJsZUNvbHVtbi5oZWFkZXJOYW1lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29sdW1uLnNvcnRhYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbbWF0LXNvcnQtaGVhZGVyXT1cInRhYmxlQ29sdW1uLmZpZWxkIHx8ICcnXCJcbiAgICAgICAgYXJyb3dQb3NpdGlvbj1cImFmdGVyXCIgW25nU3R5bGVdPVwie3dpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUhlYWRlcjsgY29udGV4dDoge3RhYmxlQ29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC90aD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgW25nQ2xhc3NdPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUhlYWRlcjsgY29udGV4dDoge3RhYmxlQ29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC90aD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudClcIlxuICAgICAgW2FsaWduXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcbiAgICAgIFtuZ0NsYXNzXT1cIlt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJycsIG9uUm93Q2xpY2tFdmVudC5vYnNlcnZlZCAmJiBpID09PSB0YWJsZUNvbHVtbnMubGVuZ3RoIC0gMSA/ICdyb3ctZGV0YWlsJzogJyddXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJvblJvd0NsaWNrRXZlbnQub2JzZXJ2ZWQgJiYgaSA9PT0gdGFibGVDb2x1bW5zLmxlbmd0aCAtIDFcIiBjbGFzcz1cInJvdy1kZXRhaWwtaWNvblwiPm5hdmlnYXRlX25leHQ8L21hdC1pY29uPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNUb0Rpc3BsYXlcIj48L3RyPlxuICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uc1RvRGlzcGxheTtcIiBbbmdDbGFzc109XCJ7J3Jvdy1jbGlja2FibGUnOiBvblJvd0NsaWNrRXZlbnQub2JzZXJ2ZWR9XCI+PC90cj5cbjwvdGFibGU+XG5cbjx0YWJsZSAqbmdJZj1cInRhYmxlRGV0YWlsc1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgbWF0U29ydCAobWF0U29ydENoYW5nZSk9XCJvblNvcnQoJGV2ZW50KVwiXG4gIG11bHRpVGVtcGxhdGVEYXRhUm93cz5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFibGVDb2x1bW4gb2YgdGFibGVDb2x1bW5zOyBsZXQgaSA9IGluZGV4XCIgW21hdENvbHVtbkRlZl09XCJ0YWJsZUNvbHVtbi5oZWFkZXJOYW1lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29sdW1uLnNvcnRhYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbbWF0LXNvcnQtaGVhZGVyXT1cInRhYmxlQ29sdW1uLmZpZWxkIHx8ICcnXCJcbiAgICAgICAgYXJyb3dQb3NpdGlvbj1cImFmdGVyXCIgW25nU3R5bGVdPVwie3dpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVIZWFkZXI7IGNvbnRleHQ6IHt0YWJsZUNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW25nU3R5bGVdPVwie3dpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVIZWFkZXI7IGNvbnRleHQ6IHt0YWJsZUNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIChjbGljayk9XCJvblJvd0NsaWNrKGVsZW1lbnQpXCJcbiAgICAgIFthbGlnbl09XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXG4gICAgICBbbmdDbGFzc109XCJbdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnLCBpID09PSAwID8gJ3Jvdy1leHBhbmQnIDogJyddXCI+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJpID09PSAwXCIgY2xhc3M9XCJyb3ctZXhwYW5kLWljb25cIj57eyBlbGVtZW50ID09PSBlbGVtZW50RGV0YWlsID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX08L21hdC1pY29uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc1RvRGlzcGxheS5sZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50LWRldGFpbFwiICpuZ0lmPVwiZGF0YVNvdXJjZURldGFpbC5kYXRhLmxlbmd0aFwiXG4gICAgICAgIFtAZXhwYW5kRGV0YWlsXT1cImVsZW1lbnQgPT09IGVsZW1lbnREZXRhaWwgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlRGV0YWlsXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFibGVDb2x1bW4gb2YgdGFibGVEZXRhaWxDb2x1bW5zLmNvbHVtbkRlZnNcIlxuICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJ0YWJsZUNvbHVtbi5oZWFkZXJOYW1lXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBhcnJvd1Bvc2l0aW9uPVwiYWZ0ZXJcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGh9XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCI+XG4gICAgICAgICAgICAgIHt7dGFibGVDb2x1bW4uaGVhZGVyTmFtZSB8IHVwcGVyY2FzZX19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiAoY2xpY2spPVwib25EZXRhaWxSb3dDbGljayhlbGVtZW50KVwiXG4gICAgICAgICAgICAgIFthbGlnbl09XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntwYWRkaW5nOiB0YWJsZUNvbHVtbi5zdHlsZXM/LnBhZGRpbmd9XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNEZXRhaWxUb0Rpc3BsYXlcIj48L3RyPlxuICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93RGV0YWlsOyBjb2x1bW5zOiBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5O1wiPjwvdHI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNUb0Rpc3BsYXlcIj48L3RyPlxuICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGVsZW1lbnQ7IGNvbHVtbnM6IGNvbHVtbnNUb0Rpc3BsYXk7XCIgY2xhc3M9XCJlbGVtZW50LXJvd1wiXG4gICAgW25nQ2xhc3NdPVwieydleHBhbmRlZC1yb3cnOiBlbGVtZW50RGV0YWlsID09PSBlbGVtZW50LCAncm93LWNsaWNrYWJsZSc6IHRhYmxlRGV0YWlsc31cIlxuICAgIChjbGljayk9XCJ0b2dnbGVSb3coZWxlbWVudClcIj5cbiAgPC90cj5cbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiIGNsYXNzPVwiZGV0YWlsLXJvd1wiPjwvdHI+XG48L3RhYmxlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlRGF0YVRwbCBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtdGFibGVDb2x1bW49XCJ0YWJsZUNvbHVtblwiPlxuICA8ZGl2IGNsYXNzPVwiYWxpZ24td3JhcHBlclwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRhYmxlQ29sdW1uLnR5cGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLkZJRUxEXCI+XG4gICAgICAgIHt7ZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4uZmllbGR9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZS5GVU5DVElPTlwiPlxuICAgICAgICB7e3RhYmxlQ29sdW1uLmZ1bmN0aW9uPy4oZWxlbWVudCl9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZS5SRU5ERVJFUlwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbZHluYW1pY0NvbXBvbmVudF09XCJ0YWJsZUNvbHVtbi5yZW5kZXJlcj8uKGVsZW1lbnQpXCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAge3tlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiB0YWJsZUNvbHVtbi5maWVsZH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlSGVhZGVyIGxldC10YWJsZUNvbHVtbj1cInRhYmxlQ29sdW1uXCI+XG4gIDxkaXYgY2xhc3M9XCJ0b29sdGlwXCIgW25nU3R5bGVdPVwieydqdXN0aWZ5LWNvbnRlbnQnOiB0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudH1cIiBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiPlxuICAgIDxzcGFuPnt7dGFibGVDb2x1bW4uaGVhZGVyTmFtZSB8IHVwcGVyY2FzZX19PC9zcGFuPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInRhYmxlQ29sdW1uLmhlYWRlclRvb2x0aXBcIiBbbWF0VG9vbHRpcF09XCJ0YWJsZUNvbHVtbi5oZWFkZXJUb29sdGlwXCIgY2xhc3M9XCJ0b29sdGlwLWljb25cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+aGVscDwvbWF0LWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class ToggleComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
/**
|
|
8
|
-
* The `selected` property determines the current state of the toggle switch.
|
|
9
|
-
*
|
|
10
|
-
* @type {boolean}
|
|
11
|
-
* @default false
|
|
12
|
-
* @memberof ToggleComponent
|
|
13
|
-
*/
|
|
14
|
-
this.selected = false;
|
|
15
|
-
/**
|
|
16
|
-
* The `disabled` property determines whether the toggle switch is disabled.
|
|
17
|
-
*
|
|
18
|
-
* @type {boolean}
|
|
19
|
-
* @default false
|
|
20
|
-
* @memberof ToggleComponent
|
|
21
|
-
*/
|
|
22
|
-
this.disabled = false;
|
|
23
|
-
/**
|
|
24
|
-
* The `toggle` event is triggered when the state of the toggle switch changes. It returns the new state.
|
|
25
|
-
*
|
|
26
|
-
* @type {event}
|
|
27
|
-
* @memberof ToggleComponent
|
|
28
|
-
*/
|
|
29
|
-
this.toggle = new EventEmitter();
|
|
30
|
-
this.onChange = () => { };
|
|
31
|
-
this.onTouched = () => { };
|
|
32
|
-
}
|
|
33
|
-
onToggle() {
|
|
34
|
-
if (!this.disabled) {
|
|
35
|
-
this.selected = !this.selected;
|
|
36
|
-
this.toggle.emit(this.selected);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
writeValue(state) {
|
|
40
|
-
if (state) {
|
|
41
|
-
this.selected = state;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
registerOnChange(fn) {
|
|
45
|
-
this.onChange = fn;
|
|
46
|
-
}
|
|
47
|
-
registerOnTouched(fn) {
|
|
48
|
-
this.onTouched = fn;
|
|
49
|
-
}
|
|
50
|
-
setDisabledState(isDisabled) {
|
|
51
|
-
this.disabled = isDisabled;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
ToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
-
ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ToggleComponent, selector: "ui-toggle", inputs: { selected: "selected", disabled: "disabled" }, outputs: { toggle: "toggle" }, providers: [
|
|
56
|
-
{
|
|
57
|
-
provide: NG_VALUE_ACCESSOR,
|
|
58
|
-
useExisting: forwardRef(() => ToggleComponent),
|
|
59
|
-
multi: true,
|
|
60
|
-
},
|
|
61
|
-
], ngImport: i0, template: "<div\n [tabIndex]=\"0\"\n class=\"toggle-container\"\n [ngClass]=\"{ 'active': selected, 'disabled': disabled }\"\n (click)=\"onToggle()\"\n>\n <div class=\"knob\"></div>\n</div>\n", styles: [":host .toggle-container{width:32px;height:16px;border-radius:16px;background:#888888;display:flex;align-items:center;padding:0 2px;cursor:pointer}:host .toggle-container:focus{outline:1px dashed #888888;outline-offset:4px}:host .toggle-container .knob{height:12px;width:12px;border-radius:16px;background:#F6F6F6;transition:transform .3s}:host .toggle-container.disabled{background:#E0E0E0;pointer-events:none}:host .toggle-container.disabled:focus{outline:none}:host .toggle-container.active{background:#46A997}:host .toggle-container.active.disabled{opacity:.5}:host .toggle-container.active .knob{transform:translate(16px)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
63
|
-
type: Component,
|
|
64
|
-
args: [{ selector: 'ui-toggle', providers: [
|
|
65
|
-
{
|
|
66
|
-
provide: NG_VALUE_ACCESSOR,
|
|
67
|
-
useExisting: forwardRef(() => ToggleComponent),
|
|
68
|
-
multi: true,
|
|
69
|
-
},
|
|
70
|
-
], template: "<div\n [tabIndex]=\"0\"\n class=\"toggle-container\"\n [ngClass]=\"{ 'active': selected, 'disabled': disabled }\"\n (click)=\"onToggle()\"\n>\n <div class=\"knob\"></div>\n</div>\n", styles: [":host .toggle-container{width:32px;height:16px;border-radius:16px;background:#888888;display:flex;align-items:center;padding:0 2px;cursor:pointer}:host .toggle-container:focus{outline:1px dashed #888888;outline-offset:4px}:host .toggle-container .knob{height:12px;width:12px;border-radius:16px;background:#F6F6F6;transition:transform .3s}:host .toggle-container.disabled{background:#E0E0E0;pointer-events:none}:host .toggle-container.disabled:focus{outline:none}:host .toggle-container.active{background:#46A997}:host .toggle-container.active.disabled{opacity:.5}:host .toggle-container.active .knob{transform:translate(16px)}\n"] }]
|
|
71
|
-
}], propDecorators: { selected: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], disabled: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], toggle: [{
|
|
76
|
-
type: Output
|
|
77
|
-
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdG9nZ2xlL3RvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWV6RSxNQUFNLE9BQU8sZUFBZTtJQVo1QjtRQWFFOzs7Ozs7V0FNRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7Ozs7OztXQU1HO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7Ozs7V0FLRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBMkJ2QyxhQUFRLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7S0FDMUM7SUEzQkMsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7OzRHQWxEVSxlQUFlO2dHQUFmLGVBQWUsMkhBUmY7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLDBCQ2RILDJMQVFBOzJGRFFhLGVBQWU7a0JBWjNCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFVUSxRQUFRO3NCQUFoQixLQUFLO2dCQVNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlZ2lzdGVyRm4gfSBmcm9tICcuL3RvZ2dsZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXRvZ2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb2dnbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogVGhlIGBzZWxlY3RlZGAgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgdG9nZ2xlIHN3aXRjaC5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJvZiBUb2dnbGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBgZGlzYWJsZWRgIHByb3BlcnR5IGRldGVybWluZXMgd2hldGhlciB0aGUgdG9nZ2xlIHN3aXRjaCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJvZiBUb2dnbGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBgdG9nZ2xlYCBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIHRvZ2dsZSBzd2l0Y2ggY2hhbmdlcy4gSXQgcmV0dXJucyB0aGUgbmV3IHN0YXRlLlxuICAgKlxuICAgKiBAdHlwZSB7ZXZlbnR9XG4gICAqIEBtZW1iZXJvZiBUb2dnbGVDb21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKSB0b2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgb25Ub2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XG4gICAgICB0aGlzLnRvZ2dsZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzdGF0ZTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBSZWdpc3RlckZuKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IFJlZ2lzdGVyRm4pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlOiBSZWdpc3RlckZuID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiBSZWdpc3RlckZuID0gKCkgPT4ge307XG59XG4iLCI8ZGl2XG4gIFt0YWJJbmRleF09XCIwXCJcbiAgY2xhc3M9XCJ0b2dnbGUtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ZWQsICdkaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICAoY2xpY2spPVwib25Ub2dnbGUoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJrbm9iXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { UntilDestroy } from '@ngneat/until-destroy';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ngneat/transloco";
|
|
6
|
-
//Languages available in the app as enum
|
|
7
|
-
export var Language;
|
|
8
|
-
(function (Language) {
|
|
9
|
-
Language["en"] = "en";
|
|
10
|
-
Language["es"] = "es";
|
|
11
|
-
Language["nl"] = "nl";
|
|
12
|
-
Language["fr"] = "fr";
|
|
13
|
-
Language["de"] = "de";
|
|
14
|
-
Language["it-it"] = "it-it";
|
|
15
|
-
Language["ja-jp"] = "ja-jp";
|
|
16
|
-
Language["pt-br"] = "pt-br";
|
|
17
|
-
Language["da-dk"] = "da-dk";
|
|
18
|
-
Language["nb-no"] = "nb-no";
|
|
19
|
-
Language["pl-pl"] = "pl-pl";
|
|
20
|
-
Language["sv-se"] = "sv-se";
|
|
21
|
-
})(Language || (Language = {}));
|
|
22
|
-
//This function retrieves all languages from the enum. It is used to initialize transloco
|
|
23
|
-
export const getAvailableLangs = () => Object.values(Language);
|
|
24
|
-
let LanguageService = class LanguageService {
|
|
25
|
-
constructor(translocoService) {
|
|
26
|
-
this.translocoService = translocoService;
|
|
27
|
-
this.defaultLanguageList = [
|
|
28
|
-
{ code: Language.en, label: 'English' },
|
|
29
|
-
{ code: Language.es, label: 'Spanish' },
|
|
30
|
-
{ code: Language.de, label: 'German' },
|
|
31
|
-
{ code: Language.fr, label: 'French' },
|
|
32
|
-
{ code: Language.nl, label: 'Dutch' },
|
|
33
|
-
{ code: Language['it-it'], label: 'Italian' },
|
|
34
|
-
{ code: Language['ja-jp'], label: 'Japanese' },
|
|
35
|
-
{ code: Language['pt-br'], label: 'Portuguese' },
|
|
36
|
-
{ code: Language['da-dk'], label: 'Danish' },
|
|
37
|
-
{ code: Language['nb-no'], label: 'Norwegian' },
|
|
38
|
-
{ code: Language['pl-pl'], label: 'Polish' },
|
|
39
|
-
{ code: Language['sv-se'], label: 'Swedish' },
|
|
40
|
-
];
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
44
|
-
* @description Initialize Language Service.
|
|
45
|
-
* @memberof LanguageService
|
|
46
|
-
*/
|
|
47
|
-
init(language) {
|
|
48
|
-
// Set active language according to user settings. TODO: Replace with user value.
|
|
49
|
-
this.setActiveLanguage(language);
|
|
50
|
-
// React to language changes and load the language selected.
|
|
51
|
-
this.languageChangeSubscription = this.translocoService.langChanges$.subscribe(lang => {
|
|
52
|
-
this.translocoService.load(lang).subscribe();
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* @description Set a langauge as active language.
|
|
58
|
-
* @param {string} languageCode Language value code.
|
|
59
|
-
* @memberof LanguageService
|
|
60
|
-
*/
|
|
61
|
-
setActiveLanguage(languageCode) {
|
|
62
|
-
this.translocoService.setActiveLang(languageCode);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
LanguageService.defaultLanguage = Language.en;
|
|
66
|
-
LanguageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LanguageService, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
-
LanguageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LanguageService, providedIn: 'root' });
|
|
68
|
-
LanguageService = __decorate([
|
|
69
|
-
UntilDestroy({ checkProperties: true })
|
|
70
|
-
], LanguageService);
|
|
71
|
-
export { LanguageService };
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LanguageService, decorators: [{
|
|
73
|
-
type: Injectable,
|
|
74
|
-
args: [{
|
|
75
|
-
providedIn: 'root',
|
|
76
|
-
}]
|
|
77
|
-
}], ctorParameters: function () { return [{ type: i1.TranslocoService }]; } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91dGlscy9sb2NhbGl6YXRpb24vbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUdyRCx3Q0FBd0M7QUFDeEMsTUFBTSxDQUFOLElBQVksUUFhWDtBQWJELFdBQVksUUFBUTtJQUNsQixxQkFBUyxDQUFBO0lBQ1QscUJBQVMsQ0FBQTtJQUNULHFCQUFTLENBQUE7SUFDVCxxQkFBUyxDQUFBO0lBQ1QscUJBQVMsQ0FBQTtJQUNULDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFiVyxRQUFRLEtBQVIsUUFBUSxRQWFuQjtBQUtELHlGQUF5RjtBQUN6RixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBU3hELElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFvQjFCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBakI3Qyx3QkFBbUIsR0FBaUI7WUFDM0MsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3ZDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN2QyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDdEMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQ3RDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNyQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUM3QyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUM5QyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUNoRCxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUM1QyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUMvQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUM1QyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtTQUM5QyxDQUFDO0lBSXVELENBQUM7SUFFMUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxRQUFnQjtRQUNuQixpRkFBaUY7UUFDakYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpDLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLFlBQW9CO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUE1Q2UsK0JBQWUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDOzRHQURuQyxlQUFlO2dIQUFmLGVBQWUsY0FIZCxNQUFNO0FBR1AsZUFBZTtJQUQzQixZQUFZLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7R0FDM0IsZUFBZSxDQThDM0I7U0E5Q1ksZUFBZTsyRkFBZixlQUFlO2tCQUozQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3kgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbi8vTGFuZ3VhZ2VzIGF2YWlsYWJsZSBpbiB0aGUgYXBwIGFzIGVudW1cbmV4cG9ydCBlbnVtIExhbmd1YWdlIHtcbiAgZW4gPSAnZW4nLFxuICBlcyA9ICdlcycsXG4gIG5sID0gJ25sJyxcbiAgZnIgPSAnZnInLFxuICBkZSA9ICdkZScsXG4gICdpdC1pdCcgPSAnaXQtaXQnLFxuICAnamEtanAnID0gJ2phLWpwJyxcbiAgJ3B0LWJyJyA9ICdwdC1icicsXG4gICdkYS1kaycgPSAnZGEtZGsnLFxuICAnbmItbm8nID0gJ25iLW5vJyxcbiAgJ3BsLXBsJyA9ICdwbC1wbCcsXG4gICdzdi1zZScgPSAnc3Ytc2UnLFxufVxuXG4vL1RoaXMgdHlwZSBlbmZvcmNlcyBhbGwgdHJhbnNsYXRpb25zIGFyZSBwcmVzZW50IHdoZW4gc29tZSB0cmFuc2xhdGlvbiBuZWVkcyB0byBsaXZlIGluIHRoZSBmcm9udGVuZFxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25NYXAgPSB7IFtrZXkgaW4gTGFuZ3VhZ2VdOiBzdHJpbmcgfTtcblxuLy9UaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyBhbGwgbGFuZ3VhZ2VzIGZyb20gdGhlIGVudW0uIEl0IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xvY29cbmV4cG9ydCBjb25zdCBnZXRBdmFpbGFibGVMYW5ncyA9ICgpID0+IE9iamVjdC52YWx1ZXMoTGFuZ3VhZ2UpO1xuXG4vL1RoaXMgdHlwZSBpcyBpbnRlbmRlZCBmb3IgVUkgdXNlcyBvbmx5XG5leHBvcnQgdHlwZSBVSUxhbmd1YWdlID0geyBjb2RlOiBMYW5ndWFnZSB8IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5AVW50aWxEZXN0cm95KHsgY2hlY2tQcm9wZXJ0aWVzOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTZXJ2aWNlIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZSA9IExhbmd1YWdlLmVuO1xuXG4gIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZUxpc3Q6IFVJTGFuZ3VhZ2VbXSA9IFtcbiAgICB7IGNvZGU6IExhbmd1YWdlLmVuLCBsYWJlbDogJ0VuZ2xpc2gnIH0sXG4gICAgeyBjb2RlOiBMYW5ndWFnZS5lcywgbGFiZWw6ICdTcGFuaXNoJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2UuZGUsIGxhYmVsOiAnR2VybWFuJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2UuZnIsIGxhYmVsOiAnRnJlbmNoJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2UubmwsIGxhYmVsOiAnRHV0Y2gnIH0sXG4gICAgeyBjb2RlOiBMYW5ndWFnZVsnaXQtaXQnXSwgbGFiZWw6ICdJdGFsaWFuJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2VbJ2phLWpwJ10sIGxhYmVsOiAnSmFwYW5lc2UnIH0sXG4gICAgeyBjb2RlOiBMYW5ndWFnZVsncHQtYnInXSwgbGFiZWw6ICdQb3J0dWd1ZXNlJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2VbJ2RhLWRrJ10sIGxhYmVsOiAnRGFuaXNoJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2VbJ25iLW5vJ10sIGxhYmVsOiAnTm9yd2VnaWFuJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2VbJ3BsLXBsJ10sIGxhYmVsOiAnUG9saXNoJyB9LFxuICAgIHsgY29kZTogTGFuZ3VhZ2VbJ3N2LXNlJ10sIGxhYmVsOiAnU3dlZGlzaCcgfSxcbiAgXTtcblxuICBwcml2YXRlIGxhbmd1YWdlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBMYW5ndWFnZSBTZXJ2aWNlLlxuICAgKiBAbWVtYmVyb2YgTGFuZ3VhZ2VTZXJ2aWNlXG4gICAqL1xuICBpbml0KGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBTZXQgYWN0aXZlIGxhbmd1YWdlIGFjY29yZGluZyB0byB1c2VyIHNldHRpbmdzLiBUT0RPOiBSZXBsYWNlIHdpdGggdXNlciB2YWx1ZS5cbiAgICB0aGlzLnNldEFjdGl2ZUxhbmd1YWdlKGxhbmd1YWdlKTtcblxuICAgIC8vIFJlYWN0IHRvIGxhbmd1YWdlIGNoYW5nZXMgYW5kIGxvYWQgdGhlIGxhbmd1YWdlIHNlbGVjdGVkLlxuICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkLnN1YnNjcmliZShsYW5nID0+IHtcbiAgICAgIHRoaXMudHJhbnNsb2NvU2VydmljZS5sb2FkKGxhbmcpLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBTZXQgYSBsYW5nYXVnZSBhcyBhY3RpdmUgbGFuZ3VhZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUNvZGUgTGFuZ3VhZ2UgdmFsdWUgY29kZS5cbiAgICogQG1lbWJlcm9mIExhbmd1YWdlU2VydmljZVxuICAgKi9cbiAgc2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbG9jb1NlcnZpY2Uuc2V0QWN0aXZlTGFuZyhsYW5ndWFnZUNvZGUpO1xuICB9XG59XG4iXX0=
|