React pure modal - a simplest way to create dialog on your site
react-pure-modal
React pure modal is a simplest way to create dialog on your site.
React pure modal is a simplest way to create dialog on your site.
- Very small (less than 4Kb)
- Mobile friendly
- Without dependencies
Screencast
Simple
With inner scrolling
Installation
npm i -S react-pure-modal
Usage
import PureModal from 'react-pure-modal';
import 'react-pure-modal/dist/react-pure-modal.min.css';
<PureModal
header="Your header"
footer={<div><button>Cancel</button><button>Save</button></div>}
onClose={() => {
console.log('handle closing');
return true;
}}
isOpen
ref="modal"
>
<p>Your content</p>
</PureModal>
And open with
<button onClick={() => this.refs.modal.open() }>Open modal</button>
Options
replace PropTypes.bool
(default: false)
Replace all inner markup with Component children
isOpen: PropTypes.bool
Control modal state from parent component
scrollable: PropTypes.bool
(default: true)
You can disable scroll in modal body
draggable: PropTypes.bool
(default: false)
You can drag a modal window
onClose: PropTypes.func
Handle modal closing. Should return true if you allow closing
className: PropTypes.string
ClassName for modal DOM element, can be used for set modal width or change behaviour on mobile devices
width: PropTypes.string
(example '200px')
Width in pixels, em's, vw etc
header: PropTypes.oneOfType([ PropTypes.node, PropTypes.string ])
Modal heading, doesn't disabled close button
footer: PropTypes.oneOfType([ PropTypes.node, PropTypes.string ])
Place here your actions
Changelog (latest on top)
- Drag and drop
- fix bug in firefox and safari with modal position
- set width as atribute
- new default aligning to the screen center!
- prevent of modal closing if ESC pressed in editable element
- now with minified css!
- styles are more impressive now, good mobile support
- now scrollable can be false
- remove dependencies, rewrite open and close logic, fix linting
- new header logic and breaking classes changes
Developing
npm install
npm run webpack:dev -- --watch
npm run webpack:prod -- --watch
npm run test:dev
- Open
index.html
from examples