Skip to content

mvanlonden/react-selection-popover

Repository files navigation

react-selection-popover

Popover menu for selected text

Getting started

Add the SelectionPopover component as a sibling of the element that contains the selectable text. Add the data-selectable attribute to the element that contains the selectable text. Make sure the common parent has its position set to relative.

Add any children and props (including styling) to SelectionPopover.

import React from 'react';
import SelectionPopover from 'react-selection-popover'

export default class Demo extends React.Component {
  render() {
    state = {
      showPopover: false
    }
    return (
      <div style={{
        position: 'relative'
      }}>
        <div data-selectable>
          <p>
            This is the first selectable paragraph. Looking pretty good.
          </p>
          <p>
            Lorem ipsum dolor sit amet, consectetur adipisicing.
          </p>
        </div>
        <SelectionPopover
          showPopover={this.state.showPopover}
          onSelect={() => {this.setState({showPopover: true})}}
          onDeselect={() => {this.setState({showPopover: false})}}
        >
          <button>save</button>
          <button>share</button>
        </SelectionPopover>
      </div>
    )
  }
}

Props

prop description type required
topOffset distance from selection and top of box (default 30px) integer false
style any ole style prop object false
onTextDeselect fired when text selection is cleared function true
onTextSelect fired when text is selected function<selectedText: string> true
showPopover shows or hides the popover boolean true

You can pass any other div compatible props

Contributing

Clone repo then

npm install
npm start

TODO

  • add tests
  • disable user selection for children of popover

License

react-selection-popover is available under MIT. See LICENSE for more details.

About

A medium like popover menu for selected text (no longer maintained)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published