@sebgroup/green-angular 1.0.0-beta.1 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/esm2020/index.mjs +10 -0
  2. package/esm2020/lib/dropdown/dropdown.component.mjs +111 -0
  3. package/esm2020/lib/dropdown/dropdown.module.mjs +42 -0
  4. package/esm2020/lib/dropdown/popover-element.directive.mjs +218 -0
  5. package/esm2020/lib/dropdown/popover-option.directive.mjs +58 -0
  6. package/esm2020/lib/dropdown/popover-trigger.directive.mjs +80 -0
  7. package/esm2020/lib/dropdown/popover.directive.mjs +46 -0
  8. package/esm2020/lib/green-angular.module.mjs +19 -0
  9. package/esm2020/lib/segmented-control/segmented-control.component.mjs +40 -0
  10. package/esm2020/lib/segmented-control/segmented-control.module.mjs +19 -0
  11. package/esm2020/sebgroup-green-angular.mjs +5 -0
  12. package/fesm2015/{sebgroup-green-angular.js → sebgroup-green-angular.mjs} +54 -45
  13. package/fesm2015/sebgroup-green-angular.mjs.map +1 -0
  14. package/fesm2020/sebgroup-green-angular.mjs +599 -0
  15. package/fesm2020/sebgroup-green-angular.mjs.map +1 -0
  16. package/package.json +26 -13
  17. package/bundles/sebgroup-green-angular.umd.js +0 -610
  18. package/bundles/sebgroup-green-angular.umd.js.map +0 -1
  19. package/esm2015/index.js +0 -10
  20. package/esm2015/index.js.map +0 -1
  21. package/esm2015/lib/dropdown/dropdown.component.js +0 -111
  22. package/esm2015/lib/dropdown/dropdown.component.js.map +0 -1
  23. package/esm2015/lib/dropdown/dropdown.module.js +0 -42
  24. package/esm2015/lib/dropdown/dropdown.module.js.map +0 -1
  25. package/esm2015/lib/dropdown/popover-element.directive.js +0 -220
  26. package/esm2015/lib/dropdown/popover-element.directive.js.map +0 -1
  27. package/esm2015/lib/dropdown/popover-option.directive.js +0 -59
  28. package/esm2015/lib/dropdown/popover-option.directive.js.map +0 -1
  29. package/esm2015/lib/dropdown/popover-trigger.directive.js +0 -80
  30. package/esm2015/lib/dropdown/popover-trigger.directive.js.map +0 -1
  31. package/esm2015/lib/dropdown/popover.directive.js +0 -46
  32. package/esm2015/lib/dropdown/popover.directive.js.map +0 -1
  33. package/esm2015/lib/green-angular.module.js +0 -19
  34. package/esm2015/lib/green-angular.module.js.map +0 -1
  35. package/esm2015/lib/segmented-control/segmented-control.component.js +0 -40
  36. package/esm2015/lib/segmented-control/segmented-control.component.js.map +0 -1
  37. package/esm2015/lib/segmented-control/segmented-control.module.js +0 -19
  38. package/esm2015/lib/segmented-control/segmented-control.module.js.map +0 -1
  39. package/esm2015/sebgroup-green-angular.js +0 -5
  40. package/esm2015/sebgroup-green-angular.js.map +0 -1
  41. package/fesm2015/sebgroup-green-angular.js.map +0 -1
