diff options
| author | Randy Ridge <randyridge@gmail.com> | 2018-09-14 20:01:25 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-14 20:01:25 -0400 |
| commit | 908180c77cd38011eeedcae949613da2a3391e5e (patch) | |
| tree | b59bf1aae819a04d453cde72f6e601f5561a740f /stepped-solutions/42/frontend/components/Cart.js | |
| parent | 1f6667d233a4a2e9df977204d83a8f749c050c75 (diff) | |
| parent | b3bebda57ba187b7fa10398054b54c05d3fd3555 (diff) | |
Merge branch 'master' into randyridge/our
Diffstat (limited to 'stepped-solutions/42/frontend/components/Cart.js')
| -rwxr-xr-x | stepped-solutions/42/frontend/components/Cart.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/stepped-solutions/42/frontend/components/Cart.js b/stepped-solutions/42/frontend/components/Cart.js new file mode 100755 index 0000000..1895235 --- /dev/null +++ b/stepped-solutions/42/frontend/components/Cart.js @@ -0,0 +1,63 @@ +import React from 'react'; +import { Query, Mutation } from 'react-apollo'; +import gql from 'graphql-tag'; +import User from './User'; +import CartStyles from './styles/CartStyles'; +import Supreme from './styles/Supreme'; +import CloseButton from './styles/CloseButton'; +import SickButton from './styles/SickButton'; +import CartItem from './CartItem'; +import calcTotalPrice from '../lib/calcTotalPrice'; +import formatMoney from '../lib/formatMoney'; + +const LOCAL_STATE_QUERY = gql` + query { + cartOpen @client + } +`; + +const TOGGLE_CART_MUTATION = gql` + mutation { + toggleCart @client + } +`; + +const Cart = () => ( + <User> + {({ data: { me } }) => { + if (!me) return null; + console.log(me); + return ( + <Mutation mutation={TOGGLE_CART_MUTATION}> + {toggleCart => ( + <Query query={LOCAL_STATE_QUERY}> + {({ data }) => ( + <CartStyles open={data.cartOpen}> + <header> + <CloseButton onClick={toggleCart} title="close"> + × + </CloseButton> + <Supreme>{me.name}'s Cart</Supreme> + <p> + You Have {me.cart.length} Item{me.cart.length === 1 ? '' : 's'} in your cart. + </p> + </header> + <ul> + {me.cart.map(cartItem => <CartItem key={cartItem.id} cartItem={cartItem} />)} + </ul> + <footer> + <p>{formatMoney(calcTotalPrice(me.cart))}</p> + <SickButton>Checkout</SickButton> + </footer> + </CartStyles> + )} + </Query> + )} + </Mutation> + ); + }} + </User> +); + +export default Cart; +export { LOCAL_STATE_QUERY, TOGGLE_CART_MUTATION }; |
