React chained modals ![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)
![React version](https://img.shields.io/badge/react-v16.2.0-%2361dafb.svg)
Allow you to add few chained modals or just single popup in your react app. Easy to use and customizing. Check the demo page
![screencast-amodin github io-2018 12 09-21-00-37](https://user-images.githubusercontent.com/15379788/49700916-308eed80-fbf6-11e8-8139-5465910de808.gif)
Getting Started
Installation
Get the package from npm
npm i react-chained-modals
Usage
Import:
import ChainedModal from "react-chained-modals";
import "react-chained-modals/src/modal.css"
import "animate.css"
then place:
<ChainedModal
animationNext="fadeInRight"
animationPrev="fadeInLeft"
visible={this.state.showModal}
onRequestClose={this.toggleModal}
closeOnBackground
animationSpeed="faster"
elements={[
{
component: Modal1,
props: { title: "First modal" }
},
{
component: Modal2,
props: { title: "Second modal" }
},
{
component: Modal3,
props: { title: "Third modal" }
}
]}
/>
Methods and options
Name | Type | Description | Default |
---|
animationNext | string | Transition animation on showNext method call. View full list here Animate.css. This method will call also on popup first view. | none |
animationPrev | string | Transition animation on showPrev method call. View full list here Animate.css | none |
visible | bool | Is modals visible. Options: true, false | false |
onRequestClose | function | Method that should set visible to false | |
closeOnBackground | bool | Should popup close on click at background. Options: true, false | false |
animationSpeed | string | Define it if you want to change the animation speed. Options: "slow", "slower", "fast", "faster" | none |
elements | array | Each item in the array should have the component that will show and optional parameter props which put all 'props' you want to use in this component | none |
Methods and options for each modal
In each component, that you added in elements
you can get next next properties and methods from props:
Name | Type | Description |
---|
closeChainedModal | function | The onRequestClose function will be called |
totalModals | number | Number of modals, length of array |
showNext | function | Show next modal function |
showPrev | function | Show prev modal function |
currentModal | number | Current modal, index in array |
Example of Modal1 component:
const Modal1 = props => {
return (
<div>
{props.title} {props.currentModal}
<div>{props.totalModals}</div>
<div>
<span onClick={props.showPrev()}>Go prev </span>
<span onClick={props.showNext()}>Go next</span>
</div>
<button onClick={() => props.closeChainedModal()}>close modal</button>
</div>
);
};
Customizing:
Just replace your styles with styles from the module
Built With