"use client"; import { Box, Tab, Tabs, Snackbar, Alert } from "@mui/material"; import { useState, useCallback } from "react"; import { useTranslation } from "react-i18next"; import { AllPickedStockTakeListReponse } from "@/app/api/stockTake/actions"; import PickerCardList from "./PickerCardList"; import ApproverCardList from "./ApproverCardList"; import PickerStockTake from "./PickerStockTake"; import PickerReStockTake from "./PickerReStockTake"; import ApproverStockTake from "./ApproverStockTake"; import ApproverAllCardList from "./ApproverAllCardList"; import ApproverStockTakeAll from "./ApproverStockTakeAll"; type ViewScope = "picker" | "approver-by-section" | "approver-all"; const StockTakeTab: React.FC = () => { const { t } = useTranslation(["inventory", "common"]); const [tabValue, setTabValue] = useState(0); const [selectedSession, setSelectedSession] = useState(null); const [viewMode, setViewMode] = useState<"details" | "reStockTake">("details"); const [viewScope, setViewScope] = useState("picker"); const [snackbar, setSnackbar] = useState<{ open: boolean; message: string; severity: "success" | "error" | "warning" }>({ open: false, message: "", severity: "success", }); const handleCardClick = useCallback((session: AllPickedStockTakeListReponse) => { setSelectedSession(session); setViewMode("details"); }, []); const handleApproverAllCardClick = useCallback((session: AllPickedStockTakeListReponse) => { setSelectedSession(session); setViewMode("details"); setViewScope("approver-all"); }, []); const handleReStockTakeClick = useCallback((session: AllPickedStockTakeListReponse) => { setSelectedSession(session); setViewMode("reStockTake"); setViewScope("picker"); }, []); const handleBackToList = useCallback(() => { setSelectedSession(null); setViewMode("details"); }, []); const handleSnackbar = useCallback((message: string, severity: "success" | "error" | "warning") => { setSnackbar({ open: true, message, severity, }); }, []); if (selectedSession) { return ( {viewScope === "picker" && ( tabValue === 0 ? ( viewMode === "reStockTake" ? ( ) : ( ) ) : null )} {viewScope === "approver-by-section" && tabValue === 1 && ( )} {viewScope === "approver-all" && tabValue === 2 && ( )} setSnackbar({ ...snackbar, open: false })} > setSnackbar({ ...snackbar, open: false })} severity={snackbar.severity}> {snackbar.message} ); } return ( { setTabValue(newValue); if (newValue === 0) { setViewScope("picker"); } else if (newValue === 1) { setViewScope("approver-by-section"); } else { setViewScope("approver-all"); } }} sx={{ mb: 2 }} > {tabValue === 0 && ( { setViewScope("picker"); handleCardClick(session); }} onReStockTakeClick={handleReStockTakeClick} /> )} {tabValue === 1 && ( { setViewScope("approver-by-section"); handleCardClick(session); }} /> )} {tabValue === 2 && ( )} setSnackbar({ ...snackbar, open: false })} > setSnackbar({ ...snackbar, open: false })} severity={snackbar.severity}> {snackbar.message} ); }; export default StockTakeTab;