@abgov/angular-components 2.0.0-alpha.4 → 2.0.0-alpha.6

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 (82) hide show
  1. package/README.md +3 -45
  2. package/abgov-angular-components.d.ts +1 -0
  3. package/bundles/abgov-angular-components.umd.js +176 -2565
  4. package/bundles/abgov-angular-components.umd.js.map +1 -1
  5. package/esm2015/index.js +3 -27
  6. package/esm2015/lib/angular-components.module.js +16 -94
  7. package/esm2015/lib/value-directive.js +133 -0
  8. package/fesm2015/abgov-angular-components.js +119 -2007
  9. package/fesm2015/abgov-angular-components.js.map +1 -1
  10. package/index.d.ts +2 -26
  11. package/lib/angular-components.module.d.ts +7 -0
  12. package/lib/value-directive.d.ts +34 -0
  13. package/package.json +8 -13
  14. package/abgov-angular-components.metadata.json +0 -1
  15. package/esm2015/experimental/app-version-header/app-version-header.component.js +0 -30
  16. package/esm2015/experimental/badge/badge.component.js +0 -24
  17. package/esm2015/experimental/components.module.js +0 -29
  18. package/esm2015/experimental/index.js +0 -5
  19. package/esm2015/experimental/number-input/number-input.component.js +0 -151
  20. package/esm2015/lib/button/button.component.js +0 -66
  21. package/esm2015/lib/button-link/button-link.component.js +0 -66
  22. package/esm2015/lib/callout/callout.component.js +0 -34
  23. package/esm2015/lib/card/card.component.js +0 -37
  24. package/esm2015/lib/card/content/card-content.component.js +0 -24
  25. package/esm2015/lib/card/footer/card-footer.component.js +0 -24
  26. package/esm2015/lib/card/header/card-header.component.js +0 -24
  27. package/esm2015/lib/card/thumb/card-thumb.component.js +0 -27
  28. package/esm2015/lib/card-group/card.group.component.js +0 -23
  29. package/esm2015/lib/checkbox/checkbox-change.js +0 -3
  30. package/esm2015/lib/checkbox/checkbox.component.js +0 -136
  31. package/esm2015/lib/dropdown/dropdown.component.js +0 -326
  32. package/esm2015/lib/dropdown/option/option.component.js +0 -48
  33. package/esm2015/lib/dropdown/option-group/option-group.component.js +0 -46
  34. package/esm2015/lib/element-load-indicator/element-load-indicator.component.js +0 -63
  35. package/esm2015/lib/header/header.component.js +0 -47
  36. package/esm2015/lib/hero-banner/content/hero-banner-content.component.js +0 -15
  37. package/esm2015/lib/hero-banner/hero-banner.component.js +0 -21
  38. package/esm2015/lib/hero-banner/link/hero-banner-link.component.js +0 -18
  39. package/esm2015/lib/microsite-logo/microsite-logo.component.js +0 -34
  40. package/esm2015/lib/notification/notification.component.js +0 -59
  41. package/esm2015/lib/notification-banner/notification-banner.component.js +0 -32
  42. package/esm2015/lib/page-load-indicator/page-load-indicator.component.js +0 -117
  43. package/esm2015/lib/radio/radio-change.js +0 -3
  44. package/esm2015/lib/radio/radio.component.js +0 -146
  45. package/esm2015/lib/radio/radio.service.js +0 -20
  46. package/esm2015/lib/radio-group/radio-group.component.js +0 -282
  47. package/esm2015/lib/skeleton/skeleton-element.component.js +0 -21
  48. package/esm2015/lib/skeleton/skeleton-image-content.component.js +0 -19
  49. package/experimental/app-version-header/app-version-header.component.d.ts +0 -10
  50. package/experimental/badge/badge.component.d.ts +0 -7
  51. package/experimental/components.module.d.ts +0 -2
  52. package/experimental/index.d.ts +0 -4
  53. package/experimental/number-input/number-input.component.d.ts +0 -66
  54. package/lib/button/button.component.d.ts +0 -37
  55. package/lib/button-link/button-link.component.d.ts +0 -38
  56. package/lib/callout/callout.component.d.ts +0 -20
  57. package/lib/card/card.component.d.ts +0 -23
  58. package/lib/card/content/card-content.component.d.ts +0 -14
  59. package/lib/card/footer/card-footer.component.d.ts +0 -14
  60. package/lib/card/header/card-header.component.d.ts +0 -14
  61. package/lib/card/thumb/card-thumb.component.d.ts +0 -22
  62. package/lib/card-group/card.group.component.d.ts +0 -32
  63. package/lib/checkbox/checkbox-change.d.ts +0 -7
  64. package/lib/checkbox/checkbox.component.d.ts +0 -100
  65. package/lib/dropdown/dropdown.component.d.ts +0 -193
  66. package/lib/dropdown/option/option.component.d.ts +0 -39
  67. package/lib/dropdown/option-group/option-group.component.d.ts +0 -38
  68. package/lib/element-load-indicator/element-load-indicator.component.d.ts +0 -38
  69. package/lib/header/header.component.d.ts +0 -29
  70. package/lib/hero-banner/content/hero-banner-content.component.d.ts +0 -5
  71. package/lib/hero-banner/hero-banner.component.d.ts +0 -9
  72. package/lib/hero-banner/link/hero-banner-link.component.d.ts +0 -6
  73. package/lib/microsite-logo/microsite-logo.component.d.ts +0 -20
  74. package/lib/notification/notification.component.d.ts +0 -43
  75. package/lib/notification-banner/notification-banner.component.d.ts +0 -22
  76. package/lib/page-load-indicator/page-load-indicator.component.d.ts +0 -55
  77. package/lib/radio/radio-change.d.ts +0 -7
  78. package/lib/radio/radio.component.d.ts +0 -119
  79. package/lib/radio/radio.service.d.ts +0 -7
  80. package/lib/radio-group/radio-group.component.d.ts +0 -190
  81. package/lib/skeleton/skeleton-element.component.d.ts +0 -5
  82. package/lib/skeleton/skeleton-image-content.component.d.ts +0 -5
