File tree Expand file tree Collapse file tree 9 files changed +170
-3285
lines changed Expand file tree Collapse file tree 9 files changed +170
-3285
lines changed Original file line number Diff line number Diff line change 55.DS_Store
66.idea
77npm-debug.log
8+ yarn-error.log
89node_modules
10+ package-lock.json
911lib
1012dist
13+ .docz
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 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 ;
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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.
Original file line number Diff line number Diff line change 1+ import { css } from 'docz-plugin-css' ;
2+
3+ export default {
4+ title : 'react-popper-tooltip' ,
5+ description : 'Documentation' ,
6+ plugins : [ css ( ) ]
7+ } ;
You can’t perform that action at this time.
0 commit comments