@abgov/angular-components 2.0.0-alpha.5 → 2.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -45
- package/abgov-angular-components.d.ts +1 -0
- package/bundles/abgov-angular-components.umd.js +176 -2565
- package/bundles/abgov-angular-components.umd.js.map +1 -1
- package/esm2015/index.js +3 -27
- package/esm2015/lib/angular-components.module.js +16 -94
- package/esm2015/lib/value-directive.js +133 -0
- package/fesm2015/abgov-angular-components.js +119 -2007
- package/fesm2015/abgov-angular-components.js.map +1 -1
- package/index.d.ts +2 -26
- package/lib/angular-components.module.d.ts +7 -0
- package/lib/value-directive.d.ts +34 -0
- package/package.json +8 -13
- package/abgov-angular-components.metadata.json +0 -1
- package/esm2015/experimental/app-version-header/app-version-header.component.js +0 -30
- package/esm2015/experimental/badge/badge.component.js +0 -24
- package/esm2015/experimental/components.module.js +0 -29
- package/esm2015/experimental/index.js +0 -5
- package/esm2015/experimental/number-input/number-input.component.js +0 -151
- package/esm2015/lib/button/button.component.js +0 -66
- package/esm2015/lib/button-link/button-link.component.js +0 -66
- package/esm2015/lib/callout/callout.component.js +0 -34
- package/esm2015/lib/card/card.component.js +0 -37
- package/esm2015/lib/card/content/card-content.component.js +0 -24
- package/esm2015/lib/card/footer/card-footer.component.js +0 -24
- package/esm2015/lib/card/header/card-header.component.js +0 -24
- package/esm2015/lib/card/thumb/card-thumb.component.js +0 -27
- package/esm2015/lib/card-group/card.group.component.js +0 -23
- package/esm2015/lib/checkbox/checkbox-change.js +0 -3
- package/esm2015/lib/checkbox/checkbox.component.js +0 -136
- package/esm2015/lib/dropdown/dropdown.component.js +0 -326
- package/esm2015/lib/dropdown/option/option.component.js +0 -48
- package/esm2015/lib/dropdown/option-group/option-group.component.js +0 -46
- package/esm2015/lib/element-load-indicator/element-load-indicator.component.js +0 -63
- package/esm2015/lib/header/header.component.js +0 -47
- package/esm2015/lib/hero-banner/content/hero-banner-content.component.js +0 -15
- package/esm2015/lib/hero-banner/hero-banner.component.js +0 -21
- package/esm2015/lib/hero-banner/link/hero-banner-link.component.js +0 -18
- package/esm2015/lib/microsite-logo/microsite-logo.component.js +0 -34
- package/esm2015/lib/notification/notification.component.js +0 -59
- package/esm2015/lib/notification-banner/notification-banner.component.js +0 -32
- package/esm2015/lib/page-load-indicator/page-load-indicator.component.js +0 -117
- package/esm2015/lib/radio/radio-change.js +0 -3
- package/esm2015/lib/radio/radio.component.js +0 -146
- package/esm2015/lib/radio/radio.service.js +0 -20
- package/esm2015/lib/radio-group/radio-group.component.js +0 -282
- package/esm2015/lib/skeleton/skeleton-element.component.js +0 -21
- package/esm2015/lib/skeleton/skeleton-image-content.component.js +0 -19
- package/experimental/app-version-header/app-version-header.component.d.ts +0 -10
- package/experimental/badge/badge.component.d.ts +0 -7
- package/experimental/components.module.d.ts +0 -2
- package/experimental/index.d.ts +0 -4
- package/experimental/number-input/number-input.component.d.ts +0 -66
- package/lib/button/button.component.d.ts +0 -37
- package/lib/button-link/button-link.component.d.ts +0 -38
- package/lib/callout/callout.component.d.ts +0 -20
- package/lib/card/card.component.d.ts +0 -23
- package/lib/card/content/card-content.component.d.ts +0 -14
- package/lib/card/footer/card-footer.component.d.ts +0 -14
- package/lib/card/header/card-header.component.d.ts +0 -14
- package/lib/card/thumb/card-thumb.component.d.ts +0 -22
- package/lib/card-group/card.group.component.d.ts +0 -32
- package/lib/checkbox/checkbox-change.d.ts +0 -7
- package/lib/checkbox/checkbox.component.d.ts +0 -100
- package/lib/dropdown/dropdown.component.d.ts +0 -193
- package/lib/dropdown/option/option.component.d.ts +0 -39
- package/lib/dropdown/option-group/option-group.component.d.ts +0 -38
- package/lib/element-load-indicator/element-load-indicator.component.d.ts +0 -38
- package/lib/header/header.component.d.ts +0 -29
- package/lib/hero-banner/content/hero-banner-content.component.d.ts +0 -5
- package/lib/hero-banner/hero-banner.component.d.ts +0 -9
- package/lib/hero-banner/link/hero-banner-link.component.d.ts +0 -6
- package/lib/microsite-logo/microsite-logo.component.d.ts +0 -20
- package/lib/notification/notification.component.d.ts +0 -43
- package/lib/notification-banner/notification-banner.component.d.ts +0 -22
- package/lib/page-load-indicator/page-load-indicator.component.d.ts +0 -55
- package/lib/radio/radio-change.d.ts +0 -7
- package/lib/radio/radio.component.d.ts +0 -119
- package/lib/radio/radio.service.d.ts +0 -7
- package/lib/radio-group/radio-group.component.d.ts +0 -190
- package/lib/skeleton/skeleton-element.component.d.ts +0 -5
- 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
|