11import React , { MouseEvent } from "react" ;
22
3+ type TooltipPosition = "above" | "below" ;
4+
35const copyToClipboard = ( str : string ) => {
46 const el = document . createElement ( "textarea" ) ; // Create a <textarea> element
57 el . value = str ; // Set its value to the string that you want copied
@@ -25,8 +27,8 @@ const containerBaseStyles: React.CSSProperties = {
2527 position : "relative" ,
2628} ;
2729
28- const tooltipBaseStyles : React . CSSProperties = {
29- bottom : "26px" ,
30+ const tooltipBaseStyles = ( tooltipPosition : string ) : React . CSSProperties => ( {
31+ [ tooltipPosition === "above" ? " bottom" : "top" ] : "26px" ,
3032 maxWidth : "fit-content" ,
3133 position : "absolute" ,
3234 width : "auto" ,
@@ -41,10 +43,10 @@ const tooltipBaseStyles: React.CSSProperties = {
4143 padding : "6px 8px" ,
4244 borderRadius : "5px" ,
4345 opacity : 0 ,
44- transform : " translateY(-5px)" ,
46+ transform : ` translateY(${ tooltipPosition === "above" ? " -5px" : "5px" } )` ,
4547 visibility : "hidden" ,
4648 transition : "all 0.2s ease-in-out" ,
47- } ;
49+ } ) ;
4850
4951const toolTipVisibleStyles : React . CSSProperties = {
5052 opacity : 1 ,
@@ -60,6 +62,7 @@ const CopyMailTo = ({
6062 containerStyles = { } ,
6163 tooltipStyles = { } ,
6264 anchorStyles = { } ,
65+ tooltipPosition = "above" ,
6366} : {
6467 email : string ;
6568 children ?: React . ReactNode ;
@@ -68,6 +71,7 @@ const CopyMailTo = ({
6871 containerStyles ?: React . CSSProperties ;
6972 tooltipStyles ?: React . CSSProperties ;
7073 anchorStyles ?: React . CSSProperties ;
74+ tooltipPosition ?: TooltipPosition ;
7175} ) : JSX . Element => {
7276 const [ showCopied , setShowCopied ] = React . useState ( false ) ;
7377 const [ showTooltip , setShowTooltip ] = React . useState ( false ) ;
@@ -101,10 +105,10 @@ const CopyMailTo = ({
101105 } ;
102106
103107 const allTooltipStyles = {
104- ...tooltipBaseStyles ,
105- ...tooltipStyles ,
106- ...( showTooltip && toolTipVisibleStyles ) ,
107- } ;
108+ ...tooltipBaseStyles ( tooltipPosition ) ,
109+ ...tooltipStyles ,
110+ ...( showTooltip && toolTipVisibleStyles ) ,
111+ } ;
108112
109113 return (
110114 < span style = { allContainerStyles } >
0 commit comments