@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.
Files changed (133) hide show
  1. package/_datarailsshared.styles.css +3 -3
  2. package/assets/styles/_styles.scss +2 -2
  3. package/assets/styles/img/default-avatar.svg +5 -5
  4. package/bundles/datarailsshared-datarailsshared.umd.js +3984 -3995
  5. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  6. package/datarailsshared-datarailsshared-1.3.51.tgz +0 -0
  7. package/datarailsshared-datarailsshared.d.ts +9 -9
  8. package/datarailsshared-datarailsshared.metadata.json +1 -1
  9. package/esm2015/datarailsshared-datarailsshared.js +9 -9
  10. package/esm2015/lib/date-tags/date-tag.component.js +70 -70
  11. package/esm2015/lib/date-tags/date-tag.module.js +50 -50
  12. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +81 -81
  13. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +143 -143
  14. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +87 -87
  15. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +101 -101
  16. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +124 -124
  17. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +93 -93
  18. package/esm2015/lib/dr-accordion/accordion-item-body.component.js +57 -57
  19. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +79 -79
  20. package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -123
  21. package/esm2015/lib/dr-accordion/accordion.component.js +43 -43
  22. package/esm2015/lib/dr-accordion/accordion.module.js +23 -23
  23. package/esm2015/lib/dr-avatar/dr-avatar.component.js +42 -42
  24. package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -26
  25. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +15 -15
  26. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -12
  27. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +97 -97
  28. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +110 -110
  29. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +89 -89
  30. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -34
  31. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -24
  32. package/esm2015/lib/dr-inputs/button/button.component.js +80 -80
  33. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +63 -63
  34. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -47
  35. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +183 -186
  36. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +41 -41
  37. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +129 -129
  38. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +185 -185
  39. package/esm2015/lib/dr-inputs/dr-inputs.module.js +51 -51
  40. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +31 -31
  41. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +90 -90
  42. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +64 -64
  43. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +56 -56
  44. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +64 -64
  45. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +164 -164
  46. package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -20
  47. package/esm2015/lib/dr-popover/dr-popover.component.js +77 -77
  48. package/esm2015/lib/dr-popover/dr-popover.directive.js +72 -72
  49. package/esm2015/lib/dr-popover/dr-popover.module.js +23 -23
  50. package/esm2015/lib/dr-popover/dr-popover.service.js +102 -102
  51. package/esm2015/lib/dr-spinner/dr-spinner.component.js +29 -29
  52. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +53 -53
  53. package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -18
  54. package/esm2015/lib/dr-tabs/dr-tab.component.js +23 -23
  55. package/esm2015/lib/dr-tabs/dr-tabs.component.js +28 -28
  56. package/esm2015/lib/dr-tabs/dr-tabs.module.js +30 -30
  57. package/esm2015/lib/dr-tags/dr-tag.component.js +54 -54
  58. package/esm2015/lib/dr-tags/dr-tag.module.js +22 -22
  59. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +30 -30
  60. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +102 -102
  61. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +23 -23
  62. package/esm2015/lib/list-tags/list-tag.component.js +41 -41
  63. package/esm2015/lib/list-tags/list-tag.module.js +29 -29
  64. package/esm2015/lib/models/constants.js +97 -97
  65. package/esm2015/lib/models/datePicker.js +40 -40
  66. package/esm2015/lib/models/dropdown.js +2 -2
  67. package/esm2015/lib/models/popover.js +27 -27
  68. package/esm2015/lib/models/serverTags.js +2 -2
  69. package/esm2015/public-api.js +57 -57
  70. package/fesm2015/datarailsshared-datarailsshared.js +3365 -3368
  71. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  72. package/lib/date-tags/date-tag.component.d.ts +27 -27
  73. package/lib/date-tags/date-tag.module.d.ts +4 -4
  74. package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -12
  75. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +21 -21
  76. package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -14
  77. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +17 -17
  78. package/lib/date-tags/week-tag/week-tag.component.d.ts +19 -19
  79. package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -14
  80. package/lib/dr-accordion/accordion-item-body.component.d.ts +11 -11
  81. package/lib/dr-accordion/accordion-item-header.component.d.ts +16 -16
  82. package/lib/dr-accordion/accordion-item.component.d.ts +53 -53
  83. package/lib/dr-accordion/accordion.component.d.ts +19 -19
  84. package/lib/dr-accordion/accordion.module.d.ts +2 -2
  85. package/lib/dr-avatar/dr-avatar.component.d.ts +10 -10
  86. package/lib/dr-avatar/dr-avatar.module.d.ts +2 -2
  87. package/lib/dr-avatar/dr-avatar.pipe.d.ts +4 -4
  88. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +5 -5
  89. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +12 -12
  90. package/lib/dr-dropdown/dr-dropdown.component.d.ts +26 -26
  91. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +23 -23
  92. package/lib/dr-dropdown/dr-dropdown.module.d.ts +2 -2
  93. package/lib/dr-dropdown/dr-dropdown.service.d.ts +11 -11
  94. package/lib/dr-inputs/button/button.component.d.ts +21 -21
  95. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +20 -20
  96. package/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.d.ts +10 -10
  97. package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +54 -54
  98. package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +12 -12
  99. package/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +41 -41
  100. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +58 -58
  101. package/lib/dr-inputs/dr-inputs.module.d.ts +2 -2
  102. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +11 -11
  103. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +38 -38
  104. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +23 -23
  105. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +19 -19
  106. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +21 -21
  107. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +39 -39
  108. package/lib/dr-popover/dr-popover-ref.d.ts +16 -16
  109. package/lib/dr-popover/dr-popover.component.d.ts +26 -26
  110. package/lib/dr-popover/dr-popover.directive.d.ts +26 -26
  111. package/lib/dr-popover/dr-popover.module.d.ts +2 -2
  112. package/lib/dr-popover/dr-popover.service.d.ts +17 -17
  113. package/lib/dr-spinner/dr-spinner.component.d.ts +10 -10
  114. package/lib/dr-spinner/dr-spinner.directive.d.ts +15 -15
  115. package/lib/dr-spinner/dr-spinner.module.d.ts +2 -2
  116. package/lib/dr-tabs/dr-tab.component.d.ts +8 -8
  117. package/lib/dr-tabs/dr-tabs.component.d.ts +11 -11
  118. package/lib/dr-tabs/dr-tabs.module.d.ts +2 -2
  119. package/lib/dr-tags/dr-tag.component.d.ts +15 -15
  120. package/lib/dr-tags/dr-tag.module.d.ts +2 -2
  121. package/lib/dr-tooltip/dr-tooltip.component.d.ts +16 -16
  122. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +23 -23
  123. package/lib/dr-tooltip/dr-tooltip.module.d.ts +2 -2
  124. package/lib/list-tags/list-tag.component.d.ts +14 -14
  125. package/lib/list-tags/list-tag.module.d.ts +2 -2
  126. package/lib/models/constants.d.ts +87 -87
  127. package/lib/models/datePicker.d.ts +25 -25
  128. package/lib/models/dropdown.d.ts +48 -48
  129. package/lib/models/popover.d.ts +32 -32
  130. package/lib/models/serverTags.d.ts +28 -28
  131. package/package.json +1 -1
  132. package/public-api.d.ts +55 -55
  133. 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>\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n (change)=\"valueChanged(value)\"\r\n [(ngModel)]=\"modelValue\"\r\n (click)=\"toggleChange($event)\">\r\n <span>\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFBRSxNQUFNLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZXpFLE1BQU0sT0FBTyxvQkFBb0I7SUFlL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFYaEMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVE5RCxhQUFRLEdBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFbUIsQ0FBQztJQVA5QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU9ELGdCQUFnQixDQUFDLEVBQUU7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNELGlCQUFpQixDQUFDLEVBQUU7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixvU0FBNEM7Z0JBRTVDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsb0JBQW9CO3dCQUNqQyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQW5CQyxpQkFBaUI7Ozt1QkFxQmhCLEtBQUs7bUJBQ0wsS0FBSztxQkFDTCxLQUFLLFNBQUMsT0FBTzswQkFDYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LCBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHItcmFkaW8tYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmFkaW9CdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWU6IGFueTtcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBtb2RlbFZhbHVlOiBhbnk7XHJcblxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAob25jaGFuZ2VzID0+IHt9KTtcclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5tb2RlbFZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgdG9nZ2xlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5tb2RlbFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgdmFsdWVDaGFuZ2VkKGV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMubW9kZWxWYWx1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBfc2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgX21hcmtGb3JDaGVjaygpIHtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL3JhZGlvLWJ1dHRvbi9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFFTixXQUFXLEVBQ1gsTUFBTSxFQUNOLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBYzNDLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjlCLFlBQ1ksV0FBb0MsRUFDZixVQUFVLEVBQ2IsUUFBUTtRQUYxQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFBO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUc1QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU8vQixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxF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O1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRVMsNEJBQTRCO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7UUFDdkUsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN2RSxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7WUFuTUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTt1REFDMkM7Z0JBQ3JELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7O1lBcEJDLFVBQVU7NENBb0RQLE1BQU0sU0FBQyxXQUFXOzRDQUNsQixNQUFNLFNBQUMsUUFBUTs7O29CQTlCakIsS0FBSzttQkFTTCxLQUFLO3VCQVNMLEtBQUs7cUJBb0JMLGVBQWUsU0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7MEJBRTNELE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFBMQVRGT1JNX0lELFxuICBJbmplY3QsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZnJvbSwgZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHItcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRyLXJhZGlvLWJ1dHRvblwiPjwvbmctY29udGVudD5gLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItcG9wb3Zlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1wb3BvdmVyL2RyLXBvcG92ZXItcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHM0MsTUFBTSxPQUFPLFlBQVk7SUFhckIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVRoQyxhQUFRLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDakQseUVBQXlFO1FBQ3pFOztXQUVHO1FBQ00sWUFBTyxHQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFLakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsR0FBUztRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERyUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vZHItcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIERyUG9wb3ZlclJlZjxUID0gYW55PiB7XHJcblxyXG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RHJQb3BvdmVyQ29tcG9uZW50PFQ+PjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgb25DbG9zZSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAvLyBGSVhNRTogdGhpcyBkZWNpc2lvbiB3YXMgbWFkZSBiZWNhdXNlIG9mIHRoZSBpbmNvbXBhdGlibGUgcnhqcyB2ZXJzaW9uXHJcbiAgICAvKipcclxuICAgICAqIENvcnJlY3QgdHlwZSBpcyBAdHlwZSB7T2JzZXJ2YWJsZTxhbnk+fVxyXG4gICAgICovXHJcbiAgICByZWFkb25seSBvbkNsb3NlOiBhbnkgPSB0aGlzLm9uQ2xvc2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHJlYWRvbmx5IG9uQmFja2Ryb3BDbGljazogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcclxuICAgICAgICB0aGlzLm9uQmFja2Ryb3BDbGljayA9IHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UocmVzPzogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgICAgdGhpcy5vbkNsb3NlJC5uZXh0KHJlcyk7XHJcbiAgICAgICAgdGhpcy5vbkNsb3NlJC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
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