@datarailsshared/datarailsshared 1.3.49 → 1.3.51
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/_datarailsshared.styles.css +3 -3
- package/assets/styles/_styles.scss +2 -2
- package/assets/styles/img/default-avatar.svg +5 -5
- package/bundles/datarailsshared-datarailsshared.umd.js +3984 -3995
- package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
- package/datarailsshared-datarailsshared-1.3.51.tgz +0 -0
- package/datarailsshared-datarailsshared.d.ts +9 -9
- package/datarailsshared-datarailsshared.metadata.json +1 -1
- package/esm2015/datarailsshared-datarailsshared.js +9 -9
- package/esm2015/lib/date-tags/date-tag.component.js +70 -70
- package/esm2015/lib/date-tags/date-tag.module.js +50 -50
- package/esm2015/lib/date-tags/day-tag/day-tag.component.js +81 -81
- package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +143 -143
- package/esm2015/lib/date-tags/month-tag/month-tag.component.js +87 -87
- package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +101 -101
- package/esm2015/lib/date-tags/week-tag/week-tag.component.js +124 -124
- package/esm2015/lib/date-tags/year-tag/year-tag.component.js +93 -93
- package/esm2015/lib/dr-accordion/accordion-item-body.component.js +57 -57
- package/esm2015/lib/dr-accordion/accordion-item-header.component.js +79 -79
- package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -123
- package/esm2015/lib/dr-accordion/accordion.component.js +43 -43
- package/esm2015/lib/dr-accordion/accordion.module.js +23 -23
- package/esm2015/lib/dr-avatar/dr-avatar.component.js +42 -42
- package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -26
- package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +15 -15
- package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -12
- package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +97 -97
- package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +110 -110
- package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +89 -89
- package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -34
- package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -24
- package/esm2015/lib/dr-inputs/button/button.component.js +80 -80
- package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +63 -63
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -47
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +183 -186
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +41 -41
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +129 -129
- package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +185 -185
- package/esm2015/lib/dr-inputs/dr-inputs.module.js +51 -51
- package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +31 -31
- package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +90 -90
- package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +64 -64
- package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +56 -56
- package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +64 -64
- package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +164 -164
- package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -20
- package/esm2015/lib/dr-popover/dr-popover.component.js +77 -77
- package/esm2015/lib/dr-popover/dr-popover.directive.js +72 -72
- package/esm2015/lib/dr-popover/dr-popover.module.js +23 -23
- package/esm2015/lib/dr-popover/dr-popover.service.js +102 -102
- package/esm2015/lib/dr-spinner/dr-spinner.component.js +29 -29
- package/esm2015/lib/dr-spinner/dr-spinner.directive.js +53 -53
- package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -18
- package/esm2015/lib/dr-tabs/dr-tab.component.js +23 -23
- package/esm2015/lib/dr-tabs/dr-tabs.component.js +28 -28
- package/esm2015/lib/dr-tabs/dr-tabs.module.js +30 -30
- package/esm2015/lib/dr-tags/dr-tag.component.js +54 -54
- package/esm2015/lib/dr-tags/dr-tag.module.js +22 -22
- package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +30 -30
- package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +102 -102
- package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +23 -23
- package/esm2015/lib/list-tags/list-tag.component.js +41 -41
- package/esm2015/lib/list-tags/list-tag.module.js +29 -29
- package/esm2015/lib/models/constants.js +97 -97
- package/esm2015/lib/models/datePicker.js +40 -40
- package/esm2015/lib/models/dropdown.js +2 -2
- package/esm2015/lib/models/popover.js +27 -27
- package/esm2015/lib/models/serverTags.js +2 -2
- package/esm2015/public-api.js +57 -57
- package/fesm2015/datarailsshared-datarailsshared.js +3365 -3368
- package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
- package/lib/date-tags/date-tag.component.d.ts +27 -27
- package/lib/date-tags/date-tag.module.d.ts +4 -4
- package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -12
- package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +21 -21
- package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -14
- package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +17 -17
- package/lib/date-tags/week-tag/week-tag.component.d.ts +19 -19
- package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -14
- package/lib/dr-accordion/accordion-item-body.component.d.ts +11 -11
- package/lib/dr-accordion/accordion-item-header.component.d.ts +16 -16
- package/lib/dr-accordion/accordion-item.component.d.ts +53 -53
- package/lib/dr-accordion/accordion.component.d.ts +19 -19
- package/lib/dr-accordion/accordion.module.d.ts +2 -2
- package/lib/dr-avatar/dr-avatar.component.d.ts +10 -10
- package/lib/dr-avatar/dr-avatar.module.d.ts +2 -2
- package/lib/dr-avatar/dr-avatar.pipe.d.ts +4 -4
- package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +5 -5
- package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +12 -12
- package/lib/dr-dropdown/dr-dropdown.component.d.ts +26 -26
- package/lib/dr-dropdown/dr-dropdown.directive.d.ts +23 -23
- package/lib/dr-dropdown/dr-dropdown.module.d.ts +2 -2
- package/lib/dr-dropdown/dr-dropdown.service.d.ts +11 -11
- package/lib/dr-inputs/button/button.component.d.ts +21 -21
- package/lib/dr-inputs/checkbox/checkbox.component.d.ts +20 -20
- package/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.d.ts +10 -10
- package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +54 -54
- package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +12 -12
- package/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +41 -41
- package/lib/dr-inputs/dr-input/dr-input.component.d.ts +58 -58
- package/lib/dr-inputs/dr-inputs.module.d.ts +2 -2
- package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +11 -11
- package/lib/dr-inputs/dr-select/dr-select.component.d.ts +38 -38
- package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +23 -23
- package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +19 -19
- package/lib/dr-inputs/radio-button/radio-button.component.d.ts +21 -21
- package/lib/dr-inputs/radio-button/radio-group.component.d.ts +39 -39
- package/lib/dr-popover/dr-popover-ref.d.ts +16 -16
- package/lib/dr-popover/dr-popover.component.d.ts +26 -26
- package/lib/dr-popover/dr-popover.directive.d.ts +26 -26
- package/lib/dr-popover/dr-popover.module.d.ts +2 -2
- package/lib/dr-popover/dr-popover.service.d.ts +17 -17
- package/lib/dr-spinner/dr-spinner.component.d.ts +10 -10
- package/lib/dr-spinner/dr-spinner.directive.d.ts +15 -15
- package/lib/dr-spinner/dr-spinner.module.d.ts +2 -2
- package/lib/dr-tabs/dr-tab.component.d.ts +8 -8
- package/lib/dr-tabs/dr-tabs.component.d.ts +11 -11
- package/lib/dr-tabs/dr-tabs.module.d.ts +2 -2
- package/lib/dr-tags/dr-tag.component.d.ts +15 -15
- package/lib/dr-tags/dr-tag.module.d.ts +2 -2
- package/lib/dr-tooltip/dr-tooltip.component.d.ts +16 -16
- package/lib/dr-tooltip/dr-tooltip.directive.d.ts +23 -23
- package/lib/dr-tooltip/dr-tooltip.module.d.ts +2 -2
- package/lib/list-tags/list-tag.component.d.ts +14 -14
- package/lib/list-tags/list-tag.module.d.ts +2 -2
- package/lib/models/constants.d.ts +87 -87
- package/lib/models/datePicker.d.ts +25 -25
- package/lib/models/dropdown.d.ts +48 -48
- package/lib/models/popover.d.ts +32 -32
- package/lib/models/serverTags.d.ts +28 -28
- package/package.json +1 -1
- package/public-api.d.ts +55 -55
- package/datarailsshared-datarailsshared-1.3.49.tgz +0 -0
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
export class RadioButtonComponent {
|
|
4
|
-
constructor(cdr) {
|
|
5
|
-
this.cdr = cdr;
|
|
6
|
-
this.valueChange = new EventEmitter();
|
|
7
|
-
this.onChange = (onchanges => { });
|
|
8
|
-
this.onTouched = () => { };
|
|
9
|
-
}
|
|
10
|
-
get value() {
|
|
11
|
-
return this._value;
|
|
12
|
-
}
|
|
13
|
-
registerOnChange(fn) {
|
|
14
|
-
this.onChange = fn;
|
|
15
|
-
}
|
|
16
|
-
registerOnTouched(fn) {
|
|
17
|
-
this.onTouched = fn;
|
|
18
|
-
}
|
|
19
|
-
writeValue(value) {
|
|
20
|
-
this.modelValue = value;
|
|
21
|
-
this.cdr.markForCheck();
|
|
22
|
-
}
|
|
23
|
-
toggleChange(event) {
|
|
24
|
-
if (event.target.checked) {
|
|
25
|
-
this.modelValue = this.value;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
valueChanged(event) {
|
|
29
|
-
this.onChange(this.modelValue);
|
|
30
|
-
this.valueChange.emit(this.value);
|
|
31
|
-
}
|
|
32
|
-
_setName(name) {
|
|
33
|
-
this.name = name;
|
|
34
|
-
this.cdr.markForCheck();
|
|
35
|
-
}
|
|
36
|
-
_markForCheck() {
|
|
37
|
-
this.cdr.markForCheck();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
RadioButtonComponent.decorators = [
|
|
41
|
-
{ type: Component, args: [{
|
|
42
|
-
selector: 'dr-radio-button',
|
|
43
|
-
template: "<label>\
|
|
44
|
-
providers: [
|
|
45
|
-
{
|
|
46
|
-
provide: NG_VALUE_ACCESSOR,
|
|
47
|
-
useExisting: RadioButtonComponent,
|
|
48
|
-
multi: true
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
52
|
-
styles: [":host{display:flex;line-height:22px}label input[type=radio].radiobox+span{vertical-align:middle;line-height:20px}input+span,input+span:after,input+span:before{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}input{visibility:hidden;position:absolute;width:18px;height:18px}label input+span{position:relative;z-index:19;display:inline-block;margin:0 5px 0 0;line-height:17px;min-height:14px;min-width:14px}label input+span:hover{cursor:pointer}label input+span:before{content:\"\";font-size:14px;border-radius:0;display:inline-block;text-align:center;vertical-align:middle;padding:1px;height:12px;line-height:13px;width:12px;margin-right:5px;border:1px solid #8F929E;background-color:#fff;font-weight:normal;margin-top:-1px}label input+span:before{border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%}label input:checked+span:before,label:hover input:checked+span:before{background:#FFFFFF;border-color:#4646ce;color:#4646ce}label input:checked+span:before,label:hover input:checked+span:before{font-family:\"DataRails\"!important;background-image:url('data:image/svg+xml; utf8, <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5\" cy=\"5\" r=\"4.5\" fill=\"%234646CE\"/></svg> ');background-repeat:no-repeat;background-position:center;color:#4646ce}label input:disabled+span:before{border-color:#8f929e}label input[disabled]:checked+span:before{content:url('data:image/svg+xml; utf8, <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5\" cy=\"5\" r=\"4.5\" fill=\"%238F929E\"/></svg> ');border-color:#8f929e}label span:hover:before{border-color:#4e566c}\n"]
|
|
53
|
-
},] }
|
|
54
|
-
];
|
|
55
|
-
RadioButtonComponent.ctorParameters = () => [
|
|
56
|
-
{ type: ChangeDetectorRef }
|
|
57
|
-
];
|
|
58
|
-
RadioButtonComponent.propDecorators = {
|
|
59
|
-
disabled: [{ type: Input }],
|
|
60
|
-
name: [{ type: Input }],
|
|
61
|
-
_value: [{ type: Input, args: ['value',] }],
|
|
62
|
-
valueChange: [{ type: Output }]
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
export class RadioButtonComponent {
|
|
4
|
+
constructor(cdr) {
|
|
5
|
+
this.cdr = cdr;
|
|
6
|
+
this.valueChange = new EventEmitter();
|
|
7
|
+
this.onChange = (onchanges => { });
|
|
8
|
+
this.onTouched = () => { };
|
|
9
|
+
}
|
|
10
|
+
get value() {
|
|
11
|
+
return this._value;
|
|
12
|
+
}
|
|
13
|
+
registerOnChange(fn) {
|
|
14
|
+
this.onChange = fn;
|
|
15
|
+
}
|
|
16
|
+
registerOnTouched(fn) {
|
|
17
|
+
this.onTouched = fn;
|
|
18
|
+
}
|
|
19
|
+
writeValue(value) {
|
|
20
|
+
this.modelValue = value;
|
|
21
|
+
this.cdr.markForCheck();
|
|
22
|
+
}
|
|
23
|
+
toggleChange(event) {
|
|
24
|
+
if (event.target.checked) {
|
|
25
|
+
this.modelValue = this.value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
valueChanged(event) {
|
|
29
|
+
this.onChange(this.modelValue);
|
|
30
|
+
this.valueChange.emit(this.value);
|
|
31
|
+
}
|
|
32
|
+
_setName(name) {
|
|
33
|
+
this.name = name;
|
|
34
|
+
this.cdr.markForCheck();
|
|
35
|
+
}
|
|
36
|
+
_markForCheck() {
|
|
37
|
+
this.cdr.markForCheck();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
RadioButtonComponent.decorators = [
|
|
41
|
+
{ type: Component, args: [{
|
|
42
|
+
selector: 'dr-radio-button',
|
|
43
|
+
template: "<label>\n <input\n type=\"radio\"\n [name]=\"name\"\n [value]=\"value\"\n (change)=\"valueChanged(value)\"\n [(ngModel)]=\"modelValue\"\n (click)=\"toggleChange($event)\">\n <span>\n <ng-content></ng-content>\n </span>\n</label>\n",
|
|
44
|
+
providers: [
|
|
45
|
+
{
|
|
46
|
+
provide: NG_VALUE_ACCESSOR,
|
|
47
|
+
useExisting: RadioButtonComponent,
|
|
48
|
+
multi: true
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
52
|
+
styles: [":host{display:flex;line-height:22px}label input[type=radio].radiobox+span{vertical-align:middle;line-height:20px}input+span,input+span:after,input+span:before{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}input{visibility:hidden;position:absolute;width:18px;height:18px}label input+span{position:relative;z-index:19;display:inline-block;margin:0 5px 0 0;line-height:17px;min-height:14px;min-width:14px}label input+span:hover{cursor:pointer}label input+span:before{content:\"\";font-size:14px;border-radius:0;display:inline-block;text-align:center;vertical-align:middle;padding:1px;height:12px;line-height:13px;width:12px;margin-right:5px;border:1px solid #8F929E;background-color:#fff;font-weight:normal;margin-top:-1px}label input+span:before{border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%}label input:checked+span:before,label:hover input:checked+span:before{background:#FFFFFF;border-color:#4646ce;color:#4646ce}label input:checked+span:before,label:hover input:checked+span:before{font-family:\"DataRails\"!important;background-image:url('data:image/svg+xml; utf8, <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5\" cy=\"5\" r=\"4.5\" fill=\"%234646CE\"/></svg> ');background-repeat:no-repeat;background-position:center;color:#4646ce}label input:disabled+span:before{border-color:#8f929e}label input[disabled]:checked+span:before{content:url('data:image/svg+xml; utf8, <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5\" cy=\"5\" r=\"4.5\" fill=\"%238F929E\"/></svg> ');border-color:#8f929e}label span:hover:before{border-color:#4e566c}\n"]
|
|
53
|
+
},] }
|
|
54
|
+
];
|
|
55
|
+
RadioButtonComponent.ctorParameters = () => [
|
|
56
|
+
{ type: ChangeDetectorRef }
|
|
57
|
+
];
|
|
58
|
+
RadioButtonComponent.propDecorators = {
|
|
59
|
+
disabled: [{ type: Input }],
|
|
60
|
+
name: [{ type: Input }],
|
|
61
|
+
_value: [{ type: Input, args: ['value',] }],
|
|
62
|
+
valueChange: [{ type: Output }]
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFBRSxNQUFNLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZXpFLE1BQU0sT0FBTyxvQkFBb0I7SUFlL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFYaEMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVE5RCxhQUFRLEdBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFbUIsQ0FBQztJQVA5QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU9ELGdCQUFnQixDQUFDLEVBQUU7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNELGlCQUFpQixDQUFDLEVBQUU7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQiw0UUFBNEM7Z0JBRTVDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsb0JBQW9CO3dCQUNqQyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQW5CQyxpQkFBaUI7Ozt1QkFxQmhCLEtBQUs7bUJBQ0wsS0FBSztxQkFDTCxLQUFLLFNBQUMsT0FBTzswQkFDYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RyLXJhZGlvLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUmFkaW9CdXR0b25Db21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbW9kZWxWYWx1ZTogYW55O1xuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBvbkNoYW5nZTogYW55ID0gKG9uY2hhbmdlcyA9PiB7fSk7XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIHRvZ2dsZUNoYW5nZShldmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5tb2RlbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cbiAgdmFsdWVDaGFuZ2VkKGV2ZW50KSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLm1vZGVsVmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIF9zZXROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgX21hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|
|
@@ -1,164 +1,164 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, PLATFORM_ID, Inject, ElementRef, } from '@angular/core';
|
|
2
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { from, fromEvent, merge, Subject } from 'rxjs';
|
|
5
|
-
import { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
|
6
|
-
import { RadioButtonComponent } from './radio-button.component';
|
|
7
|
-
import { DOCUMENT } from '@angular/common';
|
|
8
|
-
export class RadioGroupComponent {
|
|
9
|
-
constructor(hostElement, platformId, document) {
|
|
10
|
-
this.hostElement = hostElement;
|
|
11
|
-
this.platformId = platformId;
|
|
12
|
-
this.document = document;
|
|
13
|
-
this.destroy$ = new Subject();
|
|
14
|
-
this.valueChange = new EventEmitter();
|
|
15
|
-
this.onChange = (value) => { };
|
|
16
|
-
this.onTouched = () => { };
|
|
17
|
-
}
|
|
18
|
-
get value() {
|
|
19
|
-
return this._value;
|
|
20
|
-
}
|
|
21
|
-
set value(value) {
|
|
22
|
-
this._value = value;
|
|
23
|
-
this.updateValues();
|
|
24
|
-
}
|
|
25
|
-
get name() {
|
|
26
|
-
return this._name;
|
|
27
|
-
}
|
|
28
|
-
set name(name) {
|
|
29
|
-
this._name = name;
|
|
30
|
-
this.updateNames();
|
|
31
|
-
}
|
|
32
|
-
get disabled() {
|
|
33
|
-
return this._disabled;
|
|
34
|
-
}
|
|
35
|
-
set disabled(disabled) {
|
|
36
|
-
this._disabled = !!disabled;
|
|
37
|
-
this.updateDisabled();
|
|
38
|
-
}
|
|
39
|
-
ngAfterContentInit() {
|
|
40
|
-
// In case option 'name' isn't set on dr-radio component,
|
|
41
|
-
// we need to set it's name right away, so it won't overlap with options
|
|
42
|
-
// without names from other radio groups. Otherwise they all would have
|
|
43
|
-
// same name and will be considered as options from one group so only the
|
|
44
|
-
// last option will stay selected.
|
|
45
|
-
this.updateNames();
|
|
46
|
-
this.radios.changes
|
|
47
|
-
.pipe(startWith(this.radios),
|
|
48
|
-
// 'changes' emit during change detection run and we can't update
|
|
49
|
-
// option properties right of since they already was initialized.
|
|
50
|
-
// Instead we schedule microtask to update radios after change detection
|
|
51
|
-
// run is finished and trigger one more change detection run.
|
|
52
|
-
switchMap((radios) => from(Promise.resolve(radios))), takeUntil(this.destroy$))
|
|
53
|
-
.subscribe(() => this.updateAndSubscribeToRadios());
|
|
54
|
-
}
|
|
55
|
-
ngOnDestroy() {
|
|
56
|
-
this.destroy$.next();
|
|
57
|
-
this.destroy$.complete();
|
|
58
|
-
}
|
|
59
|
-
registerOnChange(fn) {
|
|
60
|
-
this.onChange = fn;
|
|
61
|
-
}
|
|
62
|
-
registerOnTouched(fn) {
|
|
63
|
-
this.onTouched = fn;
|
|
64
|
-
}
|
|
65
|
-
writeValue(value) {
|
|
66
|
-
this.value = value;
|
|
67
|
-
}
|
|
68
|
-
setDisabledState(isDisabled) {
|
|
69
|
-
this.disabled = isDisabled;
|
|
70
|
-
}
|
|
71
|
-
updateAndSubscribeToRadios() {
|
|
72
|
-
this.updateValueFromCheckedOption();
|
|
73
|
-
this.updateNames();
|
|
74
|
-
this.updateValues();
|
|
75
|
-
this.updateDisabled();
|
|
76
|
-
this.subscribeOnRadiosValueChange();
|
|
77
|
-
this.subscribeOnRadiosBlur();
|
|
78
|
-
}
|
|
79
|
-
updateNames() {
|
|
80
|
-
if (this.radios) {
|
|
81
|
-
this.radios.forEach((radio) => radio._setName(this.name));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
updateValues() {
|
|
85
|
-
this.updateAndMarkForCheckRadios((radio) => {
|
|
86
|
-
if (radio.value === this.value) {
|
|
87
|
-
radio.modelValue = radio.value;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
updateDisabled() {
|
|
92
|
-
if (typeof this.disabled !== 'undefined') {
|
|
93
|
-
this.updateAndMarkForCheckRadios((radio) => radio.disabled = this.disabled);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
subscribeOnRadiosValueChange() {
|
|
97
|
-
if (!this.radios || !this.radios.length) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
merge(...this.radios.map((radio) => radio.valueChange))
|
|
101
|
-
.pipe(takeUntil(merge(this.radios.changes, this.destroy$)))
|
|
102
|
-
.subscribe((value) => {
|
|
103
|
-
this.writeValue(value);
|
|
104
|
-
this.propagateValue(value);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
propagateValue(value) {
|
|
108
|
-
this.valueChange.emit(value);
|
|
109
|
-
this.onChange(value);
|
|
110
|
-
}
|
|
111
|
-
subscribeOnRadiosBlur() {
|
|
112
|
-
const hasNoRadios = !this.radios || !this.radios.length;
|
|
113
|
-
if (!isPlatformBrowser(this.platformId) || hasNoRadios) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const hostElement = this.hostElement.nativeElement;
|
|
117
|
-
fromEvent(hostElement, 'focusin')
|
|
118
|
-
.pipe(filter(event => hostElement.contains(event.target)), switchMap(() => merge(fromEvent(this.document, 'focusin'), fromEvent(this.document, 'click'))), filter(event => !hostElement.contains(event.target)), takeUntil(merge(this.radios.changes, this.destroy$)))
|
|
119
|
-
.subscribe(() => this.onTouched());
|
|
120
|
-
}
|
|
121
|
-
updateAndMarkForCheckRadios(updateFn) {
|
|
122
|
-
if (this.radios) {
|
|
123
|
-
this.radios.forEach((radio) => {
|
|
124
|
-
updateFn(radio);
|
|
125
|
-
radio._markForCheck();
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
updateValueFromCheckedOption() {
|
|
130
|
-
const checkedRadio = this.radios.find((radio) => radio.modelValue);
|
|
131
|
-
const isValueMissing = this.value === undefined || this.value === null;
|
|
132
|
-
if (checkedRadio && isValueMissing && checkedRadio.value !== this.value) {
|
|
133
|
-
this.value = checkedRadio.value;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
RadioGroupComponent.decorators = [
|
|
138
|
-
{ type: Component, args: [{
|
|
139
|
-
selector: 'dr-radio-group',
|
|
140
|
-
template: `
|
|
141
|
-
<ng-content select="dr-radio-button"></ng-content>`,
|
|
142
|
-
providers: [
|
|
143
|
-
{
|
|
144
|
-
provide: NG_VALUE_ACCESSOR,
|
|
145
|
-
useExisting: forwardRef(() => RadioGroupComponent),
|
|
146
|
-
multi: true,
|
|
147
|
-
},
|
|
148
|
-
],
|
|
149
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
150
|
-
},] }
|
|
151
|
-
];
|
|
152
|
-
RadioGroupComponent.ctorParameters = () => [
|
|
153
|
-
{ type: ElementRef },
|
|
154
|
-
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
|
|
155
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
|
|
156
|
-
];
|
|
157
|
-
RadioGroupComponent.propDecorators = {
|
|
158
|
-
value: [{ type: Input }],
|
|
159
|
-
name: [{ type: Input }],
|
|
160
|
-
disabled: [{ type: Input }],
|
|
161
|
-
radios: [{ type: ContentChildren, args: [RadioButtonComponent, { descendants: true },] }],
|
|
162
|
-
valueChange: [{ type: Output }]
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL3JhZGlvLWJ1dHRvbi9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFFTixXQUFXLEVBQ1gsTUFBTSxFQUNOLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBYzNDLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjlCLFlBQ1ksV0FBb0MsRUFDZixVQUFVLEVBQ2IsUUFBUTtRQUYxQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFBO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUc1QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU8vQixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxF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O1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRVMsNEJBQTRCO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7UUFDdkUsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN2RSxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7WUFuTUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTt1REFDMkM7Z0JBQ3JELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7O1lBcEJDLFVBQVU7NENBb0RQLE1BQU0sU0FBQyxXQUFXOzRDQUNsQixNQUFNLFNBQUMsUUFBUTs7O29CQTlCakIsS0FBSzttQkFTTCxLQUFLO3VCQVNMLEtBQUs7cUJBb0JMLGVBQWUsU0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7MEJBRTNELE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyQ29udGVudEluaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBQTEFURk9STV9JRCxcclxuICBJbmplY3QsXHJcbiAgRWxlbWVudFJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkci1yYWRpby1ncm91cCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRyLXJhZGlvLWJ1dHRvblwiPjwvbmctY29udGVudD5gLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFkaW9Hcm91cENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmFkaW9Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgc2V0IG5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMudXBkYXRlTmFtZXMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gISFkaXNhYmxlZDtcclxuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByb3RlY3RlZCBwbGF0Zm9ybUlkLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJvdGVjdGVkIGRvY3VtZW50LFxyXG4gICkge31cclxuXHJcbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XHJcbiAgcHJvdGVjdGVkIF9uYW1lOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihSYWRpb0J1dHRvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSByYWRpb3M6IFF1ZXJ5TGlzdDxSYWRpb0J1dHRvbkNvbXBvbmVudD47XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcHJvdGVjdGVkIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG4gIHByb3RlY3RlZCBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgLy8gSW4gY2FzZSBvcHRpb24gJ25hbWUnIGlzbid0IHNldCBvbiBkci1yYWRpbyBjb21wb25lbnQsXHJcbiAgICAvLyB3ZSBuZWVkIHRvIHNldCBpdCdzIG5hbWUgcmlnaHQgYXdheSwgc28gaXQgd29uJ3Qgb3ZlcmxhcCB3aXRoIG9wdGlvbnNcclxuICAgIC8vIHdpdGhvdXQgbmFtZXMgZnJvbSBvdGhlciByYWRpbyBncm91cHMuIE90aGVyd2lzZSB0aGV5IGFsbCB3b3VsZCBoYXZlXHJcbiAgICAvLyBzYW1lIG5hbWUgYW5kIHdpbGwgYmUgY29uc2lkZXJlZCBhcyBvcHRpb25zIGZyb20gb25lIGdyb3VwIHNvIG9ubHkgdGhlXHJcbiAgICAvLyBsYXN0IG9wdGlvbiB3aWxsIHN0YXkgc2VsZWN0ZWQuXHJcbiAgICB0aGlzLnVwZGF0ZU5hbWVzKCk7XHJcblxyXG4gICAgdGhpcy5yYWRpb3MuY2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgodGhpcy5yYWRpb3MpLFxyXG4gICAgICAgIC8vICdjaGFuZ2VzJyBlbWl0IGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uIHJ1biBhbmQgd2UgY2FuJ3QgdXBkYXRlXHJcbiAgICAgICAgLy8gb3B0aW9uIHByb3BlcnRpZXMgcmlnaHQgb2Ygc2luY2UgdGhleSBhbHJlYWR5IHdhcyBpbml0aWFsaXplZC5cclxuICAgICAgICAvLyBJbnN0ZWFkIHdlIHNjaGVkdWxlIG1pY3JvdGFzayB0byB1cGRhdGUgcmFkaW9zIGFmdGVyIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgICAgICAvLyBydW4gaXMgZmluaXNoZWQgYW5kIHRyaWdnZXIgb25lIG1vcmUgY2hhbmdlIGRldGVjdGlvbiBydW4uXHJcbiAgICAgICAgc3dpdGNoTWFwKChyYWRpb3M6IFF1ZXJ5TGlzdDxSYWRpb0J1dHRvbkNvbXBvbmVudD4pID0+IGZyb20oUHJvbWlzZS5yZXNvbHZlKHJhZGlvcykpKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUFuZFN1YnNjcmliZVRvUmFkaW9zKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVBbmRTdWJzY3JpYmVUb1JhZGlvcygpIHtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tlZE9wdGlvbigpO1xyXG4gICAgdGhpcy51cGRhdGVOYW1lcygpO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcclxuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlT25SYWRpb3NWYWx1ZUNoYW5nZSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVPblJhZGlvc0JsdXIoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVOYW1lcygpIHtcclxuICAgIGlmICh0aGlzLnJhZGlvcykge1xyXG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbzogUmFkaW9CdXR0b25Db21wb25lbnQpID0+IHJhZGlvLl9zZXROYW1lKHRoaXMubmFtZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZVZhbHVlcygpIHtcclxuICAgIHRoaXMudXBkYXRlQW5kTWFya0ZvckNoZWNrUmFkaW9zKChyYWRpbzogUmFkaW9CdXR0b25Db21wb25lbnQpID0+IHtcclxuICAgICAgaWYgKHJhZGlvLnZhbHVlID09PSB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgcmFkaW8ubW9kZWxWYWx1ZSA9IHJhZGlvLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVEaXNhYmxlZCgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy51cGRhdGVBbmRNYXJrRm9yQ2hlY2tSYWRpb3MoKHJhZGlvOiBSYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4gcmFkaW8uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzdWJzY3JpYmVPblJhZGlvc1ZhbHVlQ2hhbmdlKCkge1xyXG4gICAgaWYgKCF0aGlzLnJhZGlvcyB8fCAhdGhpcy5yYWRpb3MubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBtZXJnZSguLi50aGlzLnJhZGlvcy5tYXAoKHJhZGlvOiBSYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4gcmFkaW8udmFsdWVDaGFuZ2UpKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwoXHJcbiAgICAgICAgICBtZXJnZShcclxuICAgICAgICAgICAgdGhpcy5yYWRpb3MuY2hhbmdlcyxcclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95JCxcclxuICAgICAgICAgICksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcHJvcGFnYXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHN1YnNjcmliZU9uUmFkaW9zQmx1cigpIHtcclxuICAgIGNvbnN0IGhhc05vUmFkaW9zID0gIXRoaXMucmFkaW9zIHx8ICF0aGlzLnJhZGlvcy5sZW5ndGg7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgaGFzTm9SYWRpb3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgZnJvbUV2ZW50PEV2ZW50Pihob3N0RWxlbWVudCwgJ2ZvY3VzaW4nKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbWVyZ2UoXHJcbiAgICAgICAgICBmcm9tRXZlbnQ8RXZlbnQ+KHRoaXMuZG9jdW1lbnQsICdmb2N1c2luJyksXHJcbiAgICAgICAgICBmcm9tRXZlbnQ8RXZlbnQ+KHRoaXMuZG9jdW1lbnQsICdjbGljaycpLFxyXG4gICAgICAgICkpLFxyXG4gICAgICAgIGZpbHRlcihldmVudCA9PiAhaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSxcclxuICAgICAgICB0YWtlVW50aWwoXHJcbiAgICAgICAgICBtZXJnZShcclxuICAgICAgICAgICAgdGhpcy5yYWRpb3MuY2hhbmdlcyxcclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95JCxcclxuICAgICAgICAgICksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Ub3VjaGVkKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZUFuZE1hcmtGb3JDaGVja1JhZGlvcyh1cGRhdGVGbjogKFJhZGlvQnV0dG9uQ29tcG9uZW50KSA9PiB2b2lkKSB7XHJcbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcclxuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcclxuICAgICAgICB1cGRhdGVGbihyYWRpbyk7XHJcbiAgICAgICAgcmFkaW8uX21hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVWYWx1ZUZyb21DaGVja2VkT3B0aW9uKCkge1xyXG4gICAgY29uc3QgY2hlY2tlZFJhZGlvID0gdGhpcy5yYWRpb3MuZmluZCgocmFkaW8pID0+IHJhZGlvLm1vZGVsVmFsdWUpO1xyXG4gICAgY29uc3QgaXNWYWx1ZU1pc3NpbmcgPSB0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSA9PT0gbnVsbDtcclxuICAgIGlmIChjaGVja2VkUmFkaW8gJiYgaXNWYWx1ZU1pc3NpbmcgJiYgY2hlY2tlZFJhZGlvLnZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBjaGVja2VkUmFkaW8udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, PLATFORM_ID, Inject, ElementRef, } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { from, fromEvent, merge, Subject } from 'rxjs';
|
|
5
|
+
import { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { RadioButtonComponent } from './radio-button.component';
|
|
7
|
+
import { DOCUMENT } from '@angular/common';
|
|
8
|
+
export class RadioGroupComponent {
|
|
9
|
+
constructor(hostElement, platformId, document) {
|
|
10
|
+
this.hostElement = hostElement;
|
|
11
|
+
this.platformId = platformId;
|
|
12
|
+
this.document = document;
|
|
13
|
+
this.destroy$ = new Subject();
|
|
14
|
+
this.valueChange = new EventEmitter();
|
|
15
|
+
this.onChange = (value) => { };
|
|
16
|
+
this.onTouched = () => { };
|
|
17
|
+
}
|
|
18
|
+
get value() {
|
|
19
|
+
return this._value;
|
|
20
|
+
}
|
|
21
|
+
set value(value) {
|
|
22
|
+
this._value = value;
|
|
23
|
+
this.updateValues();
|
|
24
|
+
}
|
|
25
|
+
get name() {
|
|
26
|
+
return this._name;
|
|
27
|
+
}
|
|
28
|
+
set name(name) {
|
|
29
|
+
this._name = name;
|
|
30
|
+
this.updateNames();
|
|
31
|
+
}
|
|
32
|
+
get disabled() {
|
|
33
|
+
return this._disabled;
|
|
34
|
+
}
|
|
35
|
+
set disabled(disabled) {
|
|
36
|
+
this._disabled = !!disabled;
|
|
37
|
+
this.updateDisabled();
|
|
38
|
+
}
|
|
39
|
+
ngAfterContentInit() {
|
|
40
|
+
// In case option 'name' isn't set on dr-radio component,
|
|
41
|
+
// we need to set it's name right away, so it won't overlap with options
|
|
42
|
+
// without names from other radio groups. Otherwise they all would have
|
|
43
|
+
// same name and will be considered as options from one group so only the
|
|
44
|
+
// last option will stay selected.
|
|
45
|
+
this.updateNames();
|
|
46
|
+
this.radios.changes
|
|
47
|
+
.pipe(startWith(this.radios),
|
|
48
|
+
// 'changes' emit during change detection run and we can't update
|
|
49
|
+
// option properties right of since they already was initialized.
|
|
50
|
+
// Instead we schedule microtask to update radios after change detection
|
|
51
|
+
// run is finished and trigger one more change detection run.
|
|
52
|
+
switchMap((radios) => from(Promise.resolve(radios))), takeUntil(this.destroy$))
|
|
53
|
+
.subscribe(() => this.updateAndSubscribeToRadios());
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
this.destroy$.next();
|
|
57
|
+
this.destroy$.complete();
|
|
58
|
+
}
|
|
59
|
+
registerOnChange(fn) {
|
|
60
|
+
this.onChange = fn;
|
|
61
|
+
}
|
|
62
|
+
registerOnTouched(fn) {
|
|
63
|
+
this.onTouched = fn;
|
|
64
|
+
}
|
|
65
|
+
writeValue(value) {
|
|
66
|
+
this.value = value;
|
|
67
|
+
}
|
|
68
|
+
setDisabledState(isDisabled) {
|
|
69
|
+
this.disabled = isDisabled;
|
|
70
|
+
}
|
|
71
|
+
updateAndSubscribeToRadios() {
|
|
72
|
+
this.updateValueFromCheckedOption();
|
|
73
|
+
this.updateNames();
|
|
74
|
+
this.updateValues();
|
|
75
|
+
this.updateDisabled();
|
|
76
|
+
this.subscribeOnRadiosValueChange();
|
|
77
|
+
this.subscribeOnRadiosBlur();
|
|
78
|
+
}
|
|
79
|
+
updateNames() {
|
|
80
|
+
if (this.radios) {
|
|
81
|
+
this.radios.forEach((radio) => radio._setName(this.name));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
updateValues() {
|
|
85
|
+
this.updateAndMarkForCheckRadios((radio) => {
|
|
86
|
+
if (radio.value === this.value) {
|
|
87
|
+
radio.modelValue = radio.value;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
updateDisabled() {
|
|
92
|
+
if (typeof this.disabled !== 'undefined') {
|
|
93
|
+
this.updateAndMarkForCheckRadios((radio) => radio.disabled = this.disabled);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
subscribeOnRadiosValueChange() {
|
|
97
|
+
if (!this.radios || !this.radios.length) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
merge(...this.radios.map((radio) => radio.valueChange))
|
|
101
|
+
.pipe(takeUntil(merge(this.radios.changes, this.destroy$)))
|
|
102
|
+
.subscribe((value) => {
|
|
103
|
+
this.writeValue(value);
|
|
104
|
+
this.propagateValue(value);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
propagateValue(value) {
|
|
108
|
+
this.valueChange.emit(value);
|
|
109
|
+
this.onChange(value);
|
|
110
|
+
}
|
|
111
|
+
subscribeOnRadiosBlur() {
|
|
112
|
+
const hasNoRadios = !this.radios || !this.radios.length;
|
|
113
|
+
if (!isPlatformBrowser(this.platformId) || hasNoRadios) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const hostElement = this.hostElement.nativeElement;
|
|
117
|
+
fromEvent(hostElement, 'focusin')
|
|
118
|
+
.pipe(filter(event => hostElement.contains(event.target)), switchMap(() => merge(fromEvent(this.document, 'focusin'), fromEvent(this.document, 'click'))), filter(event => !hostElement.contains(event.target)), takeUntil(merge(this.radios.changes, this.destroy$)))
|
|
119
|
+
.subscribe(() => this.onTouched());
|
|
120
|
+
}
|
|
121
|
+
updateAndMarkForCheckRadios(updateFn) {
|
|
122
|
+
if (this.radios) {
|
|
123
|
+
this.radios.forEach((radio) => {
|
|
124
|
+
updateFn(radio);
|
|
125
|
+
radio._markForCheck();
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
updateValueFromCheckedOption() {
|
|
130
|
+
const checkedRadio = this.radios.find((radio) => radio.modelValue);
|
|
131
|
+
const isValueMissing = this.value === undefined || this.value === null;
|
|
132
|
+
if (checkedRadio && isValueMissing && checkedRadio.value !== this.value) {
|
|
133
|
+
this.value = checkedRadio.value;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
RadioGroupComponent.decorators = [
|
|
138
|
+
{ type: Component, args: [{
|
|
139
|
+
selector: 'dr-radio-group',
|
|
140
|
+
template: `
|
|
141
|
+
<ng-content select="dr-radio-button"></ng-content>`,
|
|
142
|
+
providers: [
|
|
143
|
+
{
|
|
144
|
+
provide: NG_VALUE_ACCESSOR,
|
|
145
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
146
|
+
multi: true,
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
150
|
+
},] }
|
|
151
|
+
];
|
|
152
|
+
RadioGroupComponent.ctorParameters = () => [
|
|
153
|
+
{ type: ElementRef },
|
|
154
|
+
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
|
|
155
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
|
|
156
|
+
];
|
|
157
|
+
RadioGroupComponent.propDecorators = {
|
|
158
|
+
value: [{ type: Input }],
|
|
159
|
+
name: [{ type: Input }],
|
|
160
|
+
disabled: [{ type: Input }],
|
|
161
|
+
radios: [{ type: ContentChildren, args: [RadioButtonComponent, { descendants: true },] }],
|
|
162
|
+
valueChange: [{ type: Output }]
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL3JhZGlvLWJ1dHRvbi9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFFTixXQUFXLEVBQ1gsTUFBTSxFQUNOLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBYzNDLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjlCLFlBQ1ksV0FBb0MsRUFDZixVQUFVLEVBQ2IsUUFBUTtRQUYxQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFBO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUc1QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU8vQixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFYNUIsQ0FBQztJQS9CSixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQWlCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQW1CRCxrQkFBa0I7UUFDaEIseURBQXlEO1FBQ3pELHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUseUVBQXlFO1FBQ3pFLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2FBQ2hCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixpRUFBaUU7UUFDakUsaUVBQWlFO1FBQ2pFLHdFQUF3RTtRQUN4RSw2REFBNkQ7UUFDN0QsU0FBUyxDQUFDLENBQUMsTUFBdUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNyRixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVTLDBCQUEwQjtRQUNsQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQTJCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDakY7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxLQUEyQixFQUFFLEVBQUU7WUFDL0QsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGNBQWM7UUFDdEIsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQ3hDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEtBQTJCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25HO0lBQ0gsQ0FBQztJQUVTLDRCQUE0QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLE9BQU87U0FDUjtRQUVELEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBMkIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzFFLElBQUksQ0FDSCxTQUFTLENBQ1AsS0FBSyxDQUNILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUNuQixJQUFJLENBQUMsUUFBUSxDQUNkLENBQ0YsQ0FDRjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBVTtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxXQUFXLEVBQUU7WUFDdEQsT0FBTztTQUNSO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDbkQsU0FBUyxDQUFRLFdBQVcsRUFBRSxTQUFTLENBQUM7YUFDckMsSUFBSSxDQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxDQUFDLEVBQzNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQ25CLFNBQVMsQ0FBUSxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUMxQyxTQUFTLENBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDekMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLENBQUMsRUFDNUQsU0FBUyxDQUNQLEtBQUssQ0FDSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUNGLENBQ0Y7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVTLDJCQUEyQixDQUFDLFFBQXdDO1FBQzVFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzVCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRVMsNEJBQTRCO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7UUFDdkUsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN2RSxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7WUFuTUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTt1REFDMkM7Z0JBQ3JELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7O1lBcEJDLFVBQVU7NENBb0RQLE1BQU0sU0FBQyxXQUFXOzRDQUNsQixNQUFNLFNBQUMsUUFBUTs7O29CQTlCakIsS0FBSzttQkFTTCxLQUFLO3VCQVNMLEtBQUs7cUJBb0JMLGVBQWUsU0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7MEJBRTNELE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFBMQVRGT1JNX0lELFxuICBJbmplY3QsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZnJvbSwgZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHItcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRyLXJhZGlvLWJ1dHRvblwiPjwvbmctY29udGVudD5gLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvR3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIHRoaXMudXBkYXRlTmFtZXMoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSAhIWRpc2FibGVkO1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBob3N0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJvdGVjdGVkIHBsYXRmb3JtSWQsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJvdGVjdGVkIGRvY3VtZW50LFxuICApIHt9XG5cbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIF92YWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgX25hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICBAQ29udGVudENoaWxkcmVuKFJhZGlvQnV0dG9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHJhZGlvczogUXVlcnlMaXN0PFJhZGlvQnV0dG9uQ29tcG9uZW50PjtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcm90ZWN0ZWQgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIHByb3RlY3RlZCBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gSW4gY2FzZSBvcHRpb24gJ25hbWUnIGlzbid0IHNldCBvbiBkci1yYWRpbyBjb21wb25lbnQsXG4gICAgLy8gd2UgbmVlZCB0byBzZXQgaXQncyBuYW1lIHJpZ2h0IGF3YXksIHNvIGl0IHdvbid0IG92ZXJsYXAgd2l0aCBvcHRpb25zXG4gICAgLy8gd2l0aG91dCBuYW1lcyBmcm9tIG90aGVyIHJhZGlvIGdyb3Vwcy4gT3RoZXJ3aXNlIHRoZXkgYWxsIHdvdWxkIGhhdmVcbiAgICAvLyBzYW1lIG5hbWUgYW5kIHdpbGwgYmUgY29uc2lkZXJlZCBhcyBvcHRpb25zIGZyb20gb25lIGdyb3VwIHNvIG9ubHkgdGhlXG4gICAgLy8gbGFzdCBvcHRpb24gd2lsbCBzdGF5IHNlbGVjdGVkLlxuICAgIHRoaXMudXBkYXRlTmFtZXMoKTtcblxuICAgIHRoaXMucmFkaW9zLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5yYWRpb3MpLFxuICAgICAgICAvLyAnY2hhbmdlcycgZW1pdCBkdXJpbmcgY2hhbmdlIGRldGVjdGlvbiBydW4gYW5kIHdlIGNhbid0IHVwZGF0ZVxuICAgICAgICAvLyBvcHRpb24gcHJvcGVydGllcyByaWdodCBvZiBzaW5jZSB0aGV5IGFscmVhZHkgd2FzIGluaXRpYWxpemVkLlxuICAgICAgICAvLyBJbnN0ZWFkIHdlIHNjaGVkdWxlIG1pY3JvdGFzayB0byB1cGRhdGUgcmFkaW9zIGFmdGVyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAgICAgLy8gcnVuIGlzIGZpbmlzaGVkIGFuZCB0cmlnZ2VyIG9uZSBtb3JlIGNoYW5nZSBkZXRlY3Rpb24gcnVuLlxuICAgICAgICBzd2l0Y2hNYXAoKHJhZGlvczogUXVlcnlMaXN0PFJhZGlvQnV0dG9uQ29tcG9uZW50PikgPT4gZnJvbShQcm9taXNlLnJlc29sdmUocmFkaW9zKSkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQW5kU3Vic2NyaWJlVG9SYWRpb3MoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUFuZFN1YnNjcmliZVRvUmFkaW9zKCkge1xuICAgIHRoaXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tlZE9wdGlvbigpO1xuICAgIHRoaXMudXBkYXRlTmFtZXMoKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcbiAgICB0aGlzLnN1YnNjcmliZU9uUmFkaW9zVmFsdWVDaGFuZ2UoKTtcbiAgICB0aGlzLnN1YnNjcmliZU9uUmFkaW9zQmx1cigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZU5hbWVzKCkge1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW86IFJhZGlvQnV0dG9uQ29tcG9uZW50KSA9PiByYWRpby5fc2V0TmFtZSh0aGlzLm5hbWUpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVmFsdWVzKCkge1xuICAgIHRoaXMudXBkYXRlQW5kTWFya0ZvckNoZWNrUmFkaW9zKChyYWRpbzogUmFkaW9CdXR0b25Db21wb25lbnQpID0+IHtcbiAgICAgIGlmIChyYWRpby52YWx1ZSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICByYWRpby5tb2RlbFZhbHVlID0gcmFkaW8udmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlRGlzYWJsZWQoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy51cGRhdGVBbmRNYXJrRm9yQ2hlY2tSYWRpb3MoKHJhZGlvOiBSYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4gcmFkaW8uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc3Vic2NyaWJlT25SYWRpb3NWYWx1ZUNoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMucmFkaW9zIHx8ICF0aGlzLnJhZGlvcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtZXJnZSguLi50aGlzLnJhZGlvcy5tYXAoKHJhZGlvOiBSYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4gcmFkaW8udmFsdWVDaGFuZ2UpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHRoaXMucmFkaW9zLmNoYW5nZXMsXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWUodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvcGFnYXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3Vic2NyaWJlT25SYWRpb3NCbHVyKCkge1xuICAgIGNvbnN0IGhhc05vUmFkaW9zID0gIXRoaXMucmFkaW9zIHx8ICF0aGlzLnJhZGlvcy5sZW5ndGg7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8IGhhc05vUmFkaW9zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgZnJvbUV2ZW50PEV2ZW50Pihob3N0RWxlbWVudCwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBob3N0RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbWVyZ2UoXG4gICAgICAgICAgZnJvbUV2ZW50PEV2ZW50Pih0aGlzLmRvY3VtZW50LCAnZm9jdXNpbicpLFxuICAgICAgICAgIGZyb21FdmVudDxFdmVudD4odGhpcy5kb2N1bWVudCwgJ2NsaWNrJyksXG4gICAgICAgICkpLFxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gIWhvc3RFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSksXG4gICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHRoaXMucmFkaW9zLmNoYW5nZXMsXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Ub3VjaGVkKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUFuZE1hcmtGb3JDaGVja1JhZGlvcyh1cGRhdGVGbjogKFJhZGlvQnV0dG9uQ29tcG9uZW50KSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICB1cGRhdGVGbihyYWRpbyk7XG4gICAgICAgIHJhZGlvLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVWYWx1ZUZyb21DaGVja2VkT3B0aW9uKCkge1xuICAgIGNvbnN0IGNoZWNrZWRSYWRpbyA9IHRoaXMucmFkaW9zLmZpbmQoKHJhZGlvKSA9PiByYWRpby5tb2RlbFZhbHVlKTtcbiAgICBjb25zdCBpc1ZhbHVlTWlzc2luZyA9IHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlID09PSBudWxsO1xuICAgIGlmIChjaGVja2VkUmFkaW8gJiYgaXNWYWx1ZU1pc3NpbmcgJiYgY2hlY2tlZFJhZGlvLnZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gY2hlY2tlZFJhZGlvLnZhbHVlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
export class DrPopoverRef {
|
|
3
|
-
constructor(overlayRef) {
|
|
4
|
-
this.overlayRef = overlayRef;
|
|
5
|
-
this.onClose$ = new Subject();
|
|
6
|
-
// FIXME: this decision was made because of the incompatible rxjs version
|
|
7
|
-
/**
|
|
8
|
-
* Correct type is @type {Observable<any>}
|
|
9
|
-
*/
|
|
10
|
-
this.onClose = this.onClose$.asObservable();
|
|
11
|
-
this.onBackdropClick = this.overlayRef.backdropClick();
|
|
12
|
-
}
|
|
13
|
-
close(res) {
|
|
14
|
-
this.overlayRef.detach();
|
|
15
|
-
this.overlayRef.dispose();
|
|
16
|
-
this.onClose$.next(res);
|
|
17
|
-
this.onClose$.complete();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
export class DrPopoverRef {
|
|
3
|
+
constructor(overlayRef) {
|
|
4
|
+
this.overlayRef = overlayRef;
|
|
5
|
+
this.onClose$ = new Subject();
|
|
6
|
+
// FIXME: this decision was made because of the incompatible rxjs version
|
|
7
|
+
/**
|
|
8
|
+
* Correct type is @type {Observable<any>}
|
|
9
|
+
*/
|
|
10
|
+
this.onClose = this.onClose$.asObservable();
|
|
11
|
+
this.onBackdropClick = this.overlayRef.backdropClick();
|
|
12
|
+
}
|
|
13
|
+
close(res) {
|
|
14
|
+
this.overlayRef.detach();
|
|
15
|
+
this.overlayRef.dispose();
|
|
16
|
+
this.onClose$.next(res);
|
|
17
|
+
this.onClose$.complete();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItcG9wb3Zlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1wb3BvdmVyL2RyLXBvcG92ZXItcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHM0MsTUFBTSxPQUFPLFlBQVk7SUFhckIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVRoQyxhQUFRLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDakQseUVBQXlFO1FBQ3pFOztXQUVHO1FBQ00sWUFBTyxHQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFLakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsR0FBUztRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vZHItcG9wb3Zlci5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgRHJQb3BvdmVyUmVmPFQgPSBhbnk+IHtcblxuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPERyUG9wb3ZlckNvbXBvbmVudDxUPj47XG5cbiAgICBwcm90ZWN0ZWQgb25DbG9zZSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgLy8gRklYTUU6IHRoaXMgZGVjaXNpb24gd2FzIG1hZGUgYmVjYXVzZSBvZiB0aGUgaW5jb21wYXRpYmxlIHJ4anMgdmVyc2lvblxuICAgIC8qKlxuICAgICAqIENvcnJlY3QgdHlwZSBpcyBAdHlwZSB7T2JzZXJ2YWJsZTxhbnk+fVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9uQ2xvc2U6IGFueSA9IHRoaXMub25DbG9zZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICByZWFkb25seSBvbkJhY2tkcm9wQ2xpY2s6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcbiAgICAgICAgdGhpcy5vbkJhY2tkcm9wQ2xpY2sgPSB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpO1xuICAgIH1cblxuICAgIGNsb3NlKHJlcz86IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMub25DbG9zZSQubmV4dChyZXMpO1xuICAgICAgICB0aGlzLm9uQ2xvc2UkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|