diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html index b1c8515d5..5c1eb6864 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html @@ -17,7 +17,7 @@ - + {{doc.created_date | customDate}} {{doc.title | documentTitle}} @@ -30,13 +30,13 @@
+ autoClose="true" popoverClass="shadow popover-preview" container="body" (mouseenter)="mouseEnterPreviewButton(doc)" (mouseleave)="mouseLeavePreviewButton()" #popover="ngbPopover"> - + diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts index 94434673e..84d1fb654 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts @@ -139,15 +139,18 @@ describe('SavedViewWidgetComponent', () => { ) component.ngOnInit() fixture.detectChanges() - component.mouseEnterPreview(documentResults[0]) + component.mouseEnterPreviewButton(documentResults[0]) expect(component.popover.isOpen()).toBeTruthy() expect(component.popoverHidden).toBeTruthy() tick(600) expect(component.popoverHidden).toBeFalsy() - component.mouseLeaveCard() + component.maybeClosePopover() - component.mouseEnterPreview(documentResults[1]) + component.mouseEnterPreviewButton(documentResults[1]) tick(100) + component.mouseLeavePreviewButton() + component.mouseEnterPreview() + expect(component.popover.isOpen()).toBeTruthy() component.mouseLeavePreview() tick(600) expect(component.popover.isOpen()).toBeFalsy() diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts index 39dec7e35..601d9384e 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts @@ -118,8 +118,11 @@ export class SavedViewWidgetComponent return this.documentService.getDownloadUrl(document.id) } - mouseEnterPreview(doc: PaperlessDocument) { - this.popover = this.popovers.get(this.documents.indexOf(doc)) + mouseEnterPreviewButton(doc: PaperlessDocument) { + const newPopover = this.popovers.get(this.documents.indexOf(doc)) + if (this.popover !== newPopover && this.popover?.isOpen()) + this.popover.close() + this.popover = newPopover this.mouseOnPreview = true if (!this.popover.isOpen()) { // we're going to open but hide to pre-load content during hover delay @@ -136,14 +139,24 @@ export class SavedViewWidgetComponent } } - mouseLeavePreview() { - this.mouseOnPreview = false + mouseEnterPreview() { + this.mouseOnPreview = true } - mouseLeaveCard() { - console.log('leave card') + mouseLeavePreview() { + this.mouseOnPreview = false + this.maybeClosePopover() + } - this.popover?.close() + mouseLeavePreviewButton() { + this.mouseOnPreview = false + this.maybeClosePopover() + } + + maybeClosePopover() { + setTimeout(() => { + if (!this.mouseOnPreview) this.popover?.close() + }, 300) } getCorrespondentQueryParams(correspondentId: number): Params {