@datarailsshared/datarailsshared 1.5.531 → 1.5.533

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.
@@ -15,6 +15,15 @@ export class DrPopoverDirective {
15
15
  this.popoverClose = new EventEmitter();
16
16
  this.popoverOpened = new EventEmitter();
17
17
  this.showStateChange = new EventEmitter();
18
+ this.scrollHandler = (event) => {
19
+ // Find the nearest scrollable parent for which scrolling is possible
20
+ const isVerticalScroll = !event.shiftKey;
21
+ const scrollableElement = this.getScrollableElement(event.target, isVerticalScroll);
22
+ // Check if scroll possible and host element places inside scrollable element
23
+ if (scrollableElement && scrollableElement.contains(this.elementRef.nativeElement)) {
24
+ this.closePopover();
25
+ }
26
+ };
18
27
  }
19
28
  togglePopover() {
20
29
  if (this.disabled)
@@ -31,6 +40,7 @@ export class DrPopoverDirective {
31
40
  if (this.popoverRef) {
32
41
  this.popoverRef.close(res);
33
42
  this.popoverRef = null;
43
+ window.removeEventListener('wheel', this.scrollHandler);
34
44
  }
35
45
  }
36
46
  renderPopover() {
@@ -52,10 +62,27 @@ export class DrPopoverDirective {
52
62
  popoverRef.componentRef.instance.popoverOpened.pipe(first()).subscribe(() => {
53
63
  this.popoverOpened.emit();
54
64
  });
65
+ if (!this.manualClosing?.enabled && !this.freezeToContainerSelector) {
66
+ window.addEventListener('wheel', this.scrollHandler);
67
+ }
55
68
  }
56
69
  ngOnDestroy() {
57
70
  this.closePopover();
58
71
  }
72
+ getScrollableElement(element, isVerticalScroll) {
73
+ while (element) {
74
+ const overflow = isVerticalScroll
75
+ ? window.getComputedStyle(element).overflowY
76
+ : window.getComputedStyle(element).overflowX;
77
+ const isScrollable = ['auto', 'scroll'].includes(overflow) &&
78
+ (isVerticalScroll ? element.scrollHeight > element.clientHeight : element.scrollWidth > element.clientWidth);
79
+ if (isScrollable) {
80
+ return element;
81
+ }
82
+ element = element.parentElement;
83
+ }
84
+ return null;
85
+ }
59
86
  /** @nocollapse */ static { this.ɵfac = function DrPopoverDirective_Factory(t) { return new (t || DrPopoverDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.DrPopoverService)); }; }
60
87
  /** @nocollapse */ static { this.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DrPopoverDirective, selectors: [["", "drPopover", ""]], hostBindings: function DrPopoverDirective_HostBindings(rf, ctx) { if (rf & 1) {
61
88
  i0.ɵɵlistener("click", function DrPopoverDirective_click_HostBindingHandler() { return ctx.togglePopover(); });
@@ -107,4 +134,4 @@ export class DrPopoverDirective {
107
134
  type: HostListener,
108
135
  args: ['click']
109
136
  }] }); })();
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItcG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1wb3BvdmVyL2RyLXBvcG92ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFPeEQsTUFBTSxPQUFPLGtCQUFrQjtJQTJCM0IsWUFDWSxVQUFzQixFQUN0QixnQkFBa0M7UUFEbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBMUJuQixtQkFBYyxHQUFlLEVBQWdCLENBQUM7UUFFN0MsYUFBUSxHQUFlLFFBQVEsQ0FBQztRQUVuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRUgsa0JBQWEsR0FBb0IsRUFBRSxDQUFDO1FBRXBDLGtCQUFhLEdBQTBCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBUWpFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV0QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztJQU81RixDQUFDO0lBR0osYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTFCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkI7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDN0Q7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVM7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVPLGFBQWE7UUFDakIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMzRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDeEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtTQUM1RCxDQUFDLENBQUMsQ0FBQztRQUVKLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO3NHQTVFUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjttR0FBbEIsbUJBQWU7Ozt1RkFBZixrQkFBa0I7Y0FKOUIsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUUsbUJBQW1CO2FBQ2hDOzRGQUV1QixPQUFPO2tCQUExQixLQUFLO21CQUFDLFdBQVc7WUFFUyxjQUFjO2tCQUF4QyxLQUFLO21CQUFDLGtCQUFrQjtZQUVHLFFBQVE7a0JBQW5DLEtBQUs7bUJBQUMsbUJBQW1CO1lBRUQsS0FBSztrQkFBN0IsS0FBSzttQkFBQyxnQkFBZ0I7WUFFVSxhQUFhO2tCQUE3QyxLQUFLO21CQUFDLHdCQUF3QjtZQUVFLGFBQWE7a0JBQTdDLEtBQUs7bUJBQUMsd0JBQXdCO1lBRUYsU0FBUztrQkFBckMsS0FBSzttQkFBQyxvQkFBb0I7WUFFQyxRQUFRO2tCQUFuQyxLQUFLO21CQUFDLG1CQUFtQjtZQUVtQix5QkFBeUI7a0JBQXJFLEtBQUs7bUJBQUMsb0NBQW9DO1lBRWpCLFlBQVk7a0JBQXJDLE1BQU07bUJBQUMsZ0JBQWdCO1lBRUcsYUFBYTtrQkFBdkMsTUFBTTttQkFBQyxpQkFBaUI7WUFFVyxlQUFlO2tCQUFsRCxNQUFNO21CQUFDLDBCQUEwQjtZQVVsQyxhQUFhO2tCQURaLFlBQVk7bUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWxQb3NpdGlvbiB9IGZyb20gJy4vLi4vbW9kZWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7IERyUG9wb3ZlclJlZiB9IGZyb20gJy4vZHItcG9wb3Zlci1yZWYnO1xuaW1wb3J0IHsgRHJQb3BvdmVyU2VydmljZSB9IGZyb20gJy4vZHItcG9wb3Zlci5zZXJ2aWNlJztcbmltcG9ydCB7IERyUG9wb3ZlckFsaWdubWVudCwgRHJQb3BvdmVyQ29uZmlnLCBJUG9wb3Zlck1hbnVhbENsb3NpbmcgfSBmcm9tICcuLi9tb2RlbHMvcG9wb3Zlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyUG9wb3Zlcl0nLFxuICAgIGV4cG9ydEFzOiAnZHJQb3BvdmVySW5zdGFuY2UnLFxufSlcbmV4cG9ydCBjbGFzcyBEclBvcG92ZXJEaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnZHJQb3BvdmVyJykgY29udGVudDogVGVtcGxhdGVSZWY8VD4gfCBUeXBlPFQ+O1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJDb250ZXh0JykgY29udGVudENvbnRleHQ6IFBhcnRpYWw8VD4gPSB7fSBhcyBQYXJ0aWFsPFQ+O1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJQb3NpdGlvbicpIHBvc2l0aW9uOiBFbFBvc2l0aW9uID0gJ2JvdHRvbSc7XG5cbiAgICBASW5wdXQoJ2RyUG9wb3ZlckNsYXNzJykgY2xhc3MgPSAnJztcblxuICAgIEBJbnB1dCgnZHJQb3BvdmVyT3ZlcmxheUNvbmZpZycpIG92ZXJsYXlDb25maWc6IERyUG9wb3ZlckNvbmZpZyA9IHt9O1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJNYW51YWxDbG9zaW5nJykgbWFudWFsQ2xvc2luZzogSVBvcG92ZXJNYW51YWxDbG9zaW5nID0geyBlbmFibGVkOiBmYWxzZSB9O1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJBbGlnbm1lbnQnKSBhbGlnbm1lbnQ6IERyUG9wb3ZlckFsaWdubWVudDtcblxuICAgIEBJbnB1dCgnZHJQb3BvdmVyRGlzYWJsZWQnKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgnZHJQb3BvdmVyRnJlZXplVG9Db250YWluZXJTZWxlY3RvcicpIGZyZWV6ZVRvQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZztcblxuICAgIEBPdXRwdXQoJ2RyUG9wb3ZlckNsb3NlJykgcG9wb3ZlckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KCdkclBvcG92ZXJPcGVuZWQnKSBwb3BvdmVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgnZHJQb3BvdmVyU2hvd1N0YXRlQ2hhbmdlJykgc2hvd1N0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlzU2hvd246IGJvb2xlYW4gfT4oKTtcblxuICAgIHByaXZhdGUgcG9wb3ZlclJlZjogRHJQb3BvdmVyUmVmPFQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBkclBvcG92ZXJTZXJ2aWNlOiBEclBvcG92ZXJTZXJ2aWNlLFxuICAgICkge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclBvcG92ZXIoKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd1N0YXRlQ2hhbmdlLmVtaXQoeyBpc1Nob3duOiAhIXRoaXMucG9wb3ZlclJlZiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlUG9wb3ZlcihyZXM/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3ZlclJlZikge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKHJlcyk7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gKHRoaXMucG9wb3ZlclJlZiA9IHRoaXMuZHJQb3BvdmVyU2VydmljZS5vcGVuKHRoaXMuY29udGVudCwge1xuICAgICAgICAgICAgaG9zdFJlZjogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgb3ZlcmxheUNvbmZpZzogdGhpcy5vdmVybGF5Q29uZmlnLFxuICAgICAgICAgICAgY2xhc3M6IHRoaXMuY2xhc3MsXG4gICAgICAgICAgICBtYW51YWxDbG9zaW5nOiB0aGlzLm1hbnVhbENsb3NpbmcsXG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGNvbnRlbnRDb250ZXh0OiB0aGlzLmNvbnRlbnRDb250ZXh0LFxuICAgICAgICAgICAgYWxpZ25tZW50OiB0aGlzLmFsaWdubWVudCxcbiAgICAgICAgICAgIGZyZWV6ZVRvQ29udGFpbmVyU2VsZWN0b3I6IHRoaXMuZnJlZXplVG9Db250YWluZXJTZWxlY3RvcixcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvcG92ZXJSZWYub25DbG9zZS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2UuZW1pdChyZXMpO1xuICAgICAgICAgICAgdGhpcy5zaG93U3RhdGVDaGFuZ2UuZW1pdCh7IGlzU2hvd246ICEhdGhpcy5wb3BvdmVyUmVmIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBwb3BvdmVyUmVmLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3BvdmVyT3BlbmVkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZC5lbWl0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgIH1cbn1cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItcG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1wb3BvdmVyL2RyLXBvcG92ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFPeEQsTUFBTSxPQUFPLGtCQUFrQjtJQTJCM0IsWUFDWSxVQUFzQixFQUN0QixnQkFBa0M7UUFEbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBMUJuQixtQkFBYyxHQUFlLEVBQWdCLENBQUM7UUFFN0MsYUFBUSxHQUFlLFFBQVEsQ0FBQztRQUVuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRUgsa0JBQWEsR0FBb0IsRUFBRSxDQUFDO1FBRXBDLGtCQUFhLEdBQTBCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBUWpFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV0QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQTREdkYsa0JBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLHFFQUFxRTtZQUNyRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN6QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFB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QUFDLGlCQUFpQjtZQUVXLGVBQWU7a0JBQWxELE1BQU07bUJBQUMsMEJBQTBCO1lBVWxDLGFBQWE7a0JBRFosWUFBWTttQkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbFBvc2l0aW9uIH0gZnJvbSAnLi8uLi9tb2RlbHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgRHJQb3BvdmVyUmVmIH0gZnJvbSAnLi9kci1wb3BvdmVyLXJlZic7XG5pbXBvcnQgeyBEclBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnLi9kci1wb3BvdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJQb3BvdmVyQWxpZ25tZW50LCBEclBvcG92ZXJDb25maWcsIElQb3BvdmVyTWFudWFsQ2xvc2luZyB9IGZyb20gJy4uL21vZGVscy9wb3BvdmVyJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZHJQb3BvdmVyXScsXG4gICAgZXhwb3J0QXM6ICdkclBvcG92ZXJJbnN0YW5jZScsXG59KVxuZXhwb3J0IGNsYXNzIERyUG9wb3ZlckRpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdkclBvcG92ZXInKSBjb250ZW50OiBUZW1wbGF0ZVJlZjxUPiB8IFR5cGU8VD47XG5cbiAgICBASW5wdXQoJ2RyUG9wb3ZlckNvbnRleHQnKSBjb250ZW50Q29udGV4dDogUGFydGlhbDxUPiA9IHt9IGFzIFBhcnRpYWw8VD47XG5cbiAgICBASW5wdXQoJ2RyUG9wb3ZlclBvc2l0aW9uJykgcG9zaXRpb246IEVsUG9zaXRpb24gPSAnYm90dG9tJztcblxuICAgIEBJbnB1dCgnZHJQb3BvdmVyQ2xhc3MnKSBjbGFzcyA9ICcnO1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJPdmVybGF5Q29uZmlnJykgb3ZlcmxheUNvbmZpZzogRHJQb3BvdmVyQ29uZmlnID0ge307XG5cbiAgICBASW5wdXQoJ2RyUG9wb3Zlck1hbnVhbENsb3NpbmcnKSBtYW51YWxDbG9zaW5nOiBJUG9wb3Zlck1hbnVhbENsb3NpbmcgPSB7IGVuYWJsZWQ6IGZhbHNlIH07XG5cbiAgICBASW5wdXQoJ2RyUG9wb3ZlckFsaWdubWVudCcpIGFsaWdubWVudDogRHJQb3BvdmVyQWxpZ25tZW50O1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJEaXNhYmxlZCcpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCdkclBvcG92ZXJGcmVlemVUb0NvbnRhaW5lclNlbGVjdG9yJykgZnJlZXplVG9Db250YWluZXJTZWxlY3Rvcjogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgnZHJQb3BvdmVyQ2xvc2UnKSBwb3BvdmVyQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoJ2RyUG9wb3Zlck9wZW5lZCcpIHBvcG92ZXJPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KCdkclBvcG92ZXJTaG93U3RhdGVDaGFuZ2UnKSBzaG93U3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXNTaG93bjogYm9vbGVhbiB9PigpO1xuXG4gICAgcHJpdmF0ZSBwb3BvdmVyUmVmOiBEclBvcG92ZXJSZWY8VD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGRyUG9wb3ZlclNlcnZpY2U6IERyUG9wb3ZlclNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHRvZ2dsZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMucG9wb3ZlclJlZikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5zaG93U3RhdGVDaGFuZ2UuZW1pdCh7IGlzU2hvd246ICEhdGhpcy5wb3BvdmVyUmVmIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VQb3BvdmVyKHJlcz86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UocmVzKTtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZiA9IG51bGw7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gKHRoaXMucG9wb3ZlclJlZiA9IHRoaXMuZHJQb3BvdmVyU2VydmljZS5vcGVuKHRoaXMuY29udGVudCwge1xuICAgICAgICAgICAgaG9zdFJlZjogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgb3ZlcmxheUNvbmZpZzogdGhpcy5vdmVybGF5Q29uZmlnLFxuICAgICAgICAgICAgY2xhc3M6IHRoaXMuY2xhc3MsXG4gICAgICAgICAgICBtYW51YWxDbG9zaW5nOiB0aGlzLm1hbnVhbENsb3NpbmcsXG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGNvbnRlbnRDb250ZXh0OiB0aGlzLmNvbnRlbnRDb250ZXh0LFxuICAgICAgICAgICAgYWxpZ25tZW50OiB0aGlzLmFsaWdubWVudCxcbiAgICAgICAgICAgIGZyZWV6ZVRvQ29udGFpbmVyU2VsZWN0b3I6IHRoaXMuZnJlZXplVG9Db250YWluZXJTZWxlY3RvcixcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvcG92ZXJSZWYub25DbG9zZS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2UuZW1pdChyZXMpO1xuICAgICAgICAgICAgdGhpcy5zaG93U3RhdGVDaGFuZ2UuZW1pdCh7IGlzU2hvd246ICEhdGhpcy5wb3BvdmVyUmVmIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBwb3BvdmVyUmVmLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3BvdmVyT3BlbmVkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZC5lbWl0KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5tYW51YWxDbG9zaW5nPy5lbmFibGVkICYmICF0aGlzLmZyZWV6ZVRvQ29udGFpbmVyU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMuc2Nyb2xsSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgLy8gRmluZCB0aGUgbmVhcmVzdCBzY3JvbGxhYmxlIHBhcmVudCBmb3Igd2hpY2ggc2Nyb2xsaW5nIGlzIHBvc3NpYmxlXG4gICAgICAgIGNvbnN0IGlzVmVydGljYWxTY3JvbGwgPSAhZXZlbnQuc2hpZnRLZXk7XG4gICAgICAgIGNvbnN0IHNjcm9sbGFibGVFbGVtZW50ID0gdGhpcy5nZXRTY3JvbGxhYmxlRWxlbWVudChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGlzVmVydGljYWxTY3JvbGwpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHNjcm9sbCBwb3NzaWJsZSBhbmQgaG9zdCBlbGVtZW50IHBsYWNlcyBpbnNpZGUgc2Nyb2xsYWJsZSBlbGVtZW50XG4gICAgICAgIGlmIChzY3JvbGxhYmxlRWxlbWVudCAmJiBzY3JvbGxhYmxlRWxlbWVudC5jb250YWlucyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0U2Nyb2xsYWJsZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLCBpc1ZlcnRpY2FsU2Nyb2xsKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgd2hpbGUgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gaXNWZXJ0aWNhbFNjcm9sbFxuICAgICAgICAgICAgICAgID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkub3ZlcmZsb3dZXG4gICAgICAgICAgICAgICAgOiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5vdmVyZmxvd1g7XG4gICAgICAgICAgICBjb25zdCBpc1Njcm9sbGFibGUgPVxuICAgICAgICAgICAgICAgIFsnYXV0bycsICdzY3JvbGwnXS5pbmNsdWRlcyhvdmVyZmxvdykgJiZcbiAgICAgICAgICAgICAgICAoaXNWZXJ0aWNhbFNjcm9sbCA/IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZWxlbWVudC5jbGllbnRIZWlnaHQgOiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aCk7XG5cbiAgICAgICAgICAgIGlmIChpc1Njcm9sbGFibGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
@@ -8248,6 +8248,15 @@ class DrPopoverDirective {
8248
8248
  this.popoverClose = new EventEmitter();
8249
8249
  this.popoverOpened = new EventEmitter();
8250
8250
  this.showStateChange = new EventEmitter();
8251
+ this.scrollHandler = (event) => {
8252
+ // Find the nearest scrollable parent for which scrolling is possible
8253
+ const isVerticalScroll = !event.shiftKey;
8254
+ const scrollableElement = this.getScrollableElement(event.target, isVerticalScroll);
8255
+ // Check if scroll possible and host element places inside scrollable element
8256
+ if (scrollableElement && scrollableElement.contains(this.elementRef.nativeElement)) {
8257
+ this.closePopover();
8258
+ }
8259
+ };
8251
8260
  }
