/react-popover

A specification backed popover for react

Primary LanguageJavaScriptMIT LicenseMIT

react-popover

Installation

npm install react-popover

Demo

There is a demo that you can see here. To run it locally do npm start.

API

export default Popover(props, target)
props : {…​}
props.body : Node | Array Node

The popover content. Content is rooted (becomes children of) .Popover-body and thus body can be a single node or an array of `nodes`.

props.isOpen : Boolean

Determines Whether or not the popover is rendered.

props.preferPlace : String | Null

Sets a preference of where to position the Popover. Only useful to specify placement in case of multiple available fits. Defaults to null. Valid values are:

  • above | right | bottom | left Prefer an explicit side.

  • row | column Prefer an orientation.

  • start | end Prefer an order.

  • null No preference, automatic resolution. This is the default.

props.place : String | Null

Like preferPlace except that the given place is a requirement. The resolver becomes scoped or disabled. It is scoped if the place is an orientation or order but disabled if it is a side. For example place: "row" scopes the resolver to above or below placement but place: "above" removes any need for the resolver.

props.onOuterAction : Function

A callback function executed every time the user does an action (mousedown or touchstart) outside the DOM tree of both Popover and Target. A canonical use-case is to automatically close the Popover on any external user action. * Plus support for standard props…​: className, style

props.refreshIntervalMs : Number | Falsey

The polling speed (AKA time between each poll) in milliseconds for checking if a layout refresh is required. This polling is required because it is the only robust way to track the position of a target in the DOM. Defaults to 200. Set to a falsey value to disable.

target : React Element
  • The React Element that this popover will orient itself around. target rendering tree is unaffected. Popover will become its owner.