Skip to content

Commit ff969f6

Browse files
committed
add default tooltip and arrow styles to package
1 parent 202a414 commit ff969f6

File tree

5 files changed

+392
-359
lines changed

5 files changed

+392
-359
lines changed

README.md

+64
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,70 @@ render(
8282

8383
Read more about [render prop](https://cdb.reacttraining.com/use-a-render-prop-50de598f11ce) pattern if you're not familiar with this approach.
8484

85+
## Quick start
86+
87+
If you would like our opinionated container and arrow styles for your tooltip for quick start, you may import `react-popper-tooltip/dist/styles.css`, and use the classes `tooltip-container` and `tooltip-arrow` as follows:
88+
89+
### Tooltip.js
90+
91+
```jsx
92+
import React from 'react';
93+
import TooltipTrigger from 'react-popper-tooltip';
94+
import 'react-popper-tooltip/dist/styles.css';
95+
96+
const Tooltip = ({children, tooltip, hideArrow, ...props}) => (
97+
<TooltipTrigger
98+
{...props}
99+
tooltip={({
100+
arrowRef,
101+
tooltipRef,
102+
getArrowProps,
103+
getTooltipProps,
104+
placement
105+
}) => (
106+
<div
107+
{...getTooltipProps({
108+
ref: tooltipRef,
109+
className: 'tooltip-container'
110+
})}
111+
>
112+
{!hideArrow && (
113+
<div
114+
{...getArrowProps({
115+
ref: arrowRef,
116+
className: 'tooltip-arrow',
117+
'data-placement': placement
118+
})}
119+
/>
120+
)}
121+
{tooltip}
122+
</div>
123+
)}
124+
>
125+
{({getTriggerProps, triggerRef}) => (
126+
<span
127+
{...getTriggerProps({
128+
ref: triggerRef,
129+
className: 'trigger'
130+
})}
131+
>
132+
{children}
133+
</span>
134+
)}
135+
</TooltipTrigger>
136+
);
137+
138+
export default Tooltip;
139+
```
140+
141+
Then you can use it as shown in the example below.
142+
143+
```jsx
144+
<Tooltip placement="top" trigger="click" tooltip="Hi there!">
145+
Click me
146+
</Tooltip>
147+
```
148+
85149
## Examples
86150

87151
To fiddle with our example recipes, run:

docs/examples/BasicTooltipTrigger.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { memo } from 'react';
22
import TooltipTrigger from '../../src';
33
import { ChildrenArg, TooltipArg } from '../../src';
44
import { BasicTooltipTriggerProps } from './types';
5-
import styles from './styles.module.css';
5+
import '../../src/styles.css';
66

77
const modifiers = [
88
{
@@ -36,14 +36,14 @@ const Tooltip = (tooltip: React.ReactNode, hideArrow?: boolean) => ({
3636
}: TooltipArg) => (
3737
<div
3838
{...getTooltipProps({
39-
className: styles.tooltipContainer,
39+
className: 'tooltip-container',
4040
ref: tooltipRef,
4141
})}
4242
>
4343
{!hideArrow && (
4444
<div
4545
{...getArrowProps({
46-
className: styles.tooltipArrow,
46+
className: 'tooltip-arrow',
4747
'data-placement': placement,
4848
ref: arrowRef,
4949
})}

package.json

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-popper-tooltip",
3-
"version": "3.0.0",
3+
"version": "3.1.0",
44
"description": "React tooltip library built around react-popper",
55
"homepage": "https://react-popper-tooltip.netlify.app",
66
"repository": {
@@ -9,13 +9,16 @@
99
},
1010
"main": "dist/cjs/react-popper-tooltip.js",
1111
"module": "dist/esm/react-popper-tooltip.js",
12+
"style": "dist/styles.css",
1213
"typings": "dist/index.d.ts",
1314
"files": [
1415
"dist"
1516
],
16-
"sideEffects": false,
17+
"sideEffects": [
18+
"dist/styles.css"
19+
],
1720
"scripts": {
18-
"build": "rm -rf dist && rollup -c && yarn tsc && rm -rf compiled",
21+
"build": "rm -rf dist && rollup -c && cp src/styles.css dist && yarn tsc && rm -rf compiled",
1922
"prepublishOnly": "yarn typecheck && yarn lint && yarn build && yarn test",
2023
"prettier": "prettier --write src/**/*.{ts,tsx}",
2124
"docs": "docz dev",
@@ -62,14 +65,14 @@
6265
"@babel/preset-env": "^7.10.4",
6366
"@babel/preset-react": "^7.10.4",
6467
"@babel/preset-typescript": "^7.10.4",
65-
"@testing-library/react": "^10.4.3",
66-
"@types/jest": "^26.0.3",
67-
"@types/react": "^16.9.41",
68+
"@testing-library/react": "^10.4.5",
69+
"@types/jest": "^26.0.4",
70+
"@types/react": "^16.9.43",
6871
"@types/react-dom": "^16.9.8",
69-
"@typescript-eslint/eslint-plugin": "^3.5.0",
70-
"@typescript-eslint/parser": "^3.5.0",
72+
"@typescript-eslint/eslint-plugin": "^3.6.0",
73+
"@typescript-eslint/parser": "^3.6.0",
7174
"docz": "^2.3.1",
72-
"eslint": "^7.3.1",
75+
"eslint": "^7.4.0",
7376
"eslint-config-prettier": "^6.11.0",
7477
"eslint-plugin-prettier": "^3.1.4",
7578
"eslint-plugin-react": "^7.20.3",
@@ -79,7 +82,7 @@
7982
"prettier": "^2.0.5",
8083
"react": "^16.12.0",
8184
"react-dom": "^16.12.0",
82-
"rollup": "^2.18.2",
85+
"rollup": "^2.21.0",
8386
"rollup-plugin-babel": "^4.4.0",
8487
"rollup-plugin-node-resolve": "^5.2.0",
8588
"rollup-plugin-size-snapshot": "^0.12.0",

docs/examples/styles.module.css renamed to src/styles.css

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.tooltipContainer {
1+
.tooltip-container {
22
background-color: white;
33
border-radius: 3px;
44
border: 1px solid silver;
@@ -10,13 +10,13 @@
1010
z-index: 9999;
1111
}
1212

13-
.tooltipArrow {
13+
.tooltip-arrow {
1414
height: 1rem;
1515
position: absolute;
1616
width: 1rem;
1717
}
1818

19-
.tooltipArrow::before {
19+
.tooltip-arrow::before {
2020
border-style: solid;
2121
content: '';
2222
display: block;
@@ -25,7 +25,7 @@
2525
width: 0;
2626
}
2727

28-
.tooltipArrow::after {
28+
.tooltip-arrow::after {
2929
border-style: solid;
3030
content: '';
3131
display: block;
@@ -35,78 +35,78 @@
3535
width: 0;
3636
}
3737

38-
.tooltipArrow[data-placement*='bottom'] {
38+
.tooltip-arrow[data-placement*='bottom'] {
3939
height: 1rem;
4040
left: 0;
4141
margin-top: -0.4rem;
4242
top: 0;
4343
width: 1rem;
4444
}
4545

46-
.tooltipArrow[data-placement*='bottom']::before {
46+
.tooltip-arrow[data-placement*='bottom']::before {
4747
border-color: transparent transparent silver transparent;
4848
border-width: 0 0.5rem 0.4rem 0.5rem;
4949
position: absolute;
5050
top: -1px;
5151
}
5252

53-
.tooltipArrow[data-placement*='bottom']::after {
53+
.tooltip-arrow[data-placement*='bottom']::after {
5454
border-color: transparent transparent white transparent;
5555
border-width: 0 0.5rem 0.4rem 0.5rem;
5656
}
5757

58-
.tooltipArrow[data-placement*='top'] {
58+
.tooltip-arrow[data-placement*='top'] {
5959
bottom: 0;
6060
height: 1rem;
6161
left: 0;
6262
margin-bottom: -1rem;
6363
width: 1rem;
6464
}
6565

66-
.tooltipArrow[data-placement*='top']::before {
66+
.tooltip-arrow[data-placement*='top']::before {
6767
border-color: silver transparent transparent transparent;
6868
border-width: 0.4rem 0.5rem 0 0.5rem;
6969
position: absolute;
7070
top: 1px;
7171
}
7272

73-
.tooltipArrow[data-placement*='top']::after {
73+
.tooltip-arrow[data-placement*='top']::after {
7474
border-color: white transparent transparent transparent;
7575
border-width: 0.4rem 0.5rem 0 0.5rem;
7676
}
7777

78-
.tooltipArrow[data-placement*='right'] {
78+
.tooltip-arrow[data-placement*='right'] {
7979
height: 1rem;
8080
left: 0;
8181
margin-left: -0.7rem;
8282
width: 1rem;
8383
}
8484

85-
.tooltipArrow[data-placement*='right']::before {
85+
.tooltip-arrow[data-placement*='right']::before {
8686
border-color: transparent silver transparent transparent;
8787
border-width: 0.5rem 0.4rem 0.5rem 0;
8888
}
8989

90-
.tooltipArrow[data-placement*='right']::after {
90+
.tooltip-arrow[data-placement*='right']::after {
9191
border-color: transparent white transparent transparent;
9292
border-width: 0.5rem 0.4rem 0.5rem 0;
9393
left: 6px;
9494
top: 0;
9595
}
9696

97-
.tooltipArrow[data-placement*='left'] {
97+
.tooltip-arrow[data-placement*='left'] {
9898
height: 1rem;
9999
margin-right: -0.7rem;
100100
right: 0;
101101
width: 1rem;
102102
}
103103

104-
.tooltipArrow[data-placement*='left']::before {
104+
.tooltip-arrow[data-placement*='left']::before {
105105
border-color: transparent transparent transparent silver;
106106
border-width: 0.5rem 0 0.5rem 0.4em;
107107
}
108108

109-
.tooltipArrow[data-placement*='left']::after {
109+
.tooltip-arrow[data-placement*='left']::after {
110110
border-color: transparent transparent transparent white;
111111
border-width: 0.5rem 0 0.5rem 0.4em;
112112
left: 3px;

0 commit comments

Comments
 (0)