@@ -0,0 +1,10 @@
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/dropdown/popover.directive';
5
+ export * from './lib/dropdown/popover-element.directive';
6
+ export * from './lib/dropdown/popover-option.directive';
7
+ export * from './lib/dropdown/popover-trigger.directive';
8
+ export * from './lib/segmented-control/segmented-control.module';
9
+ export * from './lib/segmented-control/segmented-control.component';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYywwQ0FBMEMsQ0FBQTtBQUN4RCxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyxrREFBa0QsQ0FBQTtBQUNoRSxjQUFjLHFEQUFxRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JlZW4tYW5ndWxhci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi9wb3BvdmVyLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duL3BvcG92ZXItZWxlbWVudC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi9wb3BvdmVyLW9wdGlvbi5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi9wb3BvdmVyLXRyaWdnZXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50J1xuIl19
@@ -0,0 +1,111 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./popover.directive";
5
+ import * as i2 from "./popover-trigger.directive";
6
+ import * as i3 from "./popover-element.directive";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "./popover-option.directive";
9
+ export class NggDropdownComponent {
10
+ constructor() {
11
+ this._options = [];
12
+ this._config = {};
13
+ }
14
+ get options() {
15
+ return this._options;
16
+ }
17
+ set options(value) {
18
+ this._options = value;
19
+ }
20
+ get config() {
21
+ return this._config;
22
+ }
23
+ set config(value) {
24
+ this._config = value;
25
+ }
26
+ writeValue(obj) {
27
+ this.value = obj;
28
+ }
29
+ registerOnChange(fn) {
30
+ this.onChangeFn = fn;
31
+ }
32
+ registerOnTouched(fn) {
33
+ this.onTouchedFn = fn;
34
+ }
35
+ select(value) {
36
+ this.onChangeFn(value);
37
+ this.value = value;
38
+ }
39
+ }
40
+ NggDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { options: "options", config: "config" }, providers: [
42
+ {
43
+ provide: NG_VALUE_ACCESSOR,
44
+ useExisting: NggDropdownComponent,
45
+ multi: true,
46
+ },
47
+ ], ngImport: i0, template: `
48
+ <div nggPopover [config]="config">
49
+ <button type="button" nggPopoverTrigger>
50
+ {{ value }}
51
+ </button>
52
+ <div nggPopoverElement tabindex="-1" autofocus>
53
+ <button class="close m-4 m-sm-2 d-block d-sm-none ">
54
+ <span class="sr-only">Close</span>
55
+ </button>
56
+ <ul role="listbox">
57
+ <li
58
+ *ngFor="let option of options; let i = index"
59
+ [nggPopoverOption]="option.value"
60
+ [index]="i"
61
+ [selected]="value === option.value"
62
+ (selectedChanged)="select($event)"
63
+ >
64
+ {{ option.key }}
65
+ </li>
66
+ </ul>
67
+ </div>
68
+ </div>
69
+ `, isInline: true, directives: [{ type: i1.NggPopoverDirective, selector: "[nggPopover]", inputs: ["config"] }, { type: i2.NggPopoverTriggerDirective, selector: "[nggPopoverTrigger]" }, { type: i3.NggPopoverElementDirective, selector: "[nggPopoverElement]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NggPopoverOptionDirective, selector: "[nggPopoverOption]", inputs: ["nggPopoverOption", "index", "selected"], outputs: ["selectedChanged"] }] });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggDropdownComponent, decorators: [{
71
+ type: Component,
72
+ args: [{
73
+ selector: 'ngg-dropdown',
74
+ template: `
75
+ <div nggPopover [config]="config">
76
+ <button type="button" nggPopoverTrigger>
77
+ {{ value }}
78
+ </button>
79
+ <div nggPopoverElement tabindex="-1" autofocus>
80
+ <button class="close m-4 m-sm-2 d-block d-sm-none ">
81
+ <span class="sr-only">Close</span>
82
+ </button>
83
+ <ul role="listbox">
84
+ <li
85
+ *ngFor="let option of options; let i = index"
86
+ [nggPopoverOption]="option.value"
87
+ [index]="i"
88
+ [selected]="value === option.value"
89
+ (selectedChanged)="select($event)"
90
+ >
91
+ {{ option.key }}
92
+ </li>
93
+ </ul>
94
+ </div>
95
+ </div>
96
+ `,
97
+ providers: [
98
+ {
99
+ provide: NG_VALUE_ACCESSOR,
100
+ useExisting: NggDropdownComponent,
101
+ multi: true,
102
+ },
103
+ ],
104
+ //changeDetection: ChangeDetectionStrategy.OnPush
105
+ }]
106
+ }], propDecorators: { options: [{
107
+ type: Input
108
+ }], config: [{
109
+ type: Input
110
+ }] } });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7Ozs7OztBQW9DeEUsTUFBTSxPQUFPLG9CQUFvQjtJQWxDakM7UUFxRFUsYUFBUSxHQUFlLEVBQUUsQ0FBQTtRQUV6QixZQUFPLEdBQVMsRUFBRSxDQUFBO0tBa0IzQjtJQXRDQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLEtBQWlCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUNELElBQWEsTUFBTSxDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7SUFDdEIsQ0FBQztJQVVELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQzs7aUhBdENVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHlGQVRwQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsb0JBQW9CO1lBQ2pDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkE3QlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7MkZBVVUsb0JBQW9CO2tCQWxDaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHNCQUFzQjs0QkFDakMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsaURBQWlEO2lCQUNsRDs4QkFNYyxPQUFPO3NCQUFuQixLQUFLO2dCQU1PLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctZHJvcGRvd24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgbmdnUG9wb3ZlciBbY29uZmlnXT1cImNvbmZpZ1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdnUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgIHt7IHZhbHVlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgbmdnUG9wb3ZlckVsZW1lbnQgdGFiaW5kZXg9XCItMVwiIGF1dG9mb2N1cz5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlIG0tNCBtLXNtLTIgZC1ibG9jayBkLXNtLW5vbmUgXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8dWwgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBbbmdnUG9wb3Zlck9wdGlvbl09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZhbHVlID09PSBvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlZCk9XCJzZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmtleSB9fVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogTmdnRHJvcGRvd25Db21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICAvL2NoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0Ryb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBnZXQgb3B0aW9ucygpOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uc1xuICB9XG5cbiAgQElucHV0KCkgc2V0IG9wdGlvbnModmFsdWU6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWVcbiAgfVxuICBnZXQgY29uZmlnKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ1xuICB9XG4gIEBJbnB1dCgpIHNldCBjb25maWcodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlXG4gIH1cblxuICB2YWx1ZTogYW55XG4gIG9uQ2hhbmdlRm46IGFueVxuICBvblRvdWNoZWRGbjogYW55XG5cbiAgcHJpdmF0ZSBfb3B0aW9uczogQXJyYXk8YW55PiA9IFtdXG5cbiAgcHJpdmF0ZSBfY29uZmlnPzogYW55ID0ge31cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG9ialxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxuXG4gIHNlbGVjdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZUZuKHZhbHVlKVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB9XG59XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NggDropdownComponent } from './dropdown.component';
4
+ import { NggPopoverElementDirective } from './popover-element.directive';
5
+ import { NggPopoverOptionDirective } from './popover-option.directive';
6
+ import { NggPopoverTriggerDirective } from './popover-trigger.directive';
7
+ import { NggPopoverDirective } from './popover.directive';
8
+ import * as i0 from "@angular/core";
9
+ export class NggDropdownModule {
10
+ }
11
+ NggDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ NggDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggDropdownModule, declarations: [NggPopoverDirective,
13
+ NggPopoverOptionDirective,
14
+ NggPopoverElementDirective,
15
+ NggPopoverTriggerDirective,
16
+ NggDropdownComponent], imports: [CommonModule], exports: [NggPopoverDirective,
17
+ NggPopoverOptionDirective,
18
+ NggPopoverElementDirective,
19
+ NggPopoverTriggerDirective,
20
+ NggDropdownComponent] });
21
+ NggDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggDropdownModule, imports: [[CommonModule]] });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggDropdownModule, decorators: [{
23
+ type: NgModule,
24
+ args: [{
25
+ declarations: [
26
+ NggPopoverDirective,
27
+ NggPopoverOptionDirective,
28
+ NggPopoverElementDirective,
29
+ NggPopoverTriggerDirective,
30
+ NggDropdownComponent,
31
+ ],
32
+ imports: [CommonModule],
33
+ exports: [
34
+ NggPopoverDirective,
35
+ NggPopoverOptionDirective,
36
+ NggPopoverElementDirective,
37
+ NggPopoverTriggerDirective,
38
+ NggDropdownComponent,
39
+ ],
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3RFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBOztBQW1CekQsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWYxQixtQkFBbUI7UUFDbkIseUJBQXlCO1FBQ3pCLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsb0JBQW9CLGFBRVosWUFBWSxhQUVwQixtQkFBbUI7UUFDbkIseUJBQXlCO1FBQ3pCLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsb0JBQW9COytHQUdYLGlCQUFpQixZQVRuQixDQUFDLFlBQVksQ0FBQzsyRkFTWixpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQixvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdnRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCdcbmltcG9ydCB7IE5nZ1BvcG92ZXJFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLWVsZW1lbnQuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgTmdnUG9wb3Zlck9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci1vcHRpb24uZGlyZWN0aXZlJ1xuaW1wb3J0IHsgTmdnUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBOZ2dQb3BvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLmRpcmVjdGl2ZSdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmdnUG9wb3ZlckRpcmVjdGl2ZSxcbiAgICBOZ2dQb3BvdmVyT3B0aW9uRGlyZWN0aXZlLFxuICAgIE5nZ1BvcG92ZXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIE5nZ1BvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlLFxuICAgIE5nZ0Ryb3Bkb3duQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW1xuICAgIE5nZ1BvcG92ZXJEaXJlY3RpdmUsXG4gICAgTmdnUG9wb3Zlck9wdGlvbkRpcmVjdGl2ZSxcbiAgICBOZ2dQb3BvdmVyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBOZ2dQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICBOZ2dEcm9wZG93bkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,218 @@
1
+ import { ChangeDetectorRef, ContentChildren, Directive, ElementRef, forwardRef, HostBinding, HostListener, Inject, Renderer2, } from '@angular/core';
2
+ import { filter, skip, switchMap, takeUntil, tap } from 'rxjs/operators';
3
+ import { EMPTY, fromEvent, merge, Subject } from 'rxjs';
4
+ import { NggPopoverOptionDirective } from './popover-option.directive';
5
+ import { NggPopoverDirective } from './popover.directive';
6
+ import { createPopper } from '@popperjs/core';
7
+ import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./popover.directive";
10
+ export class NggPopoverElementDirective {
11
+ constructor(popover, _elRef, _renderer, _cdr) {
12
+ this.popover = popover;
13
+ this._elRef = _elRef;
14
+ this._renderer = _renderer;
15
+ this._cdr = _cdr;
16
+ this.$unsubscribe = new Subject();
17
+ this.sm = window.innerWidth <= 576;
18
+ this.class = true;
19
+ this.role = 'listbox';
20
+ this.id = null;
21
+ this.show = this.popover.state.$isOpen.value;
22
+ this.activeDescendant = null;
23
+ }
24
+ // TODO: refactor and move to general size/device service
25
+ onResize(event) {
26
+ // determine if small screen size i.e less than or equal to 576 pixels which is the breakpoint for small screens
27
+ this.sm = event.target.innerWidth <= 576;
28
+ if (this.sm) {
29
+ // remove popper
30
+ this.removePopper();
31
+ }
32
+ else if (!this._popper) {
33
+ // add popper
34
+ this.addPopper();
35
+ }
36
+ }
37
+ handleClickEvent(event) {
38
+ // if click inside popover element...
39
+ if (this._elRef.nativeElement.contains(event.target)) {
40
+ this.popover.close();
41
+ }
42
+ else if (this.popover.state.$isOpen.value) {
43
+ // else if click outside popover element...
44
+ this.popover.close();
45
+ }
46
+ }
47
+ handleKeydownEvent(event) {
48
+ if (event.key === 'Escape') {
49
+ this.popover.close();
50
+ return;
51
+ }
52
+ let next = 0; // Used for home key
53
+ const currentSelection = this.options?.find((option) => !!option.selected)?.index || 0;
54
+ if (event.key === 'End') {
55
+ // set next to last option
56
+ next = (this.options?.length || 1) - 1;
57
+ }
58
+ else if (event.key === 'ArrowUp') {
59
+ // next can't be less than zero
60
+ next = Math.max(0, currentSelection - 1);
61
+ // prevent container from scrolling
62
+ event.preventDefault();
63
+ }
64
+ else if (event.key === 'ArrowDown') {
65
+ // next can't be greater than number of options
66
+ next = Math.min((this.options?.length || 1) - 1, currentSelection + 1);
67
+ // prevent container from scrolling
68
+ event.preventDefault();
69
+ }
70
+ // select next option
71
+ this.options?.get(next)?.select(event);
72
+ }
73
+ ngOnInit() {
74
+ this.id = /^ngg_dropdownTrigger/.test(this.popover.triggerElement?.nativeElement.id)
75
+ ? this.popover.triggerElement?.nativeElement.id.replace(/dropdownTrigger/, 'popover')
76
+ : this.popover.triggerElement?.nativeElement.id + '_popover';
77
+ this.popover.state.$isOpen
78
+ .pipe(skip(1), // skip initial value
79
+ tap((isOpen) => {
80
+ this.show = isOpen; // toggle visibility
81
+ if (isOpen) {
82
+ this.activeDescendant =
83
+ this.options?.find((option) => !!option.selected)?.id || null;
84
+ // if use body scroll lock
85
+ if (this.popover.config.useBodyScrollLock) {
86
+ this.disableBodyScrollLock();
87
+ }
88
+ // if popover is configured to use a container...
89
+ if (this.popover.config.container !== '') {
90
+ // ...add container
91
+ this.addContainer();
92
+ }
93
+ // if popover is configured to use popper.js...
94
+ if (this.popover.config.usePopper) {
95
+ this.addPopper();
96
+ }
97
+ }
98
+ else {
99
+ this.activeDescendant = null;
100
+ if (this.popover.config.useBodyScrollLock) {
101
+ this.enableBodyScrollLock();
102
+ }
103
+ this.removeContainer();
104
+ this.removePopper();
105
+ }
106
+ }), switchMap((isOpen) => isOpen
107
+ ? merge(
108
+ // listen to click events
109
+ fromEvent(document, 'click').pipe(tap((event) => this.handleClickEvent(event))),
110
+ // listen to keydown events
111
+ fromEvent(document, 'keydown').pipe(
112
+ // filter keys
113
+ filter((event) => ['ArrowDown', 'ArrowUp', 'Escape', 'Home', 'End'].indexOf(event.key) !== -1), tap((event) => this.handleKeydownEvent(event))))
114
+ : EMPTY), takeUntil(this.$unsubscribe))
115
+ .subscribe();
116
+ }
117
+ ngOnDestroy() {
118
+ this.removePopper();
119
+ // enable scroll if body scroll lock is used
120
+ if (this.popover.config.useBodyScrollLock) {
121
+ this.enableBodyScrollLock();
122
+ }
123
+ // remove container if declared
124
+ if (this._container) {
125
+ this.removeContainer();
126
+ }
127
+ this.$unsubscribe.next();
128
+ this.$unsubscribe.complete();
129
+ }
130
+ enableBodyScrollLock() {
131
+ enableBodyScroll(this._elRef.nativeElement);
132
+ }
133
+ disableBodyScrollLock() {
134
+ disableBodyScroll(this._elRef.nativeElement);
135
+ }
136
+ addPopper() {
137
+ if (this.sm) {
138
+ return;
139
+ }
140
+ if (!this._popper) {
141
+ // ...create popper instance for anchoring popover with trigger element
142
+ this._popper = createPopper(this.popover.triggerElement?.nativeElement, this._elRef.nativeElement, {
143
+ placement: 'bottom-start',
144
+ modifiers: [
145
+ {
146
+ name: 'offset',
147
+ options: {
148
+ offset: [0, 4],
149
+ },
150
+ },
151
+ ],
152
+ });
153
+ // detect changes once element and popper is initiated to update initial position
154
+ this._cdr.detectChanges();
155
+ }
156
+ else {
157
+ this._popper.state.elements.reference =
158
+ this.popover.triggerElement?.nativeElement;
159
+ this._popper.update().then((_) => this._cdr.detectChanges());
160
+ }
161
+ }
162
+ removePopper() {
163
+ // destroy popper if declared
164
+ if (this._popper) {
165
+ this._popper?.destroy();
166
+ this._popper = null;
167
+ }
168
+ }
169
+ addContainer() {
170
+ // create global container for popover if not already present
171
+ if (!this._container) {
172
+ this._container = this._renderer.createElement('div');
173
+ }
174
+ this._renderer.appendChild(this._container, this._elRef.nativeElement);
175
+ this._renderer.appendChild(document.body, this._container);
176
+ }
177
+ removeContainer() {
178
+ if (this._container) {
179
+ // remove container from DOM tree
180
+ this._renderer.removeChild(document.body, this._container);
181
+ // clear container
182
+ this._container = null;
183
+ }
184
+ }
185
+ }
186
+ NggPopoverElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverElementDirective, deps: [{ token: forwardRef(() => NggPopoverDirective) }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
187
+ NggPopoverElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NggPopoverElementDirective, selector: "[nggPopoverElement]", host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class.popover": "this.class", "attr.role": "this.role", "attr.id": "this.id", "class.active": "this.show", "attr.aria-activedescendant": "this.activeDescendant" } }, queries: [{ propertyName: "options", predicate: NggPopoverOptionDirective, descendants: true }], ngImport: i0 });
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverElementDirective, decorators: [{
189
+ type: Directive,
190
+ args: [{
191
+ selector: '[nggPopoverElement]',
192
+ }]
193
+ }], ctorParameters: function () { return [{ type: i1.NggPopoverDirective, decorators: [{
194
+ type: Inject,
195
+ args: [forwardRef(() => NggPopoverDirective)]
196
+ }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
197
+ type: ContentChildren,
198
+ args: [NggPopoverOptionDirective, { descendants: true }]
199
+ }], class: [{
200
+ type: HostBinding,
201
+ args: ['class.popover']
202
+ }], role: [{
203
+ type: HostBinding,
204
+ args: ['attr.role']
205
+ }], id: [{
206
+ type: HostBinding,
207
+ args: ['attr.id']
208
+ }], show: [{
209
+ type: HostBinding,
210
+ args: ['class.active']
211
+ }], activeDescendant: [{
212
+ type: HostBinding,
213
+ args: ['attr.aria-activedescendant']
214
+ }], onResize: [{
215
+ type: HostListener,
216
+ args: ['window:resize', ['$event']]
217
+ }] } });
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1lbGVtZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2Ryb3Bkb3duL3BvcG92ZXItZWxlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBSU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7OztBQUt0RSxNQUFNLE9BQU8sMEJBQTBCO0lBaUVyQyxZQUVTLE9BQTRCLEVBQzNCLE1BQWtCLEVBQ2xCLFNBQW9CLEVBQ3BCLElBQXVCO1FBSHhCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQW5FakMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBQzVCLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFB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O2tCQUh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDOzswQkFtRUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7NkhBN0RvQixPQUFPO3NCQUF6RSxlQUFlO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJbkMsS0FBSztzQkFBbEMsV0FBVzt1QkFBQyxlQUFlO2dCQUNGLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFDQSxFQUFFO3NCQUF6QixXQUFXO3VCQUFDLFNBQVM7Z0JBQ08sSUFBSTtzQkFBaEMsV0FBVzt1QkFBQyxjQUFjO2dCQUNnQixnQkFBZ0I7c0JBQTFELFdBQVc7dUJBQUMsNEJBQTRCO2dCQUdFLFFBQVE7c0JBQWxELFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGZpbHRlciwgc2tpcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvdHlwZXMnXG5pbXBvcnQgeyBFTVBUWSwgZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBOZ2dQb3BvdmVyT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLW9wdGlvbi5kaXJlY3RpdmUnXG5pbXBvcnQgeyBOZ2dQb3BvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IGNyZWF0ZVBvcHBlciB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJ1xuaW1wb3J0IHsgZGlzYWJsZUJvZHlTY3JvbGwsIGVuYWJsZUJvZHlTY3JvbGwgfSBmcm9tICdib2R5LXNjcm9sbC1sb2NrJ1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdnUG9wb3ZlckVsZW1lbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmdnUG9wb3ZlckVsZW1lbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIF9wb3BwZXI/OiBJbnN0YW5jZSB8IG51bGxcbiAgX2NvbnRhaW5lcj86IEVsZW1lbnRSZWYgfCBudWxsXG4gICR1bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KClcbiAgc20gPSB3aW5kb3cuaW5uZXJXaWR0aCA8PSA1NzZcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2dQb3BvdmVyT3B0aW9uRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIG9wdGlvbnM6XG4gICAgfCBRdWVyeUxpc3Q8TmdnUG9wb3Zlck9wdGlvbkRpcmVjdGl2ZT5cbiAgICB8IHVuZGVmaW5lZFxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucG9wb3ZlcicpIGNsYXNzID0gdHJ1ZVxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbGlzdGJveCdcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaWQgPSBudWxsXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJykgc2hvdyA9IHRoaXMucG9wb3Zlci5zdGF0ZS4kaXNPcGVuLnZhbHVlXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKSBhY3RpdmVEZXNjZW5kYW50OiBzdHJpbmcgfCBudWxsID1cbiAgICBudWxsXG4gIC8vIFRPRE86IHJlZmFjdG9yIGFuZCBtb3ZlIHRvIGdlbmVyYWwgc2l6ZS9kZXZpY2Ugc2VydmljZVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSkgb25SZXNpemUoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgICAvLyBkZXRlcm1pbmUgaWYgc21hbGwgc2NyZWVuIHNpemUgaS5lIGxlc3MgdGhhbiBvciBlcXVhbCB0byA1NzYgcGl4ZWxzIHdoaWNoIGlzIHRoZSBicmVha3BvaW50IGZvciBzbWFsbCBzY3JlZW5zXG4gICAgdGhpcy5zbSA9IChldmVudC50YXJnZXQgYXMgV2luZG93KS5pbm5lcldpZHRoIDw9IDU3NlxuICAgIGlmICh0aGlzLnNtKSB7XG4gICAgICAvLyByZW1vdmUgcG9wcGVyXG4gICAgICB0aGlzLnJlbW92ZVBvcHBlcigpXG4gICAgfSBlbHNlIGlmICghdGhpcy5fcG9wcGVyKSB7XG4gICAgICAvLyBhZGQgcG9wcGVyXG4gICAgICB0aGlzLmFkZFBvcHBlcigpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2xpY2tFdmVudChldmVudDogRXZlbnQpIHtcbiAgICAvLyBpZiBjbGljayBpbnNpZGUgcG9wb3ZlciBlbGVtZW50Li4uXG4gICAgaWYgKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlKClcbiAgICB9IGVsc2UgaWYgKHRoaXMucG9wb3Zlci5zdGF0ZS4kaXNPcGVuLnZhbHVlKSB7XG4gICAgICAvLyBlbHNlIGlmIGNsaWNrIG91dHNpZGUgcG9wb3ZlciBlbGVtZW50Li4uXG4gICAgICB0aGlzLnBvcG92ZXIuY2xvc2UoKVxuICAgIH1cbiAgfVxuICBoYW5kbGVLZXlkb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBsZXQgbmV4dCA9IDAgLy8gVXNlZCBmb3IgaG9tZSBrZXlcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID1cbiAgICAgIHRoaXMub3B0aW9ucz8uZmluZCgob3B0aW9uKSA9PiAhIW9wdGlvbi5zZWxlY3RlZCk/LmluZGV4IHx8IDBcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW5kJykge1xuICAgICAgLy8gc2V0IG5leHQgdG8gbGFzdCBvcHRpb25cbiAgICAgIG5leHQgPSAodGhpcy5vcHRpb25zPy5sZW5ndGggfHwgMSkgLSAxXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgLy8gbmV4dCBjYW4ndCBiZSBsZXNzIHRoYW4gemVyb1xuICAgICAgbmV4dCA9IE1hdGgubWF4KDAsIGN1cnJlbnRTZWxlY3Rpb24gLSAxKVxuXG4gICAgICAvLyBwcmV2ZW50IGNvbnRhaW5lciBmcm9tIHNjcm9sbGluZ1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgLy8gbmV4dCBjYW4ndCBiZSBncmVhdGVyIHRoYW4gbnVtYmVyIG9mIG9wdGlvbnNcbiAgICAgIG5leHQgPSBNYXRoLm1pbigodGhpcy5vcHRpb25zPy5sZW5ndGggfHwgMSkgLSAxLCBjdXJyZW50U2VsZWN0aW9uICsgMSlcblxuICAgICAgLy8gcHJldmVudCBjb250YWluZXIgZnJvbSBzY3JvbGxpbmdcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG4gICAgLy8gc2VsZWN0IG5leHQgb3B0aW9uXG4gICAgdGhpcy5vcHRpb25zPy5nZXQobmV4dCk/LnNlbGVjdChldmVudClcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ2dQb3BvdmVyRGlyZWN0aXZlKSlcbiAgICBwdWJsaWMgcG9wb3ZlcjogTmdnUG9wb3ZlckRpcmVjdGl2ZSxcbiAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlkID0gL15uZ2dfZHJvcGRvd25UcmlnZ2VyLy50ZXN0KFxuICAgICAgdGhpcy5wb3BvdmVyLnRyaWdnZXJFbGVtZW50Py5uYXRpdmVFbGVtZW50LmlkXG4gICAgKVxuICAgICAgPyB0aGlzLnBvcG92ZXIudHJpZ2dlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuaWQucmVwbGFjZShcbiAgICAgICAgICAvZHJvcGRvd25UcmlnZ2VyLyxcbiAgICAgICAgICAncG9wb3ZlcidcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLnBvcG92ZXIudHJpZ2dlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuaWQgKyAnX3BvcG92ZXInXG4gICAgdGhpcy5wb3BvdmVyLnN0YXRlLiRpc09wZW5cbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLCAvLyBza2lwIGluaXRpYWwgdmFsdWVcbiAgICAgICAgdGFwKChpc09wZW4pID0+IHtcbiAgICAgICAgICB0aGlzLnNob3cgPSBpc09wZW4gLy8gdG9nZ2xlIHZpc2liaWxpdHlcblxuICAgICAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudCA9XG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucz8uZmluZCgob3B0aW9uKSA9PiAhIW9wdGlvbi5zZWxlY3RlZCk/LmlkIHx8IG51bGxcblxuICAgICAgICAgICAgLy8gaWYgdXNlIGJvZHkgc2Nyb2xsIGxvY2tcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcG92ZXIuY29uZmlnLnVzZUJvZHlTY3JvbGxMb2NrKSB7XG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUJvZHlTY3JvbGxMb2NrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIHBvcG92ZXIgaXMgY29uZmlndXJlZCB0byB1c2UgYSBjb250YWluZXIuLi5cbiAgICAgICAgICAgIGlmICh0aGlzLnBvcG92ZXIuY29uZmlnLmNvbnRhaW5lciAhPT0gJycpIHtcbiAgICAgICAgICAgICAgLy8gLi4uYWRkIGNvbnRhaW5lclxuICAgICAgICAgICAgICB0aGlzLmFkZENvbnRhaW5lcigpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiBwb3BvdmVyIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIHBvcHBlci5qcy4uLlxuICAgICAgICAgICAgaWYgKHRoaXMucG9wb3Zlci5jb25maWcudXNlUG9wcGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkUG9wcGVyKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50ID0gbnVsbFxuICAgICAgICAgICAgaWYgKHRoaXMucG9wb3Zlci5jb25maWcudXNlQm9keVNjcm9sbExvY2spIHtcbiAgICAgICAgICAgICAgdGhpcy5lbmFibGVCb2R5U2Nyb2xsTG9jaygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRhaW5lcigpXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVBvcHBlcigpXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChpc09wZW4pID0+XG4gICAgICAgICAgaXNPcGVuXG4gICAgICAgICAgICA/IG1lcmdlKFxuICAgICAgICAgICAgICAgIC8vIGxpc3RlbiB0byBjbGljayBldmVudHNcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YXAoKGV2ZW50KSA9PiB0aGlzLmhhbmRsZUNsaWNrRXZlbnQoZXZlbnQpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgLy8gbGlzdGVuIHRvIGtleWRvd24gZXZlbnRzXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAvLyBmaWx0ZXIga2V5c1xuICAgICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgWydBcnJvd0Rvd24nLCAnQXJyb3dVcCcsICdFc2NhcGUnLCAnSG9tZScsICdFbmQnXS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleVxuICAgICAgICAgICAgICAgICAgICAgICkgIT09IC0xXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgdGFwKChldmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRXZlbnQoZXZlbnQgYXMgS2V5Ym9hcmRFdmVudClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogRU1QVFlcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuJHVuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZVBvcHBlcigpXG5cbiAgICAvLyBlbmFibGUgc2Nyb2xsIGlmIGJvZHkgc2Nyb2xsIGxvY2sgaXMgdXNlZFxuICAgIGlmICh0aGlzLnBvcG92ZXIuY29uZmlnLnVzZUJvZHlTY3JvbGxMb2NrKSB7XG4gICAgICB0aGlzLmVuYWJsZUJvZHlTY3JvbGxMb2NrKClcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgY29udGFpbmVyIGlmIGRlY2xhcmVkXG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKVxuICAgIH1cbiAgICB0aGlzLiR1bnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLiR1bnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICBlbmFibGVCb2R5U2Nyb2xsTG9jaygpIHtcbiAgICBlbmFibGVCb2R5U2Nyb2xsKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpXG4gIH1cblxuICBkaXNhYmxlQm9keVNjcm9sbExvY2soKSB7XG4gICAgZGlzYWJsZUJvZHlTY3JvbGwodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudClcbiAgfVxuXG4gIGFkZFBvcHBlcigpIHtcbiAgICBpZiAodGhpcy5zbSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghdGhpcy5fcG9wcGVyKSB7XG4gICAgICAvLyAuLi5jcmVhdGUgcG9wcGVyIGluc3RhbmNlIGZvciBhbmNob3JpbmcgcG9wb3ZlciB3aXRoIHRyaWdnZXIgZWxlbWVudFxuICAgICAgdGhpcy5fcG9wcGVyID0gY3JlYXRlUG9wcGVyKFxuICAgICAgICB0aGlzLnBvcG92ZXIudHJpZ2dlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIG9mZnNldDogWzAsIDRdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAvLyBkZXRlY3QgY2hhbmdlcyBvbmNlIGVsZW1lbnQgYW5kIHBvcHBlciBpcyBpbml0aWF0ZWQgdG8gdXBkYXRlIGluaXRpYWwgcG9zaXRpb25cbiAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcG9wcGVyLnN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZSA9XG4gICAgICAgIHRoaXMucG9wb3Zlci50cmlnZ2VyRWxlbWVudD8ubmF0aXZlRWxlbWVudFxuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpLnRoZW4oKF8pID0+IHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCkpXG4gICAgfVxuICB9XG4gIHJlbW92ZVBvcHBlcigpIHtcbiAgICAvLyBkZXN0cm95IHBvcHBlciBpZiBkZWNsYXJlZFxuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlcj8uZGVzdHJveSgpXG4gICAgICB0aGlzLl9wb3BwZXIgPSBudWxsXG4gICAgfVxuICB9XG4gIGFkZENvbnRhaW5lcigpIHtcbiAgICAvLyBjcmVhdGUgZ2xvYmFsIGNvbnRhaW5lciBmb3IgcG9wb3ZlciBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgaWYgKCF0aGlzLl9jb250YWluZXIpIHtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgfVxuICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciwgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudClcbiAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLl9jb250YWluZXIpXG4gIH1cblxuICByZW1vdmVDb250YWluZXIoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgLy8gcmVtb3ZlIGNvbnRhaW5lciBmcm9tIERPTSB0cmVlXG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLl9jb250YWluZXIpXG5cbiAgICAgIC8vIGNsZWFyIGNvbnRhaW5lclxuICAgICAgdGhpcy5fY29udGFpbmVyID0gbnVsbFxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,58 @@
1
+ import { Directive, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Inject, Input, Output, } from '@angular/core';
2
+ import { NggPopoverDirective } from './popover.directive';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./popover.directive";
5
+ export class NggPopoverOptionDirective {
6
+ constructor(popover, elRef) {
7
+ this.popover = popover;
8
+ this.elRef = elRef;
9
+ this.selected = false;
10
+ this.selectedChanged = new EventEmitter();
11
+ this.role = 'option';
12
+ this.id = '';
13
+ this.clickHandler = (event) => {
14
+ this.select(event);
15
+ };
16
+ this.select = (event) => {
17
+ this.selectedChanged.emit(this.nggPopoverOption);
18
+ };
19
+ }
20
+ get ariaSelected() {
21
+ return this.selected || null;
22
+ }
23
+ ngOnInit() {
24
+ this.id = `${this.popover.triggerElement?.nativeElement.id}_dropdownOption_${this.index}`;
25
+ }
26
+ }
27
+ NggPopoverOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverOptionDirective, deps: [{ token: forwardRef(() => NggPopoverDirective) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
28
+ NggPopoverOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NggPopoverOptionDirective, selector: "[nggPopoverOption]", inputs: { nggPopoverOption: "nggPopoverOption", index: "index", selected: "selected" }, outputs: { selectedChanged: "selectedChanged" }, host: { listeners: { "click": "clickHandler()" }, properties: { "attr.role": "this.role", "attr.aria-selected": "this.ariaSelected", "attr.id": "this.id" } }, ngImport: i0 });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverOptionDirective, decorators: [{
30
+ type: Directive,
31
+ args: [{
32
+ selector: '[nggPopoverOption]',
33
+ }]
34
+ }], ctorParameters: function () { return [{ type: i1.NggPopoverDirective, decorators: [{
35
+ type: Inject,
36
+ args: [forwardRef(() => NggPopoverDirective)]
37
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { nggPopoverOption: [{
38
+ type: Input
39
+ }], index: [{
40
+ type: Input
41
+ }], selected: [{
42
+ type: Input
43
+ }], selectedChanged: [{
44
+ type: Output
45
+ }], role: [{
46
+ type: HostBinding,
47
+ args: ['attr.role']
48
+ }], ariaSelected: [{
49
+ type: HostBinding,
50
+ args: ['attr.aria-selected']
51
+ }], id: [{
52
+ type: HostBinding,
53
+ args: ['attr.id']
54
+ }], clickHandler: [{
55
+ type: HostListener,
56
+ args: ['click']
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1vcHRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vcG9wb3Zlci1vcHRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7O0FBS3pELE1BQU0sT0FBTyx5QkFBeUI7SUFlcEMsWUFFUyxPQUE0QixFQUM1QixLQUFpQjtRQURqQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBZmpCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDZixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7UUFDcEIsU0FBSSxHQUFHLFFBQVEsQ0FBQTtRQUtqQixPQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ1IsaUJBQVksR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsQ0FBQyxDQUFBO1FBWUQsV0FBTSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDbEQsQ0FBQyxDQUFBO0lBUkUsQ0FBQztJQWJKLElBQ1csWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFBO0lBQzlCLENBQUM7SUFZRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxFQUFFLG1CQUFtQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDM0YsQ0FBQzs7c0hBdkJVLHlCQUF5QixrQkFnQjFCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzswR0FoQnBDLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9COzswQkFpQkksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7cUVBZnRDLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNtQixJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVc7Z0JBRWIsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBSVQsRUFBRTtzQkFBekIsV0FBVzt1QkFBQyxTQUFTO2dCQUNDLFlBQVk7c0JBQWxDLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5nZ1BvcG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXIuZGlyZWN0aXZlJ1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdnUG9wb3Zlck9wdGlvbl0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dQb3BvdmVyT3B0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbmdnUG9wb3Zlck9wdGlvbjogYW55XG4gIEBJbnB1dCgpIGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgc2VsZWN0ZWQgPSBmYWxzZVxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdvcHRpb24nXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJylcbiAgcHVibGljIGdldCBhcmlhU2VsZWN0ZWQoKTogbnVsbCB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkIHx8IG51bGxcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBpZCA9ICcnXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgY2xpY2tIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIHRoaXMuc2VsZWN0KGV2ZW50KVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nZ1BvcG92ZXJEaXJlY3RpdmUpKVxuICAgIHB1YmxpYyBwb3BvdmVyOiBOZ2dQb3BvdmVyRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pZCA9IGAke3RoaXMucG9wb3Zlci50cmlnZ2VyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5pZH1fZHJvcGRvd25PcHRpb25fJHt0aGlzLmluZGV4fWBcbiAgfVxuXG4gIHNlbGVjdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlZC5lbWl0KHRoaXMubmdnUG9wb3Zlck9wdGlvbilcbiAgfVxufVxuIl19
@@ -0,0 +1,80 @@
1
+ import { Directive, ElementRef, forwardRef, HostBinding, HostListener, Inject, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil, tap } from 'rxjs/operators';
4
+ import { NggPopoverDirective } from './popover.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./popover.directive";
7
+ export class NggPopoverTriggerDirective {
8
+ constructor(popover, _elRef) {
9
+ this.popover = popover;
10
+ this._elRef = _elRef;
11
+ this.$unsubscribe = new Subject();
12
+ this.class = 'dropdown-toggle';
13
+ this.haspopup = 'listbox';
14
+ this.owns = null;
15
+ this.expanded = this.popover.state.$isOpen.value;
16
+ this.toggle = (event) => {
17
+ if ('key' in event && event.key === 'ArrowDown') {
18
+ // open popover on arrow down by not stopping event propagation
19
+ if (this.popover.state.$isOpen.value) {
20
+ return;
21
+ }
22
+ else {
23
+ // prevent container from scrolling
24
+ event.preventDefault();
25
+ }
26
+ }
27
+ event.stopPropagation();
28
+ this.popover.toggle();
29
+ };
30
+ }
31
+ ngOnInit() {
32
+ // if trigger element does not have an id...
33
+ if (!this._elRef.nativeElement.id) {
34
+ // ...add a unique id
35
+ this._elRef.nativeElement.id = `ngg_dropdownTrigger_${new Date().getTime()}`;
36
+ this.owns = this._elRef.nativeElement.id.replace(/dropdownTrigger/, 'popover');
37
+ }
38
+ else {
39
+ this.owns = this._elRef.nativeElement.id + '_popover';
40
+ }
41
+ this.popover.triggerElement = this._elRef;
42
+ this.popover.state.$isOpen
43
+ .pipe(tap((isOpen) => (this.expanded = isOpen)), takeUntil(this.$unsubscribe))
44
+ .subscribe();
45
+ }
46
+ ngOnDestroy() {
47
+ this.$unsubscribe.next();
48
+ this.$unsubscribe.complete();
49
+ }
50
+ }
51
+ NggPopoverTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverTriggerDirective, deps: [{ token: forwardRef(() => NggPopoverDirective) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
52
+ NggPopoverTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NggPopoverTriggerDirective, selector: "[nggPopoverTrigger]", host: { listeners: { "keydown.arrowdown": "toggle($event)", "click": "toggle($event)" }, properties: { "class": "this.class", "attr.aria-haspopup": "this.haspopup", "attr.aria-owns": "this.owns", "attr.aria-expanded": "this.expanded" } }, ngImport: i0 });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverTriggerDirective, decorators: [{
54
+ type: Directive,
55
+ args: [{
56
+ selector: '[nggPopoverTrigger]',
57
+ }]
58
+ }], ctorParameters: function () { return [{ type: i1.NggPopoverDirective, decorators: [{
59
+ type: Inject,
60
+ args: [forwardRef(() => NggPopoverDirective)]
61
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { class: [{
62
+ type: HostBinding,
63
+ args: ['class']
64
+ }], haspopup: [{
65
+ type: HostBinding,
66
+ args: ['attr.aria-haspopup']
67
+ }], owns: [{
68
+ type: HostBinding,
69
+ args: ['attr.aria-owns']
70
+ }], expanded: [{
71
+ type: HostBinding,
72
+ args: ['attr.aria-expanded']
73
+ }], toggle: [{
74
+ type: HostListener,
75
+ args: ['keydown.arrowdown', ['$event']]
76
+ }, {
77
+ type: HostListener,
78
+ args: ['click', ['$event']]
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2Ryb3Bkb3duL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7O0FBS3pELE1BQU0sT0FBTywwQkFBMEI7SUF1QnJDLFlBRVMsT0FBNEIsRUFDM0IsTUFBa0I7UUFEbkIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQXpCNUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBRU4sVUFBSyxHQUFHLGlCQUFpQixDQUFBO1FBQ1osYUFBUSxHQUFHLFNBQVMsQ0FBQTtRQUN4QixTQUFJLEdBQWtCLElBQUksQ0FBQTtRQUN0QixhQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUk5RSxXQUFNLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEVBQUU7WUFDeEMsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUMvQywrREFBK0Q7Z0JBQy9ELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDcEMsT0FBTTtpQkFDUDtxQkFBTTtvQkFDTCxtQ0FBbUM7b0JBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQTtpQkFDdkI7YUFDRjtZQUNELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ3ZCLENBQUMsQ0FBQTtJQUtFLENBQUM7SUFFSixRQUFRO1FBQ04sNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDakMscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyx1QkFBdUIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO1lBQzVFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDOUMsaUJBQWlCLEVBQ2pCLFNBQVMsQ0FDVixDQUFBO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQTtTQUN0RDtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFFekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTzthQUN2QixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FDN0I7YUFDQSxTQUFTLEVBQUUsQ0FBQTtJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUM5QixDQUFDOzt1SEF2RFUsMEJBQTBCLGtCQXdCM0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDOzJHQXhCcEMsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7OzBCQXlCSSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztxRUFyQnpCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFDZSxRQUFRO3NCQUExQyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDRixJQUFJO3NCQUFsQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFDTSxRQUFRO3NCQUExQyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFJakMsTUFBTTtzQkFGTCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDNUMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBOZ2dQb3BvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLmRpcmVjdGl2ZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nZ1BvcG92ZXJUcmlnZ2VyXScsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ1BvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAkdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2Ryb3Bkb3duLXRvZ2dsZSdcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKSBoYXNwb3B1cCA9ICdsaXN0Ym94J1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vd25zJykgb3duczogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKSBleHBhbmRlZCA9IHRoaXMucG9wb3Zlci5zdGF0ZS4kaXNPcGVuLnZhbHVlXG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2Rvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHRvZ2dsZSA9IChldmVudDogRXZlbnQgfCBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKCdrZXknIGluIGV2ZW50ICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIC8vIG9wZW4gcG9wb3ZlciBvbiBhcnJvdyBkb3duIGJ5IG5vdCBzdG9wcGluZyBldmVudCBwcm9wYWdhdGlvblxuICAgICAgaWYgKHRoaXMucG9wb3Zlci5zdGF0ZS4kaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcHJldmVudCBjb250YWluZXIgZnJvbSBzY3JvbGxpbmdcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHRoaXMucG9wb3Zlci50b2dnbGUoKVxuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ2dQb3BvdmVyRGlyZWN0aXZlKSlcbiAgICBwdWJsaWMgcG9wb3ZlcjogTmdnUG9wb3ZlckRpcmVjdGl2ZSxcbiAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gaWYgdHJpZ2dlciBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gaWQuLi5cbiAgICBpZiAoIXRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuaWQpIHtcbiAgICAgIC8vIC4uLmFkZCBhIHVuaXF1ZSBpZFxuICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5pZCA9IGBuZ2dfZHJvcGRvd25UcmlnZ2VyXyR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YFxuICAgICAgdGhpcy5vd25zID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5pZC5yZXBsYWNlKFxuICAgICAgICAvZHJvcGRvd25UcmlnZ2VyLyxcbiAgICAgICAgJ3BvcG92ZXInXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ducyA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuaWQgKyAnX3BvcG92ZXInXG4gICAgfVxuXG4gICAgdGhpcy5wb3BvdmVyLnRyaWdnZXJFbGVtZW50ID0gdGhpcy5fZWxSZWZcblxuICAgIHRoaXMucG9wb3Zlci5zdGF0ZS4kaXNPcGVuXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChpc09wZW4pID0+ICh0aGlzLmV4cGFuZGVkID0gaXNPcGVuKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLiR1bnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy4kdW5zdWJzY3JpYmUubmV4dCgpXG4gICAgdGhpcy4kdW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class NggPopoverDirective {
5
+ constructor() {
6
+ this._config = {
7
+ usePopper: true,
8
+ container: '',
9
+ useBodyScrollLock: true,
10
+ };
11
+ this.state = {
12
+ $isOpen: new BehaviorSubject(false),
13
+ };
14
+ }
15
+ get config() {
16
+ return this._config;
17
+ }
18
+ set config(config) {
19
+ this._config = { ...this.config, ...config };
20
+ }
21
+ close() {
22
+ this.state.$isOpen.next(false);
23
+ }
24
+ open() {
25
+ this.state.$isOpen.next(true);
26
+ }
27
+ toggle() {
28
+ if (this.state.$isOpen.value) {
29
+ this.close();
30
+ }
31
+ else {
32
+ this.open();
33
+ }
34
+ }
35
+ }
36
+ NggPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
37
+ NggPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NggPopoverDirective, selector: "[nggPopover]", inputs: { config: "config" }, ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NggPopoverDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: '[nggPopover]',
42
+ }]
43
+ }], propDecorators: { config: [{
44
+ type: Input
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kcm9wZG93bi9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFBOztBQWN0QyxNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBWVUsWUFBTyxHQUFrQjtZQUMvQixTQUFTLEVBQUUsSUFBSTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsaUJBQWlCLEVBQUUsSUFBSTtTQUN4QixDQUFBO1FBQ0QsVUFBSyxHQUFpQjtZQUNwQixPQUFPLEVBQUUsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDO1NBQzdDLENBQUE7S0FlRjtJQTlCQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQXFCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUM5QyxDQUFDO0lBV0QsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBQ0QsSUFBSTtRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUNiO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7U0FDWjtJQUNILENBQUM7O2dIQTlCVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6Qjs4QkFNYyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW50ZXJmYWNlIFBvcG92ZXJDb25maWcge1xuICB1c2VQb3BwZXI/OiBib29sZWFuXG4gIGNvbnRhaW5lcj86ICcnIHwgJ2JvZHknXG4gIHVzZUJvZHlTY3JvbGxMb2NrPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgUG9wb3ZlclN0YXRlIHtcbiAgJGlzT3BlbjogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2dQb3BvdmVyXScsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ1BvcG92ZXJEaXJlY3RpdmUge1xuICBnZXQgY29uZmlnKCk6IFBvcG92ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWdcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBQb3BvdmVyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0geyAuLi50aGlzLmNvbmZpZywgLi4uY29uZmlnIH1cbiAgfVxuICB0cmlnZ2VyRWxlbWVudD86IEVsZW1lbnRSZWZcbiAgcHJpdmF0ZSBfY29uZmlnOiBQb3BvdmVyQ29uZmlnID0ge1xuICAgIHVzZVBvcHBlcjogdHJ1ZSxcbiAgICBjb250YWluZXI6ICcnLFxuICAgIHVzZUJvZHlTY3JvbGxMb2NrOiB0cnVlLFxuICB9XG4gIHN0YXRlOiBQb3BvdmVyU3RhdGUgPSB7XG4gICAgJGlzT3BlbjogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSksXG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLnN0YXRlLiRpc09wZW4ubmV4dChmYWxzZSlcbiAgfVxuICBvcGVuKCkge1xuICAgIHRoaXMuc3RhdGUuJGlzT3Blbi5uZXh0KHRydWUpXG4gIH1cbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLiRpc09wZW4udmFsdWUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKVxuICAgIH1cbiAgfVxufVxuIl19