diff --git a/src/app.module.js b/src/app.module.js index 7866916..c7cd49d 100644 --- a/src/app.module.js +++ b/src/app.module.js @@ -13,8 +13,10 @@ const setupRoutes = ($stateProvider) => { this.comments = comments; }, template: ` -

Hello World!

+ + + `, }); }; @@ -28,6 +30,9 @@ module.exports = angular.module('ngReactExample', [ require('./services/CommentService').name, require('./services/AuthorService').name, require('./components/CommentList').name, + require('./components/Header').name, + require('./components/Footer').name, + require('./components/CommentCounter').name, ]) .config(enableHtml5Mode) .config(setupRoutes); diff --git a/src/components/CommentCounter/index.js b/src/components/CommentCounter/index.js new file mode 100644 index 0000000..f7378d4 --- /dev/null +++ b/src/components/CommentCounter/index.js @@ -0,0 +1,6 @@ +import angular from 'angular'; +import { reactToAngularComponent } from '../../services/AngularReactHelper'; +import CommentCounter from './presenter'; + +module.exports = angular.module('ngReactExample.commentCounter', [ +]).component('commentCounter', reactToAngularComponent(CommentCounter)); diff --git a/src/components/CommentCounter/presenter.js b/src/components/CommentCounter/presenter.js new file mode 100644 index 0000000..860693b --- /dev/null +++ b/src/components/CommentCounter/presenter.js @@ -0,0 +1,16 @@ +import React, { PropTypes } from 'react'; + +const CommentCounter = ({ comments }) => { + const count = comments ? comments.length : 0; + return ( +
+ Total Comments: { count } +
+ ); +}; + +CommentCounter.propTypes = { + comments: PropTypes.array.isRequired, +}; + +export default CommentCounter; diff --git a/src/components/Footer/index.js b/src/components/Footer/index.js new file mode 100644 index 0000000..6c89466 --- /dev/null +++ b/src/components/Footer/index.js @@ -0,0 +1,6 @@ +import angular from 'angular'; +import { reactToAngularComponent } from '../../services/AngularReactHelper'; +import Footer from './presenter'; + +module.exports = angular.module('ngReactExample.footer', [ +]).component('appFooter', reactToAngularComponent(Footer)); diff --git a/src/components/Footer/presenter.js b/src/components/Footer/presenter.js new file mode 100644 index 0000000..3b89307 --- /dev/null +++ b/src/components/Footer/presenter.js @@ -0,0 +1,9 @@ +import React from 'react'; + +const Footer = () => ( + +); + +export default Footer; diff --git a/src/components/Header/index.js b/src/components/Header/index.js new file mode 100644 index 0000000..4beea2b --- /dev/null +++ b/src/components/Header/index.js @@ -0,0 +1,6 @@ +import angular from 'angular'; +import { reactToAngularComponent } from '../../services/AngularReactHelper'; +import Header from './presenter'; + +module.exports = angular.module('ngReactExample.header', [ +]).component('appHeader', reactToAngularComponent(Header)); diff --git a/src/components/Header/presenter.js b/src/components/Header/presenter.js new file mode 100644 index 0000000..20c5e66 --- /dev/null +++ b/src/components/Header/presenter.js @@ -0,0 +1,11 @@ +import React, { PropTypes } from 'react'; + +const Header = ({ title }) => ( +

{ title }

+); + +Header.propTypes = { + title: PropTypes.string.isRequired, +}; + +export default Header;