Guide menu for applications
onButtonClick: PropTypes.func, // Button onClick funtion inside Guider Content: onButtonClick={ () => console.log('clicked button')} onOpen: PropTypes.func, // Triggers when you click open button: onOpen={ () => console.log('clicked open button')} onClose: PropTypes.func, // Triggers when you click close button: onClose={ () => console.log('clicked close button')} text: PropTypes.string, // GuiderItem content text: text= 'This is a demo.' buttonLabel: PropTypes.string, // GuiterItem button bale: buttonLabel='next' left: PropTypes.string, // left style attribute of GuiderItem in document: left='25px' top: PropTypes.string, // top style attribute of GuiderItem in document: top='25px' bottom: PropTypes.string, // bottom style attribute of GuiderItem in document: bottom='25px' right: PropTypes.string, // right style attribute of GuiderItem in document: right='25px' isActive: PropTypes.bool, // state content of GuiderItem open or not: isActive={true} contentPositon: PropTypes.object // position of GuiderItem content: contentPositon={{top: '-50px',right: 'auto', bottom: 'auto',left: '-300px'}}
isOpen: PropTypes.bool, // state of Guider: isOpen={false} children: PropTypes.node
import React from 'react'; import ReactDOM from 'react-dom'; import { ReactGuider, ReactGuiderItem } from './lib/main'; require('./lib/react-guider.scss'); // // Render the main component into the dom class App extends React.Component { constructor(props) { super(props); this.state = { isGuideOpen: true, listOfItems: [ { top: '300px', left: '50px', buttonLabel: 'next', text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, unde!', onButtonClick: () => { this.setState({ activeElement: 2 }) } }, { top: '300px', left: '50%', right: '50%', buttonLabel: 'next', text: 'Lorem ipsum dolor sit amet, consectetur.', onButtonClick: () => { this.setState({ activeElement: 3 }) } }, { top: '100px', right: '60px', buttonLabel: 'next', text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa, excepturi.', contentPositon: { top: '-50px', right: 'auto', bottom: 'auto', left: '-300px' }, onButtonClick: () => { this.setState({ activeElement: 1 }) } }, { top: '500px', right: '50px', buttonLabel: 'finish', text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, autem.', contentPositon: { top: '-150px', right: 'auto', bottom: 'auto', left: '-300px' }, onButtonClick: () => { this.setState({ activeElement: -1, isGuideOpen: false }) } } ], activeElement: -1 } } _handleOnClose() { this.setState({ activeElement: -1 }); } _handleOnOpen(_index) { this.setState({ activeElement: _index }); } render() { const _s = this.state; return ( <div> { !_s.isGuideOpen && <button className="GuideExpandableItem__Content__Info__BlueContent__Button" onClick={() => this.setState({ isGuideOpen: true })}> Restart </button> } <ReactGuider isOpen={_s.isGuideOpen}> { _s.listOfItems.map((_item, _index) => { return ( <ReactGuiderItem key={'ReactGuiderItem--' + _index} buttonLabel={_item.buttonLabel} text={_item.text} top={_item.top} right={_item.right} left={_item.left} isActive={_index === _s.activeElement} onOpen={this._handleOnOpen.bind(this, _index)} onClose={this._handleOnClose.bind(this)} bottom={_item.bottom} contentPositon={_item.contentPositon} onButtonClick={_item.onButtonClick} /> ) }) } </ReactGuider> </div> ); } } if (module.hot) { module.hot.accept(); } ReactDOM.render(<App />, document.getElementById('app'));