react-modal

Accessible modal dialog component for React

Github stars Tracking Chart

react-modal

Accessible modal dialog component for React.JS

Build Status
Coverage Status
gzip size
Join the chat at https://gitter.im/react-modal/Lobby

Table of Contents

Installation

To install, you can use npm or yarn:

$ npm install react-modal
$ yarn add react-modal

API documentation

The primary documentation for react-modal is the
reference book, which describes the API
and gives examples of its usage.

Examples

Here is a simple example of react-modal being used in an app with some custom
styles and focusable input elements within the modal content:

import React from 'react';
import ReactDOM from 'react-dom';
import Modal from 'react-modal';

const customStyles = {
  content : {
    top                   : '50%',
    left                  : '50%',
    right                 : 'auto',
    bottom                : 'auto',
    marginRight           : '-50%',
    transform             : 'translate(-50%, -50%)'
  }
};

// Make sure to bind modal to your appElement (http://reactcommunity.org/react-modal/accessibility/)
Modal.setAppElement('#yourAppElement')

function App(){
  var subtitle;
  const [modalIsOpen,setIsOpen] = React.useState(false);
  function openModal() {
    setIsOpen(true);
  }

  function afterOpenModal() {
    // references are now sync'd and can be accessed.
    subtitle.style.color = '#f00';
  }

  function closeModal(){
    setIsOpen(false);
  }

    return (
      <div>
        <button onClick={openModal}>Open Modal</button>
        <Modal
          isOpen={modalIsOpen}
          onAfterOpen={afterOpenModal}
          onRequestClose={closeModal}
          style={customStyles}
          contentLabel="Example Modal"
        >

          <h2 ref={_subtitle => (subtitle = _subtitle)}>Hello</h2>
          <button onClick={closeModal}>close</button>
          <div>I am a modal</div>
          <form>
            <input />
            <button>tab navigation</button>
            <button>stays</button>
            <button>inside</button>
            <button>the modal</button>
          </form>
        </Modal>
      </div>
    );
}

ReactDOM.render(<App />, appElement);

You can find more examples in the examples directory, which you can run in a
local development server using npm start or yarn run start.

Demos

There are several demos hosted on CodePen which
demonstrate various features of react-modal:

Overview

Name With Ownerreactjs/react-modal
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 4)
Platform
License:MIT License
Release Count114
Last Release Namev3.16.1 (Posted on 2022-10-17 22:07:22)
First Release Namev0.0.0 (Posted on )
Created At2014-09-21 01:30:33
Pushed At2024-03-14 17:26:44
Last Commit At2024-02-11 21:29:07
Stargazers Count7.3k
Watchers Count65
Fork Count804
Commits Count576
Has Issues Enabled
Issues Count603
Issue Open Count160
Pull Requests Count269
Pull Requests Open Count38
Pull Requests Close Count127
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top