React-awesome-popover

A smart popover component with animation support for ReactJS.

Installation


via NPM

npm i react-awesome-popover
Code

via Yarn

yarn add react-awesome-popover
Code

via CDN (unpkg)

https://unpkg.com/react-awesome-popover@latest/dest/react-awesome-popover.js
Code

UMD library exposed as ReactAwesomePopover

const Popover = ReactAwesomePopover;
Js

Do not forget to use the stylesheet.

import "react-awesome-popover/dest/react-awesome-popover.css";
Js

Example

ReactDOM.render(
  <Popover>
    <button>The Target</button>
    <div>The content</div>
  </Popover>,
  document.body
);
React JSX

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
);
React JSX

+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>
React JSX

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")
);
React JSX

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

GitHub

A smart popover component with animation support for ReactJSRead More

Latest commit to the master branch on 1-7-2023
Download as zip