Skip to content

Commit d8e4b21

Browse files
Introduce docz into the project for dev and testing purposes
1 parent 471c4a3 commit d8e4b21

File tree

6 files changed

+190
-6
lines changed

6 files changed

+190
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ npm-debug.log
88
node_modules
99
lib
1010
dist
11+
.docz

docs/examples/basic.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React from 'react';
2+
import TooltipTrigger from '../../src/index';
3+
import '../../src/styles.css';
4+
5+
const Tooltip = ({ tooltip, children, ...props }) => (
6+
<TooltipTrigger
7+
{...props}
8+
tooltip={({
9+
getTooltipProps,
10+
getArrowProps,
11+
tooltipRef,
12+
arrowRef,
13+
placement
14+
}) => (
15+
<div
16+
{...getTooltipProps({
17+
ref: tooltipRef,
18+
className: 'tooltip-container'
19+
})}
20+
>
21+
<div
22+
{...getArrowProps({
23+
ref: arrowRef,
24+
'data-placement': placement,
25+
className: 'tooltip-arrow'
26+
})}
27+
/>
28+
{tooltip}
29+
</div>
30+
)}
31+
>
32+
{({ getTriggerProps, triggerRef }) => (
33+
<span
34+
{...getTriggerProps({
35+
ref: triggerRef
36+
})}
37+
>
38+
{children}
39+
</span>
40+
)}
41+
</TooltipTrigger>
42+
);
43+
44+
export default Tooltip;

docs/examples/externalState.js

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import React from 'react';
2+
import TooltipTrigger from '../../src/index';
3+
import '../../src/styles.css';
4+
5+
export const Tooltip = ({ handleTooltipState, tooltip, children, ...props }) => (
6+
<TooltipTrigger
7+
{...props}
8+
tooltip={({
9+
getTooltipProps,
10+
getArrowProps,
11+
tooltipRef,
12+
arrowRef,
13+
placement
14+
}) => (
15+
<TooltipEsc
16+
{...getTooltipProps({
17+
innerRef: tooltipRef,
18+
className: "tooltip-container",
19+
handleTooltipState
20+
})}
21+
>
22+
<div
23+
{...getArrowProps({
24+
ref: arrowRef,
25+
"data-placement": placement,
26+
className: "tooltip-arrow"
27+
})}
28+
/>
29+
{tooltip}
30+
</TooltipEsc>
31+
)}
32+
>
33+
{({ getTriggerProps, triggerRef }) => (
34+
<span
35+
{...getTriggerProps({
36+
ref: triggerRef,
37+
className: "trigger"
38+
})}
39+
>
40+
{children}
41+
</span>
42+
)}
43+
</TooltipTrigger>
44+
);
45+
46+
export class TooltipEsc extends React.Component {
47+
componentDidMount() {
48+
document.addEventListener("keydown", this._keyboardShortCutHandler);
49+
}
50+
51+
componentWillUnmount() {
52+
document.removeEventListener("keydown", this._keyboardShortCutHandler);
53+
}
54+
55+
_keyboardShortCutHandler = e => {
56+
if (e.defaultPrevented) {
57+
return;
58+
}
59+
if (e.key === "Escape" || e.keyCode === 27) {
60+
this.props.handleTooltipState(false);
61+
}
62+
};
63+
64+
render() {
65+
// filter out `handleTooltipState` handler
66+
const { innerRef, handleTooltipState, ...props } = this.props;
67+
return <div ref={innerRef} {...props} />;
68+
}
69+
}
70+
71+
export class Container extends React.Component {
72+
state = {
73+
on: false
74+
};
75+
76+
set = state => this.setState({ on: state });
77+
78+
render() {
79+
return this.props.children({
80+
on: this.state.on,
81+
set: this.set
82+
});
83+
}
84+
}

docs/readme.mdx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
name: Main
3+
route: /
4+
---
5+
6+
import { Playground, PropsTable } from 'docz';
7+
import BasicTooltip from './examples/Basic';
8+
import { Container, Tooltip, TooltipEsc } from './examples/externalState';
9+
10+
# react-popper-tooltip
11+
12+
The example files are in `docs/examples` directory.
13+
14+
## Basic example
15+
16+
<Playground>
17+
<BasicTooltip tooltip="Hello">Hover me</BasicTooltip>
18+
</Playground>
19+
20+
21+
## External state
22+
23+
`Container` is for demo purpose only and used for state management.
24+
25+
<Playground>
26+
<Container>
27+
{({ on, set }) => (
28+
<div>
29+
<button onClick={() => set(true)}>Show tooltip</button>
30+
<br /><br />
31+
<Tooltip
32+
trigger="click"
33+
tooltipShown={on}
34+
tooltip="Press ESC to close"
35+
onVisibilityChange={set}
36+
handleTooltipState={set}
37+
>
38+
Click me
39+
</Tooltip>
40+
</div>
41+
)}
42+
</Container>
43+
</Playground>

doczrc.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { css } from 'docz-plugin-css'
2+
3+
export default {
4+
title: 'react-popper-tooltip',
5+
description: 'Documentation',
6+
plugins: [
7+
css({
8+
preprocessor: 'postcss'
9+
})
10+
]
11+
};

package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"build": "npm run build:cjs; npm run build:esm; mkdir -p dist && cp src/styles.css dist",
2020
"build:cjs": "babel --delete-dir-on-start src -d lib/cjs",
2121
"build:esm": "babel --delete-dir-on-start --env-name esm src -d lib/esm",
22-
"prepare": "npm run build"
22+
"prepare": "npm run build",
23+
"docs": "docz dev"
2324
},
2425
"keywords": [
2526
"react",
@@ -34,10 +35,6 @@
3435
"browserslist": [
3536
"defaults"
3637
],
37-
"peerDependencies": {
38-
"react": "^16.3.0",
39-
"react-dom": "^16.3.0"
40-
},
4138
"dependencies": {
4239
"@babel/runtime": "^7.0.0",
4340
"react-popper": "^1.0.2"
@@ -49,6 +46,10 @@
4946
"@babel/plugin-transform-runtime": "^7.1.0",
5047
"@babel/preset-env": "^7.1.0",
5148
"@babel/preset-react": "^7.0.0",
52-
"prop-types": "^15.6.2"
49+
"docz": "^0.11.2",
50+
"docz-plugin-css": "^0.11.0",
51+
"prop-types": "^15.6.2",
52+
"react": "^16.3.0",
53+
"react-dom": "^16.3.0"
5354
}
5455
}

0 commit comments

Comments
 (0)