UNPKG

2.6 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _react = require('react');
8
9var _react2 = _interopRequireDefault(_react);
10
11var _propTypes = require('prop-types');
12
13var _propTypes2 = _interopRequireDefault(_propTypes);
14
15var _reactRouter = require('react-router');
16
17var _Icon = require('../Icon');
18
19var _Icon2 = _interopRequireDefault(_Icon);
20
21var _style = require('./style.scss');
22
23var _style2 = _interopRequireDefault(_style);
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
27var Node = function Node(props) {
28 var childnodes = null;
29 var iconParent = props.node.icon ? props.node.icon : null;
30 var link = void 0;
31
32 if (props.children) {
33 childnodes = props.children.map(function (childnode, index) {
34 return _react2.default.createElement(Node, { node: childnode, children: childnode.nav, key: index });
35 });
36 }
37
38 var handleClick = function handleClick(e) {
39 e.preventDefault();
40 props.node.action();
41 };
42
43 if (typeof props.node.action === 'string') {
44 link = _react2.default.createElement(
45 'a',
46 { href: props.node.action, target: !props.node.self ? '_blank' : null },
47 iconParent ? _react2.default.createElement(_Icon2.default, { name: iconParent, fill: 'currentColor' }) : null,
48 props.node.name
49 );
50 } else if (typeof props.node.action === 'function') {
51 link = _react2.default.createElement(
52 'a',
53 { onClick: handleClick },
54 iconParent ? _react2.default.createElement(_Icon2.default, { name: iconParent, fill: 'currentColor' }) : null,
55 props.node.name
56 );
57 }
58
59 return _react2.default.createElement(
60 'li',
61 null,
62 props.node.external && typeof props.node.action === 'string' || typeof props.node.action === 'function' ? _react2.default.createElement(
63 'div',
64 null,
65 link,
66 childnodes ? _react2.default.createElement(
67 'ul',
68 { className: iconParent ? _style2.default.indent : null },
69 childnodes
70 ) : null
71 ) : _react2.default.createElement(
72 'div',
73 null,
74 _react2.default.createElement(
75 _reactRouter.Link,
76 { to: props.node.action, activeClassName: _style2.default.active },
77 iconParent ? _react2.default.createElement(_Icon2.default, { name: iconParent, fill: 'currentColor' }) : null,
78 props.node.name
79 ),
80 childnodes ? _react2.default.createElement(
81 'ul',
82 { className: iconParent ? _style2.default.indent : null },
83 childnodes
84 ) : null
85 )
86 );
87};
88
89exports.default = Node;
\No newline at end of file