UNPKG

@atis/react-bootstrap-modal

Version:

React Bootstrap Modal ===================================

119 lines (84 loc) 4.7 kB
React Bootstrap Modal =================================== Partly a port of [jschr's bootstrap modal](https://github.com/jschr/bootstrap-modal/). Reimplements the Twitter Bootstrap Modal component in a React friendly way. Based on the original work of the react-bootstrap team. __note__: React bootstrap modal is compatible with bootstrap __3.3.4+__ if you want to use it with an earlier version of bootstrap 3 you need to override the `.modal-backdrop` styles to be the most recent one. ## Features - Scoped focus - Stackable! (use with constraint) - Animated feedback when trying to close a "static" Modal - Straightforward API, no ModalTrigger or Overlay mixins to deal with ## Use ```js var Modal = require('react-bootstrap-modal') class ModalExample extends React.Component { render(){ let closeModal = () => this.setState({ open: false }) let saveAndClose = () => { api.saveData() .then(() => this.setState({ open: false })) } return ( <div> <button type='button'>Launch modal</button> <Modal show={this.state.open} onHide={closeModal} aria-labelledby="ModalHeader" > <Modal.Header closeButton> <Modal.Title id='ModalHeader'>A Title Goes here</Modal.Title> </Modal.Header> <Modal.Body> <p>Some Content here</p> </Modal.Body> <Modal.Footer> // If you don't have anything fancy to do you can use // the convenient `Dismiss` component, it will // trigger `onHide` when clicked <Modal.Dismiss className='btn btn-default'>Cancel</Modal.Dismiss> // Or you can create your own dismiss buttons <button className='btn btn-primary' onClick={saveAndClose}> Save </button> </Modal.Footer> </Modal> </div> ) } } React.render(<ModalExample />, document.body); ``` ### `Modal` The main Modal Component. #### Props - `show`: `Boolean(default false)` make the Modal visible or hidden - `backdrop`: `Enum<'static', true, false>(default true)` - Should the modal render a backdrop overlay. `"static"` backdrops are not dismissible by clicking the backdrop. - `keyboard`: `Boolean(default true)` Modal is dismissible via the `esc` key - `transition` `Boolean(default true)` Fade the entry and exit of the modal. You can also provide a Transition component from the `react-overlays` library to customize the animation more minutely. - `attentionClass`: `String(default 'shake')` - an animation class added to the modal when a "static" backdrop is clicked, set to nothing if no animation is desired - `container`: `Node(default document.body)`, a DOM Node to append the modal too - `onEnter`: handler fires right before the Modal animates in - `onEntering`: handler fires as the Modal starts entering - `onEntered`: handler fires after the enter animation finishes - `onExit`: handler fires right before the Modal animates out - `onExiting`: handler fires as the Modal starts exiting - `onExited`: handler fires after the exit animation finishes ### `Modal.Header` The Header section of Modal. If not included be sure to add an `aria-labelledby` elsewhere to keep the Modal accessible. #### Props - `closeButton`: `Boolean(default true)` - render a close button or not - `onClose`: `Function()` - a Handle when the close button is clicked. if left `undefined` the Header will automatically wire itself into the parent Modal `onHide()`, so you only need to specify a handler if you want a different behavior ### `Modal.Title` ### `Modal.Body` The main content of the Modal, a convenience Component for: `<div className='modal-body'>content</div>` ### `Modal.Footer` The bottom footer of the Modal, a convenience Component for: `<div className='modal-footer'>content</div>` ### `Modal.Dismiss` A dismiss button for the Parent Modal. `Dismiss` button will trigger its parent Modal `onHide()` handler. You don't need to use a Dismiss button, they are just a Convenience Component. ### `Modal.BaseModal` BaseModal represents just the modal markup without any of the logic to render it to the `document.body`. It is generally not recommended that you work with this component directly. You can use it if you really want to render a Modal inline. ## Styles You can use this module separate from Twitter Bootstrap by just including the `/lib/styles/rbm-complete.css` file, or if you are using bootstrap and don't want to re-include styles you can just use `/lib/styles/rbm-patch.css`. If you don't like the bootstrap visual look and feel, you can adjust `variables.less` to suit your needs.