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,
+};