diff --git a/final-version/src/modules/articles/components/article.component.js b/final-version/src/modules/articles/components/article.component.js index 4ac07c4..23db3ae 100644 --- a/final-version/src/modules/articles/components/article.component.js +++ b/final-version/src/modules/articles/components/article.component.js @@ -8,7 +8,7 @@ export const Article = ({ id }) => { const articles = useArticlesSelector(); const article = articles.find(item => item.slug === id); - return article ? : null; + return article ? : null; }; Article.propTypes = { diff --git a/final-version/src/modules/articles/components/articleCard.component.js b/final-version/src/modules/articles/components/articleCard.component.js index 7bc326b..c59cf7d 100644 --- a/final-version/src/modules/articles/components/articleCard.component.js +++ b/final-version/src/modules/articles/components/articleCard.component.js @@ -7,13 +7,14 @@ import Card from '@material-ui/core/Card'; import CardActions from '@material-ui/core/CardActions'; import CardContent from '@material-ui/core/CardContent'; import CardMedia from '@material-ui/core/CardMedia'; -import Grid from '@material-ui/core/Grid'; import Typography from '@material-ui/core/Typography'; import { makeStyles } from '@material-ui/core/styles'; import { addToCart } from '../../cart/cart.actions'; import { useCart } from '../../cart/cart.context'; +import { CardWrapper } from './cardWrapper.component'; + const useStyles = makeStyles({ card: { height: '100%', @@ -28,15 +29,29 @@ const useStyles = makeStyles({ }, }); -export function ArticleCard({ article }) { - const { name, year, image, slug } = article; +const cardElementsBySize = { + S: { + hasViewButton: true, + hasDescription: false, + }, + L: { + hasViewButton: false, + hasDescription: true, + }, +}; + +export function ArticleCard({ article, size }) { + const { name, year, image, slug, description } = article; + const { hasViewButton, hasDescription } = cardElementsBySize[size]; + const Wrapper = CardWrapper[size]; + const classes = useStyles(); const [, dispatch] = useCart(); const dispatchAddToCart = () => dispatch(addToCart(article)); return ( - + @@ -44,23 +59,26 @@ export function ArticleCard({ article }) { {name} {year} + {hasDescription && {description}} - + {hasViewButton && ( + + )} - + ); } @@ -70,6 +88,8 @@ ArticleCard.propTypes = { year: PropTypes.string.isRequired, id: PropTypes.string.isRequired, image: PropTypes.string.isRequired, - slug: PropTypes.string.isRequired, + slug: PropTypes.string, + description: PropTypes.string, }).isRequired, + size: PropTypes.string.isRequired, }; diff --git a/final-version/src/modules/articles/components/articlesList.component.js b/final-version/src/modules/articles/components/articlesList.component.js index 5fa4989..53f8d48 100644 --- a/final-version/src/modules/articles/components/articlesList.component.js +++ b/final-version/src/modules/articles/components/articlesList.component.js @@ -12,7 +12,7 @@ export function ArticlesList() { return ( {articles.map(article => ( - + ))} ); diff --git a/final-version/src/modules/articles/components/cardWrapper.component.js b/final-version/src/modules/articles/components/cardWrapper.component.js new file mode 100644 index 0000000..95b5164 --- /dev/null +++ b/final-version/src/modules/articles/components/cardWrapper.component.js @@ -0,0 +1,29 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import Grid from '@material-ui/core/Grid'; + +const LargeCardWrapper = ({ children }) => ( + + {children} + +); + +LargeCardWrapper.propTypes = { + children: PropTypes.element.isRequired, +}; + +const SmallCardWrapper = ({ children }) => ( + + {children} + +); + +SmallCardWrapper.propTypes = { + children: PropTypes.element.isRequired, +}; + +export const CardWrapper = { + S: SmallCardWrapper, + L: LargeCardWrapper, +};