Skip to content

Commit 59ceee7

Browse files
committed
feat: add tooltip position appear below
fix: add type string literal for tooltipPosition Update Readme Revert to previous Readme
1 parent a07a9bf commit 59ceee7

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/demo/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const App = () => (
88
style={{ display: "flex", alignItems: "center", flexDirection: "column" }}
99
>
1010
<h1 style={{ marginBottom: "50px" }}>Copy email address to clipboard</h1>
11-
<CopyMailTo email="[email protected]" />
11+
<CopyMailTo email="[email protected]" tooltipPosition="below" />
1212
</div>
1313
);
1414

src/lib/index.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import React, { MouseEvent } from "react";
22

3+
type TooltipPosition = "above" | "below";
4+
35
const 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

4951
const 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

Comments
 (0)