diff --git a/CHANGELOG.md b/CHANGELOG.md index 66d0603ccc..3d545283b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ the release. ([#2614](https://github.com/open-telemetry/opentelemetry-demo/pull/2614)) * [grafana] Update grafana version to 12.2.0 ([#2615](https://github.com/open-telemetry/opentelemetry-demo/pull/2615)) +* [frontend] Fix navigation and cart math + ([#2660](https://github.com/open-telemetry/opentelemetry-demo/pull/2660)) * [chore] Upgrade OpenFeature and add fix deprecation warnings for dependency injection ([#2644](https://github.com/open-telemetry/opentelemetry-demo/pull/2644)) diff --git a/src/frontend/components/CartDropdown/CartDropdown.styled.ts b/src/frontend/components/CartDropdown/CartDropdown.styled.ts index 882021090b..d4318f16e0 100644 --- a/src/frontend/components/CartDropdown/CartDropdown.styled.ts +++ b/src/frontend/components/CartDropdown/CartDropdown.styled.ts @@ -12,10 +12,10 @@ export const CartDropdown = styled.div` width: 100%; height: 100%; max-height: 100%; - padding: 25px; + padding: 5px; display: flex; flex-direction: column; - justify-content: space-between; + align-items: center; gap: 24px; background: ${({ theme }) => theme.colors.white}; z-index: 1000; @@ -27,7 +27,7 @@ export const CartDropdown = styled.div` width: 400px; top: 95px; right: 17px; - max-height: 650px; + max-height: 600px; } `; @@ -43,7 +43,7 @@ export const Title = styled.h5` export const ItemList = styled.div` ${({ theme }) => theme.breakpoints.desktop} { max-height: 450px; - overflow-y: scroll; + overflow-y: auto; } `; @@ -60,6 +60,7 @@ export const ItemImage = styled(Image).attrs({ height: '80', })` border-radius: 5px; + object-fit: contain; `; export const ItemName = styled.p` @@ -80,10 +81,29 @@ export const ItemQuantity = styled(ItemName)` export const CartButton = styled(Button)``; +export const ContentWrapper = styled.div` + width: 100%; + overflow-y: auto; + flex: 1; + min-height: 0; + + ${({ theme }) => theme.breakpoints.desktop} { + overflow-y: visible; + flex: 0 1 auto; + min-height: auto; + } +`; + export const Header = styled.div` display: flex; - justify-content: space-between; + justify-content: center; align-items: center; + width: 100%; + + span { + position: absolute; + right: 25px; + } ${({ theme }) => theme.breakpoints.desktop} { span { @@ -97,4 +117,5 @@ export const EmptyCart = styled.h3` margin-top: 25px; font-size: ${({ theme }) => theme.sizes.mLarge}; color: ${({ theme }) => theme.colors.textLightGray}; + text-align: center; `; diff --git a/src/frontend/components/CartDropdown/CartDropdown.tsx b/src/frontend/components/CartDropdown/CartDropdown.tsx index cd0703e19e..0e060e9f45 100644 --- a/src/frontend/components/CartDropdown/CartDropdown.tsx +++ b/src/frontend/components/CartDropdown/CartDropdown.tsx @@ -34,7 +34,7 @@ const CartDropdown = ({ productList, isOpen, onClose }: IProps) => { return isOpen ? ( -
+ Shopping Cart Close @@ -54,7 +54,7 @@ const CartDropdown = ({ productList, isOpen, onClose }: IProps) => { ) )} -
+ Go to Shopping Cart diff --git a/src/frontend/components/CartItems/CartItems.styled.ts b/src/frontend/components/CartItems/CartItems.styled.ts index a1a5fbcf18..884d675832 100644 --- a/src/frontend/components/CartItems/CartItems.styled.ts +++ b/src/frontend/components/CartItems/CartItems.styled.ts @@ -22,6 +22,7 @@ export const CartItemImage = styled.img` width: 100%; height: auto; border-radius: 5px; + object-fit: contain; ${({ theme }) => theme.breakpoints.desktop} { width: 120px; diff --git a/src/frontend/components/CartItems/CartItems.tsx b/src/frontend/components/CartItems/CartItems.tsx index 05e0279ec2..11350d392d 100644 --- a/src/frontend/components/CartItems/CartItems.tsx +++ b/src/frontend/components/CartItems/CartItems.tsx @@ -36,12 +36,12 @@ const CartItems = ({ productList, shouldShowPrice = true }: IProps) => { const total = useMemo(() => { const nanoSum = - productList.reduce((acc, { product: { priceUsd: { nanos = 0 } = {} } }) => acc + Number(nanos), 0) + + productList.reduce((acc, { product: { priceUsd: { nanos = 0 } = {} }, quantity }) => acc + Number(nanos) * quantity, 0) + shippingConst?.nanos || 0; const nanoExceed = Math.floor(nanoSum / 1000000000); const unitSum = - productList.reduce((acc, { product: { priceUsd: { units = 0 } = {} } }) => acc + Number(units), 0) + + productList.reduce((acc, { product: { priceUsd: { units = 0 } = {} }, quantity }) => acc + Number(units) * quantity, 0) + (shippingConst?.units || 0) + nanoExceed; return { diff --git a/src/frontend/components/CheckoutItem/CheckoutItem.styled.ts b/src/frontend/components/CheckoutItem/CheckoutItem.styled.ts index 013250ebad..1658215061 100644 --- a/src/frontend/components/CheckoutItem/CheckoutItem.styled.ts +++ b/src/frontend/components/CheckoutItem/CheckoutItem.styled.ts @@ -83,6 +83,7 @@ export const ItemImage = styled(Image).attrs({ height: '80', })` border-radius: 5px; + object-fit: contain; `; export const SeeMore = styled.a` diff --git a/src/frontend/components/Layout/Layout.tsx b/src/frontend/components/Layout/Layout.tsx index f4e2da88a6..6a487e7621 100644 --- a/src/frontend/components/Layout/Layout.tsx +++ b/src/frontend/components/Layout/Layout.tsx @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import Header from '../Header'; +import Footer from '../Footer'; interface IProps { children: React.ReactNode; @@ -12,6 +13,7 @@ const Layout = ({ children }: IProps) => { <>
{children}
+