Skip to content

Commit 9a46817

Browse files
authored
Merge pull request #12 from mohsinulhaq/add-docz
Add docz
2 parents b08944d + 869560c commit 9a46817

File tree

9 files changed

+170
-3285
lines changed

9 files changed

+170
-3285
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
.DS_Store
66
.idea
77
npm-debug.log
8+
yarn-error.log
89
node_modules
10+
package-lock.json
911
lib
1012
dist
13+
.docz

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ render(
4747
/* your props here */
4848
})}
4949
/>
50-
<div className="tooltip-body">Hello, World!</div>
50+
Hello, World!
5151
</div>
5252
)}
5353
>
@@ -131,6 +131,14 @@ Then you can use it as shown in the example below.
131131
<Tooltip placement="top" trigger="click" tooltip="Hi there!">Click me</Tooltip>
132132
```
133133

134+
## Examples
135+
To fiddle with our example recipes, run:
136+
```
137+
> npm install
138+
> npm run docs
139+
```
140+
and open up [localhost:3000](http://localhost:3000) in your browser.
141+
134142
## Props
135143

136144
### children
@@ -158,7 +166,7 @@ This is the initial visibility state of the tooltip.
158166

159167
> `function(tooltipShown: boolean)`
160168
161-
Called when the visibility of the tooltip changes. `tooltipShown` is a new state.
169+
Called with the tooltip state, when the visibility of the tooltip changes
162170

163171
### tooltipShown
164172

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';
3+
import '../../src/styles.css';
4+
5+
const BasicTooltipTrigger = ({ tooltip, children, ...props }) => (
6+
<TooltipTrigger
7+
{...props}
8+
tooltip={({
9+
getTooltipProps,
10+
getArrowProps,
11+
tooltipRef,
12+
arrowRef,
13+
placement
14+
}) => (
15+
<span
16+
{...getTooltipProps({
17+
ref: tooltipRef,
18+
className: 'tooltip-container'
19+
})}
20+
>
21+
<span
22+
{...getArrowProps({
23+
ref: arrowRef,
24+
'data-placement': placement,
25+
className: 'tooltip-arrow'
26+
})}
27+
/>
28+
{tooltip}
29+
</span>
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 BasicTooltipTrigger;

docs/examples/EscapeToClose.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React from 'react';
2+
3+
export default class EscapeToClose extends React.Component {
4+
componentDidMount() {
5+
document.addEventListener('keydown', this._handleKeyDown);
6+
}
7+
componentWillUnmount() {
8+
document.removeEventListener('keydown', this._handleKeyDown);
9+
}
10+
_handleKeyDown = ({ key }) => {
11+
if (key === 'Escape') {
12+
this.props.closeTooltip();
13+
}
14+
};
15+
render() {
16+
return this.props.children;
17+
}
18+
}

docs/examples/utils.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react';
2+
3+
export class StateContainer extends React.Component {
4+
state = {
5+
on: false
6+
};
7+
8+
set = on => this.setState({on});
9+
10+
toggle = () => this.setState(prevState => ({ on: !prevState.on }));
11+
12+
render() {
13+
return this.props.children({
14+
on: this.state.on,
15+
set: this.set,
16+
toggle: this.toggle
17+
});
18+
}
19+
}

docs/readme.mdx

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
name: TooltipTrigger
3+
route: /
4+
---
5+
6+
import { Playground, PropsTable } from 'docz';
7+
import BasicTooltipTrigger from './examples/BasicTooltipTrigger';
8+
import EscapeToClose from './examples/EscapeToClose';
9+
import {StateContainer} from './examples/utils';
10+
11+
# TooltipTrigger
12+
13+
The example files are in `docs/examples` directory.
14+
15+
## Basic example
16+
17+
<Playground>
18+
<BasicTooltipTrigger tooltip="Hello, World!">Hover over me</BasicTooltipTrigger>
19+
</Playground>
20+
21+
22+
## Controlled
23+
24+
<Playground>
25+
<StateContainer>
26+
{({ on, set, toggle }) => (
27+
<div>
28+
<button onClick={toggle}>Toggle tooltip</button>
29+
<br /><br />
30+
<BasicTooltipTrigger
31+
trigger="none"
32+
tooltipShown={on}
33+
onVisibilityChange={set}
34+
tooltip="Hello, Controlled!"
35+
>
36+
I am state controlled!
37+
</BasicTooltipTrigger>
38+
</div>
39+
)}
40+
</StateContainer>
41+
</Playground>
42+
43+
44+
## Escape to close
45+
46+
<Playground>
47+
<StateContainer>
48+
{({ on, set }) => (
49+
<BasicTooltipTrigger
50+
trigger="click"
51+
tooltipShown={on}
52+
onVisibilityChange={set}
53+
tooltip={<EscapeToClose closeTooltip={() => set(false)}>Press Esc to Close</EscapeToClose>}
54+
>
55+
Click Here
56+
</BasicTooltipTrigger>
57+
)}
58+
</StateContainer>
59+
</Playground>
60+
61+
Note: `StateContainer` is for demo purpose only and used for state management.

doczrc.js

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

0 commit comments

Comments
 (0)