8252
8261
  togglePopover() {
8253
8262
  if (this.disabled)
@@ -8264,6 +8273,7 @@ class DrPopoverDirective {
8264
8273
  if (this.popoverRef) {
8265
8274
  this.popoverRef.close(res);
8266
8275
  this.popoverRef = null;
8276
+ window.removeEventListener('wheel', this.scrollHandler);
8267
8277
  }
8268
8278
  }
8269
8279
  renderPopover() {
@@ -8285,10 +8295,27 @@ class DrPopoverDirective {
8285
8295
  popoverRef.componentRef.instance.popoverOpened.pipe(first()).subscribe(() => {
8286
8296
  this.popoverOpened.emit();
8287
8297
  });
8298
+ if (!this.manualClosing?.enabled && !this.freezeToContainerSelector) {
8299
+ window.addEventListener('wheel', this.scrollHandler);
8300
+ }
8288
8301
  }
8289
8302
  ngOnDestroy() {
8290
8303
  this.closePopover();
8291
8304
  }
8305
+ getScrollableElement(element, isVerticalScroll) {
8306
+ while (element) {
8307
+ const overflow = isVerticalScroll
8308
+ ? window.getComputedStyle(element).overflowY
8309
+ : window.getComputedStyle(element).overflowX;
8310
+ const isScrollable = ['auto', 'scroll'].includes(overflow) &&
8311
+ (isVerticalScroll ? element.scrollHeight > element.clientHeight : element.scrollWidth > element.clientWidth);
8312
+ if (isScrollable) {
8313
+ return element;
8314
+ }
8315
+ element = element.parentElement;
8316
+ }
8317
+ return null;
8318
+ }
8292
8319
  /** @nocollapse */ static { this.ɵfac = function DrPopoverDirective_Factory(t) { return new (t || DrPopoverDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DrPopoverService)); }; }
8293
8320
  /** @nocollapse */ static { this.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DrPopoverDirective, selectors: [["", "drPopover", ""]], hostBindings: function DrPopoverDirective_HostBindings(rf, ctx) { if (rf & 1) {
8294
8321
  i0.ɵɵlistener("click", function DrPopoverDirective_click_HostBindingHandler() { return ctx.togglePopover(); });