Skip to content
This repository has been archived by the owner on Mar 14, 2024. It is now read-only.

Yet another modal dialog built on react but with a simpler api and supports react-style animations.

Notifications You must be signed in to change notification settings

elsewhencode/react-modal-component

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

React-modal-component

Yet another modal dialog built on react but with a simpler api and supports react-style animations. Inspired by https://github.com/rackt/react-modal.

Example Usage

.fade-appear {
  opacity: 0;
  transition: opacity .5s ease-in;
}

.fade-appear.fade-appear-active {
  opacity: 1;
}

.fade-leave {
  opacity: 1;
  transition: opacity .5s ease-in;
}

.fade-leave.fade-leave-active {
  opacity: 0;
}
var Modal = require('react-modal-component');

var Component = React.createClass({
  getInitialState: function() {
    return { showModal: false };
  },
  openModal: function() {
    this.setState({showModal: true});
  },
  closeModal: function() {
    this.setState({showModal: false});
  },
  render: function() {
    var node = null;

    if (this.state.showModal) {
      node = (
        <Modal transitionName='fade'>
          <h3>Plain old Modal</h3>
          <button onClick={this.closeModal}>Close Dialog</button>
        </Modal>
      )
    }

    return
      (
        <div>
         <button onClick={this.openModal}>Show Dialog</button>
         {node}
        </div>
      )
  }
});

Installation

npm install react-modal-component --save

optional :-

Use modal.css included in this repo derived from medium to support a responsive modal dialog.

API

Modal(props)

Type: React Component

Basic modal.

props.className

Class name for the modal. (default: .modal-dialog)

props.overlay

Class name for the overlay/backdrop. (default: .overlay)

props.appendTo

DOM node where the modal is appended. (default: document.body)

props.transitionName

Transition name to base the animation on.

props.close

Function to call to close the dialog. Required to support props closeOnEsc and closeOnOutsideClick.

props.closeOnEsc

Boolean value to support closing of dialog on Esc. (default: false)

props.closeOnOutsideClick

Boolean value to support closing of dialog on clicking outside the dialog. (default: false)

props.enterTimeout

(see below)

props.leaveTimeout

(see below)

Additional Information:

The CSSTransitionGroup component uses the transitionend event, which browsers will not send for any number of reasons, including the transitioning node not being painted or in an unfocused tab.

This component supports a variant of TimeoutTransitionGroup to define a user-defined timeout to determine when it is a good time to remove the component. Note:- It's modified to support enterTimeout for appear transition as well.

Todo

  • Support server rendering.

Example

To run the example:

npm install

npm run example

License

MIT

About

Yet another modal dialog built on react but with a simpler api and supports react-style animations.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 93.4%
  • CSS 6.6%