From 72b17f70cd0b763828cf5567569b9c00c98714cf Mon Sep 17 00:00:00 2001 From: Chandler Prall Date: Tue, 29 Jan 2019 12:01:06 -0700 Subject: [PATCH 1/2] Updated popover position to correctly address arrow buffer --- .../popover/popover_positioning.test.ts | 27 ++++++++++++++++--- src/services/popover/popover_positioning.ts | 2 -- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/services/popover/popover_positioning.test.ts b/src/services/popover/popover_positioning.test.ts index 5922386281e..374c34b1dfb 100644 --- a/src/services/popover/popover_positioning.test.ts +++ b/src/services/popover/popover_positioning.test.ts @@ -297,12 +297,33 @@ describe('popover_positioning', () => { offset: 10, arrowConfig: { arrowWidth: 5, arrowBuffer: 10 }, })).toEqual({ - fit: 0.63, + fit: 0.665, top: -15, - left: 35, + left: 37.5, arrow: { top: 50, - left: 12.5, + left: 10, + }, + }); + }); + + it('respects both popover & arrow buffers', () => { + expect(getPopoverScreenCoordinates({ + position: 'top', + anchorBoundingBox: makeBB(45, 55, 55, 45), + popoverBoundingBox: makeBB(0, 50, 50, 0), + windowBoundingBox: makeBB(0, 1024, 768, 0), + containerBoundingBox: makeBB(0, 1024, 768, 40), + offset: 10, + buffer: 15, + arrowConfig: { arrowWidth: 5, arrowBuffer: 10 }, + })).toEqual({ + fit: 0.26, + top: -15, + left: 37.5, + arrow: { + top: 50, + left: 10, }, }); }); diff --git a/src/services/popover/popover_positioning.ts b/src/services/popover/popover_positioning.ts index b0b933cd9e9..2158c7fff97 100644 --- a/src/services/popover/popover_positioning.ts +++ b/src/services/popover/popover_positioning.ts @@ -405,8 +405,6 @@ function getCrossAxisPosition({ const combinedBoundingBox = intersectBoundingBoxes(windowBoundingBox, containerBoundingBox); const availableSpace = getAvailableSpace(anchorBoundingBox, combinedBoundingBox, buffer, offset, position); const minimumSpace = arrowConfig ? arrowConfig.arrowBuffer : 0; - availableSpace[crossAxisFirstSide] = Math.max(availableSpace[crossAxisFirstSide], minimumSpace); - availableSpace[crossAxisSecondSide] = Math.max(availableSpace[crossAxisSecondSide], minimumSpace); const contentOverflowSize = (popoverSizeOnCrossAxis - anchorSizeOnCrossAxis) / 2; From e94550487dc3c1d4936d62cc065060179a895678 Mon Sep 17 00:00:00 2001 From: Chandler Prall Date: Tue, 29 Jan 2019 12:08:29 -0700 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96cfa584a36..61d3354ed35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ## [`master`](https://github.com/elastic/eui/tree/master) -No public interface changes since `6.7.3`. +**Bug fixes** + +- Fixed popover & tooltip positioning to properly account for arrow buffer ([#1490](https://github.com/elastic/eui/pull/1490)) ## [`6.7.3`](https://github.com/elastic/eui/tree/v6.7.3)