2015-11-22 23:41:28 +03:00
|
|
|
import React from 'react';
|
2016-05-22 22:39:40 +03:00
|
|
|
import classnames from 'classnames';
|
|
|
|
import { themr } from 'react-css-themr';
|
2015-11-22 23:41:28 +03:00
|
|
|
import Button from '../button';
|
|
|
|
import Link from '../link';
|
|
|
|
|
2016-05-22 22:39:40 +03:00
|
|
|
const Navigation = ({ actions, children, className, routes, theme, type }) => {
|
|
|
|
const _className = classnames(theme[type], className);
|
|
|
|
const buttons = actions.map((action, index) => {
|
|
|
|
return <Button className={theme.button} key={index} {...action} />;
|
2015-11-22 23:41:28 +03:00
|
|
|
});
|
|
|
|
|
2016-05-22 22:39:40 +03:00
|
|
|
const links = routes.map((route, index) => {
|
|
|
|
return <Link className={theme.link} key={index} {...route} />;
|
2015-11-22 23:41:28 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
return (
|
2016-05-22 22:39:40 +03:00
|
|
|
<nav data-react-toolbox='navigation' className={_className}>
|
2015-11-22 23:41:28 +03:00
|
|
|
{links}
|
|
|
|
{buttons}
|
2016-05-22 22:39:40 +03:00
|
|
|
{children}
|
2015-11-22 23:41:28 +03:00
|
|
|
</nav>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
Navigation.propTypes = {
|
|
|
|
actions: React.PropTypes.array,
|
|
|
|
children: React.PropTypes.node,
|
|
|
|
className: React.PropTypes.string,
|
|
|
|
routes: React.PropTypes.array,
|
2016-05-22 22:39:40 +03:00
|
|
|
theme: React.PropTypes.shape({
|
|
|
|
button: React.PropTypes.string.isRequired,
|
|
|
|
horizontal: React.PropTypes.string.isRequired,
|
|
|
|
link: React.PropTypes.string.isRequired,
|
|
|
|
vertical: React.PropTypes.string.isRequired
|
|
|
|
}),
|
2015-11-22 23:41:28 +03:00
|
|
|
type: React.PropTypes.oneOf(['vertical', 'horizontal'])
|
|
|
|
};
|
|
|
|
|
|
|
|
Navigation.defaultProps = {
|
|
|
|
actions: [],
|
|
|
|
className: '',
|
|
|
|
type: 'horizontal',
|
|
|
|
routes: []
|
|
|
|
};
|
|
|
|
|
2016-05-22 22:39:40 +03:00
|
|
|
export default themr('ToolboxNavigation')(Navigation);
|