"use client"; import { AnimatePresence, motion } from "framer-motion"; // import Link from "next/link"; // import { MobileSearchBar } from "./MobileSearch"; import { useBodyScrollLock } from "@utils/hooks/useBodyScrollLock"; import{useState} from "react"; import {useLoginModal} from "@/providers/LoginModalProvider"; import { useCustomToast } from "@/utils/hooks/useToast"; import { confirmDialog } from "@/components/theme/ui/kernel/confirm/api"; import { useRouter } from 'next/navigation'; import Image from "next/image"; import type { TreefrontMenu } from "@/types/theme/menus"; import {CurrencySwitch} from "@/components/common/CurrencySwitch/CurrencySwitch"; interface MobileMenuProps { menu: TreefrontMenu[]; isOpen: boolean; onClose: () => void; // 接收关闭函数 isGuest:boolean; } export default function MobileMenu({ menu, isOpen, onClose,isGuest }: MobileMenuProps) { const {openLoginModal} = useLoginModal(); const { showToast } = useCustomToast(); const router = useRouter(); // 当前选中一级菜单ID const [activeMainId, setActiveMainId] = useState(menu[0]._id); // 存储右侧二级菜单展开状态集合 key:二级id value:是否展开boolean const [expandedSubIds, setExpandedSubIds] = useState>({}); // 获取选中的一级菜单 const activeMainMenu = menu.find((item) => item._id === activeMainId); // 当前一级下面全部二级菜单列表 const subMenuList = activeMainMenu?.children?.edges?.map((e) => e.node) ?? []; // 切换右侧二级菜单展开/收起 const toggleSubExpand = (subId: number) => { setExpandedSubIds((prev) => ({ ...prev, [subId]: !prev[subId], })); }; useBodyScrollLock(isOpen); const guestUserClick = () => { openLoginModal({ onFinalResult: async (res) => { if(res.mergeCartSuccess) { // 购物车合并成功 // if(!res.cartAfterMerge?.isVip && res.cartAfterMerge?.vipPlusAmount === 0) { // await switchVipPlus(true); // } return } else { // 购物车合并失败 // 三种 情况: 登录成功; 注册成功; if(res.loginSuccess) { // 登录成功 需要刷新页面 showToast('You have logged in successfully. But something wrong','danger'); await confirmDialog({ title: "Warning", content: "You have logged in successfully. But something wrong. You must refresh the page.", noCancel: true, }); window.location.reload(); } if(res.registerSuccess && !res.loginSuccess) { // 注册成功,去登录 await confirmDialog({ title: "Warning", content: "You have registered successfully. But something wrong. You have to login.", noCancel: true, }); router.replace('/customer/login'); } } } }); }; return ( <> {/* {isOpen && ( */} <> {/*

Category

    {menu.map((item: any) => (
  • {item.name}{item._id} 4444
  • ))}
*/}

VIP Rewards

{ isGuest ? ( ) : null }
{/*顶部横幅占位 */}
{/* Shop By Feature */} {activeMainMenu?.name||''}
{subMenuList.length === 0 ? (
No sub categories
) : ( subMenuList.map((subItem) => { const isOpen = !!expandedSubIds[subItem._id]; const cardEdges = subItem?.children?.edges ?? []; return (
toggleSubExpand(subItem._id)} className="flex justify-between items-center cursor-pointer py-2 px-3 h-10 bg-[#F9F9F9FF]" >

{subItem.name}

{/*二级展开之后渲染三级卡片网格 */} {isOpen && cardEdges.length > 0 && (
{cardEdges.map((edge) => { const cardItem = edge.node; return (
{cardItem.name||''} { cardItem.showIcon&&( {"userphoto"} ) }
{cardItem.name}
); })}
)} {isOpen && cardEdges.length === 0 && (
No feature items
)}
); }) )}
{/* =========底部固定货币选择栏 ========= */}
{/* )} */}
); }