ng-primitives 0.8.0 → 0.10.0
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/accordion/accordion-trigger/accordion-trigger.directive.d.ts +1 -2
- package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +2 -5
- package/esm2022/interactions/focus-visible/focus-visible.directive.mjs +27 -20
- package/esm2022/popover/config/popover.config.mjs +39 -0
- package/esm2022/popover/index.mjs +13 -0
- package/esm2022/popover/ng-primitives-popover.mjs +5 -0
- package/esm2022/popover/popover/popover.directive.mjs +60 -0
- package/esm2022/popover/popover/popover.token.mjs +16 -0
- package/esm2022/popover/popover-trigger/popover-trigger.directive.mjs +222 -0
- package/esm2022/popover/popover-trigger/popover-trigger.token.mjs +23 -0
- package/esm2022/toast/config/toast.config.mjs +38 -0
- package/esm2022/toast/index.mjs +12 -0
- package/esm2022/toast/ng-primitives-toast.mjs +5 -0
- package/esm2022/toast/toast/toast-ref.mjs +96 -0
- package/esm2022/toast/toast/toast.directive.mjs +100 -0
- package/esm2022/toast/toast/toast.token.mjs +16 -0
- package/esm2022/utils/index.mjs +2 -2
- package/esm2022/utils/signals/async.mjs +18 -2
- package/fesm2022/ng-primitives-accordion.mjs +1 -4
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/ng-primitives-interactions.mjs +25 -19
- package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +366 -0
- package/fesm2022/ng-primitives-popover.mjs.map +1 -0
- package/fesm2022/ng-primitives-toast.mjs +260 -0
- package/fesm2022/ng-primitives-toast.mjs.map +1 -0
- package/fesm2022/ng-primitives-utils.mjs +18 -2
- package/fesm2022/ng-primitives-utils.mjs.map +1 -1
- package/generators.json +20 -0
- package/interactions/focus-visible/focus-visible.directive.d.ts +3 -2
- package/package.json +26 -14
- package/popover/README.md +3 -0
- package/popover/config/popover.config.d.ts +59 -0
- package/popover/index.d.ts +12 -0
- package/popover/popover/popover.directive.d.ts +31 -0
- package/popover/popover/popover.token.d.ts +14 -0
- package/popover/popover-trigger/popover-trigger.directive.d.ts +127 -0
- package/popover/popover-trigger/popover-trigger.token.d.ts +22 -0
- package/schematics/checkbox/compat.d.ts +2 -0
- package/schematics/checkbox/compat.js +13 -0
- package/schematics/checkbox/compat.js.map +1 -0
- package/schematics/checkbox/files/checkbox.component.__style__.template +1 -0
- package/schematics/checkbox/files/checkbox.component.html.template +1 -0
- package/schematics/checkbox/files/checkbox.component.ts.template +69 -0
- package/schematics/checkbox/generator.d.ts +11 -0
- package/schematics/checkbox/generator.js +48 -0
- package/schematics/checkbox/generator.js.map +1 -0
- package/schematics/checkbox/schema.d.ts +16 -0
- package/schematics/checkbox/schema.json +39 -0
- package/schematics/file-upload/compat.d.ts +2 -0
- package/schematics/file-upload/compat.js +13 -0
- package/schematics/file-upload/compat.js.map +1 -0
- package/schematics/file-upload/files/file-upload.component.__style__.template +1 -0
- package/schematics/file-upload/files/file-upload.component.html.template +1 -0
- package/schematics/file-upload/files/file-upload.component.ts.template +28 -0
- package/schematics/file-upload/generator.d.ts +11 -0
- package/schematics/file-upload/generator.js +37 -0
- package/schematics/file-upload/generator.js.map +1 -0
- package/schematics/file-upload/schema.d.ts +16 -0
- package/schematics/file-upload/schema.json +39 -0
- package/toast/README.md +3 -0
- package/toast/config/toast.config.d.ts +48 -0
- package/toast/index.d.ts +11 -0
- package/toast/toast/toast-ref.d.ts +56 -0
- package/toast/toast/toast.directive.d.ts +39 -0
- package/toast/toast/toast.token.d.ts +14 -0
- package/utils/index.d.ts +1 -1
- package/utils/signals/async.d.ts +10 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "ng-primitives/interactions";
|
|
3
2
|
export declare class NgpAccordionTrigger {
|
|
4
3
|
/**
|
|
5
4
|
* Access the parent accordion.
|
|
@@ -18,5 +17,5 @@ export declare class NgpAccordionTrigger {
|
|
|
18
17
|
*/
|
|
19
18
|
toggle(): void;
|
|
20
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgpAccordionTrigger, never>;
|
|
21
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpAccordionTrigger, "[ngpAccordionTrigger]", ["ngpAccordionTrigger"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true,
|
|
20
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpAccordionTrigger, "[ngpAccordionTrigger]", ["ngpAccordionTrigger"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
22
21
|
}
|
|
@@ -6,13 +6,11 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
import { Directive, HostListener, input } from '@angular/core';
|
|
9
|
-
import { NgpFocusVisible, NgpHover, NgpPress } from 'ng-primitives/interactions';
|
|
10
9
|
import { uniqueId } from 'ng-primitives/utils';
|
|
11
10
|
import { injectAccordionItem } from '../accordion-item/accordion-item.token';
|
|
12
11
|
import { injectAccordion } from '../accordion/accordion.token';
|
|
13
12
|
import { NgpAccordionTriggerToken } from './accordion-trigger.token';
|
|
14
13
|
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "ng-primitives/interactions";
|
|
16
14
|
export class NgpAccordionTrigger {
|
|
17
15
|
constructor() {
|
|
18
16
|
/**
|
|
@@ -38,7 +36,7 @@ export class NgpAccordionTrigger {
|
|
|
38
36
|
this.accordion.toggle(this.item.value());
|
|
39
37
|
}
|
|
40
38
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
41
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpAccordionTrigger, isStandalone: true, selector: "[ngpAccordionTrigger]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggle()" }, properties: { "id": "id()", "attr.data-orientation": "accordion.orientation()", "attr.data-open": "item.open()", "attr.data-disabled": "item.disabled() || accordion.disabled()", "attr.aria-controls": "item.contentId()", "attr.aria-expanded": "item.open()" } }, providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }], exportAs: ["ngpAccordionTrigger"],
|
|
39
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpAccordionTrigger, isStandalone: true, selector: "[ngpAccordionTrigger]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggle()" }, properties: { "id": "id()", "attr.data-orientation": "accordion.orientation()", "attr.data-open": "item.open()", "attr.data-disabled": "item.disabled() || accordion.disabled()", "attr.aria-controls": "item.contentId()", "attr.aria-expanded": "item.open()" } }, providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }], exportAs: ["ngpAccordionTrigger"], ngImport: i0 }); }
|
|
42
40
|
}
|
|
43
41
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionTrigger, decorators: [{
|
|
44
42
|
type: Directive,
|
|
@@ -47,7 +45,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
|
|
|
47
45
|
selector: '[ngpAccordionTrigger]',
|
|
48
46
|
exportAs: 'ngpAccordionTrigger',
|
|
49
47
|
providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }],
|
|
50
|
-
hostDirectives: [NgpHover, NgpPress, NgpFocusVisible],
|
|
51
48
|
host: {
|
|
52
49
|
'[id]': 'id()',
|
|
53
50
|
'[attr.data-orientation]': 'accordion.orientation()',
|
|
@@ -61,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
|
|
|
61
58
|
type: HostListener,
|
|
62
59
|
args: ['click']
|
|
63
60
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLXRyaWdnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi10cmlnZ2VyL2FjY29yZGlvbi10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFnQnJFLE1BQU0sT0FBTyxtQkFBbUI7SUFkaEM7UUFlRTs7V0FFRztRQUNnQixjQUFTLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFFakQ7O1dBRUc7UUFDZ0IsU0FBSSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFaEQ7O1dBRUc7UUFDTSxPQUFFLEdBQUcsS0FBSyxDQUFTLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7S0FhaEU7SUFYQzs7T0FFRztJQUVILE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBMUJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdmQVZuQixDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxDQUFDOzsyRkFVekUsbUJBQW1CO2tCQWQvQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLHFCQUFxQixFQUFFLENBQUM7b0JBQ3BGLElBQUksRUFBRTt3QkFDSixNQUFNLEVBQUUsTUFBTTt3QkFDZCx5QkFBeUIsRUFBRSx5QkFBeUI7d0JBQ3BELGtCQUFrQixFQUFFLGFBQWE7d0JBQ2pDLHNCQUFzQixFQUFFLHlDQUF5Qzt3QkFDakUsc0JBQXNCLEVBQUUsa0JBQWtCO3dCQUMxQyxzQkFBc0IsRUFBRSxhQUFhO3FCQUN0QztpQkFDRjs4QkFxQkMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IGluamVjdEFjY29yZGlvbkl0ZW0gfSBmcm9tICcuLi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RBY2NvcmRpb24gfSBmcm9tICcuLi9hY2NvcmRpb24vYWNjb3JkaW9uLnRva2VuJztcbmltcG9ydCB7IE5ncEFjY29yZGlvblRyaWdnZXJUb2tlbiB9IGZyb20gJy4vYWNjb3JkaW9uLXRyaWdnZXIudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwQWNjb3JkaW9uVHJpZ2dlcl0nLFxuICBleHBvcnRBczogJ25ncEFjY29yZGlvblRyaWdnZXInLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncEFjY29yZGlvblRyaWdnZXJUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncEFjY29yZGlvblRyaWdnZXIgfV0sXG4gIGhvc3Q6IHtcbiAgICAnW2lkXSc6ICdpZCgpJyxcbiAgICAnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAnYWNjb3JkaW9uLm9yaWVudGF0aW9uKCknLFxuICAgICdbYXR0ci5kYXRhLW9wZW5dJzogJ2l0ZW0ub3BlbigpJyxcbiAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnaXRlbS5kaXNhYmxlZCgpIHx8IGFjY29yZGlvbi5kaXNhYmxlZCgpJyxcbiAgICAnW2F0dHIuYXJpYS1jb250cm9sc10nOiAnaXRlbS5jb250ZW50SWQoKScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2l0ZW0ub3BlbigpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwQWNjb3JkaW9uVHJpZ2dlciB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHBhcmVudCBhY2NvcmRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWNjb3JkaW9uID0gaW5qZWN0QWNjb3JkaW9uKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGl0ZW0gPSBpbmplY3RBY2NvcmRpb25JdGVtKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgdHJpZ2dlci5cbiAgICovXG4gIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nPih1bmlxdWVJZCgnbmdwLWFjY29yZGlvbi10cmlnZ2VyJykpO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGFjY29yZGlvbiBpdGVtLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbS5kaXNhYmxlZCgpIHx8IHRoaXMuYWNjb3JkaW9uLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUodGhpcy5pdGVtLnZhbHVlKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
9
|
-
import { Directive, ElementRef,
|
|
9
|
+
import { Directive, ElementRef, booleanAttribute, inject, input, output, signal, } from '@angular/core';
|
|
10
10
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
11
11
|
import { injectDisabled } from 'ng-primitives/internal';
|
|
12
|
+
import { onBooleanChange } from 'ng-primitives/utils';
|
|
12
13
|
import { NgpFocusVisibleToken } from './focus-visible.token';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
export class NgpFocusVisible {
|
|
@@ -42,10 +43,15 @@ export class NgpFocusVisible {
|
|
|
42
43
|
* Whether the element is currently focused.
|
|
43
44
|
*/
|
|
44
45
|
this.isFocused = signal(false);
|
|
46
|
+
// handle focus state
|
|
45
47
|
this.focusMonitor
|
|
46
48
|
.monitor(this.elementRef.nativeElement)
|
|
47
49
|
.pipe(takeUntilDestroyed())
|
|
48
|
-
.subscribe(origin =>
|
|
50
|
+
.subscribe(origin =>
|
|
51
|
+
// null indicates the element was blurred
|
|
52
|
+
origin === null ? this.onBlur() : this.onFocus(origin));
|
|
53
|
+
// if the component becomes disabled and it is focused, hide the focus
|
|
54
|
+
onBooleanChange(this.isDisabled, () => this.focus(false));
|
|
49
55
|
}
|
|
50
56
|
onFocus(origin) {
|
|
51
57
|
if (this.isDisabled() || this.isFocused()) {
|
|
@@ -53,26 +59,30 @@ export class NgpFocusVisible {
|
|
|
53
59
|
}
|
|
54
60
|
// for some elements the focus visible state should always appear on focus
|
|
55
61
|
if (this.alwaysShowFocus()) {
|
|
56
|
-
this.
|
|
57
|
-
this.focusChange.emit(true);
|
|
62
|
+
this.focus(true);
|
|
58
63
|
return;
|
|
59
64
|
}
|
|
60
|
-
// if the focus origin is keyboard, then the focus is visible
|
|
61
|
-
if (origin === 'keyboard') {
|
|
62
|
-
this.
|
|
63
|
-
this.focusChange.emit(true);
|
|
65
|
+
// if the focus origin is keyboard or program(focused programmatically), then the focus is visible
|
|
66
|
+
if (origin === 'keyboard' || origin === 'program') {
|
|
67
|
+
this.focus(true);
|
|
64
68
|
return;
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Listen for blur events.
|
|
69
|
-
*/
|
|
70
71
|
onBlur() {
|
|
71
72
|
if (this.isDisabled() || !this.isFocused()) {
|
|
72
73
|
return;
|
|
73
74
|
}
|
|
74
|
-
this.
|
|
75
|
-
|
|
75
|
+
this.focus(false);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Trigger the focus signal along with the focusChange event.
|
|
79
|
+
*/
|
|
80
|
+
focus(value) {
|
|
81
|
+
if (this.isFocused() === value) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.isFocused.set(value);
|
|
85
|
+
this.focusChange.emit(value);
|
|
76
86
|
}
|
|
77
87
|
alwaysShowFocus() {
|
|
78
88
|
const nonTextInputTypes = [
|
|
@@ -103,7 +113,7 @@ export class NgpFocusVisible {
|
|
|
103
113
|
return false;
|
|
104
114
|
}
|
|
105
115
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpFocusVisible, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
106
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpFocusVisible, isStandalone: true, selector: "[ngpFocusVisible]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpFocusVisibleDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusChange: "ngpFocusVisible" }, host: {
|
|
116
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpFocusVisible, isStandalone: true, selector: "[ngpFocusVisible]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpFocusVisibleDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusChange: "ngpFocusVisible" }, host: { properties: { "attr.data-focus-visible": "isFocused()" } }, providers: [{ provide: NgpFocusVisibleToken, useExisting: NgpFocusVisible }], exportAs: ["ngpFocusVisible"], ngImport: i0 }); }
|
|
107
117
|
}
|
|
108
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpFocusVisible, decorators: [{
|
|
109
119
|
type: Directive,
|
|
@@ -113,11 +123,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
|
|
|
113
123
|
exportAs: 'ngpFocusVisible',
|
|
114
124
|
providers: [{ provide: NgpFocusVisibleToken, useExisting: NgpFocusVisible }],
|
|
115
125
|
host: {
|
|
116
|
-
'[attr.data-focus-visible]': 'isFocused()
|
|
126
|
+
'[attr.data-focus-visible]': 'isFocused()',
|
|
117
127
|
},
|
|
118
128
|
}]
|
|
119
|
-
}], ctorParameters: () => []
|
|
120
|
-
|
|
121
|
-
args: ['blur']
|
|
122
|
-
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdmlzaWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVyYWN0aW9ucy9zcmMvZm9jdXMtdmlzaWJsZS9mb2N1cy12aXNpYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVc3RCxNQUFNLE9BQU8sZUFBZTtJQW9DMUI7UUFuQ0E7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNjLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJEOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1lBQ3RELEtBQUssRUFBRSx5QkFBeUI7WUFDaEMsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLGVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVEOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxNQUFNLENBQVU7WUFDckMsS0FBSyxFQUFFLGlCQUFpQjtTQUN6QixDQUFDLENBQUM7UUFFSDs7V0FFRztR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RUFBRSw4QkFBOEI7cUJBQzVEO2lCQUNGO3dEQW9FVyxNQUFNO3NCQURmLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgaW5qZWN0RGlzYWJsZWQgfSBmcm9tICduZy1wcmltaXRpdmVzL2ludGVybmFsJztcbmltcG9ydCB7IE5ncEZvY3VzVmlzaWJsZVRva2VuIH0gZnJvbSAnLi9mb2N1cy12aXNpYmxlLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncEZvY3VzVmlzaWJsZV0nLFxuICBleHBvcnRBczogJ25ncEZvY3VzVmlzaWJsZScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRm9jdXNWaXNpYmxlVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BGb2N1c1Zpc2libGUgfV0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS1mb2N1cy12aXNpYmxlXSc6ICdpc0ZvY3VzZWQoKSAmJiAhaXNEaXNhYmxlZCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwRm9jdXNWaXNpYmxlIHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZWxlbWVudCB0aGF0IHRoZSBkaXJlY3RpdmUgaXMgYXBwbGllZCB0by5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZm9jdXMgbW9uaXRvci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNNb25pdG9yID0gaW5qZWN0KEZvY3VzTW9uaXRvcik7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZm9jdXMgZXZlbnRzIGFyZSBsaXN0ZW5lZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwRm9jdXNWaXNpYmxlRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZGlzYWJsZWQgc3RhdGUgZnJvbSBhbnkgcGFyZW50LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpc0Rpc2FibGVkID0gaW5qZWN0RGlzYWJsZWQodGhpcy5kaXNhYmxlZCk7XG5cbiAgLyoqXG4gICAqIEVtaXQgd2hlbiB0aGUgZWxlbWVudCBpcyB2aXN1YWxseSBmb2N1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9jdXNDaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oe1xuICAgIGFsaWFzOiAnbmdwRm9jdXNWaXNpYmxlJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgY3VycmVudGx5IGZvY3VzZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNGb2N1c2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgLm1vbml0b3IodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUob3JpZ2luID0+IHRoaXMub25Gb2N1cyhvcmlnaW4pKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Gb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpIHx8IHRoaXMuaXNGb2N1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBmb3Igc29tZSBlbGVtZW50cyB0aGUgZm9jdXMgdmlzaWJsZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGFwcGVhciBvbiBmb2N1c1xuICAgIGlmICh0aGlzLmFsd2F5c1Nob3dGb2N1cygpKSB7XG4gICAgICB0aGlzLmlzRm9jdXNlZC5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGZvY3VzIG9yaWdpbiBpcyBrZXlib2FyZCwgdGhlbiB0aGUgZm9jdXMgaXMgdmlzaWJsZVxuICAgIGlmIChvcmlnaW4gPT09ICdrZXlib2FyZCcpIHtcbiAgICAgIHRoaXMuaXNGb2N1c2VkLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBibHVyIGV2ZW50cy5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSB8fCAhdGhpcy5pc0ZvY3VzZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNGb2N1c2VkLnNldChmYWxzZSk7XG4gICAgdGhpcy5mb2N1c0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWx3YXlzU2hvd0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vblRleHRJbnB1dFR5cGVzID0gW1xuICAgICAgJ2NoZWNrYm94JyxcbiAgICAgICdyYWRpbycsXG4gICAgICAncmFuZ2UnLFxuICAgICAgJ2NvbG9yJyxcbiAgICAgICdmaWxlJyxcbiAgICAgICdpbWFnZScsXG4gICAgICAnYnV0dG9uJyxcbiAgICAgICdzdWJtaXQnLFxuICAgICAgJ3Jlc2V0JyxcbiAgICBdO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhbiBpbnB1dCBlbGVtZW50IGFuZCBpdCBpcyBhIHRleHQgaW5wdXRcbiAgICBpZiAoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiZcbiAgICAgICFub25UZXh0SW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhpcyBpcyBhIHRleHRhcmVhXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhpcyBpcyBhbiBlbGVtZW50IHdpdGggY29udGVudGVkaXRhYmxlXG4gICAgaWYgKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaXNDb250ZW50RWRpdGFibGUgfHxcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJylcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
129
|
+
}], ctorParameters: () => [] });
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdmlzaWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVyYWN0aW9ucy9zcmMvZm9jdXMtdmlzaWJsZS9mb2N1cy12aXNpYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVc3RCxNQUFNLE9BQU8sZUFBZTtJQW9DMUI7UUFuQ0E7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNjLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJEOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1lBQ3RELEtBQUssRUFBRSx5QkFBeUI7WUFDaEMsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLGVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVEOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxNQUFNLENBQVU7WUFDckMsS0FBSyxFQUFFLGlC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LGVBQWUsNlVBTGYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7OzJGQUtqRSxlQUFlO2tCQVQzQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLGlCQUFpQixFQUFFLENBQUM7b0JBQzVFLElBQUksRUFBRTt3QkFDSiwyQkFBMkIsRUFBRSxhQUFhO3FCQUMzQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGluamVjdERpc2FibGVkIH0gZnJvbSAnbmctcHJpbWl0aXZlcy9pbnRlcm5hbCc7XG5pbXBvcnQgeyBvbkJvb2xlYW5DaGFuZ2UgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IE5ncEZvY3VzVmlzaWJsZVRva2VuIH0gZnJvbSAnLi9mb2N1cy12aXNpYmxlLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncEZvY3VzVmlzaWJsZV0nLFxuICBleHBvcnRBczogJ25ncEZvY3VzVmlzaWJsZScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRm9jdXNWaXNpYmxlVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BGb2N1c1Zpc2libGUgfV0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS1mb2N1cy12aXNpYmxlXSc6ICdpc0ZvY3VzZWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncEZvY3VzVmlzaWJsZSB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGVsZW1lbnQgdGhhdCB0aGUgZGlyZWN0aXZlIGlzIGFwcGxpZWQgdG8uXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGZvY3VzIG1vbml0b3IuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzTW9uaXRvciA9IGluamVjdChGb2N1c01vbml0b3IpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZvY3VzIGV2ZW50cyBhcmUgbGlzdGVuZWQgdG8uXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHtcbiAgICBhbGlhczogJ25ncEZvY3VzVmlzaWJsZURpc2FibGVkJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRpc2FibGVkIHN0YXRlIGZyb20gYW55IHBhcmVudC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGluamVjdERpc2FibGVkKHRoaXMuZGlzYWJsZWQpO1xuXG4gIC8qKlxuICAgKiBFbWl0IHdoZW4gdGhlIGVsZW1lbnQgaXMgdmlzdWFsbHkgZm9jdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZvY3VzQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KHtcbiAgICBhbGlhczogJ25ncEZvY3VzVmlzaWJsZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gaGFuZGxlIGZvY3VzIHN0YXRlXG4gICAgdGhpcy5mb2N1c01vbml0b3JcbiAgICAgIC5tb25pdG9yKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKG9yaWdpbiA9PlxuICAgICAgICAvLyBudWxsIGluZGljYXRlcyB0aGUgZWxlbWVudCB3YXMgYmx1cnJlZFxuICAgICAgICBvcmlnaW4gPT09IG51bGwgPyB0aGlzLm9uQmx1cigpIDogdGhpcy5vbkZvY3VzKG9yaWdpbiksXG4gICAgICApO1xuXG4gICAgLy8gaWYgdGhlIGNvbXBvbmVudCBiZWNvbWVzIGRpc2FibGVkIGFuZCBpdCBpcyBmb2N1c2VkLCBoaWRlIHRoZSBmb2N1c1xuICAgIG9uQm9vbGVhbkNoYW5nZSh0aGlzLmlzRGlzYWJsZWQsICgpID0+IHRoaXMuZm9jdXMoZmFsc2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Gb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpIHx8IHRoaXMuaXNGb2N1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBmb3Igc29tZSBlbGVtZW50cyB0aGUgZm9jdXMgdmlzaWJsZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGFwcGVhciBvbiBmb2N1c1xuICAgIGlmICh0aGlzLmFsd2F5c1Nob3dGb2N1cygpKSB7XG4gICAgICB0aGlzLmZvY3VzKHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBmb2N1cyBvcmlnaW4gaXMga2V5Ym9hcmQgb3IgcHJvZ3JhbShmb2N1c2VkIHByb2dyYW1tYXRpY2FsbHkpLCB0aGVuIHRoZSBmb2N1cyBpcyB2aXNpYmxlXG4gICAgaWYgKG9yaWdpbiA9PT0gJ2tleWJvYXJkJyB8fCBvcmlnaW4gPT09ICdwcm9ncmFtJykge1xuICAgICAgdGhpcy5mb2N1cyh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkgfHwgIXRoaXMuaXNGb2N1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHRoZSBmb2N1cyBzaWduYWwgYWxvbmcgd2l0aCB0aGUgZm9jdXNDaGFuZ2UgZXZlbnQuXG4gICAqL1xuICBwcml2YXRlIGZvY3VzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkKCkgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0ZvY3VzZWQuc2V0KHZhbHVlKTtcbiAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhbHdheXNTaG93Rm9jdXMoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9uVGV4dElucHV0VHlwZXMgPSBbXG4gICAgICAnY2hlY2tib3gnLFxuICAgICAgJ3JhZGlvJyxcbiAgICAgICdyYW5nZScsXG4gICAgICAnY29sb3InLFxuICAgICAgJ2ZpbGUnLFxuICAgICAgJ2ltYWdlJyxcbiAgICAgICdidXR0b24nLFxuICAgICAgJ3N1Ym1pdCcsXG4gICAgICAncmVzZXQnLFxuICAgIF07XG5cbiAgICAvLyBpZiB0aGlzIGlzIGFuIGlucHV0IGVsZW1lbnQgYW5kIGl0IGlzIGEgdGV4dCBpbnB1dFxuICAgIGlmIChcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICAgIW5vblRleHRJbnB1dFR5cGVzLmluY2x1ZGVzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnR5cGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGlzIGlzIGEgdGV4dGFyZWFcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGlzIGlzIGFuIGVsZW1lbnQgd2l0aCBjb250ZW50ZWRpdGFibGVcbiAgICBpZiAoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pc0NvbnRlbnRFZGl0YWJsZSB8fFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the Apache 2.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { InjectionToken, inject } from '@angular/core';
|
|
9
|
+
export const defaultPopoverConfig = {
|
|
10
|
+
offset: 4,
|
|
11
|
+
placement: 'bottom',
|
|
12
|
+
showDelay: 0,
|
|
13
|
+
hideDelay: 0,
|
|
14
|
+
flip: true,
|
|
15
|
+
container: null,
|
|
16
|
+
closeOnOutsideClick: true,
|
|
17
|
+
};
|
|
18
|
+
export const NgpPopoverConfigToken = new InjectionToken('NgpPopoverConfigToken');
|
|
19
|
+
/**
|
|
20
|
+
* Provide the default Popover configuration
|
|
21
|
+
* @param config The Popover configuration
|
|
22
|
+
* @returns The provider
|
|
23
|
+
*/
|
|
24
|
+
export function providePopoverConfig(config) {
|
|
25
|
+
return [
|
|
26
|
+
{
|
|
27
|
+
provide: NgpPopoverConfigToken,
|
|
28
|
+
useValue: { ...defaultPopoverConfig, ...config },
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Inject the Popover configuration
|
|
34
|
+
* @returns The global Popover configuration
|
|
35
|
+
*/
|
|
36
|
+
export function injectPopoverConfig() {
|
|
37
|
+
return inject(NgpPopoverConfigToken, { optional: true }) ?? defaultPopoverConfig;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3BvcG92ZXIvc3JjL2NvbmZpZy9wb3BvdmVyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQStDakUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXFCO0lBQ3BELE1BQU0sRUFBRSxDQUFDO0lBQ1QsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsQ0FBQztJQUNaLElBQUksRUFBRSxJQUFJO0lBQ1YsU0FBUyxFQUFFLElBQUk7SUFDZixtQkFBbUIsRUFBRSxJQUFJO0NBQzFCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsdUJBQXVCLENBQUMsQ0FBQztBQUVuRzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQWlDO0lBQ3BFLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxHQUFHLE1BQU0sRUFBRTtTQUNqRDtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDO0FBQ25GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIFBsYWNlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ncFBvcG92ZXJDb25maWcge1xuICAvKipcbiAgICogRGVmaW5lIHRoZSBvZmZzZXQgb2YgdGhlIHBvcG92ZXIgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIG9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3ZlciByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICogQGRlZmF1bHQgJ2JvdHRvbSdcbiAgICovXG4gIHBsYWNlbWVudDogUGxhY2VtZW50O1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIGRlbGF5IGJlZm9yZSB0aGUgcG9wb3ZlciBpcyBzaG93bi5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgc2hvd0RlbGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgZGVsYXkgYmVmb3JlIHRoZSBwb3BvdmVyIGlzIGhpZGRlbi5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaGlkZURlbGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZSB3aGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBmbGlwIHdoZW4gdGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBmb3IgdGhlIHBvcG92ZXIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGZsaXA6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgY29udGFpbmVyIGluIHRvIHdoaWNoIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhdHRhY2hlZC5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuYm9keVxuICAgKi9cbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIERlZmluZSB3aGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBjbG9zZSB3aGVuIGNsaWNraW5nIG91dHNpZGUgb2YgaXQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNsb3NlT25PdXRzaWRlQ2xpY2s6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UG9wb3ZlckNvbmZpZzogTmdwUG9wb3ZlckNvbmZpZyA9IHtcbiAgb2Zmc2V0OiA0LFxuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBzaG93RGVsYXk6IDAsXG4gIGhpZGVEZWxheTogMCxcbiAgZmxpcDogdHJ1ZSxcbiAgY29udGFpbmVyOiBudWxsLFxuICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IE5ncFBvcG92ZXJDb25maWdUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3BQb3BvdmVyQ29uZmlnPignTmdwUG9wb3ZlckNvbmZpZ1Rva2VuJyk7XG5cbi8qKlxuICogUHJvdmlkZSB0aGUgZGVmYXVsdCBQb3BvdmVyIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBjb25maWcgVGhlIFBvcG92ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgVGhlIHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUG9wb3ZlckNvbmZpZyhjb25maWc6IFBhcnRpYWw8TmdwUG9wb3ZlckNvbmZpZz4pOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOZ3BQb3BvdmVyQ29uZmlnVG9rZW4sXG4gICAgICB1c2VWYWx1ZTogeyAuLi5kZWZhdWx0UG9wb3ZlckNvbmZpZywgLi4uY29uZmlnIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIFBvcG92ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgVGhlIGdsb2JhbCBQb3BvdmVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBvcG92ZXJDb25maWcoKTogTmdwUG9wb3ZlckNvbmZpZyB7XG4gIHJldHVybiBpbmplY3QoTmdwUG9wb3ZlckNvbmZpZ1Rva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IGRlZmF1bHRQb3BvdmVyQ29uZmlnO1xufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the Apache 2.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
export { providePopoverConfig } from './config/popover.config';
|
|
9
|
+
export { NgpPopoverTrigger } from './popover-trigger/popover-trigger.directive';
|
|
10
|
+
export { NgpPopoverTriggerToken } from './popover-trigger/popover-trigger.token';
|
|
11
|
+
export { NgpPopover } from './popover/popover.directive';
|
|
12
|
+
export { NgpPopoverToken } from './popover/popover.token';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3BvcG92ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBb0Isb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmV4cG9ydCB7IE5ncFBvcG92ZXJDb25maWcsIHByb3ZpZGVQb3BvdmVyQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvcG9wb3Zlci5jb25maWcnO1xuZXhwb3J0IHsgTmdwUG9wb3ZlclRyaWdnZXIgfSBmcm9tICcuL3BvcG92ZXItdHJpZ2dlci9wb3BvdmVyLXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncFBvcG92ZXJUcmlnZ2VyVG9rZW4gfSBmcm9tICcuL3BvcG92ZXItdHJpZ2dlci9wb3BvdmVyLXRyaWdnZXIudG9rZW4nO1xuZXhwb3J0IHsgTmdwUG9wb3ZlciB9IGZyb20gJy4vcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBOZ3BQb3BvdmVyVG9rZW4gfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci50b2tlbic7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJpbWl0aXZlcy1wb3BvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9wb3BvdmVyL3NyYy9uZy1wcmltaXRpdmVzLXBvcG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the Apache 2.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { Directive, ElementRef, computed, inject, isDevMode } from '@angular/core';
|
|
9
|
+
import { NgpFocusTrap } from 'ng-primitives/focus-trap';
|
|
10
|
+
import { injectPopoverTrigger } from '../popover-trigger/popover-trigger.token';
|
|
11
|
+
import { NgpPopoverToken } from './popover.token';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "ng-primitives/focus-trap";
|
|
14
|
+
export class NgpPopover {
|
|
15
|
+
constructor() {
|
|
16
|
+
/**
|
|
17
|
+
* Access the popover element.
|
|
18
|
+
*/
|
|
19
|
+
this.popover = inject((ElementRef));
|
|
20
|
+
/**
|
|
21
|
+
* Access the trigger instance.
|
|
22
|
+
*/
|
|
23
|
+
this.trigger = injectPopoverTrigger();
|
|
24
|
+
/**
|
|
25
|
+
* Compute the x position of the popover.
|
|
26
|
+
*/
|
|
27
|
+
this.x = computed(() => this.trigger.position().x);
|
|
28
|
+
/**
|
|
29
|
+
* Compute the y position of the popover.
|
|
30
|
+
*/
|
|
31
|
+
this.y = computed(() => this.trigger.position().y);
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
// if the element does not have a fixed position then throw a warning in dev mode
|
|
35
|
+
if (isDevMode()) {
|
|
36
|
+
const { position } = getComputedStyle(this.popover.nativeElement);
|
|
37
|
+
if (position !== 'absolute') {
|
|
38
|
+
console.warn(`The popover element must have an absolute position. The current position is ${position}.`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpPopover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
43
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: NgpPopover, isStandalone: true, selector: "[ngpPopover]", host: { attributes: { "role": "menu" }, properties: { "style.left.px": "x()", "style.top.px": "y()" } }, providers: [{ provide: NgpPopoverToken, useExisting: NgpPopover }], exportAs: ["ngpPopover"], hostDirectives: [{ directive: i1.NgpFocusTrap }], ngImport: i0 }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpPopover, decorators: [{
|
|
46
|
+
type: Directive,
|
|
47
|
+
args: [{
|
|
48
|
+
standalone: true,
|
|
49
|
+
selector: '[ngpPopover]',
|
|
50
|
+
exportAs: 'ngpPopover',
|
|
51
|
+
hostDirectives: [NgpFocusTrap],
|
|
52
|
+
providers: [{ provide: NgpPopoverToken, useExisting: NgpPopover }],
|
|
53
|
+
host: {
|
|
54
|
+
role: 'menu',
|
|
55
|
+
'[style.left.px]': 'x()',
|
|
56
|
+
'[style.top.px]': 'y()',
|
|
57
|
+
},
|
|
58
|
+
}]
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3BvcG92ZXIvc3JjL3BvcG92ZXIvcG9wb3Zlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBY2xELE1BQU0sT0FBTyxVQUFVO0lBWnZCO1FBYUU7O1dBRUc7UUFDYyxZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFFM0Q7O1dBRUc7UUFDYyxZQUFPLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUVsRDs7V0FFRztRQUNnQixNQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakU7O1dBRUc7UUFDZ0IsTUFBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBY2xFO0lBWkMsUUFBUTtRQUNOLGlGQUFpRjtRQUNqRixJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFbEUsSUFBSSxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsK0VBQStFLFFBQVEsR0FBRyxDQUMzRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQWhDVSxVQUFVO2tHQUFWLFVBQVUsb0tBUFYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDOzsyRkFPdkQsVUFBVTtrQkFadEIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixjQUFjLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLFlBQVksRUFBRSxDQUFDO29CQUNsRSxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLE1BQU07d0JBQ1osaUJBQWlCLEVBQUUsS0FBSzt3QkFDeEIsZ0JBQWdCLEVBQUUsS0FBSztxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBjb21wdXRlZCwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ncEZvY3VzVHJhcCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvZm9jdXMtdHJhcCc7XG5pbXBvcnQgeyBpbmplY3RQb3BvdmVyVHJpZ2dlciB9IGZyb20gJy4uL3BvcG92ZXItdHJpZ2dlci9wb3BvdmVyLXRyaWdnZXIudG9rZW4nO1xuaW1wb3J0IHsgTmdwUG9wb3ZlclRva2VuIH0gZnJvbSAnLi9wb3BvdmVyLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncFBvcG92ZXJdJyxcbiAgZXhwb3J0QXM6ICduZ3BQb3BvdmVyJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtOZ3BGb2N1c1RyYXBdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFBvcG92ZXJUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncFBvcG92ZXIgfV0sXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnbWVudScsXG4gICAgJ1tzdHlsZS5sZWZ0LnB4XSc6ICd4KCknLFxuICAgICdbc3R5bGUudG9wLnB4XSc6ICd5KCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BQb3BvdmVyIGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgcG9wb3ZlciBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb3BvdmVyID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSB0cmlnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0cmlnZ2VyID0gaW5qZWN0UG9wb3ZlclRyaWdnZXIoKTtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgcG9wb3Zlci5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB4ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmlnZ2VyLnBvc2l0aW9uKCkueCk7XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIHkgcG9zaXRpb24gb2YgdGhlIHBvcG92ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgeSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJpZ2dlci5wb3NpdGlvbigpLnkpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBmaXhlZCBwb3NpdGlvbiB0aGVuIHRocm93IGEgd2FybmluZyBpbiBkZXYgbW9kZVxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIGlmIChwb3NpdGlvbiAhPT0gJ2Fic29sdXRlJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFRoZSBwb3BvdmVyIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGFic29sdXRlIHBvc2l0aW9uLiBUaGUgY3VycmVudCBwb3NpdGlvbiBpcyAke3Bvc2l0aW9ufS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the Apache 2.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { InjectionToken, inject } from '@angular/core';
|
|
9
|
+
export const NgpPopoverToken = new InjectionToken('NgpPopoverToken');
|
|
10
|
+
/**
|
|
11
|
+
* Inject the Popover directive instance
|
|
12
|
+
*/
|
|
13
|
+
export function injectPopover() {
|
|
14
|
+
return inject(NgpPopoverToken);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci9wb3BvdmVyLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBYSxpQkFBaUIsQ0FBQyxDQUFDO0FBRWpGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBOZ3BQb3BvdmVyVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdwUG9wb3Zlcj4oJ05ncFBvcG92ZXJUb2tlbicpO1xuXG4vKipcbiAqIEluamVjdCB0aGUgUG9wb3ZlciBkaXJlY3RpdmUgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBvcG92ZXIoKTogTmdwUG9wb3ZlciB7XG4gIHJldHVybiBpbmplY3QoTmdwUG9wb3ZlclRva2VuKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import { Directive, ElementRef, Injector, ViewContainerRef, booleanAttribute, computed, inject, input, model, numberAttribute, signal, } from '@angular/core';
|
|
4
|
+
import { autoUpdate, computePosition, flip, offset, shift, } from '@floating-ui/dom';
|
|
5
|
+
import { injectDisposables, onBooleanChange } from 'ng-primitives/utils';
|
|
6
|
+
import { injectPopoverConfig } from '../config/popover.config';
|
|
7
|
+
import { NgpPopoverTriggerToken, providePopoverTrigger } from './popover-trigger.token';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class NgpPopoverTrigger {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* Access the trigger element
|
|
13
|
+
*/
|
|
14
|
+
this.trigger = inject((ElementRef));
|
|
15
|
+
/**
|
|
16
|
+
* Access the view container ref.
|
|
17
|
+
*/
|
|
18
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
19
|
+
/**
|
|
20
|
+
* Access the document.
|
|
21
|
+
*/
|
|
22
|
+
this.document = inject(DOCUMENT);
|
|
23
|
+
/**
|
|
24
|
+
* Access the injector.
|
|
25
|
+
*/
|
|
26
|
+
this.injector = inject(Injector);
|
|
27
|
+
/**
|
|
28
|
+
* Access the global popover configuration.
|
|
29
|
+
*/
|
|
30
|
+
this.config = injectPopoverConfig();
|
|
31
|
+
/**
|
|
32
|
+
* Access the disposable utilities
|
|
33
|
+
*/
|
|
34
|
+
this.disposables = injectDisposables();
|
|
35
|
+
/**
|
|
36
|
+
* Access the popover template ref.
|
|
37
|
+
*/
|
|
38
|
+
this.popover = input.required({
|
|
39
|
+
alias: 'ngpPopoverTrigger',
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* The open state of the popover.
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
this.open = model(false, {
|
|
46
|
+
alias: 'ngpPopoverTriggerOpen',
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Define if the trigger should be disabled.
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
this.disabled = input(false, {
|
|
53
|
+
alias: 'ngpPopoverTriggerDisabled',
|
|
54
|
+
transform: booleanAttribute,
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Define the placement of the popover relative to the trigger.
|
|
58
|
+
* @default 'top'
|
|
59
|
+
*/
|
|
60
|
+
this.placement = input(this.config.placement, {
|
|
61
|
+
alias: 'ngpPopoverTriggerPlacement',
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Define the offset of the popover relative to the trigger.
|
|
65
|
+
* @default 0
|
|
66
|
+
*/
|
|
67
|
+
this.offset = input(this.config.offset, {
|
|
68
|
+
alias: 'ngpPopoverTriggerOffset',
|
|
69
|
+
transform: numberAttribute,
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Define the delay before the popover is displayed.
|
|
73
|
+
* @default 0
|
|
74
|
+
*/
|
|
75
|
+
this.showDelay = input(this.config.showDelay, {
|
|
76
|
+
alias: 'ngpPopoverTriggerShowDelay',
|
|
77
|
+
transform: numberAttribute,
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* Define the delay before the popover is hidden.
|
|
81
|
+
* @default 0
|
|
82
|
+
*/
|
|
83
|
+
this.hideDelay = input(this.config.hideDelay, {
|
|
84
|
+
alias: 'ngpPopoverTriggerHideDelay',
|
|
85
|
+
transform: numberAttribute,
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* Define whether the popover should flip when there is not enough space for the popover.
|
|
89
|
+
* @default true
|
|
90
|
+
*/
|
|
91
|
+
this.flip = input(this.config.flip, {
|
|
92
|
+
alias: 'ngpPopoverTriggerFlip',
|
|
93
|
+
transform: booleanAttribute,
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* Define the container in which the popover should be attached.
|
|
97
|
+
* @default document.body
|
|
98
|
+
*/
|
|
99
|
+
this.container = input(this.config.container, {
|
|
100
|
+
alias: 'ngpPopoverTriggerContainer',
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Define whether the popover should close when clicking outside of it.
|
|
104
|
+
* @default true
|
|
105
|
+
*/
|
|
106
|
+
this.closeOnOutsideClick = input(this.config.closeOnOutsideClick, {
|
|
107
|
+
alias: 'ngpPopoverTriggerCloseOnOutsideClick',
|
|
108
|
+
transform: booleanAttribute,
|
|
109
|
+
});
|
|
110
|
+
/**
|
|
111
|
+
* Store the popover view ref.
|
|
112
|
+
*/
|
|
113
|
+
this.viewRef = null;
|
|
114
|
+
/**
|
|
115
|
+
* Derive the popover middleware from the provided configuration.
|
|
116
|
+
*/
|
|
117
|
+
this.middleware = computed(() => {
|
|
118
|
+
const middleware = [offset(this.offset()), shift()];
|
|
119
|
+
if (this.flip()) {
|
|
120
|
+
middleware.push(flip());
|
|
121
|
+
}
|
|
122
|
+
return middleware;
|
|
123
|
+
});
|
|
124
|
+
/**
|
|
125
|
+
* Store the computed position of the popover.
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
128
|
+
this.position = signal({
|
|
129
|
+
x: 0,
|
|
130
|
+
y: 0,
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* Store the state of the popover.
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
this.state = signal('closed');
|
|
137
|
+
// any time the open state changes then show or hide the popover
|
|
138
|
+
onBooleanChange(this.open, this.show.bind(this), this.hide.bind(this));
|
|
139
|
+
}
|
|
140
|
+
ngOnDestroy() {
|
|
141
|
+
this.destroyPopover();
|
|
142
|
+
}
|
|
143
|
+
toggleOpenState() {
|
|
144
|
+
this.open.update(open => !open);
|
|
145
|
+
}
|
|
146
|
+
show() {
|
|
147
|
+
// if the trigger is disabled or the popover is already open then do not show the popover
|
|
148
|
+
if (this.disabled() || this.state() === 'open' || this.state() === 'opening') {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
this.state.set('opening');
|
|
152
|
+
this.disposables.setTimeout(() => this.createPopover(), this.showDelay());
|
|
153
|
+
// Add document click listener to detect outside clicks
|
|
154
|
+
if (this.closeOnOutsideClick()) {
|
|
155
|
+
this.documentClickListener = this.onDocumentClick.bind(this);
|
|
156
|
+
this.document.addEventListener('click', this.documentClickListener, true);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
hide() {
|
|
160
|
+
// if the trigger is disabled or the popover is already closed then do not hide the popover
|
|
161
|
+
if (this.disabled() || this.state() === 'closed' || this.state() === 'closing') {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.state.set('closing');
|
|
165
|
+
this.disposables.setTimeout(() => this.destroyPopover(), this.hideDelay());
|
|
166
|
+
// Remove the document click listener when the popover is hidden
|
|
167
|
+
if (this.documentClickListener) {
|
|
168
|
+
this.document.removeEventListener('click', this.documentClickListener, true);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
onDocumentClick(event) {
|
|
172
|
+
const target = event.target;
|
|
173
|
+
// Check if the click is outside the trigger or the popover
|
|
174
|
+
const isOutside = !this.trigger.nativeElement.contains(target) &&
|
|
175
|
+
!(this.viewRef?.rootNodes[0]).contains(target);
|
|
176
|
+
if (isOutside) {
|
|
177
|
+
// Close the popover
|
|
178
|
+
this.open.set(false);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
createPopover() {
|
|
182
|
+
const portal = new TemplatePortal(this.popover(), this.viewContainerRef, undefined, this.injector);
|
|
183
|
+
const domOutlet = new DomPortalOutlet(this.container() ?? this.document.body, undefined, undefined, Injector.create({
|
|
184
|
+
parent: this.injector,
|
|
185
|
+
providers: [providePopoverTrigger(this)],
|
|
186
|
+
}));
|
|
187
|
+
this.viewRef = domOutlet.attach(portal);
|
|
188
|
+
this.viewRef.detectChanges();
|
|
189
|
+
const outletElement = this.viewRef.rootNodes[0];
|
|
190
|
+
this.dispose = autoUpdate(this.trigger.nativeElement, outletElement, async () => {
|
|
191
|
+
const position = await computePosition(this.trigger.nativeElement, outletElement, {
|
|
192
|
+
placement: this.placement(),
|
|
193
|
+
middleware: this.middleware(),
|
|
194
|
+
});
|
|
195
|
+
this.position.set({ x: position.x, y: position.y });
|
|
196
|
+
});
|
|
197
|
+
this.state.set('open');
|
|
198
|
+
}
|
|
199
|
+
destroyPopover() {
|
|
200
|
+
this.viewRef?.destroy();
|
|
201
|
+
this.viewRef = null;
|
|
202
|
+
this.dispose?.();
|
|
203
|
+
this.state.set('closed');
|
|
204
|
+
}
|
|
205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpPopoverTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
206
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpPopoverTrigger, isStandalone: true, selector: "[ngpPopoverTrigger]", inputs: { popover: { classPropertyName: "popover", publicName: "ngpPopoverTrigger", isSignal: true, isRequired: true, transformFunction: null }, open: { classPropertyName: "open", publicName: "ngpPopoverTriggerOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpPopoverTriggerDisabled", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "ngpPopoverTriggerPlacement", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "ngpPopoverTriggerOffset", isSignal: true, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "ngpPopoverTriggerShowDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "ngpPopoverTriggerHideDelay", isSignal: true, isRequired: false, transformFunction: null }, flip: { classPropertyName: "flip", publicName: "ngpPopoverTriggerFlip", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "ngpPopoverTriggerContainer", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsideClick: { classPropertyName: "closeOnOutsideClick", publicName: "ngpPopoverTriggerCloseOnOutsideClick", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "ngpPopoverTriggerOpenChange" }, host: { listeners: { "click": "toggleOpenState()" }, properties: { "attr.data-state": "state()", "attr.data-disabled": "disabled()" } }, providers: [{ provide: NgpPopoverTriggerToken, useExisting: NgpPopoverTrigger }], exportAs: ["ngpPopoverTrigger"], ngImport: i0 }); }
|
|
207
|
+
}
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpPopoverTrigger, decorators: [{
|
|
209
|
+
type: Directive,
|
|
210
|
+
args: [{
|
|
211
|
+
standalone: true,
|
|
212
|
+
selector: '[ngpPopoverTrigger]',
|
|
213
|
+
exportAs: 'ngpPopoverTrigger',
|
|
214
|
+
providers: [{ provide: NgpPopoverTriggerToken, useExisting: NgpPopoverTrigger }],
|
|
215
|
+
host: {
|
|
216
|
+
'[attr.data-state]': 'state()',
|
|
217
|
+
'[attr.data-disabled]': 'disabled()',
|
|
218
|
+
'(click)': 'toggleOpenState()',
|
|
219
|
+
},
|
|
220
|
+
}]
|
|
221
|
+
}], ctorParameters: () => [] });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBRVYsUUFBUSxFQUdSLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFVBQVUsRUFDVixlQUFlLEVBQ2YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBYXhGLE1BQU0sT0FBTyxpQkFBaUI7SUFnSzVCO1FBL0pBOztXQUVHO1FBQ2MsWUFBTyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0Q7O1dBRUc7UUFDYyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDOztXQUVHO1FB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QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQixDQUFDOzhHQWxRVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixpc0RBUGpCLENBQUMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLENBQUM7OzJGQU9yRSxpQkFBaUI7a0JBWDdCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFdBQVcsbUJBQW1CLEVBQUUsQ0FBQztvQkFDaEYsSUFBSSxFQUFFO3dCQUNKLG1CQUFtQixFQUFFLFNBQVM7d0JBQzlCLHNCQUFzQixFQUFFLFlBQVk7d0JBQ3BDLFNBQVMsRUFBRSxtQkFBbUI7cUJBQy9CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERvbVBvcnRhbE91dGxldCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNaWRkbGV3YXJlLFxuICBQbGFjZW1lbnQsXG4gIGF1dG9VcGRhdGUsXG4gIGNvbXB1dGVQb3NpdGlvbixcbiAgZmxpcCxcbiAgb2Zmc2V0LFxuICBzaGlmdCxcbn0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpbmplY3REaXNwb3NhYmxlcywgb25Cb29sZWFuQ2hhbmdlIH0gZnJvbSAnbmctcHJpbWl0aXZlcy91dGlscyc7XG5pbXBvcnQgeyBpbmplY3RQb3BvdmVyQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3BvcG92ZXIuY29uZmlnJztcbmltcG9ydCB7IE5ncFBvcG92ZXJUcmlnZ2VyVG9rZW4sIHByb3ZpZGVQb3BvdmVyVHJpZ2dlciB9IGZyb20gJy4vcG9wb3Zlci10cmlnZ2VyLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncFBvcG92ZXJUcmlnZ2VyXScsXG4gIGV4cG9ydEFzOiAnbmdwUG9wb3ZlclRyaWdnZXInLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFBvcG92ZXJUcmlnZ2VyVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BQb3BvdmVyVHJpZ2dlciB9XSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdzdGF0ZSgpJyxcbiAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgJyhjbGljayknOiAndG9nZ2xlT3BlblN0YXRlKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BQb3BvdmVyVHJpZ2dlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHRyaWdnZXIgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0cmlnZ2VyID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSB2aWV3IGNvbnRhaW5lciByZWYuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZG9jdW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBpbmplY3Rvci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGdsb2JhbCBwb3BvdmVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdFBvcG92ZXJDb25maWcoKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBkaXNwb3NhYmxlIHV0aWxpdGllc1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlcyA9IGluamVjdERpc3Bvc2FibGVzKCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgcG9wb3ZlciB0ZW1wbGF0ZSByZWYuXG4gICAqL1xuICByZWFkb25seSBwb3BvdmVyID0gaW5wdXQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dm9pZD4+KHtcbiAgICBhbGlhczogJ25ncFBvcG92ZXJUcmlnZ2VyJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVuIHN0YXRlIG9mIHRoZSBwb3BvdmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgb3BlbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlLCB7XG4gICAgYWxpYXM6ICduZ3BQb3BvdmVyVHJpZ2dlck9wZW4nLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIGlmIHRoZSB0cmlnZ2VyIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwUG9wb3ZlclRyaWdnZXJEaXNhYmxlZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcG92ZXIgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0ICd0b3AnXG4gICAqL1xuICByZWFkb25seSBwbGFjZW1lbnQgPSBpbnB1dDxQbGFjZW1lbnQ+KHRoaXMuY29uZmlnLnBsYWNlbWVudCwge1xuICAgIGFsaWFzOiAnbmdwUG9wb3ZlclRyaWdnZXJQbGFjZW1lbnQnLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBvZmZzZXQgb2YgdGhlIHBvcG92ZXIgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG9mZnNldCA9IGlucHV0PG51bWJlciwgTnVtYmVySW5wdXQ+KHRoaXMuY29uZmlnLm9mZnNldCwge1xuICAgIGFsaWFzOiAnbmdwUG9wb3ZlclRyaWdnZXJPZmZzZXQnLFxuICAgIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBkZWxheSBiZWZvcmUgdGhlIHBvcG92ZXIgaXMgZGlzcGxheWVkLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzaG93RGVsYXkgPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0Pih0aGlzLmNvbmZpZy5zaG93RGVsYXksIHtcbiAgICBhbGlhczogJ25ncFBvcG92ZXJUcmlnZ2VyU2hvd0RlbGF5JyxcbiAgICB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgZGVsYXkgYmVmb3JlIHRoZSBwb3BvdmVyIGlzIGhpZGRlbi5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgaGlkZURlbGF5ID0gaW5wdXQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4odGhpcy5jb25maWcuaGlkZURlbGF5LCB7XG4gICAgYWxpYXM6ICduZ3BQb3BvdmVyVHJpZ2dlckhpZGVEZWxheScsXG4gICAgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgd2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgZmxpcCB3aGVuIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgZm9yIHRoZSBwb3BvdmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmbGlwID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0Pih0aGlzLmNvbmZpZy5mbGlwLCB7XG4gICAgYWxpYXM6ICduZ3BQb3BvdmVyVHJpZ2dlckZsaXAnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgY29udGFpbmVyIGluIHdoaWNoIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhdHRhY2hlZC5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuYm9keVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyID0gaW5wdXQ8SFRNTEVsZW1lbnQgfCBudWxsPih0aGlzLmNvbmZpZy5jb250YWluZXIsIHtcbiAgICBhbGlhczogJ25ncFBvcG92ZXJUcmlnZ2VyQ29udGFpbmVyJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB3aGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBjbG9zZSB3aGVuIGNsaWNraW5nIG91dHNpZGUgb2YgaXQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsb3NlT25PdXRzaWRlQ2xpY2sgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KHRoaXMuY29uZmlnLmNsb3NlT25PdXRzaWRlQ2xpY2ssIHtcbiAgICBhbGlhczogJ25ncFBvcG92ZXJUcmlnZ2VyQ2xvc2VPbk91dHNpZGVDbGljaycsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIHBvcG92ZXIgdmlldyByZWYuXG4gICAqL1xuICBwcml2YXRlIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBEZXJpdmUgdGhlIHBvcG92ZXIgbWlkZGxld2FyZSBmcm9tIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtaWRkbGV3YXJlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVbXSA9IFtvZmZzZXQodGhpcy5vZmZzZXQoKSksIHNoaWZ0KCldO1xuXG4gICAgaWYgKHRoaXMuZmxpcCgpKSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goZmxpcCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWlkZGxld2FyZTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSBjb21wdXRlZCBwb3NpdGlvbiBvZiB0aGUgcG9wb3Zlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBwb3NpdGlvbiA9IHNpZ25hbDx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+KHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgc3RhdGUgb2YgdGhlIHBvcG92ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGUgPSBzaWduYWw8UG9wb3ZlclN0YXRlPignY2xvc2VkJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwb3NlIGZ1bmN0aW9uIHRvIHN0b3AgY29tcHV0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wb3Zlci5cbiAgICovXG4gIHByaXZhdGUgZGlzcG9zZT86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEEgZG9jdW1lbnQtd2lkZSBjbGljayBsaXN0ZW5lciB0aGF0IGNoZWNrcyBpZiB0aGUgY2xpY2tcbiAgICogb2NjdXJyZWQgb3V0c2lkZSBvZiB0aGUgcG9wb3ZlciBhbmQgdHJpZ2dlciBlbGVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgZG9jdW1lbnRDbGlja0xpc3RlbmVyPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIGFueSB0aW1lIHRoZSBvcGVuIHN0YXRlIGNoYW5nZXMgdGhlbiBzaG93IG9yIGhpZGUgdGhlIHBvcG92ZXJcbiAgICBvbkJvb2xlYW5DaGFuZ2UodGhpcy5vcGVuLCB0aGlzLnNob3cuYmluZCh0aGlzKSwgdGhpcy5oaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xuICB9XG5cbiAgdG9nZ2xlT3BlblN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbi51cGRhdGUob3BlbiA9PiAhb3Blbik7XG4gIH1cblxuICBwcml2YXRlIHNob3coKTogdm9pZCB7XG4gICAgLy8gaWYgdGhlIHRyaWdnZXIgaXMgZGlzYWJsZWQgb3IgdGhlIHBvcG92ZXIgaXMgYWxyZWFkeSBvcGVuIHRoZW4gZG8gbm90IHNob3cgdGhlIHBvcG92ZXJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuc3RhdGUoKSA9PT0gJ29wZW4nIHx8IHRoaXMuc3RhdGUoKSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS5zZXQoJ29wZW5pbmcnKTtcbiAgICB0aGlzLmRpc3Bvc2FibGVzLnNldFRpbWVvdXQoKCkgPT4gdGhpcy5jcmVhdGVQb3BvdmVyKCksIHRoaXMuc2hvd0RlbGF5KCkpO1xuXG4gICAgLy8gQWRkIGRvY3VtZW50IGNsaWNrIGxpc3RlbmVyIHRvIGRldGVjdCBvdXRzaWRlIGNsaWNrc1xuICAgIGlmICh0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2soKSkge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLm9uRG9jdW1lbnRDbGljay5iaW5kKHRoaXMpO1xuICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGUoKTogdm9pZCB7XG4gICAgLy8gaWYgdGhlIHRyaWdnZXIgaXMgZGlzYWJsZWQgb3IgdGhlIHBvcG92ZXIgaXMgYWxyZWFkeSBjbG9zZWQgdGhlbiBkbyBub3QgaGlkZSB0aGUgcG9wb3ZlclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5zdGF0ZSgpID09PSAnY2xvc2VkJyB8fCB0aGlzLnN0YXRlKCkgPT09ICdjbG9zaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUuc2V0KCdjbG9zaW5nJyk7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuZGVzdHJveVBvcG92ZXIoKSwgdGhpcy5oaWRlRGVsYXkoKSk7XG5cbiAgICAvLyBSZW1vdmUgdGhlIGRvY3VtZW50IGNsaWNrIGxpc3RlbmVyIHdoZW4gdGhlIHBvcG92ZXIgaXMgaGlkZGVuXG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIHRyaWdnZXIgb3IgdGhlIHBvcG92ZXJcbiAgICBjb25zdCBpc091dHNpZGUgPVxuICAgICAgIXRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiZcbiAgICAgICEodGhpcy52aWV3UmVmPy5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHRhcmdldCk7XG5cbiAgICBpZiAoaXNPdXRzaWRlKSB7XG4gICAgICAvLyBDbG9zZSB0aGUgcG9wb3ZlclxuICAgICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQb3BvdmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChcbiAgICAgIHRoaXMucG9wb3ZlcigpLFxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5pbmplY3RvcixcbiAgICApO1xuXG4gICAgY29uc3QgZG9tT3V0bGV0ID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgIHRoaXMuY29udGFpbmVyKCkgPz8gdGhpcy5kb2N1bWVudC5ib2R5LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICBwcm92aWRlcnM6IFtwcm92aWRlUG9wb3ZlclRyaWdnZXIodGhpcyldLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMudmlld1JlZiA9IGRvbU91dGxldC5hdHRhY2gocG9ydGFsKTtcbiAgICB0aGlzLnZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3Qgb3V0bGV0RWxlbWVudCA9IHRoaXMudmlld1JlZi5yb290Tm9kZXNbMF07XG5cbiAgICB0aGlzLmRpc3Bvc2UgPSBhdXRvVXBkYXRlKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LCBvdXRsZXRFbGVtZW50LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IGF3YWl0IGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCwgb3V0bGV0RWxlbWVudCwge1xuICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50KCksXG4gICAgICAgIG1pZGRsZXdhcmU6IHRoaXMubWlkZGxld2FyZSgpLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucG9zaXRpb24uc2V0KHsgeDogcG9zaXRpb24ueCwgeTogcG9zaXRpb24ueSB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUuc2V0KCdvcGVuJyk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMudmlld1JlZj8uZGVzdHJveSgpO1xuICAgIHRoaXMudmlld1JlZiA9IG51bGw7XG4gICAgdGhpcy5kaXNwb3NlPy4oKTtcbiAgICB0aGlzLnN0YXRlLnNldCgnY2xvc2VkJyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9wb3ZlclN0YXRlID0gJ2Nsb3NlZCcgfCAnb3BlbmluZycgfCAnb3BlbicgfCAnY2xvc2luZyc7XG4iXX0=
|