@firestitch/popover 12.3.0 → 12.3.1
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/app/class/popover-ref.d.ts +34 -34
- package/app/components/popover/popover.component.d.ts +6 -6
- package/app/components/popover-wrapper/popover-wrapper.component.d.ts +40 -40
- package/app/directives/popover.directive.d.ts +55 -55
- package/app/enums/position.d.ts +6 -6
- package/app/fs-popover.module.d.ts +11 -11
- package/app/helpers/create-injector.d.ts +4 -4
- package/app/helpers/create-overlay-ref.d.ts +4 -4
- package/app/helpers/create-position-strategy.d.ts +4 -4
- package/app/helpers/create-template-portal.d.ts +4 -4
- package/app/helpers/point-in-rect.d.ts +1 -1
- package/app/interfaces/popover-config.interface.d.ts +16 -16
- package/app/services/popover.service.d.ts +21 -21
- package/bundles/firestitch-popover.umd.js +1001 -1001
- package/esm2015/app/class/popover-ref.js +85 -85
- package/esm2015/app/components/popover/popover.component.js +19 -19
- package/esm2015/app/components/popover-wrapper/popover-wrapper.component.js +122 -122
- package/esm2015/app/directives/popover.directive.js +221 -221
- package/esm2015/app/enums/position.js +7 -7
- package/esm2015/app/fs-popover.module.js +37 -37
- package/esm2015/app/helpers/create-injector.js +8 -8
- package/esm2015/app/helpers/create-overlay-ref.js +11 -11
- package/esm2015/app/helpers/create-position-strategy.js +55 -55
- package/esm2015/app/helpers/create-template-portal.js +4 -4
- package/esm2015/app/helpers/point-in-rect.js +3 -3
- package/esm2015/app/interfaces/popover-config.interface.js +1 -1
- package/esm2015/app/services/popover.service.js +63 -63
- package/esm2015/firestitch-popover.js +4 -4
- package/esm2015/public_api.js +8 -8
- package/fesm2015/firestitch-popover.js +578 -578
- package/firestitch-popover.d.ts +5 -5
- package/package.json +1 -1
- package/public_api.d.ts +6 -6
- package/styles.scss +2 -2
|
@@ -1,222 +1,222 @@
|
|
|
1
|
-
import { ElementRef, Input, NgZone, Optional, TemplateRef, HostBinding, Directive, } from '@angular/core';
|
|
2
|
-
import { NavigationEnd, Router } from '@angular/router';
|
|
3
|
-
import { fromEvent, pipe, Subject, timer, merge } from 'rxjs';
|
|
4
|
-
import { debounceTime, delay, distinctUntilChanged, filter, finalize, mapTo, startWith, switchMap, takeUntil, tap, withLatestFrom, } from 'rxjs/operators';
|
|
5
|
-
import { guid } from '@firestitch/common';
|
|
6
|
-
import { Position } from '../enums/position';
|
|
7
|
-
import { FsPopoverService } from '../services/popover.service';
|
|
8
|
-
import { pointInRect } from '../helpers/point-in-rect';
|
|
9
|
-
import { FsPopoverRef } from '../class/popover-ref';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "../services/popover.service";
|
|
12
|
-
import * as i2 from "@angular/router";
|
|
13
|
-
export class FsPopoverDirective {
|
|
14
|
-
constructor(_elRef, _popoverService, _ngZone, _router) {
|
|
15
|
-
this._elRef = _elRef;
|
|
16
|
-
this._popoverService = _popoverService;
|
|
17
|
-
this._ngZone = _ngZone;
|
|
18
|
-
this._router = _router;
|
|
19
|
-
this._guid = guid('xxxxxxx');
|
|
20
|
-
this.leaveDelay = 100;
|
|
21
|
-
this.showDelay = 0;
|
|
22
|
-
this.maxWidth = 250;
|
|
23
|
-
this.autoShow = true;
|
|
24
|
-
this.autoClose = true;
|
|
25
|
-
this.loadingDiameter = 20;
|
|
26
|
-
this.loading = true;
|
|
27
|
-
this.indication = true;
|
|
28
|
-
this.position = Position.South;
|
|
29
|
-
this.theme = 'light';
|
|
30
|
-
this.size = 'normal';
|
|
31
|
-
this.trigger = 'mouseover';
|
|
32
|
-
this.enabled = true;
|
|
33
|
-
this._initialized = false;
|
|
34
|
-
this._mouseEnter$ = fromEvent(this._elRef.nativeElement, 'mouseenter');
|
|
35
|
-
this._mouseMove$ = fromEvent(document, 'mousemove', { passive: true });
|
|
36
|
-
this._mouseLeave$ = fromEvent(this._elRef.nativeElement, 'mouseleave');
|
|
37
|
-
this._popoverClosed$ = new Subject();
|
|
38
|
-
this._destroy$ = new Subject();
|
|
39
|
-
}
|
|
40
|
-
get openTimer$() {
|
|
41
|
-
return timer(this.showDelay);
|
|
42
|
-
}
|
|
43
|
-
get closeTimer$() {
|
|
44
|
-
return timer(this.leaveDelay);
|
|
45
|
-
}
|
|
46
|
-
ngOnInit() {
|
|
47
|
-
if (this.enabled) {
|
|
48
|
-
this._initialize();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
ngOnChanges(changes) {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
if (((_a = changes.enabled) === null || _a === void 0 ? void 0 : _a.currentValue) !== ((_b = changes.enabled) === null || _b === void 0 ? void 0 : _b.previousValue)) {
|
|
54
|
-
if (this.enabled && !this._initialized) {
|
|
55
|
-
this._initialize();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
ngOnDestroy() {
|
|
60
|
-
this._popoverClosed$.next();
|
|
61
|
-
this._destroy$.next();
|
|
62
|
-
}
|
|
63
|
-
_closePopover() {
|
|
64
|
-
this._popoverClosed$.next();
|
|
65
|
-
this._ngZone.run(() => {
|
|
66
|
-
this._wrapperElement = null;
|
|
67
|
-
if (this._popoverService.hasActivePopover) {
|
|
68
|
-
this._popoverService.close(this._popoverRef);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
_initialize() {
|
|
73
|
-
if (this._initialized) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
this._popoverRef = new FsPopoverRef({
|
|
77
|
-
maxWidth: this.maxWidth,
|
|
78
|
-
wrapperClass: this.wrapperClass,
|
|
79
|
-
autoShow: this.autoShow,
|
|
80
|
-
autoClose: this.autoClose,
|
|
81
|
-
loadingDiameter: this.loadingDiameter,
|
|
82
|
-
loading: this.loading,
|
|
83
|
-
size: this.size,
|
|
84
|
-
theme: this.theme,
|
|
85
|
-
});
|
|
86
|
-
this._ngZone.runOutsideAngular(() => {
|
|
87
|
-
if (this.trigger === 'click') {
|
|
88
|
-
this._listenMouseHostClick();
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
this._listenMouseHostEnter();
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
this._listenRouteChange();
|
|
95
|
-
this._initialized = true;
|
|
96
|
-
}
|
|
97
|
-
_listenRouteChange() {
|
|
98
|
-
this._router.events
|
|
99
|
-
.pipe(filter((event) => {
|
|
100
|
-
return event instanceof NavigationEnd;
|
|
101
|
-
}), pipe(takeUntil(this._destroy$
|
|
102
|
-
.pipe(delay(200)))))
|
|
103
|
-
.subscribe(() => {
|
|
104
|
-
this._closePopover();
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
_listenMouseHostClick() {
|
|
108
|
-
fromEvent(this._elRef.nativeElement, 'click', { passive: true })
|
|
109
|
-
.pipe(filter(() => this.enabled), tap((e) => {
|
|
110
|
-
e.stopPropagation();
|
|
111
|
-
this._openPopover();
|
|
112
|
-
}), switchMap(() => this._listenMouseHostLeave$()), switchMap(() => this.closeTimer$), takeUntil(this._destroy$))
|
|
113
|
-
.subscribe(() => {
|
|
114
|
-
this._closePopover();
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
_listenMouseHostEnter() {
|
|
118
|
-
const actualMouseState$ = merge(this._mouseLeave$.pipe(mapTo(true)), this._mouseEnter$.pipe(mapTo(false)))
|
|
119
|
-
.pipe(startWith(false), distinctUntilChanged());
|
|
120
|
-
this._mouseEnter$
|
|
121
|
-
.pipe(filter(() => this.enabled), filter(() => {
|
|
122
|
-
return !this._wrapperElement;
|
|
123
|
-
}), tap(() => {
|
|
124
|
-
this._popoverService.setActivePopoverGUID(this._guid);
|
|
125
|
-
}), switchMap(() => this.openTimer$),
|
|
126
|
-
// we have to check that after all delays mouse still over an elemen
|
|
127
|
-
withLatestFrom(actualMouseState$), filter(([_, mouseLeave]) => {
|
|
128
|
-
return !mouseLeave;
|
|
129
|
-
}), tap(() => this._openPopover()), switchMap(() => this._listenMouseHostLeave$()), switchMap(() => this.closeTimer$), tap(() => this._closePopover()), finalize(() => this._closePopover()), takeUntil(this._destroy$))
|
|
130
|
-
.subscribe();
|
|
131
|
-
}
|
|
132
|
-
_openPopover() {
|
|
133
|
-
if (this.trigger === 'mouseover' && this._popoverService.activeElementGUID !== this._guid) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
this._hostBounds = this._elRef.nativeElement.getBoundingClientRect();
|
|
137
|
-
this._ngZone.run(() => {
|
|
138
|
-
if (this.template) {
|
|
139
|
-
this._wrapperElement = this._popoverService.openPopover(this._elRef, this.template, this.data, this._popoverRef, this.position);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
this._wrapperElement = this._popoverService.openPopover(this._elRef, this.text, this.data, this._popoverRef, this.position);
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
_listenMouseHostLeave$() {
|
|
147
|
-
const mouseMove$ = this._mouseMove$
|
|
148
|
-
.pipe(debounceTime(50), filter(() => !!this._wrapperElement), filter((event) => {
|
|
149
|
-
return this._popoverRef.autoClose && this._mouseLeftTheTargets(event);
|
|
150
|
-
}));
|
|
151
|
-
const mouseClick$ = fromEvent(this._elRef.nativeElement, 'click');
|
|
152
|
-
return merge(mouseMove$, mouseClick$);
|
|
153
|
-
//
|
|
154
|
-
// return this._mouseLeave$
|
|
155
|
-
// .pipe(
|
|
156
|
-
// //
|
|
157
|
-
// timeoutWith(200, mouseMove$),
|
|
158
|
-
// );
|
|
159
|
-
}
|
|
160
|
-
// Check if mouse left target or popover rects
|
|
161
|
-
_mouseLeftTheTargets(event) {
|
|
162
|
-
const hostBounds = this._hostBounds;
|
|
163
|
-
const popoverBounds = this._wrapperElement.getBoundingClientRect();
|
|
164
|
-
const pointInHostRect = pointInRect(hostBounds.x, hostBounds.y, hostBounds.x + hostBounds.width, hostBounds.y + hostBounds.height, event.x, event.y);
|
|
165
|
-
const pointInPopoverRect = pointInRect(popoverBounds.x, popoverBounds.y, popoverBounds.x + popoverBounds.width, popoverBounds.y + popoverBounds.height, event.x, event.y);
|
|
166
|
-
return !pointInHostRect && !pointInPopoverRect;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
FsPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverDirective, deps: [{ token: i0.ElementRef }, { token: i1.FsPopoverService }, { token: i0.NgZone }, { token: i2.Router, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
170
|
-
FsPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsPopoverDirective, selector: "[fsPopover]", inputs: { text: "text", template: "template", data: "data", leaveDelay: "leaveDelay", showDelay: "showDelay", maxWidth: "maxWidth", wrapperClass: "wrapperClass", autoShow: "autoShow", autoClose: "autoClose", loadingDiameter: "loadingDiameter", loading: "loading", indication: "indication", position: "position", theme: "theme", size: "size", trigger: "trigger", enabled: "enabled" }, host: { properties: { "class.indication": "this.indication", "class.fs-popover-enabled": "this.enabled" }, classAttribute: "fs-popover" }, usesOnChanges: true, ngImport: i0 });
|
|
171
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverDirective, decorators: [{
|
|
172
|
-
type: Directive,
|
|
173
|
-
args: [{
|
|
174
|
-
selector: '[fsPopover]',
|
|
175
|
-
host: {
|
|
176
|
-
'class': 'fs-popover',
|
|
177
|
-
},
|
|
178
|
-
}]
|
|
179
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FsPopoverService }, { type: i0.NgZone }, { type: i2.Router, decorators: [{
|
|
180
|
-
type: Optional
|
|
181
|
-
}] }]; }, propDecorators: { text: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}], template: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], data: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], leaveDelay: [{
|
|
188
|
-
type: Input
|
|
189
|
-
}], showDelay: [{
|
|
190
|
-
type: Input
|
|
191
|
-
}], maxWidth: [{
|
|
192
|
-
type: Input
|
|
193
|
-
}], wrapperClass: [{
|
|
194
|
-
type: Input
|
|
195
|
-
}], autoShow: [{
|
|
196
|
-
type: Input
|
|
197
|
-
}], autoClose: [{
|
|
198
|
-
type: Input
|
|
199
|
-
}], loadingDiameter: [{
|
|
200
|
-
type: Input
|
|
201
|
-
}], loading: [{
|
|
202
|
-
type: Input
|
|
203
|
-
}], indication: [{
|
|
204
|
-
type: Input
|
|
205
|
-
}, {
|
|
206
|
-
type: HostBinding,
|
|
207
|
-
args: ['class.indication']
|
|
208
|
-
}], position: [{
|
|
209
|
-
type: Input
|
|
210
|
-
}], theme: [{
|
|
211
|
-
type: Input
|
|
212
|
-
}], size: [{
|
|
213
|
-
type: Input
|
|
214
|
-
}], trigger: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], enabled: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}, {
|
|
219
|
-
type: HostBinding,
|
|
220
|
-
args: ['class.fs-popover-enabled']
|
|
221
|
-
}] } });
|
|
1
|
+
import { ElementRef, Input, NgZone, Optional, TemplateRef, HostBinding, Directive, } from '@angular/core';
|
|
2
|
+
import { NavigationEnd, Router } from '@angular/router';
|
|
3
|
+
import { fromEvent, pipe, Subject, timer, merge } from 'rxjs';
|
|
4
|
+
import { debounceTime, delay, distinctUntilChanged, filter, finalize, mapTo, startWith, switchMap, takeUntil, tap, withLatestFrom, } from 'rxjs/operators';
|
|
5
|
+
import { guid } from '@firestitch/common';
|
|
6
|
+
import { Position } from '../enums/position';
|
|
7
|
+
import { FsPopoverService } from '../services/popover.service';
|
|
8
|
+
import { pointInRect } from '../helpers/point-in-rect';
|
|
9
|
+
import { FsPopoverRef } from '../class/popover-ref';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../services/popover.service";
|
|
12
|
+
import * as i2 from "@angular/router";
|
|
13
|
+
export class FsPopoverDirective {
|
|
14
|
+
constructor(_elRef, _popoverService, _ngZone, _router) {
|
|
15
|
+
this._elRef = _elRef;
|
|
16
|
+
this._popoverService = _popoverService;
|
|
17
|
+
this._ngZone = _ngZone;
|
|
18
|
+
this._router = _router;
|
|
19
|
+
this._guid = guid('xxxxxxx');
|
|
20
|
+
this.leaveDelay = 100;
|
|
21
|
+
this.showDelay = 0;
|
|
22
|
+
this.maxWidth = 250;
|
|
23
|
+
this.autoShow = true;
|
|
24
|
+
this.autoClose = true;
|
|
25
|
+
this.loadingDiameter = 20;
|
|
26
|
+
this.loading = true;
|
|
27
|
+
this.indication = true;
|
|
28
|
+
this.position = Position.South;
|
|
29
|
+
this.theme = 'light';
|
|
30
|
+
this.size = 'normal';
|
|
31
|
+
this.trigger = 'mouseover';
|
|
32
|
+
this.enabled = true;
|
|
33
|
+
this._initialized = false;
|
|
34
|
+
this._mouseEnter$ = fromEvent(this._elRef.nativeElement, 'mouseenter');
|
|
35
|
+
this._mouseMove$ = fromEvent(document, 'mousemove', { passive: true });
|
|
36
|
+
this._mouseLeave$ = fromEvent(this._elRef.nativeElement, 'mouseleave');
|
|
37
|
+
this._popoverClosed$ = new Subject();
|
|
38
|
+
this._destroy$ = new Subject();
|
|
39
|
+
}
|
|
40
|
+
get openTimer$() {
|
|
41
|
+
return timer(this.showDelay);
|
|
42
|
+
}
|
|
43
|
+
get closeTimer$() {
|
|
44
|
+
return timer(this.leaveDelay);
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
if (this.enabled) {
|
|
48
|
+
this._initialize();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ngOnChanges(changes) {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
if (((_a = changes.enabled) === null || _a === void 0 ? void 0 : _a.currentValue) !== ((_b = changes.enabled) === null || _b === void 0 ? void 0 : _b.previousValue)) {
|
|
54
|
+
if (this.enabled && !this._initialized) {
|
|
55
|
+
this._initialize();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
ngOnDestroy() {
|
|
60
|
+
this._popoverClosed$.next();
|
|
61
|
+
this._destroy$.next();
|
|
62
|
+
}
|
|
63
|
+
_closePopover() {
|
|
64
|
+
this._popoverClosed$.next();
|
|
65
|
+
this._ngZone.run(() => {
|
|
66
|
+
this._wrapperElement = null;
|
|
67
|
+
if (this._popoverService.hasActivePopover) {
|
|
68
|
+
this._popoverService.close(this._popoverRef);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
_initialize() {
|
|
73
|
+
if (this._initialized) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this._popoverRef = new FsPopoverRef({
|
|
77
|
+
maxWidth: this.maxWidth,
|
|
78
|
+
wrapperClass: this.wrapperClass,
|
|
79
|
+
autoShow: this.autoShow,
|
|
80
|
+
autoClose: this.autoClose,
|
|
81
|
+
loadingDiameter: this.loadingDiameter,
|
|
82
|
+
loading: this.loading,
|
|
83
|
+
size: this.size,
|
|
84
|
+
theme: this.theme,
|
|
85
|
+
});
|
|
86
|
+
this._ngZone.runOutsideAngular(() => {
|
|
87
|
+
if (this.trigger === 'click') {
|
|
88
|
+
this._listenMouseHostClick();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this._listenMouseHostEnter();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
this._listenRouteChange();
|
|
95
|
+
this._initialized = true;
|
|
96
|
+
}
|
|
97
|
+
_listenRouteChange() {
|
|
98
|
+
this._router.events
|
|
99
|
+
.pipe(filter((event) => {
|
|
100
|
+
return event instanceof NavigationEnd;
|
|
101
|
+
}), pipe(takeUntil(this._destroy$
|
|
102
|
+
.pipe(delay(200)))))
|
|
103
|
+
.subscribe(() => {
|
|
104
|
+
this._closePopover();
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
_listenMouseHostClick() {
|
|
108
|
+
fromEvent(this._elRef.nativeElement, 'click', { passive: true })
|
|
109
|
+
.pipe(filter(() => this.enabled), tap((e) => {
|
|
110
|
+
e.stopPropagation();
|
|
111
|
+
this._openPopover();
|
|
112
|
+
}), switchMap(() => this._listenMouseHostLeave$()), switchMap(() => this.closeTimer$), takeUntil(this._destroy$))
|
|
113
|
+
.subscribe(() => {
|
|
114
|
+
this._closePopover();
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
_listenMouseHostEnter() {
|
|
118
|
+
const actualMouseState$ = merge(this._mouseLeave$.pipe(mapTo(true)), this._mouseEnter$.pipe(mapTo(false)))
|
|
119
|
+
.pipe(startWith(false), distinctUntilChanged());
|
|
120
|
+
this._mouseEnter$
|
|
121
|
+
.pipe(filter(() => this.enabled), filter(() => {
|
|
122
|
+
return !this._wrapperElement;
|
|
123
|
+
}), tap(() => {
|
|
124
|
+
this._popoverService.setActivePopoverGUID(this._guid);
|
|
125
|
+
}), switchMap(() => this.openTimer$),
|
|
126
|
+
// we have to check that after all delays mouse still over an elemen
|
|
127
|
+
withLatestFrom(actualMouseState$), filter(([_, mouseLeave]) => {
|
|
128
|
+
return !mouseLeave;
|
|
129
|
+
}), tap(() => this._openPopover()), switchMap(() => this._listenMouseHostLeave$()), switchMap(() => this.closeTimer$), tap(() => this._closePopover()), finalize(() => this._closePopover()), takeUntil(this._destroy$))
|
|
130
|
+
.subscribe();
|
|
131
|
+
}
|
|
132
|
+
_openPopover() {
|
|
133
|
+
if (this.trigger === 'mouseover' && this._popoverService.activeElementGUID !== this._guid) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this._hostBounds = this._elRef.nativeElement.getBoundingClientRect();
|
|
137
|
+
this._ngZone.run(() => {
|
|
138
|
+
if (this.template) {
|
|
139
|
+
this._wrapperElement = this._popoverService.openPopover(this._elRef, this.template, this.data, this._popoverRef, this.position);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
this._wrapperElement = this._popoverService.openPopover(this._elRef, this.text, this.data, this._popoverRef, this.position);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
_listenMouseHostLeave$() {
|
|
147
|
+
const mouseMove$ = this._mouseMove$
|
|
148
|
+
.pipe(debounceTime(50), filter(() => !!this._wrapperElement), filter((event) => {
|
|
149
|
+
return this._popoverRef.autoClose && this._mouseLeftTheTargets(event);
|
|
150
|
+
}));
|
|
151
|
+
const mouseClick$ = fromEvent(this._elRef.nativeElement, 'click');
|
|
152
|
+
return merge(mouseMove$, mouseClick$);
|
|
153
|
+
//
|
|
154
|
+
// return this._mouseLeave$
|
|
155
|
+
// .pipe(
|
|
156
|
+
// //
|
|
157
|
+
// timeoutWith(200, mouseMove$),
|
|
158
|
+
// );
|
|
159
|
+
}
|
|
160
|
+
// Check if mouse left target or popover rects
|
|
161
|
+
_mouseLeftTheTargets(event) {
|
|
162
|
+
const hostBounds = this._hostBounds;
|
|
163
|
+
const popoverBounds = this._wrapperElement.getBoundingClientRect();
|
|
164
|
+
const pointInHostRect = pointInRect(hostBounds.x, hostBounds.y, hostBounds.x + hostBounds.width, hostBounds.y + hostBounds.height, event.x, event.y);
|
|
165
|
+
const pointInPopoverRect = pointInRect(popoverBounds.x, popoverBounds.y, popoverBounds.x + popoverBounds.width, popoverBounds.y + popoverBounds.height, event.x, event.y);
|
|
166
|
+
return !pointInHostRect && !pointInPopoverRect;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
FsPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverDirective, deps: [{ token: i0.ElementRef }, { token: i1.FsPopoverService }, { token: i0.NgZone }, { token: i2.Router, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
170
|
+
FsPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsPopoverDirective, selector: "[fsPopover]", inputs: { text: "text", template: "template", data: "data", leaveDelay: "leaveDelay", showDelay: "showDelay", maxWidth: "maxWidth", wrapperClass: "wrapperClass", autoShow: "autoShow", autoClose: "autoClose", loadingDiameter: "loadingDiameter", loading: "loading", indication: "indication", position: "position", theme: "theme", size: "size", trigger: "trigger", enabled: "enabled" }, host: { properties: { "class.indication": "this.indication", "class.fs-popover-enabled": "this.enabled" }, classAttribute: "fs-popover" }, usesOnChanges: true, ngImport: i0 });
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverDirective, decorators: [{
|
|
172
|
+
type: Directive,
|
|
173
|
+
args: [{
|
|
174
|
+
selector: '[fsPopover]',
|
|
175
|
+
host: {
|
|
176
|
+
'class': 'fs-popover',
|
|
177
|
+
},
|
|
178
|
+
}]
|
|
179
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FsPopoverService }, { type: i0.NgZone }, { type: i2.Router, decorators: [{
|
|
180
|
+
type: Optional
|
|
181
|
+
}] }]; }, propDecorators: { text: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], template: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], data: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], leaveDelay: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], showDelay: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], maxWidth: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], wrapperClass: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], autoShow: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], autoClose: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], loadingDiameter: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], loading: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], indication: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}, {
|
|
206
|
+
type: HostBinding,
|
|
207
|
+
args: ['class.indication']
|
|
208
|
+
}], position: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], theme: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], size: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], trigger: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], enabled: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}, {
|
|
219
|
+
type: HostBinding,
|
|
220
|
+
args: ['class.fs-popover-enabled']
|
|
221
|
+
}] } });
|
|
222
222
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvcG9wb3Zlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLFFBQVEsRUFDUixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFFLE9BQU8sRUFDTCxZQUFZLEVBQ1osS0FBSyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBU3BELE1BQU0sT0FBTyxrQkFBa0I7SUFzRTdCLFlBQ1UsTUFBa0IsRUFDbEIsZUFBaUMsRUFDakMsT0FBZSxFQUNILE9BQWU7UUFIM0IsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNsQixvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FB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QU87c0JBRGIsS0FBSztnQkFLQyxPQUFPO3NCQUZiLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIERpcmVjdGl2ZSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgcGlwZSwgU3ViamVjdCwgdGltZXIsIE9ic2VydmFibGUsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRlbGF5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBmaW5hbGl6ZSxcbiAgbWFwVG8sXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgZ3VpZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5cbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vZW51bXMvcG9zaXRpb24nO1xuaW1wb3J0IHsgRnNQb3BvdmVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBwb2ludEluUmVjdCB9IGZyb20gJy4uL2hlbHBlcnMvcG9pbnQtaW4tcmVjdCc7XG5pbXBvcnQgeyBGc1BvcG92ZXJSZWYgfSBmcm9tICcuLi9jbGFzcy9wb3BvdmVyLXJlZic7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzUG9wb3Zlcl0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2ZzLXBvcG92ZXInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBGc1BvcG92ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9ndWlkID0gZ3VpZCgneHh4eHh4eCcpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRhOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxlYXZlRGVsYXkgPSAxMDA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dEZWxheSA9IDA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heFdpZHRoID0gMjUwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b1Nob3cgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvQ2xvc2UgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsb2FkaW5nRGlhbWV0ZXIgPSAyMDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbmRpY2F0aW9uJylcbiAgcHVibGljIGluZGljYXRpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb3NpdGlvbjogUG9zaXRpb24gPSBQb3NpdGlvbi5Tb3V0aDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaXplOiAndGlueScgfCAnc21hbGwnIHwgJ25vcm1hbCcgPSAnbm9ybWFsJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpZ2dlcjogJ2NsaWNrJyB8ICdtb3VzZW92ZXInID0gJ21vdXNlb3Zlcic7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1wb3BvdmVyLWVuYWJsZWQnKVxuICBwdWJsaWMgZW5hYmxlZCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9wb3BvdmVyUmVmOiBGc1BvcG92ZXJSZWY7XG4gIHByaXZhdGUgX3dyYXBwZXJFbGVtZW50OiBFbGVtZW50O1xuICBwcml2YXRlIF9ob3N0Qm91bmRzOiBET01SZWN0O1xuXG4gIHByaXZhdGUgX21vdXNlRW50ZXIkID0gZnJvbUV2ZW50KHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJyk7XG4gIHByaXZhdGUgX21vdXNlTW92ZSQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIHByaXZhdGUgX21vdXNlTGVhdmUkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWxlYXZlJyk7XG5cbiAgcHJpdmF0ZSBfcG9wb3ZlckNsb3NlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfcG9wb3ZlclNlcnZpY2U6IEZzUG9wb3ZlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVuVGltZXIkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRpbWVyKHRoaXMuc2hvd0RlbGF5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xvc2VUaW1lciQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGltZXIodGhpcy5sZWF2ZURlbGF5KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLl9pbml0aWFsaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbmFibGVkPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuZW5hYmxlZD8ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlZCAmJiAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9wb3BvdmVyQ2xvc2VkJC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VQb3BvdmVyKCkge1xuICAgIHRoaXMuX3BvcG92ZXJDbG9zZWQkLm5leHQoKTtcblxuICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5fd3JhcHBlckVsZW1lbnQgPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy5fcG9wb3ZlclNlcnZpY2UuaGFzQWN0aXZlUG9wb3Zlcikge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5jbG9zZSh0aGlzLl9wb3BvdmVyUmVmKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcG9wb3ZlclJlZiA9IG5ldyBGc1BvcG92ZXJSZWYoe1xuICAgICAgbWF4V2lkdGg6IHRoaXMubWF4V2lkdGgsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgICAgYXV0b1Nob3c6IHRoaXMuYXV0b1Nob3csXG4gICAgICBhdXRvQ2xvc2U6IHRoaXMuYXV0b0Nsb3NlLFxuICAgICAgbG9hZGluZ0RpYW1ldGVyOiB0aGlzLmxvYWRpbmdEaWFtZXRlcixcbiAgICAgIGxvYWRpbmc6IHRoaXMubG9hZGluZyxcbiAgICAgIHNpemU6IHRoaXMuc2l6ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuTW91c2VIb3N0Q2xpY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk1vdXNlSG9zdEVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9saXN0ZW5Sb3V0ZUNoYW5nZSgpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuUm91dGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kO1xuICAgICAgICB9KSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoXG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95JFxuICAgICAgICAgICAgICAucGlwZShkZWxheSgyMDApKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2xvc2VQb3BvdmVyKCk7XG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuTW91c2VIb3N0Q2xpY2soKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmVuYWJsZWQpLFxuICAgICAgICB0YXAoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgdGhpcy5fb3BlblBvcG92ZXIoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9saXN0ZW5Nb3VzZUhvc3RMZWF2ZSQoKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNsb3NlVGltZXIkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jbG9zZVBvcG92ZXIoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuTW91c2VIb3N0RW50ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0dWFsTW91c2VTdGF0ZSQgPSBtZXJnZShcbiAgICAgIHRoaXMuX21vdXNlTGVhdmUkLnBpcGUobWFwVG8odHJ1ZSkpLFxuICAgICAgdGhpcy5fbW91c2VFbnRlciQucGlwZShtYXBUbyhmYWxzZSkpLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcblxuICAgIHRoaXMuX21vdXNlRW50ZXIkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZW5hYmxlZCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuICF0aGlzLl93cmFwcGVyRWxlbWVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uuc2V0QWN0aXZlUG9wb3ZlckdVSUQodGhpcy5fZ3VpZCk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5vcGVuVGltZXIkKSxcbiAgICAgICAgLy8gd2UgaGF2ZSB0byBjaGVjayB0aGF0IGFmdGVyIGFsbCBkZWxheXMgbW91c2Ugc3RpbGwgb3ZlciBhbiBlbGVtZW5cbiAgICAgICAgd2l0aExhdGVzdEZyb20oYWN0dWFsTW91c2VTdGF0ZSQpLFxuICAgICAgICBmaWx0ZXIoKFtfLCBtb3VzZUxlYXZlXSkgPT4ge1xuICAgICAgICAgIHJldHVybiAhbW91c2VMZWF2ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9vcGVuUG9wb3ZlcigpKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2xpc3Rlbk1vdXNlSG9zdExlYXZlJCgpKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2xvc2VUaW1lciQpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fY2xvc2VQb3BvdmVyKCkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLl9jbG9zZVBvcG92ZXIoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9vcGVuUG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnbW91c2VvdmVyJyAmJiB0aGlzLl9wb3BvdmVyU2VydmljZS5hY3RpdmVFbGVtZW50R1VJRCAhPT0gdGhpcy5fZ3VpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2hvc3RCb3VuZHMgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBpZiAodGhpcy50ZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLl93cmFwcGVyRWxlbWVudCA9IHRoaXMuX3BvcG92ZXJTZXJ2aWNlLm9wZW5Qb3BvdmVyKFxuICAgICAgICAgIHRoaXMuX2VsUmVmLFxuICAgICAgICAgIHRoaXMudGVtcGxhdGUsXG4gICAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICAgIHRoaXMuX3BvcG92ZXJSZWYsXG4gICAgICAgICAgdGhpcy5wb3NpdGlvblxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlckVsZW1lbnQgPSB0aGlzLl9wb3BvdmVyU2VydmljZS5vcGVuUG9wb3ZlcihcbiAgICAgICAgICB0aGlzLl9lbFJlZixcbiAgICAgICAgICB0aGlzLnRleHQsXG4gICAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICAgIHRoaXMuX3BvcG92ZXJSZWYsXG4gICAgICAgICAgdGhpcy5wb3NpdGlvblxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuTW91c2VIb3N0TGVhdmUkKCk6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgIGNvbnN0IG1vdXNlTW92ZSQgPSB0aGlzLl9tb3VzZU1vdmUkXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5fd3JhcHBlckVsZW1lbnQpLFxuICAgICAgICBmaWx0ZXIoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXJSZWYuYXV0b0Nsb3NlICYmIHRoaXMuX21vdXNlTGVmdFRoZVRhcmdldHMoZXZlbnQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBjb25zdCBtb3VzZUNsaWNrJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKTtcblxuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG1vdXNlTW92ZSQsXG4gICAgICBtb3VzZUNsaWNrJCxcbiAgICApO1xuICAgIC8vXG4gICAgLy8gcmV0dXJuIHRoaXMuX21vdXNlTGVhdmUkXG4gICAgLy8gICAucGlwZShcbiAgICAvLyAgICAgLy9cbiAgICAvLyAgICAgdGltZW91dFdpdGgoMjAwLCBtb3VzZU1vdmUkKSxcbiAgICAvLyAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiBtb3VzZSBsZWZ0IHRhcmdldCBvciBwb3BvdmVyIHJlY3RzXG4gIHByaXZhdGUgX21vdXNlTGVmdFRoZVRhcmdldHMoZXZlbnQ6IE1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBob3N0Qm91bmRzID0gdGhpcy5faG9zdEJvdW5kcztcbiAgICBjb25zdCBwb3BvdmVyQm91bmRzID0gdGhpcy5fd3JhcHBlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBwb2ludEluSG9zdFJlY3QgPSBwb2ludEluUmVjdChcbiAgICAgIGhvc3RCb3VuZHMueCxcbiAgICAgIGhvc3RCb3VuZHMueSxcbiAgICAgIGhvc3RCb3VuZHMueCArIGhvc3RCb3VuZHMud2lkdGgsXG4gICAgICBob3N0Qm91bmRzLnkgKyBob3N0Qm91bmRzLmhlaWdodCxcbiAgICAgIGV2ZW50LngsXG4gICAgICBldmVudC55XG4gICAgKTtcblxuICAgIGNvbnN0IHBvaW50SW5Qb3BvdmVyUmVjdCA9IHBvaW50SW5SZWN0KFxuICAgICAgcG9wb3ZlckJvdW5kcy54LFxuICAgICAgcG9wb3ZlckJvdW5kcy55LFxuICAgICAgcG9wb3ZlckJvdW5kcy54ICsgcG9wb3ZlckJvdW5kcy53aWR0aCxcbiAgICAgIHBvcG92ZXJCb3VuZHMueSArIHBvcG92ZXJCb3VuZHMuaGVpZ2h0LFxuICAgICAgZXZlbnQueCxcbiAgICAgIGV2ZW50LnlcbiAgICApO1xuXG4gICAgcmV0dXJuICFwb2ludEluSG9zdFJlY3QgJiYgIXBvaW50SW5Qb3BvdmVyUmVjdDtcbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export var Position;
|
|
2
|
-
(function (Position) {
|
|
3
|
-
Position["North"] = "north";
|
|
4
|
-
Position["South"] = "south";
|
|
5
|
-
Position["East"] = "east";
|
|
6
|
-
Position["West"] = "west";
|
|
7
|
-
})(Position || (Position = {}));
|
|
1
|
+
export var Position;
|
|
2
|
+
(function (Position) {
|
|
3
|
+
Position["North"] = "north";
|
|
4
|
+
Position["South"] = "south";
|
|
5
|
+
Position["East"] = "east";
|
|
6
|
+
Position["West"] = "west";
|
|
7
|
+
})(Position || (Position = {}));
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2VudW1zL3Bvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsMkJBQWUsQ0FBQTtJQUNmLDJCQUFlLENBQUE7SUFDZix5QkFBYSxDQUFBO0lBQ2IseUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFMVyxRQUFRLEtBQVIsUUFBUSxRQUtuQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFBvc2l0aW9uIHtcbiAgTm9ydGggPSAnbm9ydGgnLFxuICBTb3V0aCA9ICdzb3V0aCcsXG4gIEVhc3QgPSAnZWFzdCcsXG4gIFdlc3QgPSAnd2VzdCdcbn1cbiJdfQ==
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { PortalModule } from '@angular/cdk/portal';
|
|
4
|
-
import { FsPopoverComponent } from './components/popover/popover.component';
|
|
5
|
-
import { FsPopoverWrapperComponent } from './components/popover-wrapper/popover-wrapper.component';
|
|
6
|
-
import { FsPopoverDirective } from './directives/popover.directive';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class FsPopoverModule {
|
|
9
|
-
}
|
|
10
|
-
FsPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
-
FsPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, declarations: [FsPopoverComponent,
|
|
12
|
-
FsPopoverWrapperComponent,
|
|
13
|
-
FsPopoverDirective], imports: [CommonModule,
|
|
14
|
-
PortalModule], exports: [FsPopoverComponent,
|
|
15
|
-
FsPopoverDirective] });
|
|
16
|
-
FsPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, imports: [[
|
|
17
|
-
CommonModule,
|
|
18
|
-
PortalModule,
|
|
19
|
-
]] });
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, decorators: [{
|
|
21
|
-
type: NgModule,
|
|
22
|
-
args: [{
|
|
23
|
-
imports: [
|
|
24
|
-
CommonModule,
|
|
25
|
-
PortalModule,
|
|
26
|
-
],
|
|
27
|
-
declarations: [
|
|
28
|
-
FsPopoverComponent,
|
|
29
|
-
FsPopoverWrapperComponent,
|
|
30
|
-
FsPopoverDirective,
|
|
31
|
-
],
|
|
32
|
-
exports: [
|
|
33
|
-
FsPopoverComponent,
|
|
34
|
-
FsPopoverDirective,
|
|
35
|
-
],
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { PortalModule } from '@angular/cdk/portal';
|
|
4
|
+
import { FsPopoverComponent } from './components/popover/popover.component';
|
|
5
|
+
import { FsPopoverWrapperComponent } from './components/popover-wrapper/popover-wrapper.component';
|
|
6
|
+
import { FsPopoverDirective } from './directives/popover.directive';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class FsPopoverModule {
|
|
9
|
+
}
|
|
10
|
+
FsPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
FsPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, declarations: [FsPopoverComponent,
|
|
12
|
+
FsPopoverWrapperComponent,
|
|
13
|
+
FsPopoverDirective], imports: [CommonModule,
|
|
14
|
+
PortalModule], exports: [FsPopoverComponent,
|
|
15
|
+
FsPopoverDirective] });
|
|
16
|
+
FsPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, imports: [[
|
|
17
|
+
CommonModule,
|
|
18
|
+
PortalModule,
|
|
19
|
+
]] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPopoverModule, decorators: [{
|
|
21
|
+
type: NgModule,
|
|
22
|
+
args: [{
|
|
23
|
+
imports: [
|
|
24
|
+
CommonModule,
|
|
25
|
+
PortalModule,
|
|
26
|
+
],
|
|
27
|
+
declarations: [
|
|
28
|
+
FsPopoverComponent,
|
|
29
|
+
FsPopoverWrapperComponent,
|
|
30
|
+
FsPopoverDirective,
|
|
31
|
+
],
|
|
32
|
+
exports: [
|
|
33
|
+
FsPopoverComponent,
|
|
34
|
+
FsPopoverDirective,
|
|
35
|
+
],
|
|
36
|
+
}]
|
|
37
|
+
}] });
|
|
38
38
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtcG9wb3Zlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLXBvcG92ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFrQnBFLE1BQU0sT0FBTyxlQUFlOzs2R0FBZixlQUFlOzhHQUFmLGVBQWUsaUJBVHhCLGtCQUFrQjtRQUNsQix5QkFBeUI7UUFDekIsa0JBQWtCLGFBTmxCLFlBQVk7UUFDWixZQUFZLGFBUVosa0JBQWtCO1FBQ2xCLGtCQUFrQjs4R0FHVCxlQUFlLFlBZGpCO1lBQ1AsWUFBWTtZQUNaLFlBQVk7U0FDYjs0RkFXVSxlQUFlO2tCQWYzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5pbXBvcnQgeyBGc1BvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc1BvcG92ZXJXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BvcG92ZXItd3JhcHBlci9wb3BvdmVyLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZzUG9wb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9wb3BvdmVyLmRpcmVjdGl2ZSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBGc1BvcG92ZXJXcmFwcGVyQ29tcG9uZW50LFxuICAgIEZzUG9wb3ZlckRpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEZzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBGc1BvcG92ZXJEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzUG9wb3Zlck1vZHVsZSB7fVxuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { PortalInjector } from '@angular/cdk/portal';
|
|
2
|
-
import { FsPopoverRef } from '../class/popover-ref';
|
|
3
|
-
export function createInjector(popoverRef, parentInjector) {
|
|
4
|
-
const injectionTokens = new WeakMap([
|
|
5
|
-
[FsPopoverRef, popoverRef],
|
|
6
|
-
]);
|
|
7
|
-
return new PortalInjector(parentInjector, injectionTokens);
|
|
8
|
-
}
|
|
1
|
+
import { PortalInjector } from '@angular/cdk/portal';
|
|
2
|
+
import { FsPopoverRef } from '../class/popover-ref';
|
|
3
|
+
export function createInjector(popoverRef, parentInjector) {
|
|
4
|
+
const injectionTokens = new WeakMap([
|
|
5
|
+
[FsPopoverRef, popoverRef],
|
|
6
|
+
]);
|
|
7
|
+
return new PortalInjector(parentInjector, injectionTokens);
|
|
8
|
+
}
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9oZWxwZXJzL2NyZWF0ZS1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3BELE1BQU0sVUFBVSxjQUFjLENBQUMsVUFBd0IsRUFBRSxjQUF3QjtJQUMvRSxNQUFNLGVBQWUsR0FBRyxJQUFJLE9BQU8sQ0FBVztRQUM1QyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7S0FDM0IsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLGNBQWMsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3J0YWxJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRnNQb3BvdmVyUmVmIH0gZnJvbSAnLi4vY2xhc3MvcG9wb3Zlci1yZWYnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbmplY3Rvcihwb3BvdmVyUmVmOiBGc1BvcG92ZXJSZWYsIHBhcmVudEluamVjdG9yOiBJbmplY3Rvcikge1xuICBjb25zdCBpbmplY3Rpb25Ub2tlbnMgPSBuZXcgV2Vha01hcDxhbnksIGFueT4oW1xuICAgIFtGc1BvcG92ZXJSZWYsIHBvcG92ZXJSZWZdLFxuICBdKTtcblxuICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHBhcmVudEluamVjdG9yLCBpbmplY3Rpb25Ub2tlbnMpO1xufVxuIl19
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
-
import { createPopupPositionStrategy } from './create-position-strategy';
|
|
3
|
-
export function createOverlayRef(el, overlay, position) {
|
|
4
|
-
const config = {
|
|
5
|
-
positionStrategy: createPopupPositionStrategy(el, overlay, position),
|
|
6
|
-
scrollStrategy: overlay.scrollStrategies.reposition(),
|
|
7
|
-
hasBackdrop: false
|
|
8
|
-
};
|
|
9
|
-
const overlayConfig = new OverlayConfig(config);
|
|
10
|
-
return overlay.create(overlayConfig);
|
|
11
|
-
}
|
|
1
|
+
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
+
import { createPopupPositionStrategy } from './create-position-strategy';
|
|
3
|
+
export function createOverlayRef(el, overlay, position) {
|
|
4
|
+
const config = {
|
|
5
|
+
positionStrategy: createPopupPositionStrategy(el, overlay, position),
|
|
6
|
+
scrollStrategy: overlay.scrollStrategies.reposition(),
|
|
7
|
+
hasBackdrop: false
|
|
8
|
+
};
|
|
9
|
+
const overlayConfig = new OverlayConfig(config);
|
|
10
|
+
return overlay.create(overlayConfig);
|
|
11
|
+
}
|
|
12
12
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW92ZXJsYXktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9oZWxwZXJzL2NyZWF0ZS1vdmVybGF5LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJekUsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQWMsRUFBRSxPQUFnQixFQUFFLFFBQWtCO0lBQ25GLE1BQU0sTUFBTSxHQUFHO1FBQ2IsZ0JBQWdCLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDcEUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7UUFDckQsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWhELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IGNyZWF0ZVBvcHVwUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJy4vY3JlYXRlLXBvc2l0aW9uLXN0cmF0ZWd5JztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi8uLi9lbnVtcy9wb3NpdGlvbic7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU92ZXJsYXlSZWYoZWw6IEVsZW1lbnRSZWYsIG92ZXJsYXk6IE92ZXJsYXksIHBvc2l0aW9uOiBQb3NpdGlvbikge1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgcG9zaXRpb25TdHJhdGVneTogY3JlYXRlUG9wdXBQb3NpdGlvblN0cmF0ZWd5KGVsLCBvdmVybGF5LCBwb3NpdGlvbiksXG4gICAgc2Nyb2xsU3RyYXRlZ3k6IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgaGFzQmFja2Ryb3A6IGZhbHNlXG4gIH07XG5cbiAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKGNvbmZpZyk7XG5cbiAgcmV0dXJuIG92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xufVxuIl19
|