@rlucan/ui 14.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/README.md +24 -0
- package/esm2020/lib/action-button/action-button.component.mjs +96 -0
- package/esm2020/lib/action-icon/action-icon.component.mjs +37 -0
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +391 -0
- package/esm2020/lib/avatar/avatar.component.mjs +34 -0
- package/esm2020/lib/base/ui-base-layout.component.mjs +22 -0
- package/esm2020/lib/base/ui-base.component.mjs +74 -0
- package/esm2020/lib/button/button.component.mjs +57 -0
- package/esm2020/lib/checkbox/checkbox.component.mjs +39 -0
- package/esm2020/lib/checkbox-group/checkbox-group.component.mjs +91 -0
- package/esm2020/lib/currency/currency.component.mjs +148 -0
- package/esm2020/lib/date/date.component.mjs +64 -0
- package/esm2020/lib/dialog/dialog.component.mjs +37 -0
- package/esm2020/lib/directives/force-visibility/force-visibility.directive.mjs +96 -0
- package/esm2020/lib/elements/burger/burger.component.mjs +21 -0
- package/esm2020/lib/elements/expander/expander.component.mjs +28 -0
- package/esm2020/lib/elements/validation-message/validation-message.component.mjs +47 -0
- package/esm2020/lib/file/file.component.mjs +88 -0
- package/esm2020/lib/file-uploader/ui-file-uploader.component.mjs +394 -0
- package/esm2020/lib/input/input.component.mjs +258 -0
- package/esm2020/lib/radio/radio.component.mjs +21 -0
- package/esm2020/lib/radio-group/radio-group.component.mjs +53 -0
- package/esm2020/lib/select/select.component.mjs +91 -0
- package/esm2020/lib/services/message-box.service.mjs +113 -0
- package/esm2020/lib/services/toast.service.mjs +23 -0
- package/esm2020/lib/services/ui-file.service.mjs +71 -0
- package/esm2020/lib/services/ui-translate.service.mjs +32 -0
- package/esm2020/lib/simple/ui-simple-layout.component.mjs +15 -0
- package/esm2020/lib/simple/ui-simple.component.mjs +154 -0
- package/esm2020/lib/submit-button/submit-button.component.mjs +72 -0
- package/esm2020/lib/table/table.component.mjs +97 -0
- package/esm2020/lib/text-area/text-area.component.mjs +46 -0
- package/esm2020/lib/ui.model.mjs +2 -0
- package/esm2020/lib/ui.module.mjs +255 -0
- package/esm2020/public-api.mjs +33 -0
- package/esm2020/rlucan-ui.mjs +5 -0
- package/fesm2015/rlucan-ui.mjs +2918 -0
- package/fesm2015/rlucan-ui.mjs.map +1 -0
- package/fesm2020/rlucan-ui.mjs +2886 -0
- package/fesm2020/rlucan-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/action-button/action-button.component.d.ts +33 -0
- package/lib/action-icon/action-icon.component.d.ts +15 -0
- package/lib/autocomplete/autocomplete.component.d.ts +57 -0
- package/lib/avatar/avatar.component.d.ts +14 -0
- package/lib/base/ui-base-layout.component.d.ts +8 -0
- package/lib/base/ui-base.component.d.ts +23 -0
- package/lib/button/button.component.d.ts +18 -0
- package/lib/checkbox/checkbox.component.d.ts +15 -0
- package/lib/checkbox-group/checkbox-group.component.d.ts +18 -0
- package/lib/currency/currency.component.d.ts +30 -0
- package/lib/date/date.component.d.ts +23 -0
- package/lib/dialog/dialog.component.d.ts +13 -0
- package/lib/directives/force-visibility/force-visibility.directive.d.ts +20 -0
- package/lib/elements/burger/burger.component.d.ts +9 -0
- package/lib/elements/expander/expander.component.d.ts +10 -0
- package/lib/elements/validation-message/validation-message.component.d.ts +12 -0
- package/lib/file/file.component.d.ts +29 -0
- package/lib/file-uploader/ui-file-uploader.component.d.ts +102 -0
- package/lib/input/input.component.d.ts +29 -0
- package/lib/radio/radio.component.d.ts +8 -0
- package/lib/radio-group/radio-group.component.d.ts +18 -0
- package/lib/select/select.component.d.ts +33 -0
- package/lib/services/message-box.service.d.ts +42 -0
- package/lib/services/toast.service.d.ts +13 -0
- package/lib/services/ui-file.service.d.ts +33 -0
- package/lib/services/ui-translate.service.d.ts +11 -0
- package/lib/simple/ui-simple-layout.component.d.ts +7 -0
- package/lib/simple/ui-simple.component.d.ts +39 -0
- package/lib/submit-button/submit-button.component.d.ts +21 -0
- package/lib/table/table.component.d.ts +36 -0
- package/lib/text-area/text-area.component.d.ts +18 -0
- package/lib/ui.model.d.ts +2 -0
- package/lib/ui.module.d.ts +56 -0
- package/package.json +44 -0
- package/public-api.d.ts +27 -0
- package/scss/ui-defaults.scss +339 -0
- package/ui.scss +911 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Component, Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogConfig } from '@angular/material/dialog';
|
|
3
|
+
import { UI_TRANSLATESERVICE } from './ui-translate.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
import * as i2 from "@angular/platform-browser";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "../button/button.component";
|
|
9
|
+
import * as i5 from "../dialog/dialog.component";
|
|
10
|
+
export class MessageBoxModalComponent {
|
|
11
|
+
constructor(dialogRef, sanitizer, data) {
|
|
12
|
+
this.dialogRef = dialogRef;
|
|
13
|
+
this.sanitizer = sanitizer;
|
|
14
|
+
this.data = data;
|
|
15
|
+
this.buttons = [];
|
|
16
|
+
this.hideCloseButton = false;
|
|
17
|
+
this.message = this.sanitizer.bypassSecurityTrustHtml(data.message);
|
|
18
|
+
if (this.data.options.errorMessage) {
|
|
19
|
+
this.errorMessage = this.sanitizer.bypassSecurityTrustHtml(data.options.errorMessage);
|
|
20
|
+
}
|
|
21
|
+
if (this.data.options.errorDetail) {
|
|
22
|
+
this.errorDetail = this.sanitizer.bypassSecurityTrustHtml(data.options.errorDetail);
|
|
23
|
+
}
|
|
24
|
+
if (this.data.options.hideCloseButton !== undefined) {
|
|
25
|
+
this.hideCloseButton = this.data.options.hideCloseButton;
|
|
26
|
+
}
|
|
27
|
+
this.buttons = data.options.buttons ? data.options.buttons : [{ id: 'close', text: 'Close' }];
|
|
28
|
+
this.title = data.options.title;
|
|
29
|
+
}
|
|
30
|
+
close(result) {
|
|
31
|
+
this.dialogRef.close(result);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
MessageBoxModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MessageBoxModalComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.DomSanitizer }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
MessageBoxModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: MessageBoxModalComponent, selector: "ui-message-box-modal", ngImport: i0, template: `
|
|
36
|
+
<ui-dialog [title]="title" [hideCloseButton]="hideCloseButton">
|
|
37
|
+
<div mat-dialog-content style="padding: 12px;">
|
|
38
|
+
<div [innerHTML]="message" style="line-height: 24px;"></div>
|
|
39
|
+
<pre *ngIf="errorMessage" [innerHTML]="errorMessage"></pre>
|
|
40
|
+
<pre *ngIf="errorDetail" [innerHTML]="errorDetail"></pre>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div mat-dialog-actions>
|
|
44
|
+
<div class="buttons">
|
|
45
|
+
<ui-button *ngFor="let b of buttons" style="margin-left: 18px;" [color]="b.color || 'primary'" [tabIndex]="-1"
|
|
46
|
+
[kind]="b.kind || 'stroked'" (click)="close(b.id)" [label]="b.text"></ui-button>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</ui-dialog>
|
|
50
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i4.ButtonComponent, selector: "ui-button", inputs: ["type", "matIconPrefix", "label", "disabled", "busy", "kind", "color", "size", "formInvalid"] }, { kind: "component", type: i5.DialogComponent, selector: "ui-dialog", inputs: ["title", "draggable", "hideCloseButton", "close"] }] });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MessageBoxModalComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{
|
|
54
|
+
selector: 'ui-message-box-modal',
|
|
55
|
+
template: `
|
|
56
|
+
<ui-dialog [title]="title" [hideCloseButton]="hideCloseButton">
|
|
57
|
+
<div mat-dialog-content style="padding: 12px;">
|
|
58
|
+
<div [innerHTML]="message" style="line-height: 24px;"></div>
|
|
59
|
+
<pre *ngIf="errorMessage" [innerHTML]="errorMessage"></pre>
|
|
60
|
+
<pre *ngIf="errorDetail" [innerHTML]="errorDetail"></pre>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div mat-dialog-actions>
|
|
64
|
+
<div class="buttons">
|
|
65
|
+
<ui-button *ngFor="let b of buttons" style="margin-left: 18px;" [color]="b.color || 'primary'" [tabIndex]="-1"
|
|
66
|
+
[kind]="b.kind || 'stroked'" (click)="close(b.id)" [label]="b.text"></ui-button>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</ui-dialog>
|
|
70
|
+
`
|
|
71
|
+
}]
|
|
72
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.DomSanitizer }, { type: undefined, decorators: [{
|
|
73
|
+
type: Inject,
|
|
74
|
+
args: [MAT_DIALOG_DATA]
|
|
75
|
+
}] }]; } });
|
|
76
|
+
export class MessageBoxService {
|
|
77
|
+
constructor(dialog, translateService) {
|
|
78
|
+
this.dialog = dialog;
|
|
79
|
+
this.translateService = translateService;
|
|
80
|
+
}
|
|
81
|
+
confirm(message, options = {}) {
|
|
82
|
+
const config = new MatDialogConfig();
|
|
83
|
+
config.disableClose = true;
|
|
84
|
+
config.minWidth = '340px';
|
|
85
|
+
config.maxWidth = options.maxWidth || '600px';
|
|
86
|
+
config.width = '40vw';
|
|
87
|
+
config.data = { message, options };
|
|
88
|
+
return this.dialog.open(MessageBoxModalComponent, config).afterClosed();
|
|
89
|
+
}
|
|
90
|
+
confirmDelete(title, message) {
|
|
91
|
+
const options = {
|
|
92
|
+
title,
|
|
93
|
+
buttons: [
|
|
94
|
+
{ id: 'cancel', text: this.translateService.instant('ui.messagebox.button.cancel') },
|
|
95
|
+
{ id: 'delete', text: this.translateService.instant('ui.messagebox.button.delete'), color: 'warn', kind: 'flat' }
|
|
96
|
+
]
|
|
97
|
+
};
|
|
98
|
+
// @ts-ignore
|
|
99
|
+
return this.confirm(message, options);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
MessageBoxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MessageBoxService, deps: [{ token: i1.MatDialog }, { token: UI_TRANSLATESERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
103
|
+
MessageBoxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MessageBoxService, providedIn: 'root' });
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MessageBoxService, decorators: [{
|
|
105
|
+
type: Injectable,
|
|
106
|
+
args: [{
|
|
107
|
+
providedIn: 'root'
|
|
108
|
+
}]
|
|
109
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: undefined, decorators: [{
|
|
110
|
+
type: Inject,
|
|
111
|
+
args: [UI_TRANSLATESERVICE]
|
|
112
|
+
}] }]; } });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1ib3guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZS1ib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBYSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFFckcsT0FBTyxFQUF1QixtQkFBbUIsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQTRCdEcsTUFBTSxPQUFPLHdCQUF3QjtJQVNuQyxZQUFtQixTQUFpRCxFQUNqRCxTQUF1QixFQUNHLElBQVM7UUFGbkMsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFDakQsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNHLFNBQUksR0FBSixJQUFJLENBQUs7UUFOdEQsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFFakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFNdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JGO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ25ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1NBQzFEO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7cUhBL0JVLHdCQUF3QiwwRUFXZixlQUFlO3lHQVh4Qix3QkFBd0IsNERBakJ6Qjs7Ozs7Ozs7Ozs7Ozs7O0dBZVQ7MkZBRVUsd0JBQXdCO2tCQW5CcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2lCQUNGOzswQkFZYyxNQUFNOzJCQUFDLGVBQWU7O0FBMkJyQyxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLE1BQWlCLEVBQ1csZ0JBQXFDO1FBRGpFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDVyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO0lBQ3JGLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLFVBT3JCLEVBQUU7UUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDOUMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDdEIsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYSxFQUFFLE9BQWU7UUFDMUMsTUFBTSxPQUFPLEdBQUc7WUFDZCxLQUFLO1lBQ0wsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFO2dCQUNwRixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDbEg7U0FDRixDQUFDO1FBQ0YsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7OEdBbENVLGlCQUFpQiwyQ0FHUixtQkFBbUI7a0hBSDVCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUljLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJVWlUcmFuc2xhdGVTZXJ2aWNlLCBVSV9UUkFOU0xBVEVTRVJWSUNFLCBVaVRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuL3VpLXRyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJveEJ1dHRvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAga2luZD86ICdiYXNpYycgfCAnZmxhdCcgfCAnc3Ryb2tlZCc7XHJcbiAgY29sb3I/OiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1tZXNzYWdlLWJveC1tb2RhbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDx1aS1kaWFsb2cgW3RpdGxlXT1cInRpdGxlXCIgW2hpZGVDbG9zZUJ1dHRvbl09XCJoaWRlQ2xvc2VCdXR0b25cIj5cclxuICAgICAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgc3R5bGU9XCJwYWRkaW5nOiAxMnB4O1wiPlxyXG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJtZXNzYWdlXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjRweDtcIj48L2Rpdj5cclxuICAgICAgICA8cHJlICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgW2lubmVySFRNTF09XCJlcnJvck1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8cHJlICpuZ0lmPVwiZXJyb3JEZXRhaWxcIiBbaW5uZXJIVE1MXT1cImVycm9yRGV0YWlsXCI+PC9wcmU+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgIDx1aS1idXR0b24gKm5nRm9yPVwibGV0IGIgb2YgYnV0dG9uc1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDE4cHg7XCIgW2NvbG9yXT1cImIuY29sb3IgfHwgJ3ByaW1hcnknXCIgW3RhYkluZGV4XT1cIi0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtraW5kXT1cImIua2luZCB8fCAnc3Ryb2tlZCdcIiAoY2xpY2spPVwiY2xvc2UoYi5pZClcIiBbbGFiZWxdPVwiYi50ZXh0XCI+PC91aS1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC91aS1kaWFsb2c+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVzc2FnZUJveE1vZGFsQ29tcG9uZW50IHtcclxuXHJcbiAgbWVzc2FnZTtcclxuICBlcnJvck1lc3NhZ2U7XHJcbiAgZXJyb3JEZXRhaWw7XHJcbiAgYnV0dG9uczogTWVzc2FnZUJveEJ1dHRvbltdID0gW107XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBoaWRlQ2xvc2VCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1lc3NhZ2VCb3hNb2RhbENvbXBvbmVudD4sXHJcbiAgICAgICAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRhdGE6IGFueSkge1xyXG5cclxuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEubWVzc2FnZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5vcHRpb25zLmVycm9yTWVzc2FnZSkge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEub3B0aW9ucy5lcnJvck1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGF0YS5vcHRpb25zLmVycm9yRGV0YWlsKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JEZXRhaWwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkYXRhLm9wdGlvbnMuZXJyb3JEZXRhaWwpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGF0YS5vcHRpb25zLmhpZGVDbG9zZUJ1dHRvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaGlkZUNsb3NlQnV0dG9uID0gdGhpcy5kYXRhLm9wdGlvbnMuaGlkZUNsb3NlQnV0dG9uO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYnV0dG9ucyA9IGRhdGEub3B0aW9ucy5idXR0b25zID8gZGF0YS5vcHRpb25zLmJ1dHRvbnMgOiBbe2lkOiAnY2xvc2UnLCB0ZXh0OiAnQ2xvc2UnfV07XHJcbiAgICB0aGlzLnRpdGxlID0gZGF0YS5vcHRpb25zLnRpdGxlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UocmVzdWx0OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVzc2FnZUJveFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoVUlfVFJBTlNMQVRFU0VSVklDRSkgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IElVaVRyYW5zbGF0ZVNlcnZpY2UsKSB7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uczoge1xyXG4gICAgYnV0dG9ucz86IE1lc3NhZ2VCb3hCdXR0b25bXSxcclxuICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgZXJyb3JNZXNzYWdlPzogc3RyaW5nLFxyXG4gICAgZXJyb3JEZXRhaWw/OiBzdHJpbmcsXHJcbiAgICBoaWRlQ2xvc2VCdXR0b24/OiBib29sZWFuLFxyXG4gICAgbWF4V2lkdGg/OiBzdHJpbmdcclxuICB9ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgY29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgY29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcbiAgICBjb25maWcubWluV2lkdGggPSAnMzQwcHgnO1xyXG4gICAgY29uZmlnLm1heFdpZHRoID0gb3B0aW9ucy5tYXhXaWR0aCB8fCAnNjAwcHgnO1xyXG4gICAgY29uZmlnLndpZHRoID0gJzQwdncnO1xyXG4gICAgY29uZmlnLmRhdGEgPSB7bWVzc2FnZSwgb3B0aW9uc307XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW4oTWVzc2FnZUJveE1vZGFsQ29tcG9uZW50LCBjb25maWcpLmFmdGVyQ2xvc2VkKCk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICB0aXRsZSxcclxuICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgIHsgaWQ6ICdjYW5jZWwnLCB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndWkubWVzc2FnZWJveC5idXR0b24uY2FuY2VsJykgfSxcclxuICAgICAgICB7IGlkOiAnZGVsZXRlJywgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLm1lc3NhZ2Vib3guYnV0dG9uLmRlbGV0ZScpLCBjb2xvcjogJ3dhcm4nLCBraW5kOiAnZmxhdCcgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlybShtZXNzYWdlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/snack-bar";
|
|
4
|
+
export class ToastService {
|
|
5
|
+
constructor(snackService) {
|
|
6
|
+
this.snackService = snackService;
|
|
7
|
+
}
|
|
8
|
+
open(message, options = { duration: 2500, type: 'info' }) {
|
|
9
|
+
this.snackService.open(message, null, {
|
|
10
|
+
duration: options.duration || 2500,
|
|
11
|
+
panelClass: [options.type || 'message']
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
ToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ToastService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
ToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ToastService, providedIn: 'root' });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ToastService, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: function () { return [{ type: i1.MatSnackBar }]; } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2VydmljZXMvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRM0MsTUFBTSxPQUFPLFlBQVk7SUFFdkIsWUFBb0IsWUFBeUI7UUFBekIsaUJBQVksR0FBWixZQUFZLENBQWE7SUFBSSxDQUFDO0lBRTNDLElBQUksQ0FBQyxPQUFlLEVBQUUsVUFBbUQsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUM7UUFDN0csSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtZQUNwQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQ2xDLFVBQVUsRUFBRSxDQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7O3lHQVRVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cbmV4cG9ydCB0eXBlIFRvYXN0VHlwZSA9ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdmYWlsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrU2VydmljZTogTWF0U25hY2tCYXIpIHsgfVxuXG4gIHB1YmxpYyBvcGVuKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uczogeyBkdXJhdGlvbj86IG51bWJlciwgdHlwZT86IFRvYXN0VHlwZSB9ID0geyBkdXJhdGlvbjogMjUwMCwgdHlwZTogJ2luZm8nfSkge1xuICAgIHRoaXMuc25hY2tTZXJ2aWNlLm9wZW4obWVzc2FnZSwgbnVsbCwge1xuICAgICAgZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24gfHwgMjUwMCxcbiAgICAgIHBhbmVsQ2xhc3M6IFsgb3B0aW9ucy50eXBlIHx8ICdtZXNzYWdlJ11cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { EventEmitter, Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export const UI_FILESERVICE = new InjectionToken('IUiFileService');
|
|
5
|
+
// export const FileServiceConfigService = new InjectionToken<FileServiceConfig>('FileServiceConfig');
|
|
6
|
+
export class UiFileService {
|
|
7
|
+
constructor(fileServiceConfig) {
|
|
8
|
+
this.fileServiceConfig = fileServiceConfig;
|
|
9
|
+
this.uploadInput = new EventEmitter();
|
|
10
|
+
this.uploadSubscription = new Subject();
|
|
11
|
+
this.filesToRemove = [];
|
|
12
|
+
this.controls = new Set();
|
|
13
|
+
this.uploadSubscription.subscribe((v) => {
|
|
14
|
+
switch (v.action) {
|
|
15
|
+
case 'register':
|
|
16
|
+
this.controls.add(v.data);
|
|
17
|
+
return;
|
|
18
|
+
case 'destroy':
|
|
19
|
+
this.controls.delete(v.data);
|
|
20
|
+
return;
|
|
21
|
+
case 'uploadStarted':
|
|
22
|
+
let cnt = 0;
|
|
23
|
+
this.controls.forEach(c => cnt += c.hasFilesToUpload ? 1 : 0);
|
|
24
|
+
if (cnt === 0) {
|
|
25
|
+
this.uploadSubscription.next({ action: 'uploadSuccess' });
|
|
26
|
+
}
|
|
27
|
+
break;
|
|
28
|
+
case 'uploadControlFailed':
|
|
29
|
+
case 'uploadControlSuccess':
|
|
30
|
+
let cnt2 = 0;
|
|
31
|
+
this.controls.forEach(c => cnt2 += c.hasFilesToUpload ? 1 : 0);
|
|
32
|
+
if (cnt2 === 0) {
|
|
33
|
+
this.uploadSubscription.next({ action: v.action === 'uploadControlFailed' ? 'uploadFailed' : 'uploadSuccess' });
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
upload() {
|
|
40
|
+
const promises = [];
|
|
41
|
+
this.controls.forEach(c => promises.push(c.beforeSave()));
|
|
42
|
+
return new Promise((res, rej) => {
|
|
43
|
+
this.uploadSubscription.subscribe((v) => {
|
|
44
|
+
if (v.action === 'uploadSuccess' || v.action === 'uploadFailed') {
|
|
45
|
+
res(v.action);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
this.uploadSubscription.next({ action: 'uploadStarted' });
|
|
49
|
+
Promise.all(promises).then((r) => {
|
|
50
|
+
const event = {
|
|
51
|
+
type: 'uploadAll',
|
|
52
|
+
url: this.fileServiceConfig.uploadUrl,
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: this.fileServiceConfig.getAuthHeader()
|
|
55
|
+
};
|
|
56
|
+
this.uploadInput.emit(event);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
UiFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiFileService, deps: [{ token: UI_FILESERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
62
|
+
UiFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiFileService });
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiFileService, decorators: [{
|
|
64
|
+
type: Injectable
|
|
65
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
66
|
+
type: Optional
|
|
67
|
+
}, {
|
|
68
|
+
type: Inject,
|
|
69
|
+
args: [UI_FILESERVICE]
|
|
70
|
+
}] }]; } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9zZXJ2aWNlcy91aS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUEwQi9CLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQztBQUVuRixzR0FBc0c7QUFHdEcsTUFBTSxPQUFPLGFBQWE7SUFTeEIsWUFBdUQsaUJBQWlDO1FBQWpDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7UUFQeEYsZ0JBQVcsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUV6RSx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRW5DLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBTyxDQUFDO1FBR3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUMzQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLEtBQUssVUFBVTtvQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQUMsT0FBTztnQkFDbkQsS0FBSyxTQUFTO29CQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFBQyxPQUFPO2dCQUVyRCxLQUFLLGVBQWU7b0JBQ2xCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztvQkFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlELElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTt3QkFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7cUJBQ3pEO29CQUNELE1BQU07Z0JBRVIsS0FBSyxxQkFBcUIsQ0FBQztnQkFDM0IsS0FBSyxzQkFBc0I7b0JBQ3pCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDYixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9ELElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTt3QkFDZCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztxQkFDL0c7b0JBQ0QsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUxRCxPQUFPLElBQUksT0FBTyxDQUFtQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUVoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxlQUFlLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxjQUFjLEVBQUU7b0JBQy9ELEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2Y7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztZQUV4RCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUUvQixNQUFNLEtBQUssR0FBZ0I7b0JBQ3pCLElBQUksRUFBRSxXQUFXO29CQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7b0JBQ3JDLE1BQU0sRUFBRSxNQUFNO29CQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFO2lCQUNoRCxDQUFDO2dCQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9CLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzswR0E5RFUsYUFBYSxrQkFTUSxjQUFjOzhHQVRuQyxhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQVVJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXBsb2FkRmlsZSwgVXBsb2FkSW5wdXQgfSBmcm9tICduZ3gtdXBsb2FkZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbi8vIGltcG9ydCB7IFVpRmlsZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsZS11cGxvYWRlci91aS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudCc7XHJcblxyXG4vLyBleHBvcnQgaW50ZXJmYWNlIElHZXRBdXRoSGVhZGVyIHtcclxuLy8gICBnZXRBdXRoSGVhZGVyOiAoKSA9PiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4vLyB9XHJcblxyXG5leHBvcnQgdHlwZSBJVWlGaWxlU2VydmljZU1lc3NhZ2VzID0gJ2Nyb3BJbnZhbGlkRmlsZVR5cGUnIHwgJ2V4dGVuc2lvbk5vdEFsbG93ZWQnIHwgJ2ZpbGVBZGRlZCcgfCAnZmlsZVJlbW92ZWQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVWlGaWxlU2VydmljZSB7XHJcbiAgZ2V0QXV0aEhlYWRlcjogKCkgPT4geyBbIGtleTogc3RyaW5nIF06IHN0cmluZyB9LFxyXG4gIHVwbG9hZFVybDogc3RyaW5nO1xyXG4gIC8vIC8vIHVwbG9hZDY0VXJsOiBzdHJpbmc7XHJcbiAgZ2V0TWVkaWFTcmM6IChzaXplOiBzdHJpbmcsIGRhdGE6IGFueSwgb3B0aW9uczogYW55KSA9PiBzdHJpbmcsXHJcbiAgZ2V0UHJldmlld1VybDogKHNpemU6IHN0cmluZywgYW55KSA9PiBzdHJpbmcsXHJcbiAgYWRkRmlsZUltZ1NyYzogc3RyaW5nO1xyXG4gIGdldE1pbWVUeXBlOiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XHJcbiAgaW1hZ2VTaXplczoge1xyXG4gICAgW2tleTogc3RyaW5nXTogW251bWJlciwgbnVtYmVyXVxyXG4gIH07XHJcbiAgY29uY3VycmVudFVwbG9hZHM6IG51bWJlcixcclxuICB1c2VSZXRpbmFTcmM6IGJvb2xlYW4sXHJcblxyXG4gIGZpbGVWYWxpZGF0aW9uPzogKHNpemU6IHN0cmluZywgZmlsZTogVXBsb2FkRmlsZSkgPT4gUHJvbWlzZTxib29sZWFuPlxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVUlfRklMRVNFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVVpRmlsZVNlcnZpY2U+KCdJVWlGaWxlU2VydmljZScpO1xyXG5cclxuLy8gZXhwb3J0IGNvbnN0IEZpbGVTZXJ2aWNlQ29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGaWxlU2VydmljZUNvbmZpZz4oJ0ZpbGVTZXJ2aWNlQ29uZmlnJyk7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVaUZpbGVTZXJ2aWNlIHtcclxuXHJcbiAgdXBsb2FkSW5wdXQ6IEV2ZW50RW1pdHRlcjxVcGxvYWRJbnB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyPFVwbG9hZElucHV0PigpO1xyXG5cclxuICB1cGxvYWRTdWJzY3JpcHRpb24gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBmaWxlc1RvUmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbnRyb2xzID0gbmV3IFNldDxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoVUlfRklMRVNFUlZJQ0UpIHB1YmxpYyBmaWxlU2VydmljZUNvbmZpZzogSVVpRmlsZVNlcnZpY2UpIHtcclxuICAgIHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uLnN1YnNjcmliZSgodjogYW55KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodi5hY3Rpb24pIHtcclxuICAgICAgICBjYXNlICdyZWdpc3Rlcic6IHRoaXMuY29udHJvbHMuYWRkKHYuZGF0YSk7IHJldHVybjtcclxuICAgICAgICBjYXNlICdkZXN0cm95JzogdGhpcy5jb250cm9scy5kZWxldGUodi5kYXRhKTsgcmV0dXJuO1xyXG5cclxuICAgICAgICBjYXNlICd1cGxvYWRTdGFydGVkJzpcclxuICAgICAgICAgIGxldCBjbnQgPSAwO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGMgPT4gY250ICs9IGMuaGFzRmlsZXNUb1VwbG9hZCA/IDEgOiAwKTtcclxuICAgICAgICAgIGlmIChjbnQgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTdWJzY3JpcHRpb24ubmV4dCh7YWN0aW9uOiAndXBsb2FkU3VjY2Vzcyd9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlICd1cGxvYWRDb250cm9sRmFpbGVkJzpcclxuICAgICAgICBjYXNlICd1cGxvYWRDb250cm9sU3VjY2Vzcyc6XHJcbiAgICAgICAgICBsZXQgY250MiA9IDA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goYyA9PiBjbnQyICs9IGMuaGFzRmlsZXNUb1VwbG9hZCA/IDEgOiAwKTtcclxuICAgICAgICAgIGlmIChjbnQyID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uLm5leHQoe2FjdGlvbjogdi5hY3Rpb24gPT09ICd1cGxvYWRDb250cm9sRmFpbGVkJyA/ICd1cGxvYWRGYWlsZWQnIDogJ3VwbG9hZFN1Y2Nlc3MnfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBsb2FkKCk6IFByb21pc2U8J3VwbG9hZFN1Y2Nlc3MnIHwgJ3VwbG9hZEZhaWxlZCc+IHtcclxuICAgIGNvbnN0IHByb21pc2VzID0gW107XHJcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goYyA9PiBwcm9taXNlcy5wdXNoKGMuYmVmb3JlU2F2ZSgpKSk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPCd1cGxvYWRTdWNjZXNzJyB8ICd1cGxvYWRGYWlsZWQnPigocmVzLCByZWopID0+IHtcclxuXHJcbiAgICAgIHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uLnN1YnNjcmliZSgodjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHYuYWN0aW9uID09PSAndXBsb2FkU3VjY2VzcycgfHwgdi5hY3Rpb24gPT09ICd1cGxvYWRGYWlsZWQnKSB7XHJcbiAgICAgICAgICByZXModi5hY3Rpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbi5uZXh0KHthY3Rpb246ICd1cGxvYWRTdGFydGVkJ30pO1xyXG5cclxuICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKHIpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgZXZlbnQ6IFVwbG9hZElucHV0ID0ge1xyXG4gICAgICAgICAgdHlwZTogJ3VwbG9hZEFsbCcsXHJcbiAgICAgICAgICB1cmw6IHRoaXMuZmlsZVNlcnZpY2VDb25maWcudXBsb2FkVXJsLFxyXG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmdldEF1dGhIZWFkZXIoKVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudXBsb2FkSW5wdXQuZW1pdChldmVudCk7XHJcblxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export const UI_TRANSLATESERVICE = new InjectionToken('IUiTranslateService');
|
|
4
|
+
export class UiTranslateService {
|
|
5
|
+
instant(code, data) {
|
|
6
|
+
switch (code) {
|
|
7
|
+
case 'ui.controls.ui-file-uploader.menu.change': return 'Změnit';
|
|
8
|
+
case 'ui.controls.ui-file-uploader.menu.delete': return 'Smazat';
|
|
9
|
+
case 'ui.controls.ui-file-uploader.uploadError': return 'Chyba při ukládání souboru';
|
|
10
|
+
case 'ui.controls.validation.required': return 'Povinná položka';
|
|
11
|
+
case 'ui.controls.validation.email': return 'Neplatný email';
|
|
12
|
+
case 'ui.controls.validation.matDatepickerParse': return 'Neplatné datum';
|
|
13
|
+
case 'ui.controls.validation.maxlength': return 'Zadej maximálně ' + data.requiredLength + ' znaků';
|
|
14
|
+
case 'ui.controls.validation.minlength': return 'Zadej minimálně ' + data.requiredLength + ' znaků';
|
|
15
|
+
case 'ui.controls.validation.invalidNumber': return 'Neplatné číslo';
|
|
16
|
+
case 'ui.controls.validation.positive': return 'Musí být větší než 0';
|
|
17
|
+
case 'ui.controls.validation.cbGroupRequired': return 'Zaškrtni alespoň jednu položku';
|
|
18
|
+
case 'ui.controls.ui-select.clear-selection': return 'Zrušit výběr';
|
|
19
|
+
case 'ui.controls.ui-select.all': return 'Vše';
|
|
20
|
+
case 'ui.controls.ui-select.apply-selection': return 'Použít výběr';
|
|
21
|
+
case 'ui.messagebox.button.cancel': return 'Zrušit';
|
|
22
|
+
case 'ui.messagebox.button.delete': return 'Smazat';
|
|
23
|
+
default: return code;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
UiTranslateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiTranslateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
UiTranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiTranslateService });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiTranslateService, decorators: [{
|
|
30
|
+
type: Injectable
|
|
31
|
+
}] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3NlcnZpY2VzL3VpLXRyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IscUJBQXFCLENBQUMsQ0FBQztBQUdsRyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE9BQU8sQ0FBQyxJQUFZLEVBQUUsSUFBUztRQUM3QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssMENBQTBDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztZQUNqRSxLQUFLLDBDQUEwQyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7WUFDakUsS0FBSywwQ0FBMEMsQ0FBQyxDQUFDLE9BQU8sNEJBQTRCLENBQUM7WUFDckYsS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLE9BQU8saUJBQWlCLENBQUM7WUFDakUsS0FBSyw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sZ0JBQWdCLENBQUM7WUFDN0QsS0FBSywyQ0FBMkMsQ0FBQyxDQUFDLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUUsS0FBSyxrQ0FBa0MsQ0FBQyxDQUFDLE9BQU8sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7WUFDcEcsS0FBSyxrQ0FBa0MsQ0FBQyxDQUFDLE9BQU8sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7WUFDcEcsS0FBSyxzQ0FBc0MsQ0FBQyxDQUFDLE9BQU8sZ0JBQWdCLENBQUM7WUFDckUsS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLE9BQU8sc0JBQXNCLENBQUM7WUFDdEUsS0FBSyx3Q0FBd0MsQ0FBQyxDQUFDLE9BQU8sZ0NBQWdDLENBQUM7WUFDdkYsS0FBSyx1Q0FBdUMsQ0FBQyxDQUFDLE9BQU8sY0FBYyxDQUFDO1lBQ3BFLEtBQUssMkJBQTJCLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztZQUMvQyxLQUFLLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxjQUFjLENBQUM7WUFDcEUsS0FBSyw2QkFBNkIsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDO1lBQ3BELEtBQUssNkJBQTZCLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztZQUNwRCxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztTQUN0QjtJQUNILENBQUM7OytHQXJCVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVpVHJhbnNsYXRlU2VydmljZSB7XHJcbiAgaW5zdGFudDogKGNvZGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVUlfVFJBTlNMQVRFU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVWlUcmFuc2xhdGVTZXJ2aWNlPignSVVpVHJhbnNsYXRlU2VydmljZScpO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVWlUcmFuc2xhdGVTZXJ2aWNlIGltcGxlbWVudHMgSVVpVHJhbnNsYXRlU2VydmljZSB7XHJcbiAgaW5zdGFudChjb2RlOiBzdHJpbmcsIGRhdGE6IGFueSk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGNvZGUpIHtcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudWktZmlsZS11cGxvYWRlci5tZW51LmNoYW5nZSc6IHJldHVybiAnWm3Em25pdCc7XHJcbiAgICAgIGNhc2UgJ3VpLmNvbnRyb2xzLnVpLWZpbGUtdXBsb2FkZXIubWVudS5kZWxldGUnOiByZXR1cm4gJ1NtYXphdCc7XHJcbiAgICAgIGNhc2UgJ3VpLmNvbnRyb2xzLnVpLWZpbGUtdXBsb2FkZXIudXBsb2FkRXJyb3InOiByZXR1cm4gJ0NoeWJhIHDFmWkgdWtsw6Fkw6Fuw60gc291Ym9ydSc7XHJcbiAgICAgIGNhc2UgJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ucmVxdWlyZWQnOiByZXR1cm4gJ1BvdmlubsOhIHBvbG/FvmthJztcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudmFsaWRhdGlvbi5lbWFpbCc6IHJldHVybiAnTmVwbGF0bsO9IGVtYWlsJztcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudmFsaWRhdGlvbi5tYXREYXRlcGlja2VyUGFyc2UnOiByZXR1cm4gJ05lcGxhdG7DqSBkYXR1bSc7XHJcbiAgICAgIGNhc2UgJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ubWF4bGVuZ3RoJzogcmV0dXJuICdaYWRlaiBtYXhpbcOhbG7EmyAnICsgZGF0YS5yZXF1aXJlZExlbmd0aCArICcgem5ha8WvJztcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudmFsaWRhdGlvbi5taW5sZW5ndGgnOiByZXR1cm4gJ1phZGVqIG1pbmltw6FsbsSbICcgKyBkYXRhLnJlcXVpcmVkTGVuZ3RoICsgJyB6bmFrxa8nO1xyXG4gICAgICBjYXNlICd1aS5jb250cm9scy52YWxpZGF0aW9uLmludmFsaWROdW1iZXInOiByZXR1cm4gJ05lcGxhdG7DqSDEjcOtc2xvJztcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudmFsaWRhdGlvbi5wb3NpdGl2ZSc6IHJldHVybiAnTXVzw60gYsO9dCB2xJt0xaHDrSBuZcW+IDAnO1xyXG4gICAgICBjYXNlICd1aS5jb250cm9scy52YWxpZGF0aW9uLmNiR3JvdXBSZXF1aXJlZCc6IHJldHVybiAnWmHFoWtydG5pIGFsZXNwb8WIIGplZG51IHBvbG/Fvmt1JztcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudWktc2VsZWN0LmNsZWFyLXNlbGVjdGlvbic6IHJldHVybiAnWnJ1xaFpdCB2w71ixJtyJztcclxuICAgICAgY2FzZSAndWkuY29udHJvbHMudWktc2VsZWN0LmFsbCc6IHJldHVybiAnVsWhZSc7XHJcbiAgICAgIGNhc2UgJ3VpLmNvbnRyb2xzLnVpLXNlbGVjdC5hcHBseS1zZWxlY3Rpb24nOiByZXR1cm4gJ1BvdcW+w610IHbDvWLEm3InO1xyXG4gICAgICBjYXNlICd1aS5tZXNzYWdlYm94LmJ1dHRvbi5jYW5jZWwnOiByZXR1cm4gJ1pydcWhaXQnO1xyXG4gICAgICBjYXNlICd1aS5tZXNzYWdlYm94LmJ1dHRvbi5kZWxldGUnOiByZXR1cm4gJ1NtYXphdCc7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBjb2RlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../base/ui-base-layout.component";
|
|
5
|
+
export class UiSimpleLayoutComponent {
|
|
6
|
+
}
|
|
7
|
+
UiSimpleLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiSimpleLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
+
UiSimpleLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: { ctx: "ctx" }, ngImport: i0, template: "<ui-base-layout [ctx]=\"ctx\">\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-top\">\r\n {{ ctx.componentFormControl.value ? ctx.componentFormControl.value.length : 0 }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-bottom\">\r\n {{ ctx.componentFormControl.value ? ctx.componentFormControl.value.length : 0 }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n</ui-base-layout>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UiBaseLayoutComponent, selector: "ui-base-layout", inputs: ["ctx"] }] });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiSimpleLayoutComponent, decorators: [{
|
|
10
|
+
type: Component,
|
|
11
|
+
args: [{ selector: 'ui-simple-layout', template: "<ui-base-layout [ctx]=\"ctx\">\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-top\">\r\n {{ ctx.componentFormControl.value ? ctx.componentFormControl.value.length : 0 }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-bottom\">\r\n {{ ctx.componentFormControl.value ? ctx.componentFormControl.value.length : 0 }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n</ui-base-layout>\r\n" }]
|
|
12
|
+
}], propDecorators: { ctx: [{
|
|
13
|
+
type: Input
|
|
14
|
+
}] } });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2ltcGxlLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3NpbXBsZS91aS1zaW1wbGUtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2ltcGxlL3VpLXNpbXBsZS1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRakQsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGdGQ1JwQyxpaEJBYUE7MkZETGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFNbkIsR0FBRztzQkFBWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVaVNpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4vdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLXNpbXBsZS1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91aS1zaW1wbGUtbGF5b3V0LmNvbXBvbmVudC5odG1sJ1xyXG4gIC8vIHN0eWxlVXJsczogWyAnLi91aS1zaW1wbGUtbGF5b3V0LmNvbXBvbmVudC5zY3NzJyBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVNpbXBsZUxheW91dENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGN0eDogVWlTaW1wbGVDb21wb25lbnQ7XHJcblxyXG59XHJcbiIsIjx1aS1iYXNlLWxheW91dCBbY3R4XT1cImN0eFwiPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiY3R4LnZhbGlkYXRvcnM/Lm1heExlbmd0aFwiIGNsYXNzPVwiY291bnRlciBjb3VudGVyLXRvcFwiPlxyXG4gICAge3sgY3R4LmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlID8gY3R4LmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA6IDAgfX0gLyB7eyBjdHgudmFsaWRhdG9ycz8ubWF4TGVuZ3RoIH19XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJjdHgudmFsaWRhdG9ycz8ubWF4TGVuZ3RoXCIgY2xhc3M9XCJjb3VudGVyIGNvdW50ZXItYm90dG9tXCI+XHJcbiAgICB7eyBjdHguY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWUgPyBjdHguY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWUubGVuZ3RoIDogMCB9fSAvIHt7IGN0eC52YWxpZGF0b3JzPy5tYXhMZW5ndGggfX1cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG5cclxuPC91aS1iYXNlLWxheW91dD5cclxuIl19
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Validators, FormControl } from '@angular/forms';
|
|
3
|
+
import { UiBaseComponent } from '../base/ui-base.component';
|
|
4
|
+
import { Subscription } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
export class UiSimpleComponent extends UiBaseComponent {
|
|
8
|
+
constructor(ngControl, // <-- obsolete
|
|
9
|
+
controlContainer = null) {
|
|
10
|
+
super();
|
|
11
|
+
this.ngControl = ngControl;
|
|
12
|
+
this.controlContainer = controlContainer;
|
|
13
|
+
this.sub = new Subscription();
|
|
14
|
+
this.onChange = (val) => { };
|
|
15
|
+
this.onTouched = () => { };
|
|
16
|
+
this.onValidatorChange = () => { };
|
|
17
|
+
if (ngControl) {
|
|
18
|
+
ngControl.valueAccessor = this;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.componentFormControl = new FormControl();
|
|
22
|
+
// this.componentFormControl.markAsUntouched();
|
|
23
|
+
this.sub.add(this.componentFormControl.valueChanges.subscribe(v => {
|
|
24
|
+
try {
|
|
25
|
+
// console.log(v, this.componentFormControl.value);
|
|
26
|
+
this.onChange(v);
|
|
27
|
+
}
|
|
28
|
+
catch (e) { /*console.error(e);*/
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
// this.ngControl.valueAccessor = this;
|
|
33
|
+
}
|
|
34
|
+
get maxLenRequired() {
|
|
35
|
+
return this.componentFormControl.value && (this.componentFormControl.value.length > (this.validators?.maxLength || 0));
|
|
36
|
+
}
|
|
37
|
+
get isInvalid() {
|
|
38
|
+
// console.log(this.label, this.componentFormControl.touched);
|
|
39
|
+
return this.componentFormControl.touched && !!this.componentFormControl.errors;
|
|
40
|
+
}
|
|
41
|
+
get validationErrors() {
|
|
42
|
+
return this.componentFormControl?.errors;
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.sub.unsubscribe();
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
if (this.ngControl) {
|
|
49
|
+
if (this.formControl) {
|
|
50
|
+
this.componentFormControl = this.formControl;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.componentFormControl = this.ngControl.control;
|
|
54
|
+
}
|
|
55
|
+
setTimeout(() => this.applyTemplateValidators());
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.parentFormControl = this.formControlName ?
|
|
59
|
+
this.controlContainer.control.get(this.formControlName) : this.formControl;
|
|
60
|
+
if (this.parentFormControl) {
|
|
61
|
+
this.componentFormControl.setValidators(this.parentFormControl.validator);
|
|
62
|
+
this.parentFormControl._componentFormControl = this.componentFormControl;
|
|
63
|
+
if (this.parentFormControl._markAsTouched === undefined) {
|
|
64
|
+
this.parentFormControl._markAsTouched = this.parentFormControl.markAsTouched;
|
|
65
|
+
this.parentFormControl._setErrors = this.parentFormControl.setErrors;
|
|
66
|
+
this.parentFormControl.markAsTouched = ({ onlySelf } = {}) => {
|
|
67
|
+
this.parentFormControl._markAsTouched({ onlySelf });
|
|
68
|
+
this.parentFormControl._componentFormControl.markAsTouched({ onlySelf });
|
|
69
|
+
};
|
|
70
|
+
this.parentFormControl.setErrors = (errors) => {
|
|
71
|
+
this.parentFormControl._setErrors(errors);
|
|
72
|
+
this.parentFormControl._componentFormControl.setErrors(errors);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
setTimeout(() => this.applyTemplateValidators());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
applyTemplateValidators() {
|
|
80
|
+
const inputValidators = this.validators;
|
|
81
|
+
if (inputValidators) {
|
|
82
|
+
const validators = [];
|
|
83
|
+
Object.keys(inputValidators).forEach(v => {
|
|
84
|
+
switch (v) {
|
|
85
|
+
case 'required':
|
|
86
|
+
validators.push(Validators.required);
|
|
87
|
+
this.required = true;
|
|
88
|
+
break;
|
|
89
|
+
case 'maxLength':
|
|
90
|
+
validators.push(Validators.maxLength(inputValidators.maxLength || 0));
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
if (this.parentFormControl) {
|
|
95
|
+
this.parentFormControl.setValidators(validators);
|
|
96
|
+
this.parentFormControl.updateValueAndValidity({ emitEvent: false });
|
|
97
|
+
this.componentFormControl.setValidators(this.parentFormControl.validator);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.componentFormControl.addValidators(validators);
|
|
101
|
+
this.componentFormControl.updateValueAndValidity();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
ngOnChanges(changes) {
|
|
106
|
+
if (changes.validators && this.componentFormControl) {
|
|
107
|
+
this.applyTemplateValidators(); // changes.validators.currentValue as UiValidators);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
registerOnChange(fn) {
|
|
111
|
+
this.onChange = fn;
|
|
112
|
+
}
|
|
113
|
+
registerOnTouched(fn) {
|
|
114
|
+
this.onTouched = fn;
|
|
115
|
+
}
|
|
116
|
+
setDisabledState(isDisabled) {
|
|
117
|
+
if (this.componentFormControl) {
|
|
118
|
+
isDisabled ? this.componentFormControl.disable({ emitEvent: false }) : this.componentFormControl.enable({ emitEvent: false });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
writeValue(obj) {
|
|
122
|
+
if (!this.ngControl) {
|
|
123
|
+
if (obj && obj.error) {
|
|
124
|
+
console.log('setting error', obj, obj.error);
|
|
125
|
+
this.componentFormControl.setErrors(obj.error === 'clear' ? null : { custom: obj.error }, { emitEvent: false });
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.componentFormControl.setValue(obj);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
registerOnValidatorChange(fn) {
|
|
133
|
+
this.onValidatorChange = fn;
|
|
134
|
+
}
|
|
135
|
+
validate(control) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
UiSimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiSimpleComponent, deps: [{ token: i1.NgControl }, { token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
+
UiSimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: UiSimpleComponent, selector: "ui-abstract-simple-component", inputs: { validators: "validators", formControl: "formControl", formControlName: "formControlName" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '** abstract **', isInline: true });
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiSimpleComponent, decorators: [{
|
|
142
|
+
type: Component,
|
|
143
|
+
args: [{
|
|
144
|
+
selector: 'ui-abstract-simple-component',
|
|
145
|
+
template: '** abstract **'
|
|
146
|
+
}]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: i1.NgControl }, { type: i1.ControlContainer }]; }, propDecorators: { validators: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], formControl: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], formControlName: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}] } });
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2ltcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2ltcGxlL3VpLXNpbXBsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFPTCxVQUFVLEVBQUUsV0FBVyxFQUN4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTXBDLE1BQU0sT0FBZ0IsaUJBQWtCLFNBQVEsZUFBZTtJQWE3RCxZQUFtQixTQUFvQixFQUFFLGVBQWU7SUFDbEMsbUJBQXFDLElBQUk7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFGUyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFIL0QsUUFBRyxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBbUN2QyxhQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUV2QixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXJCLHNCQUFpQixHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQWpDM0IsSUFBSSxTQUFTLEVBQUU7WUFDYixTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUNoQzthQUFNO1lBQ0wsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDcEQsb0RBQW9EO1lBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FB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O2dCQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekM7U0FDRjtJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxFQUFjO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OzhHQXRKbUIsaUJBQWlCO2tHQUFqQixpQkFBaUIsc05BRjNCLGdCQUFnQjsyRkFFTixpQkFBaUI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7K0hBSVUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBOZ0NvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnMsIEZvcm1Db250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmVcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFVpQmFzZUNvbXBvbmVudCwgVWlWYWxpZGF0b3JzIH0gZnJvbSAnLi4vYmFzZS91aS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1hYnN0cmFjdC1zaW1wbGUtY29tcG9uZW50JyxcclxuICB0ZW1wbGF0ZTogJyoqIGFic3RyYWN0ICoqJ1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVWlTaW1wbGVDb21wb25lbnQgZXh0ZW5kcyBVaUJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgeyAvLyB9LCBWYWxpZGF0b3Ige1xyXG5cclxuICBASW5wdXQoKSB2YWxpZGF0b3JzOiBVaVZhbGlkYXRvcnMgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w7XHJcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lO1xyXG5cclxuICBjb21wb25lbnRGb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcclxuICBwYXJlbnRGb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sICYgeyBfY29tcG9uZW50Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sOyBfbWFya0FzVG91Y2hlZDogRnVuY3Rpb247IF9zZXRFcnJvcnM6IEZ1bmN0aW9uIH07XHJcblxyXG4gIHN1YjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsIC8vIDwtLSBvYnNvbGV0ZVxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyID0gbnVsbCkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuLy8gICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLnN1Yi5hZGQodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh2LCB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2Uodik7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyAvKmNvbnNvbGUuZXJyb3IoZSk7Ki9cclxuICAgICAgICB9XHJcbiAgICAgIH0gKSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICB9XHJcblxyXG4gIGdldCBtYXhMZW5SZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlICYmICh0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+ICh0aGlzLnZhbGlkYXRvcnM/Lm1heExlbmd0aCB8fCAwKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5sYWJlbCwgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC50b3VjaGVkKTtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnRvdWNoZWQgJiYgISF0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLmVycm9ycztcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZGF0aW9uRXJyb3JzKCk6IFZhbGlkYXRpb25FcnJvcnMge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2w/LmVycm9ycztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlID0gKHZhbCkgPT4ge307XHJcblxyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICBvblZhbGlkYXRvckNoYW5nZSA9ICgpID0+IHt9O1xyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAgICAgfVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXBwbHlUZW1wbGF0ZVZhbGlkYXRvcnMoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbE5hbWUgP1xyXG4gICAgICAgICh0aGlzLmNvbnRyb2xDb250YWluZXIgYXMgRm9ybUdyb3VwRGlyZWN0aXZlKS5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgOiB0aGlzLmZvcm1Db250cm9sO1xyXG4gICAgICBpZiAodGhpcy5wYXJlbnRGb3JtQ29udHJvbCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnBhcmVudEZvcm1Db250cm9sLnZhbGlkYXRvcik7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sO1xyXG4gICAgICAgIGlmICh0aGlzLnBhcmVudEZvcm1Db250cm9sLl9tYXJrQXNUb3VjaGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX21hcmtBc1RvdWNoZWQgPSB0aGlzLnBhcmVudEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQ7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9zZXRFcnJvcnMgPSB0aGlzLnBhcmVudEZvcm1Db250cm9sLnNldEVycm9ycztcclxuICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCA9ICh7b25seVNlbGZ9OiB7IG9ubHlTZWxmPzogYm9vbGVhbiB9ID0ge30pOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fbWFya0FzVG91Y2hlZCh7b25seVNlbGZ9KTtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGZ9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzID0gKGVycm9yczogYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX3NldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFwcGx5VGVtcGxhdGVWYWxpZGF0b3JzKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVRlbXBsYXRlVmFsaWRhdG9ycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0VmFsaWRhdG9ycyA9IHRoaXMudmFsaWRhdG9ycztcclxuICAgIGlmIChpbnB1dFZhbGlkYXRvcnMpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICBPYmplY3Qua2V5cyhpbnB1dFZhbGlkYXRvcnMpLmZvckVhY2godiA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2KSB7XHJcbiAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGlucHV0VmFsaWRhdG9ycy5tYXhMZW5ndGggfHwgMCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy5wYXJlbnRGb3JtQ29udHJvbCkge1xyXG4gICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnBhcmVudEZvcm1Db250cm9sLnZhbGlkYXRvcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy52YWxpZGF0b3JzICYmIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5hcHBseVRlbXBsYXRlVmFsaWRhdG9ycygpOyAvLyBjaGFuZ2VzLnZhbGlkYXRvcnMuY3VycmVudFZhbHVlIGFzIFVpVmFsaWRhdG9ycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sKSB7XHJcbiAgICAgIGlzRGlzYWJsZWQgPyB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICBpZiAob2JqICYmIG9iai5lcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIGVycm9yJywgb2JqLCBvYmouZXJyb3IpO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKG9iai5lcnJvciA9PT0gJ2NsZWFyJyA/IG51bGwgOiB7IGN1c3RvbTogb2JqLmVycm9yIH0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbHVlKG9iaik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, Host, HostBinding, Input, Optional, SkipSelf } from '@angular/core';
|
|
2
|
+
import { UntypedFormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "../button/button.component";
|
|
8
|
+
export class SubmitButtonComponent {
|
|
9
|
+
constructor(dialogRef, controlContainer) {
|
|
10
|
+
this.dialogRef = dialogRef;
|
|
11
|
+
this.controlContainer = controlContainer;
|
|
12
|
+
this.busy = false;
|
|
13
|
+
this.disabled = false;
|
|
14
|
+
this.formGroups = [];
|
|
15
|
+
this.label = 'Save';
|
|
16
|
+
this.prependCloseButton = true;
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
if (this.formInvalid === undefined) {
|
|
20
|
+
if (this.formGroups === undefined && this.controlContainer && this.controlContainer.control instanceof UntypedFormGroup) {
|
|
21
|
+
this.formGroups = this.controlContainer.control;
|
|
22
|
+
}
|
|
23
|
+
if (!Array.isArray(this.formGroups)) {
|
|
24
|
+
this.formGroups = [this.formGroups];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
get formsValid() {
|
|
29
|
+
if (this.formInvalid !== undefined) {
|
|
30
|
+
return !this.formInvalid;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return !this.formGroups.find(f => f.invalid);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
doSubmit() {
|
|
37
|
+
this.formGroups.forEach(f => f.markAllAsTouched());
|
|
38
|
+
if (this.formsValid && this.submit) {
|
|
39
|
+
this.submit();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
SubmitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SubmitButtonComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
SubmitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: SubmitButtonComponent, selector: "ui-submit-button", inputs: { busy: "busy", disabled: "disabled", formGroups: "formGroups", label: "label", submit: "submit", formInvalid: "formInvalid", prependCloseButton: "prependCloseButton" }, host: { properties: { "class.with-close": "this.prependCloseButton" } }, ngImport: i0, template: "<ui-button *ngIf=\"prependCloseButton\" [label]=\"'Close'\" (click)=\"dialogRef.close()\"></ui-button>\r\n\r\n<ui-button [busy]=\"busy\"\r\n [disabled]=\"disabled || busy\" [type]=\"'submit'\"\r\n [formInvalid]=\"!formsValid\"\r\n [label]=\"label\" (click)=\"doSubmit()\"></ui-button>\r\n", styles: [":host.with-close{display:flex;justify-content:flex-end;width:100%;margin-left:0!important}:host.with-close ui-button{margin-left:12px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ButtonComponent, selector: "ui-button", inputs: ["type", "matIconPrefix", "label", "disabled", "busy", "kind", "color", "size", "formInvalid"] }] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SubmitButtonComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'ui-submit-button', template: "<ui-button *ngIf=\"prependCloseButton\" [label]=\"'Close'\" (click)=\"dialogRef.close()\"></ui-button>\r\n\r\n<ui-button [busy]=\"busy\"\r\n [disabled]=\"disabled || busy\" [type]=\"'submit'\"\r\n [formInvalid]=\"!formsValid\"\r\n [label]=\"label\" (click)=\"doSubmit()\"></ui-button>\r\n", styles: [":host.with-close{display:flex;justify-content:flex-end;width:100%;margin-left:0!important}:host.with-close ui-button{margin-left:12px}\n"] }]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.ControlContainer, decorators: [{
|
|
49
|
+
type: Optional
|
|
50
|
+
}, {
|
|
51
|
+
type: Host
|
|
52
|
+
}, {
|
|
53
|
+
type: SkipSelf
|
|
54
|
+
}] }]; }, propDecorators: { busy: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], disabled: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], formGroups: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], label: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], submit: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], formInvalid: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], prependCloseButton: [{
|
|
67
|
+
type: HostBinding,
|
|
68
|
+
args: ['class.with-close']
|
|
69
|
+
}, {
|
|
70
|
+
type: Input
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N1Ym1pdC1idXR0b24vc3VibWl0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N1Ym1pdC1idXR0b24vc3VibWl0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFtQixnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFRbEUsTUFBTSxPQUFPLHFCQUFxQjtJQVloQyxZQUFtQixTQUE0QixFQUV6QixnQkFBa0M7UUFGckMsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFFekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVovQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQTBDLEVBQUUsQ0FBQztRQUN2RCxVQUFLLEdBQUcsTUFBTSxDQUFDO1FBS2YsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO0lBSXlCLENBQUM7SUFFN0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRTtnQkFDdkgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2FBQ2pEO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQjthQUFNO1lBQ0wsT0FBTyxDQUFFLElBQUksQ0FBQyxVQUFpQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLFVBQWlDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7O2tIQXhDVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixtVENUbEMsbVVBTUE7MkZER2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBaUJmLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVE7NENBWGhDLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLGtCQUFrQjtzQkFEMUIsV0FBVzt1QkFBQyxrQkFBa0I7O3NCQUM5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgU2tpcFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRyb2xDb250YWluZXIsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktc3VibWl0LWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWyAnLi9zdWJtaXQtYnV0dG9uLmNvbXBvbmVudC5zY3NzJyBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdWJtaXRCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBidXN5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb3JtR3JvdXBzOiBVbnR5cGVkRm9ybUdyb3VwIHwgVW50eXBlZEZvcm1Hcm91cFtdID0gW107XHJcbiAgQElucHV0KCkgbGFiZWwgPSAnU2F2ZSc7XHJcbiAgQElucHV0KCkgc3VibWl0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZm9ybUludmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2l0aC1jbG9zZScpXHJcbiAgQElucHV0KCkgcHJlcGVuZENsb3NlQnV0dG9uID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXHJcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKVxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtSW52YWxpZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1Hcm91cHMgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbnRyb2xDb250YWluZXIgJiYgdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXBzID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2w7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZm9ybUdyb3VwcykpIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cHMgPSBbdGhpcy5mb3JtR3JvdXBzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1zVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5mb3JtSW52YWxpZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiAhdGhpcy5mb3JtSW52YWxpZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAhKHRoaXMuZm9ybUdyb3VwcyBhcyBVbnR5cGVkRm9ybUdyb3VwW10pLmZpbmQoZiA9PiBmLmludmFsaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9TdWJtaXQoKTogdm9pZCB7XHJcbiAgICAodGhpcy5mb3JtR3JvdXBzIGFzIFVudHlwZWRGb3JtR3JvdXBbXSkuZm9yRWFjaChmID0+IGYubWFya0FsbEFzVG91Y2hlZCgpKTtcclxuICAgIGlmICh0aGlzLmZvcm1zVmFsaWQgJiYgdGhpcy5zdWJtaXQpIHtcclxuICAgICAgdGhpcy5zdWJtaXQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPHVpLWJ1dHRvbiAqbmdJZj1cInByZXBlbmRDbG9zZUJ1dHRvblwiIFtsYWJlbF09XCInQ2xvc2UnXCIgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCI+PC91aS1idXR0b24+XHJcblxyXG48dWktYnV0dG9uIFtidXN5XT1cImJ1c3lcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgYnVzeVwiIFt0eXBlXT1cIidzdWJtaXQnXCJcclxuICAgICAgICAgICAgW2Zvcm1JbnZhbGlkXT1cIiFmb3Jtc1ZhbGlkXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCIgKGNsaWNrKT1cImRvU3VibWl0KClcIj48L3VpLWJ1dHRvbj5cclxuIl19
|