diff --git a/package.json b/package.json
index 2e8b86f..8736892 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
"dependencies": {
"path-is-absolute": "^1.0.0",
"radium": "^0.13.4",
- "react": "^0.13.3"
+ "react": "^15.5.4",
+ "react-dom": "^15.5.4"
}
}
diff --git a/src/scripts/app.jsx b/src/scripts/app.jsx
index fda388b..19db14e 100644
--- a/src/scripts/app.jsx
+++ b/src/scripts/app.jsx
@@ -1,4 +1,5 @@
import React from 'react';
+import ReactDOM from 'react-dom';
import Navbar from './components/Navbar';
import NavItem from './components/NavItem';
import NavbarHeader from './components/NavbarHeader';
@@ -8,7 +9,9 @@ import DropdownMenu from './components/DropdownMenu';
const navitems = [
{link: '#', title: 'Setup'},
- {link: '#', title: 'Usage'},
+ {link: '#', title: 'Usage', onClick: function () {
+ alert('Usage');
+ }},
{link: '#', title: 'Advanced'},
{link: '#', title: 'Try it out'},
{link: '#', title: 'FAQ'}
@@ -16,7 +19,9 @@ const navitems = [
const dropdownItems = [
{href: '#', name: 'ES2015'},
- {href: '#', name: 'Setup'},
+ {href: '#', name: 'Setup', onClick: function (item) {
+ alert('Setup clicked');
+ }},
{href: '#', name: 'Usage'},
{href: '#', name: 'Advanced'},
{href: '#', name: 'Try it'},
@@ -28,7 +33,11 @@ const navbarInstance = (
{navitems.map(item => {
- return ;
+ if (typeof(item.onClick) !== 'undefined') {
+ return ;
+ } else {
+ return ;
+ }
})}
@@ -40,4 +49,4 @@ const navbarInstance = (
);
-React.render(navbarInstance, document.getElementById('navigation_bar'));
+ReactDOM.render(navbarInstance, document.getElementById('navigation_bar'));
diff --git a/src/scripts/components/DropdownMenu.jsx b/src/scripts/components/DropdownMenu.jsx
index 086926f..dddd6f7 100644
--- a/src/scripts/components/DropdownMenu.jsx
+++ b/src/scripts/components/DropdownMenu.jsx
@@ -85,6 +85,15 @@ export default class DropdownMenu extends React.Component {
return styles;
}
+ clickHandler(event, item) {
+ if (typeof(item.onClick) !== 'undefined') {
+ event.preventDefault();
+ item.onClick(item);
+ return false;
+ }
+ return true;
+ }
+
render() {
const defStyle = this.getStyles();
const {menuItems, style, menuItemStyle} = this.props;
@@ -94,7 +103,7 @@ export default class DropdownMenu extends React.Component {
return (
{item.name}
+ onClick={(event) => { return this.clickHandler(event, item); }} href={item.href}>{item.name}
);
diff --git a/src/scripts/components/NavItem.jsx b/src/scripts/components/NavItem.jsx
index 63737df..17fbe81 100644
--- a/src/scripts/components/NavItem.jsx
+++ b/src/scripts/components/NavItem.jsx
@@ -6,6 +6,7 @@ export default class NavItem extends React.Component {
displayName = 'Navigation bar item'
static propTypes = {
+ onClick: React.PropTypes.func,
link: React.PropTypes.string,
title: React.PropTypes.string,
style: React.PropTypes.object,
@@ -54,12 +55,21 @@ export default class NavItem extends React.Component {
};
}
+ clickHandler(event) {
+ if (typeof(this.props.onClick) !== 'undefined') {
+ event.preventDefault();
+ this.props.onClick();
+ return false;
+ }
+ return true;
+ }
+
render() {
const defStyle = this.getStyles();
const {style, link, title, itemStyle} = this.props;
return (
- {title}
+ { return this.clickHandler(event); }} href={link} style={[defStyle.link, itemStyle && itemStyle]}>{title}
);
}