Add select to change board of post

This commit is contained in:
riggraz
2019-09-21 12:54:57 +02:00
parent 7874015580
commit 7729057180
13 changed files with 222 additions and 33 deletions

View File

@@ -2,8 +2,11 @@ import * as React from 'react';
import IPost from '../../interfaces/IPost';
import IPostStatus from '../../interfaces/IPostStatus';
import IBoard from '../../interfaces/IBoard';
import PostBoardSelect from './PostBoardSelect';
import PostStatusSelect from './PostStatusSelect';
import PostBoardLabel from '../shared/PostBoardLabel';
import PostStatusLabel from '../shared/PostStatusLabel';
import Comments from '../../containers/Comments';
import { MutedText } from '../shared/CustomTexts';
@@ -13,12 +16,19 @@ import friendlyDate from '../../helpers/friendlyDate';
interface Props {
postId: number;
post: IPost;
boards: Array<IBoard>;
postStatuses: Array<IPostStatus>;
isLoggedIn: boolean;
isPowerUser: boolean;
authenticityToken: string;
requestPost(postId: number): void;
changePostBoard(
postId: number,
newBoardId: number,
authenticityToken: string,
): void;
changePostStatus(
postId: number,
newPostStatusId: number,
@@ -34,12 +44,14 @@ class PostP extends React.Component<Props> {
render() {
const {
post,
boards,
postStatuses,
isLoggedIn,
isPowerUser,
authenticityToken,
changePostBoard,
changePostStatus,
} = this.props;
@@ -56,17 +68,31 @@ class PostP extends React.Component<Props> {
<h2>{post.title}</h2>
{
isPowerUser && post ?
<PostStatusSelect
postStatuses={postStatuses}
selectedPostStatusId={post.postStatusId}
handleChange={
newPostStatusId => changePostStatus(post.id, newPostStatusId, authenticityToken)
}
/>
<div className="postSettings">
<PostBoardSelect
boards={boards}
selectedBoardId={post.boardId}
handleChange={
newBoardId => changePostBoard(post.id, newBoardId, authenticityToken)
}
/>
<PostStatusSelect
postStatuses={postStatuses}
selectedPostStatusId={post.postStatusId}
handleChange={
newPostStatusId => changePostStatus(post.id, newPostStatusId, authenticityToken)
}
/>
</div>
:
<PostStatusLabel
{...postStatuses.find(postStatus => postStatus.id === post.postStatusId)}
/>
<div className="postInfo">
<PostBoardLabel
{...boards.find(board => board.id === post.boardId)}
/>
<PostStatusLabel
{...postStatuses.find(postStatus => postStatus.id === post.postStatusId)}
/>
</div>
}
<p className="postDescription">{post.description}</p>
<MutedText>{friendlyDate(post.createdAt)}</MutedText>