@rlucan/ui 16.2.2 → 17.1.2
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/esm2022/lib/action-button/action-button.component.mjs +99 -99
- package/esm2022/lib/action-icon/action-icon.component.mjs +37 -37
- package/esm2022/lib/autocomplete/autocomplete.component.mjs +391 -391
- package/esm2022/lib/avatar/avatar.component.mjs +34 -34
- package/esm2022/lib/button/button.component.mjs +57 -57
- package/esm2022/lib/checkbox/checkbox.component.mjs +39 -39
- package/esm2022/lib/checkbox-group/checkbox-group.component.mjs +91 -91
- package/esm2022/lib/currency/currency.component.mjs +151 -151
- package/esm2022/lib/date/date.component.mjs +68 -68
- package/esm2022/lib/dialog/dialog.component.mjs +37 -37
- package/esm2022/lib/directives/force-visibility/force-visibility.directive.mjs +104 -104
- package/esm2022/lib/editor/editor.component.mjs +119 -119
- package/esm2022/lib/elements/burger/burger.component.mjs +21 -21
- package/esm2022/lib/elements/expander/expander.component.mjs +28 -28
- package/esm2022/lib/elements/validation-message/validation-message.component.mjs +47 -47
- package/esm2022/lib/file/file.component.mjs +166 -145
- package/esm2022/lib/file-uploader/ui-file-uploader.component.mjs +423 -405
- package/esm2022/lib/input/input.component.mjs +265 -265
- package/esm2022/lib/input-autocomplete/input-autocomplete.component.mjs +277 -277
- package/esm2022/lib/layouts/base/ui-base-layout.component.mjs +22 -22
- package/esm2022/lib/layouts/base/ui-base.component.mjs +74 -74
- package/esm2022/lib/layouts/simple/ui-simple-layout.component.mjs +18 -18
- package/esm2022/lib/layouts/simple/ui-simple.component.mjs +166 -166
- package/esm2022/lib/radio/radio.component.mjs +21 -21
- package/esm2022/lib/radio-group/radio-group.component.mjs +53 -53
- package/esm2022/lib/select/select.component.mjs +126 -126
- package/esm2022/lib/services/message-box.service.mjs +112 -112
- package/esm2022/lib/services/toast.service.mjs +23 -23
- package/esm2022/lib/services/ui-file.service.mjs +72 -71
- package/esm2022/lib/services/ui-translate.service.mjs +32 -32
- package/esm2022/lib/submit-button/submit-button.component.mjs +72 -72
- package/esm2022/lib/table/table.component.mjs +97 -97
- package/esm2022/lib/text-area/text-area.component.mjs +46 -46
- package/esm2022/lib/ui.model.mjs +1 -1
- package/esm2022/lib/ui.module.mjs +269 -269
- package/esm2022/public-api.mjs +34 -34
- package/esm2022/rlucan-ui.mjs +4 -4
- package/fesm2022/rlucan-ui.mjs +3329 -3289
- package/fesm2022/rlucan-ui.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/action-button/action-button.component.d.ts +28 -28
- package/lib/action-icon/action-icon.component.d.ts +15 -15
- package/lib/autocomplete/autocomplete.component.d.ts +57 -57
- package/lib/avatar/avatar.component.d.ts +14 -14
- package/lib/button/button.component.d.ts +18 -18
- package/lib/checkbox/checkbox.component.d.ts +15 -15
- package/lib/checkbox-group/checkbox-group.component.d.ts +18 -18
- package/lib/currency/currency.component.d.ts +31 -31
- package/lib/date/date.component.d.ts +24 -24
- package/lib/dialog/dialog.component.d.ts +13 -13
- package/lib/directives/force-visibility/force-visibility.directive.d.ts +22 -22
- package/lib/editor/editor.component.d.ts +24 -24
- package/lib/elements/burger/burger.component.d.ts +9 -9
- package/lib/elements/expander/expander.component.d.ts +10 -10
- package/lib/elements/validation-message/validation-message.component.d.ts +12 -12
- package/lib/file/file.component.d.ts +36 -35
- package/lib/file-uploader/ui-file-uploader.component.d.ts +106 -102
- package/lib/input/input.component.d.ts +42 -42
- package/lib/input-autocomplete/input-autocomplete.component.d.ts +44 -44
- package/lib/layouts/base/ui-base-layout.component.d.ts +8 -8
- package/lib/layouts/base/ui-base.component.d.ts +23 -23
- package/lib/layouts/simple/ui-simple-layout.component.d.ts +8 -8
- package/lib/layouts/simple/ui-simple.component.d.ts +40 -40
- package/lib/radio/radio.component.d.ts +8 -8
- package/lib/radio-group/radio-group.component.d.ts +18 -18
- package/lib/select/select.component.d.ts +37 -37
- package/lib/services/message-box.service.d.ts +58 -58
- package/lib/services/toast.service.d.ts +13 -13
- package/lib/services/ui-file.service.d.ts +37 -33
- package/lib/services/ui-translate.service.d.ts +11 -11
- package/lib/submit-button/submit-button.component.d.ts +21 -21
- package/lib/table/table.component.d.ts +36 -36
- package/lib/text-area/text-area.component.d.ts +18 -18
- package/lib/ui.model.d.ts +2 -2
- package/lib/ui.module.d.ts +59 -59
- package/package.json +14 -14
- package/public-api.d.ts +29 -29
|
@@ -1,166 +1,166 @@
|
|
|
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
|
-
this.componentFormControl.setErrors(this.parentFormControl.errors);
|
|
70
|
-
};
|
|
71
|
-
this.parentFormControl.setErrors = (errors) => {
|
|
72
|
-
this.parentFormControl._setErrors(errors);
|
|
73
|
-
this.parentFormControl._componentFormControl.setErrors(errors);
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
setTimeout(() => this.applyTemplateValidators());
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
applyTemplateValidators() {
|
|
81
|
-
const inputValidators = this.validators;
|
|
82
|
-
if (inputValidators) {
|
|
83
|
-
const validators = [];
|
|
84
|
-
Object.keys(inputValidators).forEach(v => {
|
|
85
|
-
switch (v) {
|
|
86
|
-
case 'required':
|
|
87
|
-
validators.push(Validators.required);
|
|
88
|
-
this.required = true;
|
|
89
|
-
break;
|
|
90
|
-
case 'maxLength':
|
|
91
|
-
validators.push((c) => {
|
|
92
|
-
const requiredLength = inputValidators.maxLength || 0;
|
|
93
|
-
if (this.inputLength() > requiredLength) {
|
|
94
|
-
return { maxlength: { requiredLength } };
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}); // Validators.maxLength(inputValidators.maxLength || 0));
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
if (this.parentFormControl) {
|
|
104
|
-
this.parentFormControl.setValidators(validators);
|
|
105
|
-
this.parentFormControl.updateValueAndValidity({ emitEvent: false });
|
|
106
|
-
this.componentFormControl.setValidators(this.parentFormControl.validator);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.componentFormControl.addValidators(validators);
|
|
110
|
-
this.componentFormControl.updateValueAndValidity();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
ngOnChanges(changes) {
|
|
115
|
-
if (changes.validators && this.componentFormControl) {
|
|
116
|
-
this.applyTemplateValidators(); // changes.validators.currentValue as UiValidators);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
registerOnChange(fn) {
|
|
120
|
-
this.onChange = fn;
|
|
121
|
-
}
|
|
122
|
-
registerOnTouched(fn) {
|
|
123
|
-
this.onTouched = fn;
|
|
124
|
-
}
|
|
125
|
-
setDisabledState(isDisabled) {
|
|
126
|
-
if (this.componentFormControl) {
|
|
127
|
-
isDisabled ? this.componentFormControl.disable({ emitEvent: false }) : this.componentFormControl.enable({ emitEvent: false });
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
writeValue(obj) {
|
|
131
|
-
if (!this.ngControl) {
|
|
132
|
-
if (obj && obj.error) {
|
|
133
|
-
console.log('setting error', obj, obj.error);
|
|
134
|
-
this.componentFormControl.setErrors(obj.error === 'clear' ? null : { custom: obj.error }, { emitEvent: false });
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
this.componentFormControl.setValue(obj);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
registerOnValidatorChange(fn) {
|
|
142
|
-
this.onValidatorChange = fn;
|
|
143
|
-
}
|
|
144
|
-
validate(control) {
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
inputLength() {
|
|
148
|
-
return this.componentFormControl.value ? this.componentFormControl.value.length : 0;
|
|
149
|
-
}
|
|
150
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
151
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
152
|
-
}
|
|
153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
154
|
-
type: Component,
|
|
155
|
-
args: [{
|
|
156
|
-
selector: 'ui-abstract-simple-component',
|
|
157
|
-
template: '** abstract **'
|
|
158
|
-
}]
|
|
159
|
-
}], ctorParameters:
|
|
160
|
-
type: Input
|
|
161
|
-
}], formControl: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], formControlName: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2ltcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbGF5b3V0cy9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQU9MLFVBQVUsRUFBRSxXQUFXLEVBQ3hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNcEMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxlQUFlO0lBYTdELFlBQW1CLFNBQW9CLEVBQUUsZUFBZTtJQUNsQyxtQkFBcUMsSUFBSTtRQUM3RCxLQUFLLEVBQUUsQ0FBQztRQUZTLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUgvRCxRQUFHLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFtQ3ZDLGFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXZCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFckIsc0JBQWlCLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBakMzQixJQUFJLFNBQVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ2hDO2FBQU07WUFDTCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNwRCxvREFBb0Q7WUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLENB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QUFDLEtBQUssRUFBRTtnQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNqSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBYztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBd0I7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDOytHQWxLbUIsaUJBQWlCO21HQUFqQixpQkFBaUIsc05BRjNCLGdCQUFnQjs7NEZBRU4saUJBQWlCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCOytIQUlVLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgTmdDb250cm9sLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcixcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVaUJhc2VDb21wb25lbnQsIFVpVmFsaWRhdG9ycyB9IGZyb20gJy4uL2Jhc2UvdWktYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktYWJzdHJhY3Qtc2ltcGxlLWNvbXBvbmVudCcsXHJcbiAgdGVtcGxhdGU6ICcqKiBhYnN0cmFjdCAqKidcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVpU2ltcGxlQ29tcG9uZW50IGV4dGVuZHMgVWlCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHsgLy8gfSwgVmFsaWRhdG9yIHtcclxuXHJcbiAgQElucHV0KCkgdmFsaWRhdG9yczogVWlWYWxpZGF0b3JzIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTtcclxuXHJcbiAgY29tcG9uZW50Rm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLXR5cGVzXHJcbiAgcGFyZW50Rm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCAmIHsgX2NvbXBvbmVudEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDsgX21hcmtBc1RvdWNoZWQ6IEZ1bmN0aW9uOyBfc2V0RXJyb3JzOiBGdW5jdGlvbiB9O1xyXG5cclxuICBzdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCAvLyA8LS0gb2Jzb2xldGVcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciA9IG51bGwpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbi8vICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgdGhpcy5zdWIuYWRkKHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codiwgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHYpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgLypjb25zb2xlLmVycm9yKGUpOyovXHJcbiAgICAgICAgfVxyXG4gICAgICB9ICkpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4TGVuUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZSAmJiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGggPiAodGhpcy52YWxpZGF0b3JzPy5tYXhMZW5ndGggfHwgMCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMubGFiZWwsIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudG91Y2hlZCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC50b3VjaGVkICYmICEhdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnM7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsaWRhdGlvbkVycm9ycygpOiBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sPy5lcnJvcnM7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSA9ICh2YWwpID0+IHt9O1xyXG5cclxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7fTtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFwcGx5VGVtcGxhdGVWYWxpZGF0b3JzKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2xOYW1lID9cclxuICAgICAgICAodGhpcy5jb250cm9sQ29udGFpbmVyIGFzIEZvcm1Hcm91cERpcmVjdGl2ZSkuY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIDogdGhpcy5mb3JtQ29udHJvbDtcclxuICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5wYXJlbnRGb3JtQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX2NvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAodGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fbWFya0FzVG91Y2hlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9tYXJrQXNUb3VjaGVkID0gdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkO1xyXG4gICAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fc2V0RXJyb3JzID0gdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5zZXRFcnJvcnM7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQgPSAoe29ubHlTZWxmfTogeyBvbmx5U2VsZj86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX21hcmtBc1RvdWNoZWQoe29ubHlTZWxmfSk7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX2NvbXBvbmVudEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuZXJyb3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzID0gKGVycm9yczogYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX3NldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFwcGx5VGVtcGxhdGVWYWxpZGF0b3JzKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVRlbXBsYXRlVmFsaWRhdG9ycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0VmFsaWRhdG9ycyA9IHRoaXMudmFsaWRhdG9ycztcclxuICAgIGlmIChpbnB1dFZhbGlkYXRvcnMpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICBPYmplY3Qua2V5cyhpbnB1dFZhbGlkYXRvcnMpLmZvckVhY2godiA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2KSB7XHJcbiAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRMZW5ndGggPSBpbnB1dFZhbGlkYXRvcnMubWF4TGVuZ3RoIHx8IDA7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRMZW5ndGgoKSA+IHJlcXVpcmVkTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXhsZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGggfX1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pOyAvLyBWYWxpZGF0b3JzLm1heExlbmd0aChpbnB1dFZhbGlkYXRvcnMubWF4TGVuZ3RoIHx8IDApKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5wYXJlbnRGb3JtQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMudmFsaWRhdG9ycyAmJiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlUZW1wbGF0ZVZhbGlkYXRvcnMoKTsgLy8gY2hhbmdlcy52YWxpZGF0b3JzLmN1cnJlbnRWYWx1ZSBhcyBVaVZhbGlkYXRvcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbCkge1xyXG4gICAgICBpc0Rpc2FibGVkID8gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgaWYgKG9iaiAmJiBvYmouZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBlcnJvcicsIG9iaiwgb2JqLmVycm9yKTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldEVycm9ycyhvYmouZXJyb3IgPT09ICdjbGVhcicgPyBudWxsIDogeyBjdXN0b206IG9iai5lcnJvciB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRWYWx1ZShvYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGlucHV0TGVuZ3RoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWUgPyB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
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
|
+
this.componentFormControl.setErrors(this.parentFormControl.errors);
|
|
70
|
+
};
|
|
71
|
+
this.parentFormControl.setErrors = (errors) => {
|
|
72
|
+
this.parentFormControl._setErrors(errors);
|
|
73
|
+
this.parentFormControl._componentFormControl.setErrors(errors);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
setTimeout(() => this.applyTemplateValidators());
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
applyTemplateValidators() {
|
|
81
|
+
const inputValidators = this.validators;
|
|
82
|
+
if (inputValidators) {
|
|
83
|
+
const validators = [];
|
|
84
|
+
Object.keys(inputValidators).forEach(v => {
|
|
85
|
+
switch (v) {
|
|
86
|
+
case 'required':
|
|
87
|
+
validators.push(Validators.required);
|
|
88
|
+
this.required = true;
|
|
89
|
+
break;
|
|
90
|
+
case 'maxLength':
|
|
91
|
+
validators.push((c) => {
|
|
92
|
+
const requiredLength = inputValidators.maxLength || 0;
|
|
93
|
+
if (this.inputLength() > requiredLength) {
|
|
94
|
+
return { maxlength: { requiredLength } };
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}); // Validators.maxLength(inputValidators.maxLength || 0));
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
if (this.parentFormControl) {
|
|
104
|
+
this.parentFormControl.setValidators(validators);
|
|
105
|
+
this.parentFormControl.updateValueAndValidity({ emitEvent: false });
|
|
106
|
+
this.componentFormControl.setValidators(this.parentFormControl.validator);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.componentFormControl.addValidators(validators);
|
|
110
|
+
this.componentFormControl.updateValueAndValidity();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
ngOnChanges(changes) {
|
|
115
|
+
if (changes.validators && this.componentFormControl) {
|
|
116
|
+
this.applyTemplateValidators(); // changes.validators.currentValue as UiValidators);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
registerOnChange(fn) {
|
|
120
|
+
this.onChange = fn;
|
|
121
|
+
}
|
|
122
|
+
registerOnTouched(fn) {
|
|
123
|
+
this.onTouched = fn;
|
|
124
|
+
}
|
|
125
|
+
setDisabledState(isDisabled) {
|
|
126
|
+
if (this.componentFormControl) {
|
|
127
|
+
isDisabled ? this.componentFormControl.disable({ emitEvent: false }) : this.componentFormControl.enable({ emitEvent: false });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
writeValue(obj) {
|
|
131
|
+
if (!this.ngControl) {
|
|
132
|
+
if (obj && obj.error) {
|
|
133
|
+
console.log('setting error', obj, obj.error);
|
|
134
|
+
this.componentFormControl.setErrors(obj.error === 'clear' ? null : { custom: obj.error }, { emitEvent: false });
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.componentFormControl.setValue(obj);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
registerOnValidatorChange(fn) {
|
|
142
|
+
this.onValidatorChange = fn;
|
|
143
|
+
}
|
|
144
|
+
validate(control) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
inputLength() {
|
|
148
|
+
return this.componentFormControl.value ? this.componentFormControl.value.length : 0;
|
|
149
|
+
}
|
|
150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UiSimpleComponent, deps: [{ token: i1.NgControl }, { token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: UiSimpleComponent, selector: "ui-abstract-simple-component", inputs: { validators: "validators", formControl: "formControl", formControlName: "formControlName" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '** abstract **', isInline: true }); }
|
|
152
|
+
}
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UiSimpleComponent, decorators: [{
|
|
154
|
+
type: Component,
|
|
155
|
+
args: [{
|
|
156
|
+
selector: 'ui-abstract-simple-component',
|
|
157
|
+
template: '** abstract **'
|
|
158
|
+
}]
|
|
159
|
+
}], ctorParameters: () => [{ type: i1.NgControl }, { type: i1.ControlContainer }], propDecorators: { validators: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], formControl: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], formControlName: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}] } });
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2ltcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbGF5b3V0cy9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQU9MLFVBQVUsRUFBRSxXQUFXLEVBQ3hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNcEMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxlQUFlO0lBYTdELFlBQW1CLFNBQW9CLEVBQUUsZUFBZTtJQUNsQyxtQkFBcUMsSUFBSTtRQUM3RCxLQUFLLEVBQUUsQ0FBQztRQUZTLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUgvRCxRQUFHLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFtQ3ZDLGFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXZCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFckIsc0JBQWlCLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBakMzQixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNwRCxvREFBb0Q7WUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlB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RUFBRSw4QkFBOEI7b0JBQ3hDLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCOzZHQUlVLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgTmdDb250cm9sLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcixcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVaUJhc2VDb21wb25lbnQsIFVpVmFsaWRhdG9ycyB9IGZyb20gJy4uL2Jhc2UvdWktYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktYWJzdHJhY3Qtc2ltcGxlLWNvbXBvbmVudCcsXHJcbiAgdGVtcGxhdGU6ICcqKiBhYnN0cmFjdCAqKidcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVpU2ltcGxlQ29tcG9uZW50IGV4dGVuZHMgVWlCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHsgLy8gfSwgVmFsaWRhdG9yIHtcclxuXHJcbiAgQElucHV0KCkgdmFsaWRhdG9yczogVWlWYWxpZGF0b3JzIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTtcclxuXHJcbiAgY29tcG9uZW50Rm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLXR5cGVzXHJcbiAgcGFyZW50Rm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCAmIHsgX2NvbXBvbmVudEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDsgX21hcmtBc1RvdWNoZWQ6IEZ1bmN0aW9uOyBfc2V0RXJyb3JzOiBGdW5jdGlvbiB9O1xyXG5cclxuICBzdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCAvLyA8LS0gb2Jzb2xldGVcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciA9IG51bGwpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbi8vICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgdGhpcy5zdWIuYWRkKHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codiwgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHYpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgLypjb25zb2xlLmVycm9yKGUpOyovXHJcbiAgICAgICAgfVxyXG4gICAgICB9ICkpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4TGVuUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZSAmJiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGggPiAodGhpcy52YWxpZGF0b3JzPy5tYXhMZW5ndGggfHwgMCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMubGFiZWwsIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudG91Y2hlZCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC50b3VjaGVkICYmICEhdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnM7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsaWRhdGlvbkVycm9ycygpOiBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sPy5lcnJvcnM7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSA9ICh2YWwpID0+IHt9O1xyXG5cclxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7fTtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFwcGx5VGVtcGxhdGVWYWxpZGF0b3JzKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2xOYW1lID9cclxuICAgICAgICAodGhpcy5jb250cm9sQ29udGFpbmVyIGFzIEZvcm1Hcm91cERpcmVjdGl2ZSkuY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIDogdGhpcy5mb3JtQ29udHJvbDtcclxuICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5wYXJlbnRGb3JtQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX2NvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAodGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fbWFya0FzVG91Y2hlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9tYXJrQXNUb3VjaGVkID0gdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkO1xyXG4gICAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fc2V0RXJyb3JzID0gdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5zZXRFcnJvcnM7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQgPSAoe29ubHlTZWxmfTogeyBvbmx5U2VsZj86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX21hcmtBc1RvdWNoZWQoe29ubHlTZWxmfSk7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX2NvbXBvbmVudEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuZXJyb3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzID0gKGVycm9yczogYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Rm9ybUNvbnRyb2wuX3NldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFwcGx5VGVtcGxhdGVWYWxpZGF0b3JzKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVRlbXBsYXRlVmFsaWRhdG9ycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0VmFsaWRhdG9ycyA9IHRoaXMudmFsaWRhdG9ycztcclxuICAgIGlmIChpbnB1dFZhbGlkYXRvcnMpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICBPYmplY3Qua2V5cyhpbnB1dFZhbGlkYXRvcnMpLmZvckVhY2godiA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2KSB7XHJcbiAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRMZW5ndGggPSBpbnB1dFZhbGlkYXRvcnMubWF4TGVuZ3RoIHx8IDA7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRMZW5ndGgoKSA+IHJlcXVpcmVkTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXhsZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGggfX1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pOyAvLyBWYWxpZGF0b3JzLm1heExlbmd0aChpbnB1dFZhbGlkYXRvcnMubWF4TGVuZ3RoIHx8IDApKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnBhcmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5wYXJlbnRGb3JtQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMudmFsaWRhdG9ycyAmJiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlUZW1wbGF0ZVZhbGlkYXRvcnMoKTsgLy8gY2hhbmdlcy52YWxpZGF0b3JzLmN1cnJlbnRWYWx1ZSBhcyBVaVZhbGlkYXRvcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbCkge1xyXG4gICAgICBpc0Rpc2FibGVkID8gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgaWYgKG9iaiAmJiBvYmouZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBlcnJvcicsIG9iaiwgb2JqLmVycm9yKTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldEVycm9ycyhvYmouZXJyb3IgPT09ICdjbGVhcicgPyBudWxsIDogeyBjdXN0b206IG9iai5lcnJvciB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRWYWx1ZShvYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGlucHV0TGVuZ3RoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWUgPyB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/material/radio";
|
|
4
|
-
export class RadioComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.color = 'primary';
|
|
7
|
-
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: 'ui-radio', template: "<mat-radio-button [value]=\"value\" [color]=\"color\">\r\n {{label}}\r\n</mat-radio-button>\r\n" }]
|
|
14
|
-
}], propDecorators: { value: [{
|
|
15
|
-
type: Input
|
|
16
|
-
}], label: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}], color: [{
|
|
19
|
-
type: Input
|
|
20
|
-
}] } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/radio";
|
|
4
|
+
export class RadioComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.color = 'primary';
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: RadioComponent, selector: "ui-radio", inputs: { value: "value", label: "label", color: "color" }, ngImport: i0, template: "<mat-radio-button [value]=\"value\" [color]=\"color\">\r\n {{label}}\r\n</mat-radio-button>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RadioComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'ui-radio', template: "<mat-radio-button [value]=\"value\" [color]=\"color\">\r\n {{label}}\r\n</mat-radio-button>\r\n" }]
|
|
14
|
+
}], propDecorators: { value: [{
|
|
15
|
+
type: Input
|
|
16
|
+
}], label: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}], color: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}] } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPakQsTUFBTSxPQUFPLGNBQWM7SUFMM0I7UUFTVyxVQUFLLEdBQWtDLFNBQVMsQ0FBQTtLQUsxRDs4R0FUWSxjQUFjO2tHQUFkLGNBQWMsNEdDUDNCLGtHQUdBOzsyRkRJYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFVBQVU7OEJBTVgsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLXJhZGlvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJhZGlvQ29tcG9uZW50IHsgLy8gZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlO1xyXG4gIEBJbnB1dCgpIGxhYmVsO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJyA9ICdwcmltYXJ5J1xyXG5cclxuICAvLyBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xyXG4gIC8vICAgc3VwZXIobmdDb250cm9sKTtcclxuICAvLyB9XHJcbn1cclxuIiwiPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cInZhbHVlXCIgW2NvbG9yXT1cImNvbG9yXCI+XHJcbiAge3tsYWJlbH19XHJcbjwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuIl19
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { Component, Input, Optional, Self } from '@angular/core';
|
|
2
|
-
import { UiSimpleComponent } from '../layouts/simple/ui-simple.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@angular/material/radio";
|
|
7
|
-
import * as i4 from "../layouts/simple/ui-simple-layout.component";
|
|
8
|
-
export class RadioGroupComponent extends UiSimpleComponent {
|
|
9
|
-
constructor(control) {
|
|
10
|
-
super(control);
|
|
11
|
-
this.control = control;
|
|
12
|
-
this.id = Math.round(Math.random() * 999999);
|
|
13
|
-
this.displayAttribute = 'name';
|
|
14
|
-
this.groupName = 'radio-' + this.id;
|
|
15
|
-
this.optionEnabled = (option) => true;
|
|
16
|
-
}
|
|
17
|
-
// ngOnInit(): void {
|
|
18
|
-
// super.ngOnInit();
|
|
19
|
-
// }
|
|
20
|
-
ngOnChanges(changes) {
|
|
21
|
-
super.ngOnChanges(changes);
|
|
22
|
-
if (changes.options) {
|
|
23
|
-
this.cbxs = [];
|
|
24
|
-
changes.options.currentValue.forEach(cv => {
|
|
25
|
-
this.cbxs.push({
|
|
26
|
-
value: this.valueAttribute ? cv[this.valueAttribute] : cv,
|
|
27
|
-
label: cv[this.displayAttribute]
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
34
|
-
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
36
|
-
type: Component,
|
|
37
|
-
args: [{ selector: 'ui-radio-group', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-radio-group [formControl]=\"componentFormControl\" [name]=\"groupName\" [class]=\"size\">\r\n\r\n <mat-radio-button *ngFor=\"let cbx of cbxs\" [value]=\"cbx.value\" >{{cbx.label}}</mat-radio-button>\r\n\r\n </mat-radio-group>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host mat-radio-group{display:flex;flex-direction:column}:host mat-radio-button{margin-top:.2em;margin-bottom:.2em}\n"] }]
|
|
38
|
-
}], ctorParameters:
|
|
39
|
-
type: Optional
|
|
40
|
-
}, {
|
|
41
|
-
type: Self
|
|
42
|
-
}] }]
|
|
43
|
-
type: Input
|
|
44
|
-
}], displayAttribute: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], valueAttribute: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], groupName: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}], optionEnabled: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input, Optional, Self } from '@angular/core';
|
|
2
|
+
import { UiSimpleComponent } from '../layouts/simple/ui-simple.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/material/radio";
|
|
7
|
+
import * as i4 from "../layouts/simple/ui-simple-layout.component";
|
|
8
|
+
export class RadioGroupComponent extends UiSimpleComponent {
|
|
9
|
+
constructor(control) {
|
|
10
|
+
super(control);
|
|
11
|
+
this.control = control;
|
|
12
|
+
this.id = Math.round(Math.random() * 999999);
|
|
13
|
+
this.displayAttribute = 'name';
|
|
14
|
+
this.groupName = 'radio-' + this.id;
|
|
15
|
+
this.optionEnabled = (option) => true;
|
|
16
|
+
}
|
|
17
|
+
// ngOnInit(): void {
|
|
18
|
+
// super.ngOnInit();
|
|
19
|
+
// }
|
|
20
|
+
ngOnChanges(changes) {
|
|
21
|
+
super.ngOnChanges(changes);
|
|
22
|
+
if (changes.options) {
|
|
23
|
+
this.cbxs = [];
|
|
24
|
+
changes.options.currentValue.forEach(cv => {
|
|
25
|
+
this.cbxs.push({
|
|
26
|
+
value: this.valueAttribute ? cv[this.valueAttribute] : cv,
|
|
27
|
+
label: cv[this.displayAttribute]
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RadioGroupComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: RadioGroupComponent, selector: "ui-radio-group", inputs: { options: "options", displayAttribute: "displayAttribute", valueAttribute: "valueAttribute", groupName: "groupName", optionEnabled: "optionEnabled" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-radio-group [formControl]=\"componentFormControl\" [name]=\"groupName\" [class]=\"size\">\r\n\r\n <mat-radio-button *ngFor=\"let cbx of cbxs\" [value]=\"cbx.value\" >{{cbx.label}}</mat-radio-button>\r\n\r\n </mat-radio-group>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host mat-radio-group{display:flex;flex-direction:column}:host mat-radio-button{margin-top:.2em;margin-bottom:.2em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i4.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RadioGroupComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'ui-radio-group', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-radio-group [formControl]=\"componentFormControl\" [name]=\"groupName\" [class]=\"size\">\r\n\r\n <mat-radio-button *ngFor=\"let cbx of cbxs\" [value]=\"cbx.value\" >{{cbx.label}}</mat-radio-button>\r\n\r\n </mat-radio-group>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host mat-radio-group{display:flex;flex-direction:column}:host mat-radio-button{margin-top:.2em;margin-bottom:.2em}\n"] }]
|
|
38
|
+
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
39
|
+
type: Optional
|
|
40
|
+
}, {
|
|
41
|
+
type: Self
|
|
42
|
+
}] }], propDecorators: { options: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], displayAttribute: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], valueAttribute: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], groupName: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], optionEnabled: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBZTFFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxpQkFBaUI7SUFheEQsWUFBdUMsT0FBa0I7UUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRHNCLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFWekQsT0FBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRy9CLHFCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUcxQixjQUFTLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBSS9DLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLElBQUk7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pELEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2lCQUNqQyxDQUFDLENBQUE7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOzhHQWhDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixrUUNoQmhDLHNUQVNBOzsyRkRPYSxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0UsZ0JBQWdCOzswQkF3QmIsUUFBUTs7MEJBQUksSUFBSTt5Q0FScEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPcHRpb25hbCwgU2VsZiwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVaVNpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dHMvc2ltcGxlL3VpLXNpbXBsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLXJhZGlvLWdyb3VwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gcHJvdmlkZXJzOiBbXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgLy8gICAgIG11bHRpOiB0cnVlLFxyXG4gIC8vICAgICB1c2VFeGlzdGluZzogQ2hlY2tib3hHcm91cENvbXBvbmVudFxyXG4gIC8vICAgfVxyXG4gIC8vIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJhZGlvR3JvdXBDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIC8qT25Jbml0LCAqL09uQ2hhbmdlcyB7XHJcblxyXG4gIGNieHM6IGFueTtcclxuICBpZCA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk5OTk5OSk7XHJcblxyXG4gIEBJbnB1dCgpIG9wdGlvbnM7XHJcbiAgQElucHV0KCkgZGlzcGxheUF0dHJpYnV0ZSA9ICduYW1lJztcclxuICBASW5wdXQoKSB2YWx1ZUF0dHJpYnV0ZTtcclxuXHJcbiAgQElucHV0KCkgZ3JvdXBOYW1lID0gJ3JhZGlvLScgKyB0aGlzLmlkO1xyXG5cclxuICBASW5wdXQoKSBvcHRpb25FbmFibGVkID0gKG9wdGlvbjogYW55KSA9PiB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wpIHtcclxuICAgIHN1cGVyKGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICBpZiAoY2hhbmdlcy5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuY2J4cyA9IFtdO1xyXG4gICAgICBjaGFuZ2VzLm9wdGlvbnMuY3VycmVudFZhbHVlLmZvckVhY2goY3YgPT4ge1xyXG4gICAgICAgIHRoaXMuY2J4cy5wdXNoKHtcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlQXR0cmlidXRlID8gY3ZbdGhpcy52YWx1ZUF0dHJpYnV0ZV0gOiBjdixcclxuICAgICAgICAgIGxhYmVsOiBjdlt0aGlzLmRpc3BsYXlBdHRyaWJ1dGVdXHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgLy8gICBpZiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbCkge1xyXG4gIC8vICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbHVlKG9iaik7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcbiIsIjx1aS1zaW1wbGUtbGF5b3V0IFtjdHhdPVwidGhpc1wiPlxyXG5cclxuICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbF09XCJjb21wb25lbnRGb3JtQ29udHJvbFwiIFtuYW1lXT1cImdyb3VwTmFtZVwiIFtjbGFzc109XCJzaXplXCI+XHJcblxyXG4gICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGNieCBvZiBjYnhzXCIgW3ZhbHVlXT1cImNieC52YWx1ZVwiID57e2NieC5sYWJlbH19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG5cclxuICA8L21hdC1yYWRpby1ncm91cD5cclxuXHJcbjwvdWktc2ltcGxlLWxheW91dD5cclxuIl19
|