A smart popover component with animation support for ReactJS
React-awesome-popover
A smart popover component with animation support for ReactJS.
Installation
via NPM
npm i react-awesome-popover
via Yarn
yarn add react-awesome-popover
via CDN (unpkg)
https://unpkg.com/react-awesome-popover@latest/dest/react-awesome-popover.js
UMD library exposed as ReactAwesomePopover
const Popover = ReactAwesomePopover;
Do not forget to use the stylesheet.
import "react-awesome-popover/dest/react-awesome-popover.css";
Example
ReactDOM.render(
<Popover>
<button>The Target</button>
<div>The content</div>
</Popover>,
document.body
);
The component supports server-side rendering
You can also use nested popovers
ReactDOM.render(
<Popover>
<button>The Target</button>
<div>
...
<Popover>
<button>The Target</button>
<div>
...
<Popover>
<button>The Target</button>
<div>The content</div>
</Popover>
...
</div>
</Popover>
...
</div>
</Popover>,
document.body
);
+With react-motion
Set the Motion property to True. Second child becomes a function, It returns the id, popperProps and Arrow.
You need to combine Popper style with motion style
<Popover motion>
<button>Click</button>
{(popperProps, Arrow) => (
<Motion defaultStyle={{ rotateY: 90 }} style={{ rotateY: spring(0) }}>
{({ rotateY }) => {
var motionStyle = {
transform: `${popperProps.style.transform} rotateY(${rotateY}deg)`
};
return (
<div
{...popperProps}
style={{ ...popperProps.style, ...motionStyle }}
>
<h1>React-motion!</h1>
{Arrow}
</div>
);
}}
</Motion>
)}
</Popover>
You can also use as a tooltip.
Very simple!.
ReactDOM.render(
<Popover>
<button>The Target</button>
<div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus
error laudantium incidunt vitae dignissimos praesentium nesciunt,
<Popover action="hover" placement="top">
<b>pariatur provident natus</b>
<div>Wow man</div>
</Popover>
aperiam, corporis, quo libero sapiente recusandae! Distinctio deserunt
dolor sequi, i
</div>
</Popover>,
document.getElementById("app")
);
Props
Prop | Type | Description |
---|---|---|
arrow | Boolean | If False, the arrow is removed |
placement | String | The placement of the popover. Read more.The default value is auto |
targetClass | String | The name of the target class |
contentClass | String | The name of the content class |
arrowClass | String | The name of the arrow class |
action | String | click or hover.The default value is click |
defaultIsOpen | Boolean | Initial opened state when uncontrolled |
onOpen | Function | Callback invoked when the popover opens after it is added to the DOM. |
onClose | Function | Callback invoked when a popover begins to close. |
customArrow | JSX | Returns a custom arrow |
motion | Boolean | Allows react-motion |
modifiers | Object | Allow passing Popper modifiers as props. |
open | Boolean | Whether the popover is visible. Passing this prop puts the popover in controlled mode.To make the popover completely manageable, you must pass the null value to the action prop |
touch | Boolean | The touch event will be triggered instead of the click event |
arrowFill | String | Fill color of the arrow |