react-toolbox/components/dialog/index.jsx

48 lines
1.3 KiB
React
Raw Normal View History

import React from 'react';
import Button from '../button';
import Overlay from '../overlay';
2015-10-10 21:06:16 +03:00
import style from './style';
2015-09-19 17:45:27 +03:00
2015-11-05 13:28:42 +03:00
const Dialog = (props) => {
const actions = props.actions.map((action, idx) => {
let className = style.button;
if (action.className) className += ` ${action.className}`;
return <Button key={idx} {...action} className={className} />;
});
let className = `${style.root} ${style[props.type]}`;
if (props.active) className += ` ${style.active}`;
if (props.className) className += ` ${props.className}`;
return (
<Overlay active={props.active} onClick={props.onOverlayClick}>
2015-11-15 05:20:23 +03:00
<div data-react-toolbox='dialog' className={className}>
2015-11-05 13:28:42 +03:00
<section role='body' className={style.body}>
{ props.title ? <h6 className={style.title}>{props.title}</h6> : null }
{ props.children }
</section>
<nav role='navigation' className={style.navigation}>
{ actions }
</nav>
2015-09-19 17:45:27 +03:00
</div>
</Overlay>
2015-11-05 13:28:42 +03:00
);
};
Dialog.propTypes = {
actions: React.PropTypes.array,
active: React.PropTypes.bool,
className: React.PropTypes.string,
onOverlayClick: React.PropTypes.func,
title: React.PropTypes.string,
type: React.PropTypes.string
};
Dialog.defaultProps = {
actions: [],
active: false,
type: 'normal'
};
2015-10-22 02:31:17 +03:00
export default Dialog;