From c8d3b78baa67d06431470fcd42e94836b01cf38d Mon Sep 17 00:00:00 2001 From: Lizzi Lindboe Date: Tue, 14 Sep 2021 15:02:50 -0700 Subject: [PATCH] Make Tooltip position-aware Add the `horizontalPosition` and `verticalPosition` props to the Tooltip component, so that custom Tooltip components can use that information for things like rendering custom arrows. --- README.md | 2 ++ src/components/CopilotModal.js | 8 ++++++++ src/components/Tooltip.js | 2 ++ 3 files changed, 12 insertions(+) diff --git a/README.md b/README.md index d8c39a78..f98a331e 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,8 @@ const TooltipComponent = ({ handlePrev, handleStop, currentStep, + horizontalPosition, + verticalPosition, }) => ( // ... ); diff --git a/src/components/CopilotModal.js b/src/components/CopilotModal.js index 2a824393..b4257aff 100644 --- a/src/components/CopilotModal.js +++ b/src/components/CopilotModal.js @@ -39,6 +39,8 @@ type State = { width: number, height: number, }, + tooltipHorizontalPosition: 'left' | 'right', + tooltipVerticalPosition: 'top' | 'bottom', }; const noop = () => {}; @@ -70,6 +72,8 @@ class CopilotModal extends Component { }, animated: false, containerVisible: false, + tooltipVerticalPosition: 'top', + tooltipHorizontalPosition: 'left', }; componentDidUpdate(prevProps: Props) { @@ -194,6 +198,8 @@ class CopilotModal extends Component { x: Math.floor(Math.max(obj.left, 0)), y: Math.floor(Math.max(obj.top, 0)), }, + tooltipHorizontalPosition: horizontalPosition, + tooltipVerticalPosition: verticalPosition, }); } @@ -293,6 +299,8 @@ class CopilotModal extends Component { handlePrev={this.handlePrev} handleStop={this.handleStop} labels={this.props.labels} + horizontalPosition={this.state.tooltipHorizontalPosition} + verticalPosition={this.state.tooltipVerticalPosition} /> , ]; diff --git a/src/components/Tooltip.js b/src/components/Tooltip.js index 6d75780c..65cba0d6 100644 --- a/src/components/Tooltip.js +++ b/src/components/Tooltip.js @@ -16,6 +16,8 @@ type Props = { handleStop: func, currentStep: Step, labels: Object, + horizontalPosition: 'left' | 'right', + verticalPosition: 'top' | 'bottom', }; const Tooltip = ({