import type { BannerListItem } from "@/features/objects/lib/data"; import { API_URLS } from "@/shared/config/api/URLs"; import { Button } from "@/shared/ui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/shared/ui/table"; import { Check, Loader2, Trash2 } from "lucide-react"; import { useEffect, useState, type Dispatch, type SetStateAction } from "react"; interface Props { filteredData: BannerListItem[] | []; setEditingPlan: Dispatch>; setDialogOpen: Dispatch>; handleDelete: (object: BannerListItem) => void; isLoading: boolean; isError: boolean; handleOrderChange: ({ body, id }: { id: number; body: FormData }) => void; // tartib raqamini update qilish uchun } const ObjectTable = ({ filteredData, handleDelete, isError, isLoading, handleOrderChange, }: Props) => { // Mahsulotlar tartibini local state orqali boshqaramiz const [localOrders, setLocalOrders] = useState<{ [key: number]: number }>({}); useEffect(() => { const orders = filteredData.reduce( (acc, item) => { acc[item.id] = item.order; return acc; }, {} as { [key: number]: number }, ); setLocalOrders(orders); }, [filteredData]); const onOrderChange = (id: number, value: string) => { if (value === "") { // bo'sh inputni ham qabul qilamiz setLocalOrders((prev) => ({ ...prev, [id]: 0 })); // yoki null ham bo'lishi mumkin return; } const num = parseInt(value, 10); if (!isNaN(num)) { setLocalOrders((prev) => ({ ...prev, [id]: num })); } }; return (
{isLoading && (
)} {isError && (
Ma'lumotlarni olishda xatolik yuz berdi.
)} {!isError && !isLoading && ( # Banner Tartib raqami Amallar {filteredData && filteredData.length > 0 ? ( filteredData.map((item, index) => ( {index + 1} {item.id.toString()} onOrderChange(item.id, e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") { const formData = new FormData(); formData.append( "order", localOrders[item.id].toString(), ); handleOrderChange({ id: item.id, body: formData, }); } }} className="w-24 h-10 border rounded px-2" /> )) ) : ( Obyekt topilmadi. )}
)}
); }; export default ObjectTable;