@sebgroup/green-angular 1.0.0-alpha.1 → 1.0.0-beta.11
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 +27 -0
- package/esm2020/index.mjs +8 -0
- package/esm2020/lib/datepicker/datepicker.component.mjs +140 -0
- package/esm2020/lib/datepicker/datepicker.module.mjs +19 -0
- package/esm2020/lib/dropdown/dropdown.component.mjs +275 -0
- package/esm2020/lib/dropdown/dropdown.module.mjs +18 -0
- package/esm2020/lib/green-angular.module.mjs +20 -0
- package/esm2020/lib/segmented-control/segmented-control.component.mjs +40 -0
- package/esm2020/lib/segmented-control/segmented-control.module.mjs +19 -0
- package/esm2020/sebgroup-green-angular.mjs +5 -0
- package/fesm2015/sebgroup-green-angular.mjs +517 -0
- package/fesm2015/sebgroup-green-angular.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular.mjs +511 -0
- package/fesm2020/sebgroup-green-angular.mjs.map +1 -0
- package/index.d.ts +7 -0
- package/lib/datepicker/datepicker.component.d.ts +46 -0
- package/lib/datepicker/datepicker.module.d.ts +9 -0
- package/lib/dropdown/dropdown.component.d.ts +39 -0
- package/lib/dropdown/dropdown.module.d.ts +8 -0
- package/lib/green-angular.module.d.ts +10 -0
- package/lib/segmented-control/segmented-control.component.d.ts +11 -0
- package/lib/segmented-control/segmented-control.module.d.ts +9 -0
- package/package.json +32 -7
- package/sebgroup-green-angular.d.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# GreenAngular
|
|
2
|
+
|
|
3
|
+
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
|
|
4
|
+
|
|
5
|
+
## Development server
|
|
6
|
+
|
|
7
|
+
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
|
8
|
+
|
|
9
|
+
## Code scaffolding
|
|
10
|
+
|
|
11
|
+
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
|
12
|
+
|
|
13
|
+
## Build
|
|
14
|
+
|
|
15
|
+
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
16
|
+
|
|
17
|
+
## Running unit tests
|
|
18
|
+
|
|
19
|
+
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
20
|
+
|
|
21
|
+
## Running end-to-end tests
|
|
22
|
+
|
|
23
|
+
Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
|
|
24
|
+
|
|
25
|
+
## Further help
|
|
26
|
+
|
|
27
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './lib/green-angular.module';
|
|
2
|
+
export * from './lib/dropdown/dropdown.module';
|
|
3
|
+
export * from './lib/dropdown/dropdown.component';
|
|
4
|
+
export * from './lib/datepicker/datepicker.module';
|
|
5
|
+
export * from './lib/datepicker/datepicker.component';
|
|
6
|
+
export * from './lib/segmented-control/segmented-control.module';
|
|
7
|
+
export * from './lib/segmented-control/segmented-control.component';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLGtEQUFrRCxDQUFBO0FBQ2hFLGNBQWMscURBQXFELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9ncmVlbi1hbmd1bGFyLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50J1xuIl19
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Input, Output, ViewChild, EventEmitter, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { createDatepicker, months, years, randomId, } from '@sebgroup/extract';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../dropdown/dropdown.component";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
export class NggDatepickerComponent {
|
|
8
|
+
constructor(_cdr) {
|
|
9
|
+
this._cdr = _cdr;
|
|
10
|
+
this.id = randomId();
|
|
11
|
+
this.valueChange = new EventEmitter();
|
|
12
|
+
this._months = months({});
|
|
13
|
+
this.years = years({});
|
|
14
|
+
this.trackByKey = (index, option) => {
|
|
15
|
+
return option.key;
|
|
16
|
+
};
|
|
17
|
+
this.listener = (data, state) => {
|
|
18
|
+
if (this.dp && state) {
|
|
19
|
+
this.dp.state = { ...state };
|
|
20
|
+
}
|
|
21
|
+
this.onTouchedFn && this.onTouchedFn();
|
|
22
|
+
if (data) {
|
|
23
|
+
this.valueChange.emit(data.selectedDate);
|
|
24
|
+
this.onChangeFn && this.onChangeFn(data.selectedDate);
|
|
25
|
+
this.data = data;
|
|
26
|
+
}
|
|
27
|
+
if (data || state) {
|
|
28
|
+
this._cdr.markForCheck();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
get months() {
|
|
33
|
+
return this._months;
|
|
34
|
+
}
|
|
35
|
+
set months(value) {
|
|
36
|
+
this._months = value;
|
|
37
|
+
}
|
|
38
|
+
get options() {
|
|
39
|
+
return this._options;
|
|
40
|
+
}
|
|
41
|
+
set options(value) {
|
|
42
|
+
this._options = value;
|
|
43
|
+
if (value.locale) {
|
|
44
|
+
this.months = months({ locale: this.options?.locale });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
get value() {
|
|
48
|
+
return this._value;
|
|
49
|
+
}
|
|
50
|
+
set value(newValue) {
|
|
51
|
+
if (newValue !== this._value) {
|
|
52
|
+
this._value = newValue;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
writeValue(value) {
|
|
56
|
+
this.value = value;
|
|
57
|
+
// When binding using ngModel we need to set initial select date
|
|
58
|
+
// once we get initial value as it's not available when component is created
|
|
59
|
+
if (value && this.dp && !this.data?.selectedDate) {
|
|
60
|
+
this.dp.select(value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
registerOnChange(fn) {
|
|
64
|
+
this.onChangeFn = fn;
|
|
65
|
+
}
|
|
66
|
+
registerOnTouched(fn) {
|
|
67
|
+
this.onTouchedFn = fn;
|
|
68
|
+
}
|
|
69
|
+
get data() {
|
|
70
|
+
return this._data;
|
|
71
|
+
}
|
|
72
|
+
set data(value) {
|
|
73
|
+
this._data = value;
|
|
74
|
+
}
|
|
75
|
+
trackWeek(index, week) {
|
|
76
|
+
return week;
|
|
77
|
+
}
|
|
78
|
+
ngAfterViewInit() {
|
|
79
|
+
// initialize datepicker
|
|
80
|
+
if (this.datepickerElRef &&
|
|
81
|
+
this.datepickerDialogElRef &&
|
|
82
|
+
this.dateInputElRef &&
|
|
83
|
+
this.datepickerTriggerElRef &&
|
|
84
|
+
!this.dp) {
|
|
85
|
+
this.dp = createDatepicker(this.listener, {
|
|
86
|
+
...this.options,
|
|
87
|
+
selectedDate: this.value,
|
|
88
|
+
}, this.datepickerElRef.nativeElement, this.datepickerDialogElRef.nativeElement, this.dateInputElRef.nativeElement, this.datepickerTriggerElRef.nativeElement);
|
|
89
|
+
this._cdr.detectChanges();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
throw 'Missing one or more elements...';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
NggDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
97
|
+
NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: NggDatepickerComponent, selector: "ngg-datepicker", inputs: { options: "options", value: "value", id: "id", label: "label", valid: "valid", invalid: "invalid" }, outputs: { valueChange: "valueChange" }, providers: [
|
|
98
|
+
{
|
|
99
|
+
provide: NG_VALUE_ACCESSOR,
|
|
100
|
+
useExisting: NggDatepickerComponent,
|
|
101
|
+
multi: true,
|
|
102
|
+
},
|
|
103
|
+
], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"valid\"\n [class.is-invalid]=\"invalid\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"dp?.select(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n [options]=\"years\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"!day.currentMonth\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", components: [{ type: i1.NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "text", "loop", "label", "options", "valid", "invalid", "value"], outputs: ["valueChange"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'ngg-datepicker', providers: [
|
|
107
|
+
{
|
|
108
|
+
provide: NG_VALUE_ACCESSOR,
|
|
109
|
+
useExisting: NggDatepickerComponent,
|
|
110
|
+
multi: true,
|
|
111
|
+
},
|
|
112
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"valid\"\n [class.is-invalid]=\"invalid\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"dp?.select(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n [options]=\"years\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"!day.currentMonth\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n" }]
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], value: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], id: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], label: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], valid: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], invalid: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], valueChange: [{
|
|
126
|
+
type: Output
|
|
127
|
+
}], datepickerDialogElRef: [{
|
|
128
|
+
type: ViewChild,
|
|
129
|
+
args: ['datepickerDialogElRef']
|
|
130
|
+
}], dateInputElRef: [{
|
|
131
|
+
type: ViewChild,
|
|
132
|
+
args: ['dateInputElRef']
|
|
133
|
+
}], datepickerElRef: [{
|
|
134
|
+
type: ViewChild,
|
|
135
|
+
args: ['datepickerElRef']
|
|
136
|
+
}], datepickerTriggerElRef: [{
|
|
137
|
+
type: ViewChild,
|
|
138
|
+
args: ['datepickerTriggerElRef']
|
|
139
|
+
}] } });
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBT0wsZ0JBQWdCLEVBR2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxHQUVULE1BQU0sbUJBQW1CLENBQUE7Ozs7QUFjMUIsTUFBTSxPQUFPLHNCQUFzQjtJQXlEakMsWUFBb0IsSUFBdUI7UUFBdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUE1QmxDLE9BQUUsR0FBWSxRQUFRLEVBQUUsQ0FBQTtRQUlkLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUE7UUFpQm5FLFlBQU8sR0FBMEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELFVBQUssR0FBMEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBMEJ4QyxlQUFVLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBOEIsRUFBVSxFQUFFO1lBQ3JFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQTtRQUNuQixDQUFDLENBQUE7UUFVRCxhQUFRLEdBQUcsQ0FDVCxJQUFnQyxFQUNoQyxLQUFrQyxFQUNsQyxFQUFFO1lBQ0YsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBRTtnQkFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO2FBQzdCO1lBRUQsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7WUFFdEMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUNyRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTthQUNqQjtZQUVELElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtnQkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTthQUN6QjtRQUNILENBQUMsQ0FBQTtJQW5ENkMsQ0FBQztJQXREL0MsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUE0QjtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBQ0QsSUFDSSxPQUFPO1FBQ1QsT0FBMEIsSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBd0I7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtTQUN2RDtJQUNILENBQUM7SUFDRCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLFFBQW1DO1FBQzNDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUE7U0FDdkI7SUFDSCxDQUFDO0lBK0JELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBRWxCLGdFQUFnRTtRQUNoRSw0RUFBNEU7UUFDNUUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQU1ELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBaUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQXNCRCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsZUFBZTtRQUNiLHdCQUF3QjtRQUN4QixJQUNFLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLHNCQUFzQjtZQUMzQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ1I7WUFDQSxJQUFJLENBQUMsRUFBRSxHQUFHLGdCQUFnQixDQUN4QixJQUFJLENBQUMsUUFBUSxFQUNiO2dCQUNFLEdBQUcsSUFBSSxDQUFDLE9BQU87Z0JBQ2YsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3pCLEVBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLEVBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUMxQyxDQUFBO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUMxQjthQUFNO1lBQ0wsTUFBTSxpQ0FBaUMsQ0FBQTtTQUN4QztJQUNILENBQUM7O21IQXpJVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixnTUFUdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLHNCQUFzQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YscWRDckNILDB2SEF5SEE7MkZEakZhLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxnQkFBZ0IsYUFFZjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHdCQUF3Qjs0QkFDbkMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07d0dBYTNDLE9BQU87c0JBRFYsS0FBSztnQkFXRixLQUFLO3NCQURSLEtBQUs7Z0JBU0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNhLFdBQVc7c0JBQTdCLE1BQU07Z0JBRUEscUJBQXFCO3NCQUQzQixTQUFTO3VCQUFDLHVCQUF1QjtnQkFHM0IsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBRVUsZUFBZTtzQkFBbkQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBRXJCLHNCQUFzQjtzQkFENUIsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7XG4gIEFic3RyYWN0RHJvcGRvd24sXG4gIERyb3Bkb3duSGFuZGxlcixcbiAgRXh0ZW5kZWREcm9wZG93bk9wdGlvbixcbiAgRWxlbWVudFByb3BzLFxuICBEYXRlcGlja2VyRGF0YSxcbiAgRGF0ZXBpY2tlcixcbiAgY3JlYXRlRGF0ZXBpY2tlcixcbiAgRGF0ZXBpY2tlclN0YXRlLFxuICBEcm9wZG93bk9wdGlvbixcbiAgbW9udGhzLFxuICB5ZWFycyxcbiAgcmFuZG9tSWQsXG4gIERhdGVwaWNrZXJPcHRpb25zLFxufSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJ2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ2dEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0RhdGVwaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdFxue1xuICBnZXQgbW9udGhzKCk6IEFycmF5PERyb3Bkb3duT3B0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoc1xuICB9XG5cbiAgc2V0IG1vbnRocyh2YWx1ZTogQXJyYXk8RHJvcGRvd25PcHRpb24+KSB7XG4gICAgdGhpcy5fbW9udGhzID0gdmFsdWVcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgb3B0aW9ucygpOiBEYXRlcGlja2VyT3B0aW9ucyB7XG4gICAgcmV0dXJuIDxEYXRlcGlja2VyT3B0aW9ucz50aGlzLl9vcHRpb25zXG4gIH1cbiAgc2V0IG9wdGlvbnModmFsdWU6IERhdGVwaWNrZXJPcHRpb25zKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlLmxvY2FsZSkge1xuICAgICAgdGhpcy5tb250aHMgPSBtb250aHMoeyBsb2NhbGU6IHRoaXMub3B0aW9ucz8ubG9jYWxlIH0pXG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVcbiAgfVxuICBzZXQgdmFsdWUobmV3VmFsdWU6IHN0cmluZyB8IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlXG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nID0gcmFuZG9tSWQoKVxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZ1xuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW5cbiAgQElucHV0KCkgaW52YWxpZD86IGJvb2xlYW5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJEaWFsb2dFbFJlZicpXG4gIHB1YmxpYyBkYXRlcGlja2VyRGlhbG9nRWxSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICBAVmlld0NoaWxkKCdkYXRlSW5wdXRFbFJlZicpXG4gIHB1YmxpYyBkYXRlSW5wdXRFbFJlZj86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlckVsUmVmJykgcHVibGljIGRhdGVwaWNrZXJFbFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJUcmlnZ2VyRWxSZWYnKVxuICBwdWJsaWMgZGF0ZXBpY2tlclRyaWdnZXJFbFJlZj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG5cbiAgb25DaGFuZ2VGbj86ICh2YWx1ZTogYW55KSA9PiB2b2lkXG4gIG9uVG91Y2hlZEZuPzogYW55XG5cbiAgZHJvcGRvd24/OiBBYnN0cmFjdERyb3Bkb3duXG4gIGhhbmRsZXI/OiBEcm9wZG93bkhhbmRsZXJcbiAgdG9nZ2xlcj86IFBhcnRpYWw8RWxlbWVudFByb3BzPlxuICBsaXN0Ym94PzogUGFydGlhbDxFbGVtZW50UHJvcHM+XG4gIF92YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9tb250aHM6IEFycmF5PERyb3Bkb3duT3B0aW9uPiA9IG1vbnRocyh7fSlcbiAgeWVhcnM6IEFycmF5PERyb3Bkb3duT3B0aW9uPiA9IHllYXJzKHt9KVxuICBwcml2YXRlIF9vcHRpb25zPzogRGF0ZXBpY2tlck9wdGlvbnNcblxuICBkcDogRGF0ZXBpY2tlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9kYXRhOiBEYXRlcGlja2VyRGF0YSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG5cbiAgICAvLyBXaGVuIGJpbmRpbmcgdXNpbmcgbmdNb2RlbCB3ZSBuZWVkIHRvIHNldCBpbml0aWFsIHNlbGVjdCBkYXRlXG4gICAgLy8gb25jZSB3ZSBnZXQgaW5pdGlhbCB2YWx1ZSBhcyBpdCdzIG5vdCBhdmFpbGFibGUgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRwICYmICF0aGlzLmRhdGE/LnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5kcC5zZWxlY3QodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxuXG4gIHRyYWNrQnlLZXkgPSAoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBFeHRlbmRlZERyb3Bkb3duT3B0aW9uKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gb3B0aW9uLmtleVxuICB9XG5cbiAgZ2V0IGRhdGEoKTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhXG4gIH1cblxuICBzZXQgZGF0YSh2YWx1ZTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kYXRhID0gdmFsdWVcbiAgfVxuXG4gIGxpc3RlbmVyID0gKFxuICAgIGRhdGE6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkLFxuICAgIHN0YXRlOiBEYXRlcGlja2VyU3RhdGUgfCB1bmRlZmluZWRcbiAgKSA9PiB7XG4gICAgaWYgKHRoaXMuZHAgJiYgc3RhdGUpIHtcbiAgICAgIHRoaXMuZHAuc3RhdGUgPSB7IC4uLnN0YXRlIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uVG91Y2hlZEZuICYmIHRoaXMub25Ub3VjaGVkRm4oKVxuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgIHRoaXMub25DaGFuZ2VGbiAmJiB0aGlzLm9uQ2hhbmdlRm4oZGF0YS5zZWxlY3RlZERhdGUpXG4gICAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgfHwgc3RhdGUpIHtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuICB0cmFja1dlZWsoaW5kZXg6IGFueSwgd2VlazogYW55KSB7XG4gICAgcmV0dXJuIHdlZWtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBpbml0aWFsaXplIGRhdGVwaWNrZXJcbiAgICBpZiAoXG4gICAgICB0aGlzLmRhdGVwaWNrZXJFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlcGlja2VyRGlhbG9nRWxSZWYgJiZcbiAgICAgIHRoaXMuZGF0ZUlucHV0RWxSZWYgJiZcbiAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJFbFJlZiAmJlxuICAgICAgIXRoaXMuZHBcbiAgICApIHtcbiAgICAgIHRoaXMuZHAgPSBjcmVhdGVEYXRlcGlja2VyKFxuICAgICAgICB0aGlzLmxpc3RlbmVyLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgIHNlbGVjdGVkRGF0ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyRWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyRGlhbG9nRWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VyRWxSZWYubmF0aXZlRWxlbWVudFxuICAgICAgKVxuICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyAnTWlzc2luZyBvbmUgb3IgbW9yZSBlbGVtZW50cy4uLidcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2Zvcl09XCJpZFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ3JvdXBcIlxuICAgICNkYXRlcGlja2VyRWxSZWZcbiAgICBbY2xhc3MuaXMtdmFsaWRdPVwidmFsaWRcIlxuICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImludmFsaWRcIlxuICA+XG4gICAgPGlucHV0XG4gICAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIlxuICAgICAgICBmb3JtSW5mbz8uaW5uZXJUZXh0ICYmIGZvcm1JbmZvLmlubmVyVGV4dC5sZW5ndGggPiAwXG4gICAgICAgICAgPyBpZCArICdfaW5mbydcbiAgICAgICAgICA6IG51bGxcbiAgICAgIFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInl5eXktbW0tZGRcIlxuICAgICAgI2RhdGVJbnB1dEVsUmVmXG4gICAgICBbdmFsdWVdPVwiZGF0YT8uZm9ybWF0dGVkU2VsZWN0ZWREYXRlIHx8ICcnXCJcbiAgICAgIChjaGFuZ2UpPVwiZHA/LnNlbGVjdChkYXRlSW5wdXRFbFJlZi52YWx1ZSlcIlxuICAgIC8+XG4gICAgPGJ1dHRvblxuICAgICAgI2RhdGVwaWNrZXJUcmlnZ2VyRWxSZWZcbiAgICAgIChjbGljayk9XCJkcD8udG9nZ2xlKClcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInByaW1hcnlcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwic2ctaWNvbiBzZy1pY29uLWNhbGVuZGFyXCI+U2VsZWN0IGRhdGU8L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImZvcm0taW5mb1wiICNmb3JtSW5mbyBbYXR0ci5pZF09XCJpZCArICdfaW5mbydcIlxuICAgID48bmctY29udGVudCBzZWxlY3Q9XCJbZGF0YS1mb3JtLWluZm9dXCI+PC9uZy1jb250ZW50XG4gID48L3NwYW4+XG48L2Rpdj5cbjwhLS0gVE9ETzogZ2V0IG9yIHNldCBhdHRyaWJ1dGVzIGZyb20gd2l0aGluIGRhdGVwaWNrZXIgaW5zdGFuY2UgKGRwKSAtLT5cbjxkaXZcbiAgI2RhdGVwaWNrZXJEaWFsb2dFbFJlZlxuICBjbGFzcz1cInBvcG92ZXIgcG9wb3Zlci1kYXRlcGlja2VyXCJcbiAgW2NsYXNzLmFjdGl2ZV09XCJkcD8uc3RhdGU/LmlzQWN0aXZlXCJcbiAgcm9sZT1cImRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgYXJpYS1sYWJlbD1cIkNob29zZSBEYXRlXCJcbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJkcD8uY2xvc2UoKVwiPkNsb3NlPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJzZy1kYXRlXCI+XG4gICAgPGhlYWRlcj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibGlua1wiIChjbGljayk9XCJkcD8uc3ViKDEsICdtb250aHMnKVwiPlxuICAgICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1wcmV2aW91c1wiPlByZXZpb3VzIG1vbnRoPC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmdnLWRyb3Bkb3duXG4gICAgICAgIFtvcHRpb25zXT1cIm1vbnRoc1wiXG4gICAgICAgIHRleHQ9XCJTZWxlY3RcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YT8ubW9udGhcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZHA/LnNldE1vbnRoKCRldmVudClcIlxuICAgICAgPjwvbmdnLWRyb3Bkb3duPlxuICAgICAgPG5nZy1kcm9wZG93blxuICAgICAgICBbb3B0aW9uc109XCJ5ZWFyc1wiXG4gICAgICAgIHRleHQ9XCJTZWxlY3RcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YT8ueWVhclwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkcD8uc2V0WWVhcigkZXZlbnQpXCJcbiAgICAgID48L25nZy1kcm9wZG93bj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibGlua1wiIChjbGljayk9XCJkcD8uYWRkKDEsICdtb250aHMnKVwiPlxuICAgICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1uZXh0XCI+TmV4dCBtb250aDwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaGVhZGVyPlxuICAgIDxtYWluPlxuICAgICAgPHRhYmxlIHJvbGU9XCJncmlkXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGRhdGE/LmNhbGVuZGFyPy5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgW2FiYnJdPVwiaGVhZGVyLmFiYnJcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2ctd2Vlay1oZWFkZXJdPVwiaGVhZGVyLnR5cGUgPT09ICd3ZWVrJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZy1kYXktaGVhZGVyXT1cImhlYWRlci50eXBlID09PSAnZGF5J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGhlYWRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IHdlZWsgb2YgZGF0YT8uY2FsZW5kYXI/LmNhbGVuZGFyR3JpZDtcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tXZWVrO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LmNhbGVuZGFyPy53ZWVrTnVtYmVycyBhcyB3ZWVrTnVtYmVyc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2ctd2Vlay1udW1iZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB3ZWVrTnVtYmVyc1tpXSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWRhdGVdPVwiZGF5LmZvcm1hdHRlZERhdGVcIlxuICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImRheS5zZWxlY3RlZCA/ICdncmlkY2VsbCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgICBkYXkuc2VsZWN0ZWQgJiYgIWRhdGE/LmhpZ2hsaWdodGVkRGF0ZSA/IHRydWUgOiBudWxsXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZGF5LmN1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZy1kYXRlLXRvZGF5XT1cImRheS50b2RheVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJkYXkudG9kYXkgPyAnVG9kYXknIDogJydcIlxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiXG4gICAgICAgICAgICAgICAgZGF5LmhpZ2hsaWdodGVkIHx8XG4gICAgICAgICAgICAgICAgKGRheS5zZWxlY3RlZCAmJiAhZGF0YT8uaGlnaGxpZ2h0ZWREYXRlKSB8fFxuICAgICAgICAgICAgICAgIChkYXkudG9kYXkgJiYgIWRhdGE/LmhpZ2hsaWdodGVkRGF0ZSAmJiAhZGF0YT8uc2VsZWN0ZWREYXRlKVxuICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICA6IC0xXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkYXkuY3VycmVudE1vbnRoICYmIGRwPy5zZWxlY3QoZGF5LmRhdGUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZGF5LmRheSB9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NggDatepickerComponent } from './datepicker.component';
|
|
4
|
+
import { NggDropdownModule } from '../dropdown/dropdown.module';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NggDatepickerModule {
|
|
7
|
+
}
|
|
8
|
+
NggDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
NggDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, declarations: [NggDatepickerComponent], imports: [CommonModule, NggDropdownModule], exports: [NggDatepickerComponent] });
|
|
10
|
+
NggDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, imports: [[CommonModule, NggDropdownModule]] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [NggDatepickerComponent],
|
|
15
|
+
imports: [CommonModule, NggDropdownModule],
|
|
16
|
+
exports: [NggDatepickerComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBOztBQU8vRCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBSmYsc0JBQXNCLGFBQzNCLFlBQVksRUFBRSxpQkFBaUIsYUFDL0Isc0JBQXNCO2lIQUVyQixtQkFBbUIsWUFIckIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7MkZBRy9CLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ2dEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbXBvbmVudCdcbmltcG9ydCB7IE5nZ0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOZ2dEYXRlcGlja2VyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdnRHJvcGRvd25Nb2R1bGVdLFxuICBleHBvcnRzOiBbTmdnRGF0ZXBpY2tlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0RhdGVwaWNrZXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, Output, ViewChild, EventEmitter, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { createDropdown, dropdownValues, } from '@sebgroup/extract';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class NggDropdownComponent {
|
|
7
|
+
constructor(cd) {
|
|
8
|
+
this.cd = cd;
|
|
9
|
+
this.loop = false;
|
|
10
|
+
this.options = [];
|
|
11
|
+
this.valueChange = new EventEmitter();
|
|
12
|
+
this.toggler = dropdownValues.elements?.toggler;
|
|
13
|
+
this.listbox = dropdownValues.elements?.listbox;
|
|
14
|
+
this.trackByKey = (index, option) => {
|
|
15
|
+
return option.key;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
get value() {
|
|
19
|
+
return this._value;
|
|
20
|
+
}
|
|
21
|
+
set value(newValue) {
|
|
22
|
+
this.setSelectionByValue(newValue);
|
|
23
|
+
}
|
|
24
|
+
ngAfterViewInit() {
|
|
25
|
+
if (this.togglerRef?.nativeElement && this.listboxRef?.nativeElement) {
|
|
26
|
+
this.handler = createDropdown(this.props, this.togglerRef.nativeElement, this.listboxRef.nativeElement, (dropdown) => {
|
|
27
|
+
this.dropdown = dropdown;
|
|
28
|
+
this.toggler = dropdown.elements.toggler;
|
|
29
|
+
this.listbox = dropdown.elements.listbox;
|
|
30
|
+
const selected = this.dropdown.options?.find((option) => option.selected);
|
|
31
|
+
if (selected && this._value !== selected?.value) {
|
|
32
|
+
setTimeout(() => {
|
|
33
|
+
this._value = selected.value;
|
|
34
|
+
this.valueChange.emit(selected.value);
|
|
35
|
+
this.onChangeFn && this.onChangeFn(selected.value);
|
|
36
|
+
this.onTouchedFn && this.onTouchedFn();
|
|
37
|
+
}, 0);
|
|
38
|
+
}
|
|
39
|
+
this.cd.detectChanges();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ngOnDestroy() {
|
|
44
|
+
this.handler?.destroy();
|
|
45
|
+
}
|
|
46
|
+
ngOnChanges(changes) {
|
|
47
|
+
if (this.handler &&
|
|
48
|
+
(changes.id || changes.text || changes.loop || changes.options)) {
|
|
49
|
+
this.handler.update(this.props);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
writeValue(value) {
|
|
53
|
+
this.value = value;
|
|
54
|
+
}
|
|
55
|
+
registerOnChange(fn) {
|
|
56
|
+
this.onChangeFn = fn;
|
|
57
|
+
}
|
|
58
|
+
registerOnTouched(fn) {
|
|
59
|
+
this.onTouchedFn = fn;
|
|
60
|
+
}
|
|
61
|
+
select(option) {
|
|
62
|
+
this.handler?.select(option);
|
|
63
|
+
this._value = option.value;
|
|
64
|
+
this.valueChange.emit(option.value);
|
|
65
|
+
this.onChangeFn && this.onChangeFn(option.value);
|
|
66
|
+
this.onTouchedFn && this.onTouchedFn();
|
|
67
|
+
}
|
|
68
|
+
get props() {
|
|
69
|
+
return {
|
|
70
|
+
id: this.id || this.dropdown?.id,
|
|
71
|
+
text: this.text,
|
|
72
|
+
options: this.options,
|
|
73
|
+
loop: this.loop,
|
|
74
|
+
value: this.value,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
setSelectionByValue(value) {
|
|
78
|
+
if (this._value !== value) {
|
|
79
|
+
this._value = value;
|
|
80
|
+
const selected = this.handler?.dropdown?.options.find((option) => option.value === value);
|
|
81
|
+
if (selected)
|
|
82
|
+
this.handler?.select(selected);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
NggDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
+
NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", text: "text", loop: "loop", label: "label", options: "options", valid: "valid", invalid: "invalid", value: "value" }, outputs: { valueChange: "valueChange" }, providers: [
|
|
88
|
+
{
|
|
89
|
+
provide: NG_VALUE_ACCESSOR,
|
|
90
|
+
useExisting: NggDropdownComponent,
|
|
91
|
+
multi: true,
|
|
92
|
+
},
|
|
93
|
+
], viewQueries: [{ propertyName: "togglerRef", first: true, predicate: ["togglerRef"], descendants: true }, { propertyName: "listboxRef", first: true, predicate: ["listboxRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
94
|
+
<div>
|
|
95
|
+
<span
|
|
96
|
+
class="label"
|
|
97
|
+
*ngIf="label"
|
|
98
|
+
[id]="toggler?.attributes?.id + '_label'"
|
|
99
|
+
>{{ label }}</span
|
|
100
|
+
>
|
|
101
|
+
<button
|
|
102
|
+
[attr.aria-labelledby]="
|
|
103
|
+
label ? toggler?.attributes?.id + '_label' : null
|
|
104
|
+
"
|
|
105
|
+
[attr.aria-describedby]="
|
|
106
|
+
formInfo?.innerText && formInfo.innerText.length > 0
|
|
107
|
+
? toggler?.attributes?.id + '_info'
|
|
108
|
+
: null
|
|
109
|
+
"
|
|
110
|
+
type="button"
|
|
111
|
+
#togglerRef
|
|
112
|
+
[id]="toggler?.attributes?.id"
|
|
113
|
+
[attr.aria-haspopup]="toggler?.attributes?.['aria-haspopup']"
|
|
114
|
+
[attr.aria-expanded]="toggler?.attributes?.['aria-expanded']"
|
|
115
|
+
[attr.aria-owns]="toggler?.attributes?.['aria-owns']"
|
|
116
|
+
[tabindex]="toggler?.attributes?.tabIndex"
|
|
117
|
+
[style]="toggler?.attributes?.style"
|
|
118
|
+
[class]="toggler?.classes"
|
|
119
|
+
(click)="handler?.toggle()"
|
|
120
|
+
[class.is-valid]="valid"
|
|
121
|
+
[class.is-invalid]="invalid"
|
|
122
|
+
>
|
|
123
|
+
<span>{{ dropdown?.text }}</span>
|
|
124
|
+
</button>
|
|
125
|
+
<span
|
|
126
|
+
class="form-info"
|
|
127
|
+
#formInfo
|
|
128
|
+
[attr.id]="toggler?.attributes?.id + '_info'"
|
|
129
|
+
><ng-content select="[data-form-info]"></ng-content
|
|
130
|
+
></span>
|
|
131
|
+
<div
|
|
132
|
+
#listboxRef
|
|
133
|
+
[id]="listbox?.attributes?.id"
|
|
134
|
+
[attr.role]="listbox?.attributes?.role"
|
|
135
|
+
[attr.aria-activedescendant]="
|
|
136
|
+
listbox?.attributes?.['aria-activedescendant']
|
|
137
|
+
"
|
|
138
|
+
[tabindex]="listbox?.attributes?.tabIndex"
|
|
139
|
+
[style]="listbox?.attributes?.style"
|
|
140
|
+
[class]="listbox?.classes"
|
|
141
|
+
>
|
|
142
|
+
<button
|
|
143
|
+
type="button"
|
|
144
|
+
class="close m-4 m-sm-2 d-block d-sm-none"
|
|
145
|
+
(click)="handler?.close()"
|
|
146
|
+
>
|
|
147
|
+
<span class="sr-only">Close</span>
|
|
148
|
+
</button>
|
|
149
|
+
<ul role="listbox">
|
|
150
|
+
<li
|
|
151
|
+
*ngFor="let option of dropdown?.options; trackBy: trackByKey"
|
|
152
|
+
[id]="option.attributes.id"
|
|
153
|
+
[attr.role]="option.attributes.role"
|
|
154
|
+
[attr.aria-selected]="option.attributes['aria-selected']"
|
|
155
|
+
[style]="option.attributes.style"
|
|
156
|
+
[class]="option.classes"
|
|
157
|
+
(click)="handler?.select(option)"
|
|
158
|
+
>
|
|
159
|
+
{{ option.key }}
|
|
160
|
+
</li>
|
|
161
|
+
</ul>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
`, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDropdownComponent, decorators: [{
|
|
166
|
+
type: Component,
|
|
167
|
+
args: [{
|
|
168
|
+
selector: 'ngg-dropdown',
|
|
169
|
+
template: `
|
|
170
|
+
<div>
|
|
171
|
+
<span
|
|
172
|
+
class="label"
|
|
173
|
+
*ngIf="label"
|
|
174
|
+
[id]="toggler?.attributes?.id + '_label'"
|
|
175
|
+
>{{ label }}</span
|
|
176
|
+
>
|
|
177
|
+
<button
|
|
178
|
+
[attr.aria-labelledby]="
|
|
179
|
+
label ? toggler?.attributes?.id + '_label' : null
|
|
180
|
+
"
|
|
181
|
+
[attr.aria-describedby]="
|
|
182
|
+
formInfo?.innerText && formInfo.innerText.length > 0
|
|
183
|
+
? toggler?.attributes?.id + '_info'
|
|
184
|
+
: null
|
|
185
|
+
"
|
|
186
|
+
type="button"
|
|
187
|
+
#togglerRef
|
|
188
|
+
[id]="toggler?.attributes?.id"
|
|
189
|
+
[attr.aria-haspopup]="toggler?.attributes?.['aria-haspopup']"
|
|
190
|
+
[attr.aria-expanded]="toggler?.attributes?.['aria-expanded']"
|
|
191
|
+
[attr.aria-owns]="toggler?.attributes?.['aria-owns']"
|
|
192
|
+
[tabindex]="toggler?.attributes?.tabIndex"
|
|
193
|
+
[style]="toggler?.attributes?.style"
|
|
194
|
+
[class]="toggler?.classes"
|
|
195
|
+
(click)="handler?.toggle()"
|
|
196
|
+
[class.is-valid]="valid"
|
|
197
|
+
[class.is-invalid]="invalid"
|
|
198
|
+
>
|
|
199
|
+
<span>{{ dropdown?.text }}</span>
|
|
200
|
+
</button>
|
|
201
|
+
<span
|
|
202
|
+
class="form-info"
|
|
203
|
+
#formInfo
|
|
204
|
+
[attr.id]="toggler?.attributes?.id + '_info'"
|
|
205
|
+
><ng-content select="[data-form-info]"></ng-content
|
|
206
|
+
></span>
|
|
207
|
+
<div
|
|
208
|
+
#listboxRef
|
|
209
|
+
[id]="listbox?.attributes?.id"
|
|
210
|
+
[attr.role]="listbox?.attributes?.role"
|
|
211
|
+
[attr.aria-activedescendant]="
|
|
212
|
+
listbox?.attributes?.['aria-activedescendant']
|
|
213
|
+
"
|
|
214
|
+
[tabindex]="listbox?.attributes?.tabIndex"
|
|
215
|
+
[style]="listbox?.attributes?.style"
|
|
216
|
+
[class]="listbox?.classes"
|
|
217
|
+
>
|
|
218
|
+
<button
|
|
219
|
+
type="button"
|
|
220
|
+
class="close m-4 m-sm-2 d-block d-sm-none"
|
|
221
|
+
(click)="handler?.close()"
|
|
222
|
+
>
|
|
223
|
+
<span class="sr-only">Close</span>
|
|
224
|
+
</button>
|
|
225
|
+
<ul role="listbox">
|
|
226
|
+
<li
|
|
227
|
+
*ngFor="let option of dropdown?.options; trackBy: trackByKey"
|
|
228
|
+
[id]="option.attributes.id"
|
|
229
|
+
[attr.role]="option.attributes.role"
|
|
230
|
+
[attr.aria-selected]="option.attributes['aria-selected']"
|
|
231
|
+
[style]="option.attributes.style"
|
|
232
|
+
[class]="option.classes"
|
|
233
|
+
(click)="handler?.select(option)"
|
|
234
|
+
>
|
|
235
|
+
{{ option.key }}
|
|
236
|
+
</li>
|
|
237
|
+
</ul>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
`,
|
|
241
|
+
providers: [
|
|
242
|
+
{
|
|
243
|
+
provide: NG_VALUE_ACCESSOR,
|
|
244
|
+
useExisting: NggDropdownComponent,
|
|
245
|
+
multi: true,
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
249
|
+
}]
|
|
250
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
|
|
251
|
+
type: Input
|
|
252
|
+
}], text: [{
|
|
253
|
+
type: Input
|
|
254
|
+
}], loop: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], label: [{
|
|
257
|
+
type: Input
|
|
258
|
+
}], options: [{
|
|
259
|
+
type: Input
|
|
260
|
+
}], valid: [{
|
|
261
|
+
type: Input
|
|
262
|
+
}], invalid: [{
|
|
263
|
+
type: Input
|
|
264
|
+
}], value: [{
|
|
265
|
+
type: Input
|
|
266
|
+
}], valueChange: [{
|
|
267
|
+
type: Output
|
|
268
|
+
}], togglerRef: [{
|
|
269
|
+
type: ViewChild,
|
|
270
|
+
args: ['togglerRef']
|
|
271
|
+
}], listboxRef: [{
|
|
272
|
+
type: ViewChild,
|
|
273
|
+
args: ['listboxRef']
|
|
274
|
+
}] } });
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3hFLE9BQU8sRUFDTCxjQUFjLEVBT2QsY0FBYyxHQUNmLE1BQU0sbUJBQW1CLENBQUE7OztBQXFGMUIsTUFBTSxPQUFPLG9CQUFvQjtJQXNDL0IsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFqQ2hDLFNBQUksR0FBYSxLQUFLLENBQUE7UUFFdEIsWUFBTyxHQUFxQixFQUFFLENBQUE7UUFhcEIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQTtRQWUzRSxZQUFPLEdBQTJCLGNBQWMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFBO1FBQ2xFLFlBQU8sR0FBMkIsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7UUFpRWxFLGVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUE4QixFQUFVLEVBQUU7WUFDckUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFBO1FBQ25CLENBQUMsQ0FBQTtJQWpFMkMsQ0FBQztJQTNCN0MsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFhO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBdUJELGVBQWU7UUFDYixJQUFJLElBQUks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QUFDLE1BQU07aUJBQ2hEO3dHQUlVLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHRixLQUFLO3NCQURSLEtBQUs7Z0JBU2EsV0FBVztzQkFBN0IsTUFBTTtnQkFFeUIsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxZQUFZO2dCQUlTLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7XG4gIGNyZWF0ZURyb3Bkb3duLFxuICBBYnN0cmFjdERyb3Bkb3duLFxuICBEcm9wZG93bkhhbmRsZXIsXG4gIERyb3Bkb3duT3B0aW9uLFxuICBFeHRlbmRlZERyb3Bkb3duT3B0aW9uLFxuICBFbGVtZW50UHJvcHMsXG4gIERyb3Bkb3duQXJncyxcbiAgZHJvcGRvd25WYWx1ZXMsXG59IGZyb20gJ0BzZWJncm91cC9leHRyYWN0J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctZHJvcGRvd24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXY+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgKm5nSWY9XCJsYWJlbFwiXG4gICAgICAgIFtpZF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfbGFiZWwnXCJcbiAgICAgICAgPnt7IGxhYmVsIH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICBsYWJlbCA/IHRvZ2dsZXI/LmF0dHJpYnV0ZXM/LmlkICsgJ19sYWJlbCcgOiBudWxsXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiXG4gICAgICAgICAgZm9ybUluZm8/LmlubmVyVGV4dCAmJiBmb3JtSW5mby5pbm5lclRleHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfaW5mbydcbiAgICAgICAgICAgIDogbnVsbFxuICAgICAgICBcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgI3RvZ2dsZXJSZWZcbiAgICAgICAgW2lkXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LmlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5bJ2FyaWEtaGFzcG9wdXAnXVwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwidG9nZ2xlcj8uYXR0cmlidXRlcz8uWydhcmlhLWV4cGFuZGVkJ11cIlxuICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwidG9nZ2xlcj8uYXR0cmlidXRlcz8uWydhcmlhLW93bnMnXVwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy50YWJJbmRleFwiXG4gICAgICAgIFtzdHlsZV09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5zdHlsZVwiXG4gICAgICAgIFtjbGFzc109XCJ0b2dnbGVyPy5jbGFzc2VzXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZXI/LnRvZ2dsZSgpXCJcbiAgICAgICAgW2NsYXNzLmlzLXZhbGlkXT1cInZhbGlkXCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IGRyb3Bkb3duPy50ZXh0IH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZvcm0taW5mb1wiXG4gICAgICAgICNmb3JtSW5mb1xuICAgICAgICBbYXR0ci5pZF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfaW5mbydcIlxuICAgICAgICA+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtZm9ybS1pbmZvXVwiPjwvbmctY29udGVudFxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgI2xpc3Rib3hSZWZcbiAgICAgICAgW2lkXT1cImxpc3Rib3g/LmF0dHJpYnV0ZXM/LmlkXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJsaXN0Ym94Py5hdHRyaWJ1dGVzPy5yb2xlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIlxuICAgICAgICAgIGxpc3Rib3g/LmF0dHJpYnV0ZXM/LlsnYXJpYS1hY3RpdmVkZXNjZW5kYW50J11cbiAgICAgICAgXCJcbiAgICAgICAgW3RhYmluZGV4XT1cImxpc3Rib3g/LmF0dHJpYnV0ZXM/LnRhYkluZGV4XCJcbiAgICAgICAgW3N0eWxlXT1cImxpc3Rib3g/LmF0dHJpYnV0ZXM/LnN0eWxlXCJcbiAgICAgICAgW2NsYXNzXT1cImxpc3Rib3g/LmNsYXNzZXNcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJjbG9zZSBtLTQgbS1zbS0yIGQtYmxvY2sgZC1zbS1ub25lXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlcj8uY2xvc2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDx1bCByb2xlPVwibGlzdGJveFwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkcm9wZG93bj8ub3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUtleVwiXG4gICAgICAgICAgICBbaWRdPVwib3B0aW9uLmF0dHJpYnV0ZXMuaWRcIlxuICAgICAgICAgICAgW2F0dHIucm9sZV09XCJvcHRpb24uYXR0cmlidXRlcy5yb2xlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwib3B0aW9uLmF0dHJpYnV0ZXNbJ2FyaWEtc2VsZWN0ZWQnXVwiXG4gICAgICAgICAgICBbc3R5bGVdPVwib3B0aW9uLmF0dHJpYnV0ZXMuc3R5bGVcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIm9wdGlvbi5jbGFzc2VzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyPy5zZWxlY3Qob3B0aW9uKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmtleSB9fVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogTmdnRHJvcGRvd25Db21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRHJvcGRvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmdcbiAgQElucHV0KCkgdGV4dD86IHN0cmluZ1xuICBASW5wdXQoKSBsb29wPzogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXVxuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW5cbiAgQElucHV0KCkgaW52YWxpZD86IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVcbiAgfVxuICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xuICAgIHRoaXMuc2V0U2VsZWN0aW9uQnlWYWx1ZShuZXdWYWx1ZSlcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogYW55XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlclJlZicpIHB1YmxpYyB0b2dnbGVyUmVmOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoJ2xpc3Rib3hSZWYnKSBwdWJsaWMgbGlzdGJveFJlZjpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWRcblxuICBvbkNoYW5nZUZuPzogKHZhbHVlOiBhbnkpID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiBhbnlcblxuICBkcm9wZG93bj86IEFic3RyYWN0RHJvcGRvd25cbiAgaGFuZGxlcj86IERyb3Bkb3duSGFuZGxlclxuICB0b2dnbGVyPzogUGFydGlhbDxFbGVtZW50UHJvcHM+ID0gZHJvcGRvd25WYWx1ZXMuZWxlbWVudHM/LnRvZ2dsZXJcbiAgbGlzdGJveD86IFBhcnRpYWw8RWxlbWVudFByb3BzPiA9IGRyb3Bkb3duVmFsdWVzLmVsZW1lbnRzPy5saXN0Ym94XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvZ2dsZXJSZWY/Lm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5saXN0Ym94UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhhbmRsZXIgPSBjcmVhdGVEcm9wZG93bihcbiAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgdGhpcy50b2dnbGVyUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMubGlzdGJveFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAoZHJvcGRvd24pID0+IHtcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duID0gZHJvcGRvd25cbiAgICAgICAgICB0aGlzLnRvZ2dsZXIgPSBkcm9wZG93bi5lbGVtZW50cy50b2dnbGVyXG4gICAgICAgICAgdGhpcy5saXN0Ym94ID0gZHJvcGRvd24uZWxlbWVudHMubGlzdGJveFxuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmRyb3Bkb3duLm9wdGlvbnM/LmZpbmQoXG4gICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWRcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKHNlbGVjdGVkICYmIHRoaXMuX3ZhbHVlICE9PSBzZWxlY3RlZD8udmFsdWUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHNlbGVjdGVkLnZhbHVlXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChzZWxlY3RlZC52YWx1ZSlcbiAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuICYmIHRoaXMub25DaGFuZ2VGbihzZWxlY3RlZC52YWx1ZSlcbiAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbiAmJiB0aGlzLm9uVG91Y2hlZEZuKClcbiAgICAgICAgICAgIH0sIDApXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXI/LmRlc3Ryb3koKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaGFuZGxlciAmJlxuICAgICAgKGNoYW5nZXMuaWQgfHwgY2hhbmdlcy50ZXh0IHx8IGNoYW5nZXMubG9vcCB8fCBjaGFuZ2VzLm9wdGlvbnMpXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZXIudXBkYXRlKHRoaXMucHJvcHMpXG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmblxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmblxuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogRXh0ZW5kZWREcm9wZG93bk9wdGlvbikge1xuICAgIHRoaXMuaGFuZGxlcj8uc2VsZWN0KG9wdGlvbilcbiAgICB0aGlzLl92YWx1ZSA9IG9wdGlvbi52YWx1ZVxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24udmFsdWUpXG4gICAgdGhpcy5vbkNoYW5nZUZuICYmIHRoaXMub25DaGFuZ2VGbihvcHRpb24udmFsdWUpXG4gICAgdGhpcy5vblRvdWNoZWRGbiAmJiB0aGlzLm9uVG91Y2hlZEZuKClcbiAgfVxuXG4gIHRyYWNrQnlLZXkgPSAoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBFeHRlbmRlZERyb3Bkb3duT3B0aW9uKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gb3B0aW9uLmtleVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcHJvcHMoKTogRHJvcGRvd25BcmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQgfHwgdGhpcy5kcm9wZG93bj8uaWQsXG4gICAgICB0ZXh0OiB0aGlzLnRleHQsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgICBsb29wOiB0aGlzLmxvb3AsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGVjdGlvbkJ5VmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWVcblxuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmhhbmRsZXI/LmRyb3Bkb3duPy5vcHRpb25zLmZpbmQoXG4gICAgICAgIChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWVcbiAgICAgIClcbiAgICAgIGlmIChzZWxlY3RlZCkgdGhpcy5oYW5kbGVyPy5zZWxlY3Qoc2VsZWN0ZWQpXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NggDropdownComponent } from './dropdown.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NggDropdownModule {
|
|
6
|
+
}
|
|
7
|
+
NggDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NggDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDropdownModule, declarations: [NggDropdownComponent], imports: [CommonModule], exports: [NggDropdownComponent] });
|
|
9
|
+
NggDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDropdownModule, imports: [[CommonModule]] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDropdownModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [NggDropdownComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [NggDropdownComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBOztBQU8zRCxNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBSmIsb0JBQW9CLGFBQ3pCLFlBQVksYUFDWixvQkFBb0I7K0dBRW5CLGlCQUFpQixZQUhuQixDQUFDLFlBQVksQ0FBQzsyRkFHWixpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdnRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmdnRHJvcGRvd25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW05nZ0Ryb3Bkb3duQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NggSegmentedControlModule } from './segmented-control/segmented-control.module';
|
|
4
|
+
import { NggDropdownModule } from './dropdown/dropdown.module';
|
|
5
|
+
import { NggDatepickerModule } from './datepicker/datepicker.module';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NggModule {
|
|
8
|
+
}
|
|
9
|
+
NggModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NggModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggModule, imports: [CommonModule], exports: [NggSegmentedControlModule, NggDropdownModule, NggDatepickerModule] });
|
|
11
|
+
NggModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggModule, imports: [[CommonModule], NggSegmentedControlModule, NggDropdownModule, NggDatepickerModule] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
declarations: [],
|
|
16
|
+
imports: [CommonModule],
|
|
17
|
+
exports: [NggSegmentedControlModule, NggDropdownModule, NggDatepickerModule],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZW4tYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9ncmVlbi1hbmd1bGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQTtBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTs7QUFPcEUsTUFBTSxPQUFPLFNBQVM7O3NHQUFULFNBQVM7dUdBQVQsU0FBUyxZQUhWLFlBQVksYUFDWix5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUI7dUdBRWhFLFNBQVMsWUFIWCxDQUFDLFlBQVksQ0FBQyxFQUNiLHlCQUF5QixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQjsyRkFFaEUsU0FBUztrQkFMckIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQztpQkFDN0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ2dTZWdtZW50ZWRDb250cm9sTW9kdWxlIH0gZnJvbSAnLi9zZWdtZW50ZWQtY29udHJvbC9zZWdtZW50ZWQtY29udHJvbC5tb2R1bGUnXG5pbXBvcnQgeyBOZ2dEcm9wZG93bk1vZHVsZSB9IGZyb20gJy4vZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlJ1xuaW1wb3J0IHsgTmdnRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLm1vZHVsZSdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOZ2dTZWdtZW50ZWRDb250cm9sTW9kdWxlLCBOZ2dEcm9wZG93bk1vZHVsZSwgTmdnRGF0ZXBpY2tlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5nZ01vZHVsZSB7fVxuIl19
|