blob: 29ff7a5b9a643dae5fb2fdf9d0b3fb3bb98b1f70 [file] [log] [blame]
import React from 'react';
import Examples from './utils/Examples.js';
import Button from '../../src/react/Button.js';
import Modal from '../../src/react/Modal.js';
import Input from '../../src/react/Input.js';
import HTMLStandardModal from '../../components/modal/standard-modal.html';
import HTMLAlertModal from '../../components/modal/alert-modal.html';
import HTMLErrorModal from '../../components/modal/error-modal.html';
import HTMLCustomModal from '../../components/modal/custom-modal.html';
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
show: false
};
}
render() {
const { children } = this.props;
const { show } = this.state;
var childrenWithProps = React.Children.map(children, child => {
let childChildrenWithProps = [];
if (child.props.children) {
let childChildren = child.props.children;
childChildrenWithProps = React.Children.map(childChildren, child =>
React.cloneElement(child, { onClose: ()=>this.setState({show: !show}) }));
}
return React.cloneElement(child, { show: this.state.show, onClose: ()=>this.setState({show: !show}), children: childChildrenWithProps});
}
);
return (
<div>
<Button onClick={() => this.setState({show: !show})}>Modal</Button>
{childrenWithProps}
</div>
);
}
}
const ModalBody = () => {
return (
<div>
<Input
name='input1'
value='Default'
label='I am a label'
type='text' />
<Input
name='input1'
value='Default'
label='I am a label'
type='text' />
<Input
name='input1'
value='Default'
label='I am a label'
type='text' />
</div>);
};
const BODY_TEXT = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed risus nisl, egestas vitae erat non,' +
'pulvinar lacinia libero. Integer pulvinar pellentesque accumsan. Sed hendrerit lacus eu tempus pharetra';
const isShown = false;
let examples = {
Standard: {
jsx: <Example>
<Modal show={() => isShown()} size='small'>
<Modal.Header><Modal.Title>Standard Modal</Modal.Title></Modal.Header>
<Modal.Body>
{BODY_TEXT}
</Modal.Body>
<Modal.Footer actionButtonText='Yes' actionButtonClick={()=>{}}/>
</Modal>
</Example>,
html: HTMLStandardModal,
exclude: 'Example',
renderFromJsx: true
},
Alert: {
jsx: <Example>
<Modal show={() => isShown()} type='alert' size='small'>
<Modal.Header type='alert'><Modal.Title>Title</Modal.Title></Modal.Header>
<Modal.Body>
{BODY_TEXT}
</Modal.Body>
<Modal.Footer closeButtonText='Ok'/>
</Modal>
</Example>,
html: HTMLAlertModal,
exclude: 'Example',
renderFromJsx: true
},
Error: {
jsx: <Example>
<Modal show={() => isShown()} size='small' type='error'>
<Modal.Header onClose={()=>isShown(false)} type='error'><Modal.Title>Title</Modal.Title></Modal.Header>
<Modal.Body>
{BODY_TEXT}
</Modal.Body>
<Modal.Footer onClose={()=>isShown(false)} closeButtonText='Ok'/>
</Modal>
</Example>,
html: HTMLErrorModal,
exclude: 'Example',
renderFromJsx: true
},
Custom: {
jsx: <Example>
<Modal show={() => isShown()} type='custom'>
<Modal.Header type='custom'><Modal.Title>Title</Modal.Title></Modal.Header>
<Modal.Body>
<ModalBody/>
</Modal.Body>
<Modal.Footer actionButtonText='Ok' actionButtonClick={()=>{}}/>
</Modal>
</Example>,
html: HTMLCustomModal,
exclude: 'Example',
renderFromJsx: true
}
};
const Modals = () => (
<Examples examples={examples}/>
);
export default Modals;