From 0a6cc59b6b766666243bcdb0a2d8e3136c0d51e4 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Wed, 11 Sep 2024 17:05:21 +0100 Subject: Add floating checkout button when scrolled down on page --- thallium-frontend/src/components/CartStatus.tsx | 37 +++++++++++++++++++++---- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/thallium-frontend/src/components/CartStatus.tsx b/thallium-frontend/src/components/CartStatus.tsx index 8fd54d9..848e1cc 100644 --- a/thallium-frontend/src/components/CartStatus.tsx +++ b/thallium-frontend/src/components/CartStatus.tsx @@ -1,8 +1,10 @@ import { useSelector } from "react-redux"; import { RootState } from "../store"; +import { useRef, useEffect } from "react"; import styled from "styled-components"; import Button from "./forms/Button"; import { useNavigate } from "react-router-dom"; +import { useVisible } from "../utils/hooks"; const StatusHolder = styled.span` margin-top: 1rem; @@ -10,20 +12,45 @@ const StatusHolder = styled.span` `; +const FloatingButton = styled(Button)<{ $visible: boolean }>` +position: fixed; +z-index: 10; +opacity: ${(props) => props.$visible ? "1" : "0"}; +bottom: 0; +margin-bottom: 30px; +right: 0; +margin-right: 30px; +transition: all 0.25s; +` + const CartStatus = () => { const cart = useSelector((state: RootState) => state.cart); const total = cart.cart.reduce((acc, item) => acc + item.quantity, 0); const price = cart.cart.reduce((acc, item) => acc + (parseFloat(item.estPrice) * item.quantity), 0); + const staticButtonRef = useRef : null} + + 0} onClick={buttonCallback}> + {checkoutMsg} + ; }; -- cgit v1.2.3