/reactour

Tourist Guide into your React Components

Primary LanguageJavaScript

Reactour

Tourist Guide into your React Components

Install

npm i -S reactour

Initialize

Add the Tour Component in your Application:

import Tour from 'reactour'

class App extends Component {
  // ...
  
  render  (
    <div>
      { /* other stuff */}
      <Tour 
        steps={steps}
        isOpen={this.state.isTourOpen}
        onRequestClose={this.closeTour} />
    </div>
  )
}

const steps = [
  {
    selector: '.first-step', 
    content: 'This is my first Step',
  },
  // ...
]

PropTypes

Prop Desc Type Default Is Required
className Custom class to add to the helper string
closeWithMask Close clicking the mask bool true
inViewThreshold Scroll element to show when is outiside viewport adding this threshold value number
isOpen you know… bool
lastStepNextButton Change Next button in last step into a custom button to close the Tour string
maskClassName Custom class to add to the mask string
maskSpace padding between elemente showed and mask number 10
nextButton next navigation button text string Next
onAfterOpen function triggered after open func () => { document.body.style.overflowY = 'hidden' }
onBeforeClose function triggered before close func () => { document.body.style.overflowY = 'auto' }
onRequestClose function triggered to close func
prevButton prev navigation button text string Prev
scrollDuration Smooth scroll duration when positioning the target element number 1
scrollOffset Offset when positioning the target element number calculates the vertical center of the page
showButtons Show helper navigation butons bool true
showNavigation Show helper navigation dots bool true
showNumber Show helper number badge bool true
startAt Starting step each time the Tour is open number
steps Array of steps with info and props [view bellow]
update Value to listen if a forced update is needed string
updateDelay Delay time when forcing update. Useful when there are known animation/transitions number 1
steps: PropTypes.arrayOf(PropTypes.shape({
  'selector': PropTypes.string.isRequired,
  'content': PropTypes.oneOfType([
    PropTypes.node,
    PropTypes.element,
    PropTypes.func,
  ]).isRequired,
  'position': PropTypes.string,
  'action': PropTypes.func,
  'style': PropTypes.object,
})),

Steps example

const steps = [
  {
    selector: '[data-tour="my-first-step"]',
    content: ({ goTo, inDOM }) => (
      <div>
        Lorem ipsum <button onClick={() => goTo(4)}>Got to Step 5</button>
        <br />{ inDOM && '🎉 Look at your step!'}
      </div>
    ),
    position: 'top',
    action: node => {
      node.focus()
      console.log('yup, the target element is also focused!')
    },
    style: {
      backgroundColor: '#bada55',
    },
  },
  // ...
]