adding in modal

This commit is contained in:
Alex Windett 2016-11-22 16:45:22 +00:00
parent 958c27aeeb
commit 96a8305b4a
3 changed files with 143 additions and 0 deletions

View File

@ -0,0 +1,66 @@
const classNames = require('classnames');
const React = require('react');
const styles = require('./style.css');
const Modal = React.createClass({
propTypes: {
children: React.PropTypes.node,
className: React.PropTypes.string,
name: React.PropTypes.string,
},
getInitialState: function() {
return {
active: false
};
},
handleReveal: function(e) {
e.preventDefault();
this.setState({
active: true
});
},
render: function() {
const {
children,
className,
name
} = this.props;
const modal = classNames(
className,
styles.modal,
this.state.active ? styles['modal-active'] : ''
);
const overlay = classNames(
className,
styles.overlay,
this.state.active ? styles['overlay-active'] : ''
);
return (
<div>
<a
aria-label={name}
onClick={this.handleReveal}
tabIndex={0}
>
Click me to reveal modal
</a>
<div className={overlay} />
<section aria-label={name} className={modal} >
<span className={styles.close}>X</span>
<h2>This is the Modal</h2>
{children}
</section>
</div>
);
}
});
module.exports = Modal;

View File

@ -0,0 +1,41 @@
# `<Modal> `
## demo
```embed
const React = require('react');
const ReactDOM = require('react-dom/server');
const Base = require('../base');
const Container = require('../container');
const Row = require('../row');
const Column = require('../column');
const Modal = require('./index.js');
const styles = require('./style.css');
nmodule.exports = ReactDOM.renderToString(
<Base>
<Row>
<Column>
<Modal active name="modal1" >
Create an Instance
</Modal>
</Column>
</Row>
</Base>
);
```
## usage
```js
const React = require('react');
const Modal = require('ui/button');
module.exports = () => {
return (
<Modal>
Hello World
</Modal>
);
}
```

View File

@ -0,0 +1,36 @@
.overlay-active {
background: rgba(0, 0, 0, 0.4);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
z-index: 0;
}
.modal {
background: white;
display: none;
left: 50%;
margin: 0 auto;
padding: 20px;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
z-index: 1;
}
.modal-active {
display: block;
}
.close {
background: red;
color: black;
font-size: 24px;
padding: 0 10px;
position: absolute;
right: -20px;
text-align: center;
top: -15px;
}