diff --git a/src/assets/locals/ar.json b/src/assets/locals/ar.json index 5e0d67d..8140bed 100644 --- a/src/assets/locals/ar.json +++ b/src/assets/locals/ar.json @@ -491,6 +491,8 @@ "eCardAmount": "مبلغ البطاقة الإلكترونية", "receiverName": "اسم المستلم", "edit": "تعديل", - "yourInformation": "تفاصيلك" + "yourInformation": "تفاصيلك", + "minimumAmountShouldBe1OMR": "يجب أن يكون المبلغ الأدنى 1 OMR", + "add": "أضف" } } diff --git a/src/assets/locals/en.json b/src/assets/locals/en.json index a3dffc9..132539f 100644 --- a/src/assets/locals/en.json +++ b/src/assets/locals/en.json @@ -503,6 +503,8 @@ "eCardAmount": "E-Card Amount", "receiverName": "Receiver Name", "edit": "Edit", - "yourInformation": "Your Information" + "yourInformation": "Your Information", + "minimumAmountShouldBe1OMR": "Minimum amount should be 1 OMR", + "add": "Add" } } diff --git a/src/pages/CardDetails/CardDetails.tsx b/src/pages/CardDetails/CardDetails.tsx index fbf9304..769e023 100644 --- a/src/pages/CardDetails/CardDetails.tsx +++ b/src/pages/CardDetails/CardDetails.tsx @@ -23,7 +23,8 @@ export default function CardDetailsPage() { const { giftDetails } = useAppSelector(selectCart); const { isRTL } = useAppSelector((state) => state.locale); const [currentIndex, setCurrentIndex] = useState(0); - const [isGiftAmountBottomSheetOpen, setIsGiftAmountBottomSheetOpen] = useState(false); + const [isGiftAmountBottomSheetOpen, setIsGiftAmountBottomSheetOpen] = + useState(false); const { subdomain } = useParams(); const navigate = useNavigate(); @@ -31,7 +32,7 @@ export default function CardDetailsPage() { useEffect(() => { if (cards && giftDetails?.cardId) { const index = cards.findIndex( - (card) => card?.id?.toString() === giftDetails.cardId, + (card) => card?.id?.toString() === giftDetails.cardId.toString(), ); if (index !== -1) { setCurrentIndex(index); @@ -59,99 +60,110 @@ export default function CardDetailsPage() { return ( <> - - {t("cardDetails.title")} - -
- - {t("cardDetails.addGiftDetails")} - - - {t("cardDetails.description")} - -
- {isLoading || !currentCard ? ( -
- -
- + {t("cardDetails.title")} + +
+ + {t("cardDetails.addGiftDetails")} + + + {t("cardDetails.description")} + +
+ {isLoading || !currentCard ? ( +
+ +
+ +
+
- -
- ) : ( -
-
-
- )} -
- {giftDetails?.giftType !== "items" && setIsGiftAmountBottomSheetOpen(true)} />} - - - - -
- - - -
- setIsGiftAmountBottomSheetOpen(false)} /> + )} +
+ {giftDetails?.giftType !== "items" && ( + setIsGiftAmountBottomSheetOpen(true)} + /> + )} + + + + + + + + + + setIsGiftAmountBottomSheetOpen(false)} + /> ); } diff --git a/src/pages/CardDetails/components/GiftAmountBottomSheet.tsx b/src/pages/CardDetails/components/GiftAmountBottomSheet.tsx index ad11218..b38bb5e 100644 --- a/src/pages/CardDetails/components/GiftAmountBottomSheet.tsx +++ b/src/pages/CardDetails/components/GiftAmountBottomSheet.tsx @@ -24,18 +24,19 @@ export function GiftAmountBottomSheet({ }: SplitBillChoiceBottomSheetProps) { const { t } = useTranslation(); const dispatch = useAppDispatch(); - const { giftDetails, } = useAppSelector(selectCart); + const { giftDetails } = useAppSelector(selectCart); const [amount, setAmount] = useState( - giftDetails?.amount && giftDetails?.amount > 0 ? giftDetails?.amount?.toString() : "", + giftDetails?.amount && giftDetails?.amount > 0 + ? giftDetails?.amount?.toString() + : "", ); const handleSave = () => { const numAmount = parseFloat(amount) || 0; - dispatch(updateGiftDetails({amount: numAmount})); + dispatch(updateGiftDetails({ amount: numAmount })); onClose(); }; - return (
-
+
{t("cardDetails.enterCustomOucherAmount")} @@ -81,6 +81,18 @@ export function GiftAmountBottomSheet({ min={0} /> + + {t("cardDetails.minimumAmountShouldBe1OMR")} +
diff --git a/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.module.css b/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.module.css index 9850d2c..e87fb9c 100644 --- a/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.module.css +++ b/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.module.css @@ -16,3 +16,9 @@ gap: 8px; } } + +.editIcon { + position: absolute; + top: -7px; + right: 5px; +} diff --git a/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.tsx b/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.tsx index 2ace4e4..db0b125 100644 --- a/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.tsx +++ b/src/pages/CardDetails/components/GiftAmountCard/GiftAmountCard.tsx @@ -5,23 +5,52 @@ import styles from "./GiftAmountCard.module.css"; import ArabicPrice from "components/ArabicPrice"; import ProText from "components/ProText"; import EditIcon from "components/Icons/EditIcon"; +import { useAppDispatch, useAppSelector } from "redux/hooks"; +import { updateGiftDetails } from "features/order/orderSlice"; +import { useState, useEffect, useMemo } from "react"; export default function GiftAmountCard({ onOpen }: { onOpen: () => void }) { const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { giftDetails } = useAppSelector((state) => state.order); + const [selectedAmount, setSelectedAmount] = useState(null); + + useEffect(() => { + const amount = giftDetails?.amount; + if (amount === 10 || amount === 20 || amount === 30) { + setSelectedAmount(amount); + } else { + setSelectedAmount(null); + } + }, [giftDetails?.amount]); + + const handleAmountClick = (amount: number) => { + setSelectedAmount(amount); + dispatch(updateGiftDetails({ amount })); + }; + + const isDefaultAmount = useMemo(() => { + const amount = giftDetails?.amount; + return amount === 10 || amount === 20 || amount === 30; + }, [giftDetails?.amount]); return (
@@ -83,23 +129,36 @@ export default function GiftAmountCard({ onOpen }: { onOpen: () => void }) { width: "100%", height: 40, border: "none", - backgroundColor: "#030014", + backgroundColor: + giftDetails?.amount && !isDefaultAmount ? "#FFB7001F" : "#030014", }} - icon={} + icon={ + giftDetails?.amount && !isDefaultAmount ? ( + + ) : undefined + } iconPlacement="start" onClick={onOpen} > - {t("cardDetails.costumeAmount")} + {giftDetails?.amount && !isDefaultAmount + ? giftDetails?.amount + : t("cardDetails.costumeAmount")}