From 9fc4e339f94fffd924c24d00c6403f6d63eaf4c8 Mon Sep 17 00:00:00 2001 From: Olga Linkevich Date: Sun, 15 Jul 2018 18:04:27 +0300 Subject: [PATCH 1/5] HT4.1 Add comment form with validation --- src/ac/index.js | 26 ++++++++++- src/app.js | 4 +- src/components/comment-list/index.js | 2 + src/components/forms/comment-form.js | 65 ++++++++++++++++++++++++++++ src/components/forms/user-form.js | 51 ++++++++++++++++++++++ src/components/user-error.js | 22 ++++++++++ src/components/user-form.js | 29 ------------- src/constants/index.js | 6 +++ src/reducer/error.js | 12 +++++ src/reducer/index.js | 6 ++- src/reducer/user.js | 15 +++++++ src/selectors/index.js | 3 ++ 12 files changed, 209 insertions(+), 32 deletions(-) create mode 100644 src/components/forms/comment-form.js create mode 100644 src/components/forms/user-form.js create mode 100644 src/components/user-error.js delete mode 100644 src/components/user-form.js create mode 100644 src/reducer/error.js create mode 100644 src/reducer/user.js diff --git a/src/ac/index.js b/src/ac/index.js index 6acd6da..45887a1 100644 --- a/src/ac/index.js +++ b/src/ac/index.js @@ -2,7 +2,10 @@ import { INCREMENT, DELETE_ARTICLE, CHANGE_DATE_RANGE, - CHANGE_SELECTION + CHANGE_SELECTION, + ADD_COMMENT, + LOGIN, + USER_ERROR } from '../constants' export function increment() { @@ -31,3 +34,24 @@ export function changeSelection(selected) { payload: { selected } } } + +export function addComment(comment) { + return { + type: ADD_COMMENT, + payload: comment + } +} + +export function login(userName) { + return { + type: LOGIN, + payload: userName + } +} + +export function showError(message) { + return { + type: USER_ERROR, + payload: message + } +} diff --git a/src/app.js b/src/app.js index 36053eb..3b4ade9 100644 --- a/src/app.js +++ b/src/app.js @@ -1,6 +1,7 @@ import React, { Component } from 'react' import ArticleList from './components/article-list' -import UserForm from './components/user-form' +import UserForm from './components/forms/user-form' +import UserError from './components/user-error' import Filters from './components/filters' import Counter from './components/counter' @@ -11,6 +12,7 @@ class App extends Component { return (
+ diff --git a/src/components/comment-list/index.js b/src/components/comment-list/index.js index 7412972..fb30c58 100644 --- a/src/components/comment-list/index.js +++ b/src/components/comment-list/index.js @@ -4,6 +4,7 @@ import CSSTransition from 'react-addons-css-transition-group' import Comment from '../comment' import toggleOpen from '../../decorators/toggleOpen' import './style.css' +import CommentForm from '../forms/comment-form' class CommentList extends Component { static propTypes = { @@ -49,6 +50,7 @@ class CommentList extends Component { ) : (

No comments yet

)} +
) } diff --git a/src/components/forms/comment-form.js b/src/components/forms/comment-form.js new file mode 100644 index 0000000..81c1eab --- /dev/null +++ b/src/components/forms/comment-form.js @@ -0,0 +1,65 @@ +import React, { Component } from 'react' +import { userNameSelector } from '../../selectors' +import { connect } from 'react-redux' +import { addComment, showError } from '../../ac' + +class CommentForm extends Component { + state = { + text: '' + } + + render() { + return ( +
+

{this.props.userName}

+