import { RightOutlined, ShoppingCartOutlined } from "@ant-design/icons"; import { Button, Form, Input, message, Row } from "antd"; import { addItem } from "features/order/orderSlice"; import useBreakPoint from "hooks/useBreakPoint"; import { BottomSheet } from "pages/cart/components/specialRequest/BottomSheet.tsx"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useAppDispatch, useAppSelector } from "redux/hooks"; import { colors, ProBlack2 } from "ThemeConstants"; import { Product } from "utils/types/appTypes"; import styles from "../product.module.css"; export default function ProductFooter({ product, isValid = true, variantId, selectedExtras, selectedGroups, quantity, onClose, }: { product: Product; isValid?: boolean; variantId: string; selectedExtras: string[]; selectedGroups: string[]; quantity: number; onClose?: () => void; }) { const { t } = useTranslation(); const dispatch = useAppDispatch(); const { themeName } = useAppSelector((state) => state.theme); const [isSpecialRequestOpen, setIsSpecialRequestOpen] = useState(false); const { isMobile, isDesktop } = useBreakPoint(); const { isRTL } = useAppSelector((state) => state.locale); const [specialRequest, setSpecialRequest] = useState(""); // Check if product has any customization options const hasCustomizationOptions = useMemo(() => { const hasVariants = product?.variants?.length > 0; const hasExtras = product.extras.length > 0; const hasExtraGroups = product?.theExtrasGroups?.length > 0; return hasVariants || hasExtras || hasExtraGroups; }, [ product?.variants?.length, product.extras.length, product?.theExtrasGroups?.length, ]); const handleAddToCart = () => { if (!isValid) { message.error(t("menu.pleaseSelectRequiredOptions")); return; } if (product) { dispatch( addItem({ item: { id: product?.id, name: product?.name, price: product?.price, image: product?.image, description: product?.description, comment: specialRequest, variant: variantId, extras: selectedExtras, extrasgroup: selectedGroups, isHasLoyalty: product?.isHasLoyalty, no_of_stamps_give: product?.no_of_stamps_give, }, quantity: quantity, }), ); // Navigate back to menu - scroll position will be restored automatically if (!isDesktop) window.history.back(); else { onClose?.(); } } }; const handleSpecialRequestSave = (value: string) => { setSpecialRequest(value); }; const handleSpecialRequestClose = () => { setIsSpecialRequestOpen(false); }; return ( <>
setSpecialRequest(e.target.value)} suffix={
setIsSpecialRequestOpen(true)} > {t("cart.editNote")}
} />
{!isDesktop && ( )} ); }