summaryrefslogtreecommitdiffstats
path: root/stepped-solutions/46/frontend/components/CartItem.js
diff options
context:
space:
mode:
Diffstat (limited to 'stepped-solutions/46/frontend/components/CartItem.js')
-rwxr-xr-xstepped-solutions/46/frontend/components/CartItem.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/stepped-solutions/46/frontend/components/CartItem.js b/stepped-solutions/46/frontend/components/CartItem.js
new file mode 100755
index 0000000..b0ce62e
--- /dev/null
+++ b/stepped-solutions/46/frontend/components/CartItem.js
@@ -0,0 +1,53 @@
+import React from 'react';
+import styled from 'styled-components';
+import PropTypes from 'prop-types';
+import formatMoney from '../lib/formatMoney';
+import RemoveFromCart from './RemoveFromCart';
+
+const CartItemStyles = styled.li`
+ padding: 1rem 0;
+ border-bottom: 1px solid ${props => props.theme.lightgrey};
+ display: grid;
+ align-items: center;
+ grid-template-columns: auto 1fr auto;
+ img {
+ margin-right: 10px;
+ }
+ h3,
+ p {
+ margin: 0;
+ }
+`;
+
+const CartItem = ({ cartItem }) => {
+ // first check if that item exists
+ if (!cartItem.item)
+ return (
+ <CartItemStyles>
+ <p>This Item has been removed</p>
+ <RemoveFromCart id={cartItem.id} />
+ </CartItemStyles>
+ );
+ return (
+ <CartItemStyles>
+ <img width="100" src={cartItem.item.image} alt={cartItem.item.title} />
+ <div className="cart-item-details">
+ <h3>{cartItem.item.title}</h3>
+ <p>
+ {formatMoney(cartItem.item.price * cartItem.quantity)}
+ {' - '}
+ <em>
+ {cartItem.quantity} &times; {formatMoney(cartItem.item.price)} each
+ </em>
+ </p>
+ </div>
+ <RemoveFromCart id={cartItem.id} />
+ </CartItemStyles>
+ );
+};
+
+CartItem.propTypes = {
+ cartItem: PropTypes.object.isRequired,
+};
+
+export default CartItem;