@@ -1,3 +0,0 @@
1
- export class GoACheckboxChange {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC1jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjtDQUszQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdvQUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgR29BQ2hlY2tib3hDaGFuZ2Uge1xuICAgIC8qKiBUaGUgc291cmNlIE1hdENoZWNrYm94IG9mIHRoZSBldmVudC4gKi9cbiAgICBzb3VyY2U6IEdvQUNoZWNrYm94Q29tcG9uZW50O1xuICAgIC8qKiBUaGUgbmV3IGBjaGVja2VkYCB2YWx1ZSBvZiB0aGUgY2hlY2tib3guICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbiAgfVxuIl19
@@ -1,136 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- export const GOA_CHECKBOX_CONTROL_VALUE_ACCESSOR = {
4
- provide: NG_VALUE_ACCESSOR,
5
- useExisting: forwardRef(() => GoACheckboxComponent),
6
- multi: true
7
- };
8
- /**
9
- * Checkbox component with Government of Alberta styling.
10
- * selector: goa-checkbox
11
- */
12
- export class GoACheckboxComponent {
13
- constructor(_changeDetectorRef) {
14
- this._changeDetectorRef = _changeDetectorRef;
15
- /**
16
- * @ignore
17
- */
18
- this._indeterminate = false;
19
- /**
20
- * The position to display the label/text for the checbox. Valid values are before and after.
21
- */
22
- this.labelPosition = 'after';
23
- /**
24
- * Event emitted containing the source checkbox, and whether or not it is checked.
25
- */
26
- this.selectionChange = new EventEmitter();
27
- /**
28
- * @ignore
29
- */
30
- this._propagateChange = (_) => { };
31
- this.uniqueId = `goa-checkbox-${GoACheckboxComponent.idNum++}`;
32
- }
33
- /**
34
- * Boolean indicating whether or not the checkbox should display as indeterminate
35
- * (i.e. it has associated 'child' checkboxes, some of which are selected).
36
- */
37
- get indeterminate() { return this._indeterminate; }
38
- set indeterminate(value) {
39
- // only do something if value has changed from current
40
- if (value !== this.indeterminate) {
41
- this._indeterminate = value;
42
- // can't be indeterminate and checked, so clear checked
43
- if (this._indeterminate) {
44
- this.checked = false;
45
- }
46
- }
47
- }
48
- /**
49
- * Boolean indicating if the checkbox is required and not checked
50
- * @ignore
51
- */
52
- hasError() {
53
- return this.required && !this.checked;
54
- }
55
- /**
56
- * Implemented as part of ControlValueAccessor.
57
- * @param value The model bound property, i.e. the value of checked
58
- * @ignore
59
- */
60
- writeValue(value) {
61
- if ((value !== undefined) && (value !== null)) {
62
- this.checked = value;
63
- this._changeDetectorRef.detectChanges();
64
- }
65
- }
66
- /**
67
- * Implemented as part of ControlValueAccessor.
68
- * @param fn The function to call on change. Provided by ControlValueAccessor
69
- * @ignore
70
- */
71
- registerOnChange(fn) {
72
- this._propagateChange = fn;
73
- }
74
- /**
75
- * Implemented as part of ControlValueAccessor.
76
- * @param fn The function to call on touch. Provided by ControlValueAccessor
77
- * @ignore
78
- */
79
- registerOnTouched(fn) {
80
- this._onTouchedCallback = fn;
81
- }
82
- ;
83
- /**
84
- * Toggles the checked value of the checkbox
85
- * @ignore
86
- */
87
- toggle() {
88
- this.checked = !this.checked;
89
- }
90
- /**
91
- * User interaction event on click of the checkbox or its label to indicate toggling of the current checked status.
92
- * Emits selectionChange to parent components.
93
- * @ignore
94
- */
95
- onChange(event) {
96
- event.stopPropagation();
97
- this.toggle();
98
- // user manually clicking overrides indeterminate and sets it to false
99
- // this is because if they click and set to checked/unchecked, all 'child' checkboxes should get set to
100
- // checked/unchecked (by user routine, not here), so this checkbox is no longer indeterminate
101
- this.indeterminate = false;
102
- const checkBoxChange = {
103
- source: this,
104
- checked: this.checked
105
- };
106
- this._propagateChange(this.checked);
107
- this.selectionChange.emit(checkBoxChange);
108
- }
109
- }
110
- /**
111
- * @ignore
112
- */
113
- GoACheckboxComponent.idNum = 0;
114
- GoACheckboxComponent.decorators = [
115
- { type: Component, args: [{
116
- selector: 'goa-checkbox',
117
- template: "\n<div class=\"goa-checkbox\" [ngClass]=\"{'goa-checkbox-disabled': disabled, 'has-error': hasError(), 'goa-checkbox-label-before': labelPosition === 'before'}\">\n <label class=\"goa-checkbox-layout\" [attr.for]=\"uniqueId\">\n <div class=\"goa-checkbox-container\"\n [ngClass]=\"{'goa-checkbox-selected': checked, 'goa-checkbox-indeterminate': indeterminate}\">\n <input type=\"checkbox\"\n [id]=\"uniqueId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.value]=\"value\"\n (change)=\"onChange($event)\"\n />\n <svg *ngIf=\"checked\" id='checkmark' xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 12.18\" class=\"goa-checkmark\">\n <path d=\"M5.09,9.64,1.27,5.82,0,7.09l5.09,5.09L16,1.27,14.73,0Z\"/>\n </svg>\n <svg *ngIf=\"indeterminate\" id='dashmark' xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 2\" class=\"goa-indeterminate\">\n <rect width=\"15\" height=\"2\"/>\n </svg>\n </div>\n <div class=\"goa-checkbox-label\">\n <ng-content></ng-content>\n </div>\n </label>\n</div>\n",
118
- //register our custom ControlValueAccessor with angular DI system so angular knows how to get instance of it for ngModel binding
119
- providers: [GOA_CHECKBOX_CONTROL_VALUE_ACCESSOR],
120
- changeDetection: ChangeDetectionStrategy.OnPush,
121
- styles: [""]
122
- },] }
123
- ];
124
- GoACheckboxComponent.ctorParameters = () => [
125
- { type: ChangeDetectorRef }
126
- ];
127
- GoACheckboxComponent.propDecorators = {
128
- value: [{ type: Input }],
129
- checked: [{ type: Input }],
130
- disabled: [{ type: Input }],
131
- required: [{ type: Input }],
132
- indeterminate: [{ type: Input }],
133
- labelPosition: [{ type: Input }],
134
- selectionChange: [{ type: Output }]
135
- };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQTtBQUVEOzs7R0FHRztBQVNILE1BQU0sT0FBTyxvQkFBb0I7SUF5RS9CLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBMUN6RDs7V0FFRztRQUNLLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBbUIvQjs7V0FFRztRQUNNLGtCQUFhLEdBQXVCLE9BQU8sQ0FBQztRQUVwRDs7VUFFRTtRQUNPLG9CQUFlLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBT25HOztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUdqQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFBO0lBQ2hFLENBQUM7SUF4Q0Q7OztPQUdHO0lBQ0gsSUFDSSxhQUFhLEtBQWMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFJLGFBQWEsQ0FBQyxLQUFjO1FBQzlCLHNEQUFzRDtRQUN0RCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBRTVCLHVEQUF1RDtZQUN2RCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUM7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0lBMEJEOzs7T0FHRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQUEsQ0FBQztJQUVGOzs7T0FHRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFLO1FBQ1osS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLHNFQUFzRTtRQUN0RSx1R0FBdUc7UUFDdkcsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTNCLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ0QsQ0FBQztRQUV2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7O0FBL0lEOztHQUVHO0FBQ0ksMEJBQUssR0FBRyxDQUFDLENBQUM7O1lBYmxCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsMHdDQUF3QztnQkFFeEMsZ0lBQWdJO2dCQUNoSSxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFDaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUF2QkMsaUJBQWlCOzs7b0JBc0NoQixLQUFLO3NCQUtMLEtBQUs7dUJBS0wsS0FBSzt1QkFLTCxLQUFLOzRCQVVMLEtBQUs7NEJBaUJMLEtBQUs7OEJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHb0FDaGVja2JveENoYW5nZSB9IGZyb20gJy4vY2hlY2tib3gtY2hhbmdlJztcblxuZXhwb3J0IGNvbnN0IEdPQV9DSEVDS0JPWF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR29BQ2hlY2tib3hDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufVxuXG4vKipcbiAqIENoZWNrYm94IGNvbXBvbmVudCB3aXRoIEdvdmVybm1lbnQgb2YgQWxiZXJ0YSBzdHlsaW5nLlxuICogc2VsZWN0b3I6IGdvYS1jaGVja2JveFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnb2EtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICAvL3JlZ2lzdGVyIG91ciBjdXN0b20gQ29udHJvbFZhbHVlQWNjZXNzb3Igd2l0aCBhbmd1bGFyIERJIHN5c3RlbSBzbyBhbmd1bGFyIGtub3dzIGhvdyB0byBnZXQgaW5zdGFuY2Ugb2YgaXQgZm9yIG5nTW9kZWwgYmluZGluZ1xuICBwcm92aWRlcnM6IFtHT0FfQ0hFQ0tCT1hfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdvQUNoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdGF0aWMgaWROdW0gPSAwO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdW5pcXVlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWUvdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBvYmplY3QgdGhlIGNoZWNrYm94IHJlcHJlc2VudHMuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQvc2VsZWN0ZWQuXG4gICAqL1xuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgY2hlY2tib3ggaXMgcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAvKipcbiAgICogQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBjaGVja2JveCBzaG91bGQgZGlzcGxheSBhcyBpbmRldGVybWluYXRlXG4gICAqIChpLmUuIGl0IGhhcyBhc3NvY2lhdGVkICdjaGlsZCcgY2hlY2tib3hlcywgc29tZSBvZiB3aGljaCBhcmUgc2VsZWN0ZWQpLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pbmRldGVybWluYXRlOyB9XG4gIHNldCBpbmRldGVybWluYXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgLy8gb25seSBkbyBzb21ldGhpbmcgaWYgdmFsdWUgaGFzIGNoYW5nZWQgZnJvbSBjdXJyZW50XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcblxuICAgICAgLy8gY2FuJ3QgYmUgaW5kZXRlcm1pbmF0ZSBhbmQgY2hlY2tlZCwgc28gY2xlYXIgY2hlY2tlZFxuICAgICAgaWYgKHRoaXMuX2luZGV0ZXJtaW5hdGUpe1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIHRvIGRpc3BsYXkgdGhlIGxhYmVsL3RleHQgZm9yIHRoZSBjaGVjYm94LiAgVmFsaWQgdmFsdWVzIGFyZSBiZWZvcmUgYW5kIGFmdGVyLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJztcblxuICAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgY29udGFpbmluZyB0aGUgc291cmNlIGNoZWNrYm94LCBhbmQgd2hldGhlciBvciBub3QgaXQgaXMgY2hlY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxHb0FDaGVja2JveENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEdvQUNoZWNrYm94Q2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIF9wcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCkge1xuICAgIHRoaXMudW5pcXVlSWQgPSBgZ29hLWNoZWNrYm94LSR7R29BQ2hlY2tib3hDb21wb25lbnQuaWROdW0rK31gXG4gIH1cblxuICAvKipcbiAgICogQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBjaGVja2JveCBpcyByZXF1aXJlZCBhbmQgbm90IGNoZWNrZWRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuY2hlY2tlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG1vZGVsIGJvdW5kIHByb3BlcnR5LCBpLmUuIHRoZSB2YWx1ZSBvZiBjaGVja2VkXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCkgJiYgKHZhbHVlICE9PSBudWxsKSkge1xuICAgICAgdGhpcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBjaGFuZ2UuICBQcm92aWRlZCBieSBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gdG91Y2guICBQcm92aWRlZCBieSBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfTtcblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY2hlY2tlZCB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogVXNlciBpbnRlcmFjdGlvbiBldmVudCBvbiBjbGljayBvZiB0aGUgY2hlY2tib3ggb3IgaXRzIGxhYmVsIHRvIGluZGljYXRlIHRvZ2dsaW5nIG9mIHRoZSBjdXJyZW50IGNoZWNrZWQgc3RhdHVzLlxuICAgKiBFbWl0cyBzZWxlY3Rpb25DaGFuZ2UgdG8gcGFyZW50IGNvbXBvbmVudHMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLnRvZ2dsZSgpO1xuXG4gICAgLy8gdXNlciBtYW51YWxseSBjbGlja2luZyBvdmVycmlkZXMgaW5kZXRlcm1pbmF0ZSBhbmQgc2V0cyBpdCB0byBmYWxzZVxuICAgIC8vIHRoaXMgaXMgYmVjYXVzZSBpZiB0aGV5IGNsaWNrIGFuZCBzZXQgdG8gY2hlY2tlZC91bmNoZWNrZWQsIGFsbCAnY2hpbGQnIGNoZWNrYm94ZXMgc2hvdWxkIGdldCBzZXQgdG9cbiAgICAvLyBjaGVja2VkL3VuY2hlY2tlZCAoYnkgdXNlciByb3V0aW5lLCBub3QgaGVyZSksIHNvIHRoaXMgY2hlY2tib3ggaXMgbm8gbG9uZ2VyIGluZGV0ZXJtaW5hdGVcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNoZWNrQm94Q2hhbmdlID0ge1xuICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgY2hlY2tlZDogdGhpcy5jaGVja2VkXG4gICAgfSBhcyBHb0FDaGVja2JveENoYW5nZTtcblxuICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZSh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoY2hlY2tCb3hDaGFuZ2UpO1xuICB9XG59XG4iXX0=
@@ -1,326 +0,0 @@
1
- import { Component, Input, Output, ContentChildren, EventEmitter, ViewChild, ElementRef, QueryList, ChangeDetectorRef } from '@angular/core';
2
- import { GoAOptionComponent } from './option/option.component';
3
- import { GoAOptionGroupComponent } from './option-group/option-group.component';
4
- /**
5
- * A dropdown component with Government of Alberta styling.
6
- * selector: goa-dropdown
7
- */
8
- export class GoADropdownComponent {
9
- constructor(cdr) {
10
- this.cdr = cdr;
11
- /**
12
- * boolean for if the dropdown is open.
13
- * @ignore
14
- */
15
- this._isOpen = false;
16
- /**
17
- * Is the required error tripped?
18
- * @ignore
19
- */
20
- this._requiredError = false;
21
- /**
22
- * This position config ensures that the top "start" corner of the overlay
23
- * is aligned with with the bottom "start" of the origin by default (overlapping
24
- * the trigger completely). If the panel cannot fit below the trigger, it
25
- * will fall back to a position above the trigger.
26
- * @ignore
27
- */
28
- this._positions = [
29
- {
30
- originX: 'start',
31
- originY: 'bottom',
32
- overlayX: 'start',
33
- overlayY: 'top',
34
- },
35
- {
36
- originX: 'start',
37
- originY: 'top',
38
- overlayX: 'start',
39
- overlayY: 'bottom',
40
- },
41
- ];
42
- /**
43
- * All options currently matching filter including groups.
44
- * @ignore
45
- */
46
- this._allFilteredOptions = [];
47
- /**
48
- * Whats the mode for typeahead.
49
- */
50
- this.typeaheadMode = 'none';
51
- /**
52
- * Is the select disabled.
53
- */
54
- this.disabled = false;
55
- /**
56
- * @ignore
57
- */
58
- this._multiple = false;
59
- /**
60
- * @ignore
61
- */
62
- this._required = false;
63
- /**
64
- * Event emitted containing the value field of all selected options when the selection changes.
65
- */
66
- this.selectionChange = new EventEmitter();
67
- }
68
- /**
69
- * Update the selected options, select the options with the given ids
70
- */
71
- set selectedIds(ids) {
72
- if (this.allOptions === undefined) {
73
- // aren't initialized yet, return
74
- return;
75
- }
76
- if (ids === null || ids === undefined) {
77
- ids = [];
78
- }
79
- if (ids.length > 1 && this.multiple === false) {
80
- throw new Error('Cannot select multiple options when the dropdown has multiple set to false.');
81
- }
82
- const selectedOptions = [];
83
- this.allOptions.forEach(option => {
84
- if (ids.includes(option.id)) {
85
- option.selected = true;
86
- selectedOptions.push(option);
87
- }
88
- else {
89
- option.selected = false;
90
- }
91
- });
92
- this.selectionChanged(selectedOptions, true);
93
- }
94
- /**
95
- * Is multiple selection?
96
- */
97
- set multiple(value) {
98
- this._multiple = value;
99
- if (this._multiple === false) {
100
- // If we have changed from multiple to no multiple then deselect everything.
101
- this.selectedItems.forEach(option => {
102
- option.selected = false;
103
- });
104
- }
105
- }
106
- get multiple() {
107
- return this._multiple;
108
- }
109
- /**
110
- * Is a selection required?
111
- */
112
- set required(value) {
113
- this._required = value;
114
- this._requiredError = this.selectedItems.length === 0 && this._required === true;
115
- }
116
- get required() {
117
- return this._required;
118
- }
119
- /**
120
- * Lifecycle hook OnInit
121
- * @ignore
122
- */
123
- /* eslint-disable @angular-eslint/no-empty-lifecycle-method */
124
- ngOnInit() { }
125
- /**
126
- * Lifecycle hook AfterViewInit
127
- * @ignore
128
- */
129
- ngAfterViewInit() {
130
- this._triggerRect = this.textInput.nativeElement.getBoundingClientRect();
131
- this._filteredOptions = [...this.options];
132
- this._allFilteredOptions = [...this.allOptions];
133
- if (this.selectedItems.length > 0) {
134
- this.setTextInput(this.selectedItems[0].label);
135
- }
136
- // The template output cache is populated by child components during render,
137
- // so tell angular that there have been changes during the render here.
138
- this.cdr.detectChanges();
139
- }
140
- /**
141
- * Called when user updates the text in the searchbox.
142
- * @param text The text of the input
143
- * @ignore
144
- */
145
- onFilterChange(text) {
146
- // open the dropdown if it is not already
147
- if (!this._isOpen === true) {
148
- this._isOpen = true;
149
- }
150
- this.filterOptions(text);
151
- }
152
- /**
153
- * Handler for keyboard events when menu is open.
154
- * @param event keyboard event
155
- * @ignore
156
- */
157
- overlayKeydown(event) {
158
- if (event.code === 'Enter' || event.code === 'NumpadEnter') {
159
- this.optionClicked(this._activeOption);
160
- }
161
- else if (event.code === 'ArrowDown') {
162
- this._activeIndex = (this._activeIndex + 1) % this._allFilteredOptions.length;
163
- this._activeOption = this._allFilteredOptions[this._activeIndex];
164
- }
165
- else if (event.code === 'ArrowUp') {
166
- if (this._activeIndex > 0) {
167
- this._activeIndex = this._activeIndex - 1;
168
- this._activeOption = this._allFilteredOptions[this._activeIndex];
169
- }
170
- }
171
- }
172
- /**
173
- * Sets the active option. Active option is the option that when enter is pressed is selected.
174
- * @param option The option to make the active option
175
- * @ignore
176
- */
177
- setActiveOption(option) {
178
- this._activeOption = option;
179
- this._activeIndex = this._allFilteredOptions.findIndex((filteredOption) => filteredOption.id === option.id);
180
- }
181
- /**
182
- * Handler for when the input is clicked.
183
- * @ignore
184
- */
185
- inputClicked() {
186
- if (this.disabled === false) {
187
- this._isOpen = !this._isOpen;
188
- // set the active option to the first in the list
189
- if (this._allFilteredOptions.length > 0) {
190
- this._activeOption = this._allFilteredOptions[0];
191
- this._activeIndex = 0;
192
- }
193
- }
194
- }
195
- /**
196
- * Handler for when descendant an option is clicked.
197
- * @ignore
198
- */
199
- optionClicked(option) {
200
- let selectedOptions = [];
201
- if (this.multiple === true) {
202
- option.selected = !option.selected;
203
- selectedOptions = this.selectedItems;
204
- }
205
- else {
206
- option.selected = !option.selected;
207
- this.selectedItems.forEach((o) => {
208
- if (option.id !== o.id) {
209
- // change all options that weren't selected to false without notifying change
210
- o.selected = false;
211
- }
212
- selectedOptions = [option];
213
- });
214
- }
215
- this.selectionChanged(selectedOptions, true);
216
- if (this.multiple === false) {
217
- // close the dropdown if we are in single selection mode
218
- this._isOpen = false;
219
- }
220
- }
221
- /**
222
- * Update view when selection changes
223
- * @param options
224
- * @ignore
225
- */
226
- selectionChanged(options, emitEvent) {
227
- if (options.length > 0) {
228
- const selectedOptions = options.map(o => o.label).join(', ');
229
- this._requiredError = false;
230
- this.setTextInput(selectedOptions);
231
- }
232
- else {
233
- this._requiredError = this.required;
234
- this.setTextInput('');
235
- }
236
- if (emitEvent === true) {
237
- this.emitChange(options);
238
- }
239
- }
240
- /**
241
- * Emit selection change
242
- * @ignore
243
- */
244
- emitChange(options) {
245
- const values = options.map((option) => option.value);
246
- this.selectionChange.emit(values);
247
- }
248
- /**
249
- * Gets all the currently selected options
250
- * @ignore
251
- */
252
- get selectedItems() {
253
- if (this.allOptions === undefined) {
254
- return [];
255
- }
256
- return [...this.allOptions.filter((option) => option.selected === true)];
257
- }
258
- /**
259
- * Set the text of the input.
260
- * @param value The value to set
261
- * @ignore
262
- */
263
- setTextInput(value) {
264
- if (this.textInput) {
265
- this.textInput.nativeElement.value = value;
266
- // Exact matches show whole list?
267
- this.filterOptions('');
268
- }
269
- }
270
- /**
271
- * Update the filtered options with the passed in filter text.
272
- * @param filterText The text to filter by
273
- * @ignore
274
- */
275
- filterOptions(filterText) {
276
- this.optionGroups.forEach(group => {
277
- group._filteredOptions = group.options.filter(this.typeaheadFilter.bind(this, filterText, this.typeaheadMode));
278
- });
279
- this._filteredOptions = this.options.filter(this.typeaheadFilter.bind(this, filterText, this.typeaheadMode));
280
- this._allFilteredOptions = this.allOptions.filter(this.typeaheadFilter.bind(this, filterText, this.typeaheadMode));
281
- // The filters have changed so update the active option incase it has been filtered out.
282
- this._activeOption = this._allFilteredOptions[this._activeIndex % this._allFilteredOptions.length];
283
- }
284
- /**
285
- * Filter for typeahead with logic for what mode we are in.
286
- * @param option
287
- * @ignore
288
- */
289
- typeaheadFilter(filterText, typeaheadMode, option) {
290
- if (typeaheadMode === 'none' || this.typeaheadMode === undefined) {
291
- return true;
292
- }
293
- if (typeaheadMode === 'startsWith') {
294
- return option.label.toLocaleLowerCase().startsWith(filterText.toLocaleLowerCase());
295
- }
296
- if (typeaheadMode === 'contains') {
297
- return option.label.toLocaleLowerCase().includes(filterText.toLocaleLowerCase());
298
- }
299
- }
300
- }
301
- GoADropdownComponent.decorators = [
302
- { type: Component, args: [{
303
- selector: 'goa-dropdown',
304
- template: "<div class=\"goa-dropdown\" [ngClass]=\"{\n 'single-selection': multiple === false,\n 'has-error': _requiredError === true,\n 'opened': _isOpen,\n 'disabled': disabled === true\n }\"> \n <label class=\"dropdown-label\">{{label}}\n <span *ngIf=\"required\" class=\"required-label\" i18n=\"Required label for dropdown\">(Required)</span>\n <div (click)=\"inputClicked()\" class=\"dropdown-grouping\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <i class=\"goa-select-icon\"></i>\n <input class=\"dropdown-textbox margin-override\" \n #textInput \n (input)=\"onFilterChange($event.target.value)\"\n type=\"text\" \n [attr.readonly]=\"typeaheadMode === 'none' ? 'readonly' : null\"\n [attr.disabled]=\"disabled === true ? 'true' : null\"\n placeholder=\"{{description}}\"> \n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"20\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"_isOpen = false\"\n (overlayKeydown)=\"overlayKeydown($event)\"\n (detach)=\"_isOpen = false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"_isOpen\"\n [cdkConnectedOverlayPositions]=\"_positions\"\n [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width\"\n [cdkConnectedOverlayHeight]=\"menuHeight\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n >\n <div class=\"dropdown-menu\">\n <div *ngFor=\"let optionGroup of optionGroups\" class=\"option-group\">\n <div *ngIf=\"optionGroup._filteredOptions.length > 0\">\n <div class=\"option-group-label\">\n {{optionGroup.label}}\n </div>\n <!--Grab the <option> template from the GoAOption -->\n <div class=\"option\"\n [ngClass]=\"{\n 'selected': option.selected,\n 'active': option.id === _activeOption.id\n }\"\n *ngFor=\"let option of (optionGroup._filteredOptions)\" \n (click)=\"optionClicked(option)\"\n (mouseover)=\"setActiveOption(option)\">\n <ng-template [ngTemplateOutlet]=\"option.optionTemplate\"></ng-template>\n </div>\n </div>\n </div>\n <!--Grab the <option> template from the GoAOption -->\n <div class=\"option\" \n [ngClass]=\"{\n 'selected': option.selected,\n 'active': option.id === _activeOption.id\n }\"\n *ngFor=\"let option of (_filteredOptions)\" \n (click)=\"optionClicked(option)\"\n (mouseover)=\"setActiveOption(option)\"> \n <ng-template [ngTemplateOutlet]=\"option.optionTemplate\"></ng-template>\n </div>\n </div> \n </ng-template> \n </div>\n <span *ngIf=\"!_requiredError\" class=\"helper-text\">{{description}}</span>\n <span *ngIf=\"_requiredError === true\" class=\"error-text\" i18n=\"Required warning for dropdown\">At least one item must be selected.</span> \n </label>\n</div>\n",
305
- styles: [""]
306
- },] }
307
- ];
308
- GoADropdownComponent.ctorParameters = () => [
309
- { type: ChangeDetectorRef }
310
- ];
311
- GoADropdownComponent.propDecorators = {
312
- typeaheadMode: [{ type: Input }],
313
- menuHeight: [{ type: Input }],
314
- label: [{ type: Input }],
315
- description: [{ type: Input }],
316
- selectedIds: [{ type: Input }],
317
- disabled: [{ type: Input }],
318
- multiple: [{ type: Input }],
319
- required: [{ type: Input }],
320
- textInput: [{ type: ViewChild, args: ['textInput',] }],
321
- allOptions: [{ type: ContentChildren, args: [GoAOptionComponent, { descendants: true },] }],
322
- options: [{ type: ContentChildren, args: [GoAOptionComponent, { descendants: false },] }],
323
- optionGroups: [{ type: ContentChildren, args: [GoAOptionGroupComponent, { descendants: false },] }],
324
- selectionChange: [{ type: Output }]
325
- };
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLGVBQWUsRUFDZixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSWhGOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxvQkFBb0I7SUE0TC9CLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBM0wxQzs7O1dBR0c7UUFDSCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCOzs7V0FHRztRQUNILG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBUXZCOzs7Ozs7U0FNQztRQUNELGVBQVUsR0FBd0I7WUFDaEM7Z0JBQ0UsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFFBQVEsRUFBRSxRQUFRO2FBQ25CO1NBQ0YsQ0FBQztRQWNGOzs7V0FHRztRQUNILHdCQUFtQixHQUE4QixFQUFFLENBQUM7UUFRcEQ7O1dBRUc7UUFDTSxrQkFBYSxHQUF1QyxNQUFNLENBQUM7UUFpRHBFOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUss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XG4gIEFmdGVyVmlld0luaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEdvQU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vb3B0aW9uL29wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR29BT3B0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL29wdGlvbi1ncm91cC9vcHRpb24tZ3JvdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbi8qKlxuICogQSBkcm9wZG93biBjb21wb25lbnQgd2l0aCBHb3Zlcm5tZW50IG9mIEFsYmVydGEgc3R5bGluZy5cbiAqIHNlbGVjdG9yOiBnb2EtZHJvcGRvd25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ29hLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHb0FEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBib29sZWFuIGZvciBpZiB0aGUgZHJvcGRvd24gaXMgb3Blbi5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJcyB0aGUgcmVxdWlyZWQgZXJyb3IgdHJpcHBlZD9cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgX3JlcXVpcmVkRXJyb3IgPSBmYWxzZTtcblxuICAvKipcbiAgICogQm91bmRpbmcgYm94IG9mIHRleHRJbnB1dC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgX3RyaWdnZXJSZWN0O1xuXG4gIC8qKlxuICogVGhpcyBwb3NpdGlvbiBjb25maWcgZW5zdXJlcyB0aGF0IHRoZSB0b3AgXCJzdGFydFwiIGNvcm5lciBvZiB0aGUgb3ZlcmxheVxuICogaXMgYWxpZ25lZCB3aXRoIHdpdGggdGhlIGJvdHRvbSBcInN0YXJ0XCIgb2YgdGhlIG9yaWdpbiBieSBkZWZhdWx0IChvdmVybGFwcGluZ1xuICogdGhlIHRyaWdnZXIgY29tcGxldGVseSkuIElmIHRoZSBwYW5lbCBjYW5ub3QgZml0IGJlbG93IHRoZSB0cmlnZ2VyLCBpdFxuICogd2lsbCBmYWxsIGJhY2sgdG8gYSBwb3NpdGlvbiBhYm92ZSB0aGUgdHJpZ2dlci5cbiAqIEBpZ25vcmVcbiAqL1xuICBfcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgfSxcbiAgXTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgYWN0aXZlIG9wdGlvblxuICAgKiBAaWdub3JlXG4gICAqL1xuICBfYWN0aXZlT3B0aW9uOiBHb0FPcHRpb25Db21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGFjdGl2ZSBpbmRleFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBfYWN0aXZlSW5kZXg7XG5cbiAgLyoqXG4gICAqIEFsbCBvcHRpb25zIGN1cnJlbnRseSBtYXRjaGluZyBmaWx0ZXIgaW5jbHVkaW5nIGdyb3Vwcy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgX2FsbEZpbHRlcmVkT3B0aW9uczogQXJyYXk8R29BT3B0aW9uQ29tcG9uZW50PiA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBmaWx0ZXJlZCBvcHRpb25zIHRvIHNob3cgaW4gdGhlIHZpZXcuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIF9maWx0ZXJlZE9wdGlvbnM6IEFycmF5PEdvQU9wdGlvbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqIFdoYXRzIHRoZSBtb2RlIGZvciB0eXBlYWhlYWQuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRNb2RlOiAnbm9uZScgfCAnY29udGFpbnMnIHwgJ3N0YXJ0c1dpdGgnID0gJ25vbmUnO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVpZ2h0IGZvciB0aGUgZHJvcGRvd24uICBJZiBub25lIGlzIHNldCB0aGUgZHJvcGRvd24gZ3Jvd3MgdW50aWwgaXQgcmVhY2hlcyB0aGUgdmlld3BvcnQgZWRnZS5cbiAgICovXG4gIEBJbnB1dCgpIG1lbnVIZWlnaHQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxhYmVsIGZvciB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHNlbGVjdGVkIG9wdGlvbnMsIHNlbGVjdCB0aGUgb3B0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZHNcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZElkcyhpZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBpZiAodGhpcy5hbGxPcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGFyZW4ndCBpbml0aWFsaXplZCB5ZXQsIHJldHVyblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpZHMgPT09IG51bGwgfHwgaWRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlkcyA9IFtdO1xuICAgIH1cblxuICAgIGlmIChpZHMubGVuZ3RoID4gMSAmJiB0aGlzLm11bHRpcGxlID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc2VsZWN0IG11bHRpcGxlIG9wdGlvbnMgd2hlbiB0aGUgZHJvcGRvd24gaGFzIG11bHRpcGxlIHNldCB0byBmYWxzZS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmFsbE9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgaWYgKGlkcy5pbmNsdWRlcyhvcHRpb24uaWQpKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRPcHRpb25zLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGUgc2VsZWN0IGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSXMgbXVsdGlwbGUgc2VsZWN0aW9uP1xuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fbXVsdGlwbGUgPT09IGZhbHNlKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIGNoYW5nZWQgZnJvbSBtdWx0aXBsZSB0byBubyBtdWx0aXBsZSB0aGVuIGRlc2VsZWN0IGV2ZXJ5dGhpbmcuXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9tdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJcyBhIHNlbGVjdGlvbiByZXF1aXJlZD9cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5fcmVxdWlyZWRFcnJvciA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5fcmVxdWlyZWQgPT09IHRydWU7XG4gIH1cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHNlbGVjdCBlbGVtZW50LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnKSB0ZXh0SW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgLyoqXG4gICAqIEFsbCBvcHRpb25zLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEdvQU9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBhbGxPcHRpb25zOiBRdWVyeUxpc3Q8R29BT3B0aW9uQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogVGhlIHRvcCBsZXZlbCBvcHRpb25zIGZvciByZW5kZXJpbmcgb3B0aW9ucy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihHb0FPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIG9wdGlvbnM6IFF1ZXJ5TGlzdDxHb0FPcHRpb25Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uIGdyb3VwcyBmb3IgcmVuZGVyaW5nLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEdvQU9wdGlvbkdyb3VwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBvcHRpb25Hcm91cHM6IFF1ZXJ5TGlzdDxHb0FPcHRpb25Hcm91cENvbXBvbmVudD47XG5cbiAgLyoqXG4gICogRXZlbnQgZW1pdHRlZCBjb250YWluaW5nIHRoZSB2YWx1ZSBmaWVsZCBvZiBhbGwgc2VsZWN0ZWQgb3B0aW9ucyB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayBPbkluaXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWVtcHR5LWxpZmVjeWNsZS1tZXRob2QgKi9cbiAgbmdPbkluaXQoKSB7IH1cblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGhvb2sgQWZ0ZXJWaWV3SW5pdFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fdHJpZ2dlclJlY3QgPSB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgdGhpcy5fZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XG4gICAgdGhpcy5fYWxsRmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMuYWxsT3B0aW9uc107XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2V0VGV4dElucHV0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5sYWJlbCk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHRlbXBsYXRlIG91dHB1dCBjYWNoZSBpcyBwb3B1bGF0ZWQgYnkgY2hpbGQgY29tcG9uZW50cyBkdXJpbmcgcmVuZGVyLFxuICAgIC8vIHNvIHRlbGwgYW5ndWxhciB0aGF0IHRoZXJlIGhhdmUgYmVlbiBjaGFuZ2VzIGR1cmluZyB0aGUgcmVuZGVyIGhlcmUuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHVzZXIgdXBkYXRlcyB0aGUgdGV4dCBpbiB0aGUgc2VhcmNoYm94LlxuICAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCBvZiB0aGUgaW5wdXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25GaWx0ZXJDaGFuZ2UodGV4dDogc3RyaW5nKSB7XG4gICAgLy8gb3BlbiB0aGUgZHJvcGRvd24gaWYgaXQgaXMgbm90IGFscmVhZHlcbiAgICBpZiAoIXRoaXMuX2lzT3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlck9wdGlvbnModGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlciBmb3Iga2V5Ym9hcmQgZXZlbnRzIHdoZW4gbWVudSBpcyBvcGVuLlxuICAgKiBAcGFyYW0gZXZlbnQga2V5Ym9hcmQgZXZlbnRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb3ZlcmxheUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnTnVtcGFkRW50ZXInKSB7XG4gICAgICB0aGlzLm9wdGlvbkNsaWNrZWQodGhpcy5fYWN0aXZlT3B0aW9uKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gKHRoaXMuX2FjdGl2ZUluZGV4ICsgMSkgJSB0aGlzLl9hbGxGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuICAgICAgdGhpcy5fYWN0aXZlT3B0aW9uID0gdGhpcy5fYWxsRmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUluZGV4XTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBpZiAodGhpcy5fYWN0aXZlSW5kZXggPiAwKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXggLSAxO1xuICAgICAgICB0aGlzLl9hY3RpdmVPcHRpb24gPSB0aGlzLl9hbGxGaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSW5kZXhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgb3B0aW9uLiAgQWN0aXZlIG9wdGlvbiBpcyB0aGUgb3B0aW9uIHRoYXQgd2hlbiBlbnRlciBpcyBwcmVzc2VkIGlzIHNlbGVjdGVkLlxuICAgKiBAcGFyYW0gb3B0aW9uIFRoZSBvcHRpb24gdG8gbWFrZSB0aGUgYWN0aXZlIG9wdGlvblxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXRBY3RpdmVPcHRpb24ob3B0aW9uKSB7XG4gICAgdGhpcy5fYWN0aXZlT3B0aW9uID0gb3B0aW9uO1xuICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gdGhpcy5fYWxsRmlsdGVyZWRPcHRpb25zLmZpbmRJbmRleChcbiAgICAgIChmaWx0ZXJlZE9wdGlvbikgPT4gZmlsdGVyZWRPcHRpb24uaWQgPT09IG9wdGlvbi5pZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlciBmb3Igd2hlbiB0aGUgaW5wdXQgaXMgY2xpY2tlZC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaW5wdXRDbGlja2VkKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5faXNPcGVuID0gIXRoaXMuX2lzT3BlbjtcblxuICAgICAgLy8gc2V0IHRoZSBhY3RpdmUgb3B0aW9uIHRvIHRoZSBmaXJzdCBpbiB0aGUgbGlzdFxuICAgICAgaWYgKHRoaXMuX2FsbEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZU9wdGlvbiA9IHRoaXMuX2FsbEZpbHRlcmVkT3B0aW9uc1swXTtcbiAgICAgICAgdGhpcy5fYWN0aXZlSW5kZXggPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciB3aGVuIGRlc2NlbmRhbnQgYW4gb3B0aW9uIGlzIGNsaWNrZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9wdGlvbkNsaWNrZWQob3B0aW9uOiBHb0FPcHRpb25Db21wb25lbnQpIHtcbiAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9uLnNlbGVjdGVkID0gIW9wdGlvbi5zZWxlY3RlZDtcbiAgICAgIHNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRJdGVtcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBvcHRpb24uc2VsZWN0ZWQgPSAhb3B0aW9uLnNlbGVjdGVkO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKG8pID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gby5pZCkge1xuICAgICAgICAgIC8vIGNoYW5nZSBhbGwgb3B0aW9ucyB0aGF0IHdlcmVuJ3Qgc2VsZWN0ZWQgdG8gZmFsc2Ugd2l0aG91dCBub3RpZnlpbmcgY2hhbmdlXG4gICAgICAgICAgby5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zID0gW29wdGlvbl07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRPcHRpb25zLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlID09PSBmYWxzZSkge1xuICAgICAgLy8gY2xvc2UgdGhlIGRyb3Bkb3duIGlmIHdlIGFyZSBpbiBzaW5nbGUgc2VsZWN0aW9uIG1vZGVcbiAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlldyB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgc2VsZWN0aW9uQ2hhbmdlZChvcHRpb25zOiBBcnJheTxHb0FPcHRpb25Db21wb25lbnQ+LCBlbWl0RXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSBvcHRpb25zLm1hcChvID0+IG8ubGFiZWwpLmpvaW4oJywgJylcbiAgICAgIHRoaXMuX3JlcXVpcmVkRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0VGV4dElucHV0KHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fcmVxdWlyZWRFcnJvciA9IHRoaXMucmVxdWlyZWQ7XG4gICAgICB0aGlzLnNldFRleHRJbnB1dCgnJyk7XG4gICAgfVxuXG4gICAgaWYgKGVtaXRFdmVudCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IHNlbGVjdGlvbiBjaGFuZ2VcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlKG9wdGlvbnM6IEFycmF5PEdvQU9wdGlvbkNvbXBvbmVudD4pIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBvcHRpb25zLm1hcChcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbi52YWx1ZVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHZhbHVlcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25zXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZ2V0IHNlbGVjdGVkSXRlbXMoKTogQXJyYXk8R29BT3B0aW9uQ29tcG9uZW50PiB7XG4gICAgaWYgKHRoaXMuYWxsT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi50aGlzLmFsbE9wdGlvbnMuZmlsdGVyKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkID09PSB0cnVlXG4gICAgKV07XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0ZXh0IG9mIHRoZSBpbnB1dC5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRUZXh0SW5wdXQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnRleHRJbnB1dCkge1xuICAgICAgdGhpcy50ZXh0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgLy8gRXhhY3QgbWF0Y2hlcyBzaG93IHdob2xlIGxpc3Q/XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMoJycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGZpbHRlcmVkIG9wdGlvbnMgd2l0aCB0aGUgcGFzc2VkIGluIGZpbHRlciB0ZXh0LlxuICAgKiBAcGFyYW0gZmlsdGVyVGV4dCBUaGUgdGV4dCB0byBmaWx0ZXIgYnlcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKGZpbHRlclRleHQ6IHN0cmluZykge1xuICAgIHRoaXMub3B0aW9uR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgZ3JvdXAuX2ZpbHRlcmVkT3B0aW9ucyA9IGdyb3VwLm9wdGlvbnMuZmlsdGVyKHRoaXMudHlwZWFoZWFkRmlsdGVyLmJpbmQodGhpcywgZmlsdGVyVGV4dCwgdGhpcy50eXBlYWhlYWRNb2RlKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKHRoaXMudHlwZWFoZWFkRmlsdGVyLmJpbmQodGhpcywgZmlsdGVyVGV4dCwgdGhpcy50eXBlYWhlYWRNb2RlKSk7XG4gICAgdGhpcy5fYWxsRmlsdGVyZWRPcHRpb25zID0gdGhpcy5hbGxPcHRpb25zLmZpbHRlcih0aGlzLnR5cGVhaGVhZEZpbHRlci5iaW5kKHRoaXMsIGZpbHRlclRleHQsIHRoaXMudHlwZWFoZWFkTW9kZSkpO1xuXG4gICAgLy8gVGhlIGZpbHRlcnMgaGF2ZSBjaGFuZ2VkIHNvIHVwZGF0ZSB0aGUgYWN0aXZlIG9wdGlvbiBpbmNhc2UgaXQgaGFzIGJlZW4gZmlsdGVyZWQgb3V0LlxuICAgIHRoaXMuX2FjdGl2ZU9wdGlvbiA9IHRoaXMuX2FsbEZpbHRlcmVkT3B0aW9uc1t0aGlzLl9hY3RpdmVJbmRleCAlIHRoaXMuX2FsbEZpbHRlcmVkT3B0aW9ucy5sZW5ndGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBmb3IgdHlwZWFoZWFkIHdpdGggbG9naWMgZm9yIHdoYXQgbW9kZSB3ZSBhcmUgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB0eXBlYWhlYWRGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nLCB0eXBlYWhlYWRNb2RlOiAnbm9uZScgfCAnc3RhcnRzV2l0aCcgfCAnY29udGFpbnMnLCBvcHRpb246IEdvQU9wdGlvbkNvbXBvbmVudCkge1xuICAgIGlmICh0eXBlYWhlYWRNb2RlID09PSAnbm9uZScgfHwgdGhpcy50eXBlYWhlYWRNb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlYWhlYWRNb2RlID09PSAnc3RhcnRzV2l0aCcpIHtcbiAgICAgIHJldHVybiBvcHRpb24ubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGZpbHRlclRleHQudG9Mb2NhbGVMb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVhaGVhZE1vZGUgPT09ICdjb250YWlucycpIHtcbiAgICAgIHJldHVybiBvcHRpb24ubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,48 +0,0 @@
1
- import { Component, Input, TemplateRef, ViewChild, ChangeDetectionStrategy } from '@angular/core';
2
- /**
3
- * Option component with to use with GoADropdown.
4
- * selector: goa-option
5
- */
6
- export class GoAOptionComponent {
7
- constructor() {
8
- /**
9
- * Is the option currently selected
10
- * @ignore
11
- */
12
- this.selected = false;
13
- /**
14
- * Is the option selected by default?
15
- */
16
- this.defaultSelected = false;
17
- }
18
- /**
19
- * Lifecycle hook OnInit
20
- * @ignore
21
- */
22
- ngOnInit() {
23
- if (this.id === undefined || this.id === null) {
24
- throw new TypeError(`Input 'id' is required.`);
25
- }
26
- if (this.label === undefined || this.label === null) {
27
- throw new TypeError(`Input 'label' is required.`);
28
- }
29
- this.selected = this.defaultSelected;
30
- }
31
- }
32
- GoAOptionComponent.decorators = [
33
- { type: Component, args: [{
34
- selector: 'goa-option',
35
- template: "<ng-template #optionTemplate>\n <div class=\"goa-option\">\n <ng-content></ng-content>\n </div>\n</ng-template>",
36
- changeDetection: ChangeDetectionStrategy.OnPush,
37
- styles: [""]
38
- },] }
39
- ];
40
- GoAOptionComponent.ctorParameters = () => [];
41
- GoAOptionComponent.propDecorators = {
42
- id: [{ type: Input }],
43
- value: [{ type: Input }],
44
- label: [{ type: Input }],
45
- defaultSelected: [{ type: Input }],
46
- optionTemplate: [{ type: ViewChild, args: ['optionTemplate',] }]
47
- };
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvZHJvcGRvd24vb3B0aW9uL29wdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFeEg7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGtCQUFrQjtJQWtDN0I7UUFoQ0E7OztXQUdHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWlCakI7O1dBRUc7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQVFsQixDQUFDO0lBRWhCOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVDLE1BQU0sSUFBSSxTQUFTLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbEQsTUFBTSxJQUFJLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3ZDLENBQUM7OztZQXhERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLHdJQUFzQztnQkFFdEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7O2lCQVlFLEtBQUs7b0JBS0wsS0FBSztvQkFLTCxLQUFLOzhCQUtMLEtBQUs7NkJBTUwsU0FBUyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIE9wdGlvbiBjb21wb25lbnQgd2l0aCB0byB1c2Ugd2l0aCBHb0FEcm9wZG93bi5cbiAqIHNlbGVjdG9yOiBnb2Etb3B0aW9uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dvYS1vcHRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdvQU9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElzIHRoZSBvcHRpb24gY3VycmVudGx5IHNlbGVjdGVkXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWQgb2YgdGhlIG9wdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU6IGFueTtcblxuICAvKipcbiAgICogTGFiZWwgdG8gYmUgdXNlZCBmb3Igb3B0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhlIG9wdGlvbiBzZWxlY3RlZCBieSBkZWZhdWx0P1xuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdFNlbGVjdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb24gdGVtcGxhdGVcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnb3B0aW9uVGVtcGxhdGUnKSBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIE9uSW5pdFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZih0aGlzLmlkID09PSB1bmRlZmluZWQgfHwgdGhpcy5pZCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgSW5wdXQgJ2lkJyBpcyByZXF1aXJlZC5gKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLmxhYmVsID09PSB1bmRlZmluZWQgfHwgdGhpcy5sYWJlbCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgSW5wdXQgJ2xhYmVsJyBpcyByZXF1aXJlZC5gKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kZWZhdWx0U2VsZWN0ZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { Component, Input, QueryList, ContentChildren, ViewChild, TemplateRef, ChangeDetectorRef } from '@angular/core';
2
- import { GoAOptionComponent } from '../option/option.component';
3
- /**
4
- * Option grouping component with to use with GoADropdown.
5
- * selector: goa-option-group
6
- */
7
- export class GoAOptionGroupComponent {
8
- constructor(cdr) {
9
- this.cdr = cdr;
10
- }
11
- /**
12
- * Lifecycle hook OnInit
13
- * @ignore
14
- */
15
- ngOnInit() {
16
- if (this.label === undefined || this.label === null || this.label === '') {
17
- throw new TypeError(`The input 'label' is required.`);
18
- }
19
- }
20
- /**
21
- * Lifecycle hook AfterViewInit
22
- * @ignore
23
- */
24
- ngAfterViewInit() {
25
- this._filteredOptions = [...this.options];
26
- // The template output cache is populated by child components during render, so tell angular that
27
- // there have been changes during the render here.
28
- this.cdr.detectChanges();
29
- }
30
- }
31
- GoAOptionGroupComponent.decorators = [
32
- { type: Component, args: [{
33
- selector: 'goa-option-group',
34
- template: "<!--Grab the <option> template from the GoAOption -->\n<ng-template #optionGroupTemplate>\n <div class=\"goa-option-group\">\n {{label}}\n <div class=\"group-options\">\n <ng-container class=\"goa-option\"> \n <ng-template *ngFor=\"let option of _filteredOptions\" [ngTemplateOutlet]=\"option.optionTemplate\"></ng-template>\n </ng-container>\n </div>\n </div>\n</ng-template>",
35
- styles: [".goa-option-group{font-weight:bold}.goa-option-group .group-options{padding-left:1em;font-weight:normal}\n"]
36
- },] }
37
- ];
38
- GoAOptionGroupComponent.ctorParameters = () => [
39
- { type: ChangeDetectorRef }
40
- ];
41
- GoAOptionGroupComponent.propDecorators = {
42
- label: [{ type: Input }],
43
- options: [{ type: ContentChildren, args: [GoAOptionComponent, { descendants: true },] }],
44
- optionGroupTemplate: [{ type: ViewChild, args: ['optionGroupTemplate',] }]
45
- };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvZHJvcGRvd24vb3B0aW9uLWdyb3VwL29wdGlvbi1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsV0FBVyxFQUNYLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBd0JsQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUFJLENBQUM7SUFFL0M7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDeEUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxpR0FBaUc7UUFDakcsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBbERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixvY0FBNEM7O2FBRTdDOzs7WUFaQyxpQkFBaUI7OztvQkF1QmhCLEtBQUs7c0JBTUwsZUFBZSxTQUFDLGtCQUFrQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtrQ0FNekQsU0FBUyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgUXVlcnlMaXN0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFZpZXdDaGlsZCxcbiAgVGVtcGxhdGVSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29BT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9uL29wdGlvbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIE9wdGlvbiBncm91cGluZyBjb21wb25lbnQgd2l0aCB0byB1c2Ugd2l0aCBHb0FEcm9wZG93bi5cbiAqIHNlbGVjdG9yOiBnb2Etb3B0aW9uLWdyb3VwXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dvYS1vcHRpb24tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3B0aW9uLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3B0aW9uLWdyb3VwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR29BT3B0aW9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJlZCBvcHRpb25zIHRvIHNob3cgaW4gdGhlIHZpZXcuXG4gICAqL1xuICBfZmlsdGVyZWRPcHRpb25zOiBBcnJheTxHb0FPcHRpb25Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIG9wdGlvbiBncm91cFxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlZmluZWQgb3B0aW9ucy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihHb0FPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgb3B0aW9uczogUXVlcnlMaXN0PEdvQU9wdGlvbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb24gdGVtcGxhdGVcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnb3B0aW9uR3JvdXBUZW1wbGF0ZScpIG9wdGlvbkdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGhvb2sgT25Jbml0XG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmxhYmVsID09PSB1bmRlZmluZWQgfHwgdGhpcy5sYWJlbCA9PT0gbnVsbCB8fCB0aGlzLmxhYmVsID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIGlucHV0ICdsYWJlbCcgaXMgcmVxdWlyZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIEFmdGVyVmlld0luaXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xuICAgIC8vIFRoZSB0ZW1wbGF0ZSBvdXRwdXQgY2FjaGUgaXMgcG9wdWxhdGVkIGJ5IGNoaWxkIGNvbXBvbmVudHMgZHVyaW5nIHJlbmRlciwgc28gdGVsbCBhbmd1bGFyIHRoYXRcbiAgICAvLyB0aGVyZSBoYXZlIGJlZW4gY2hhbmdlcyBkdXJpbmcgdGhlIHJlbmRlciBoZXJlLlxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19