import { IconSymbol } from "@/components/ui/icon-symbol"; import React, { useState } from "react"; import { KeyboardAvoidingView, Modal, Platform, ScrollView, Text, TextInput, TouchableOpacity, View, } from "react-native"; import styles from "./style/TripCostDetailModal.styles"; // --------------------------- // 🧩 Interface // --------------------------- interface CostItem { id: string; loai: string; soLuong: number; donVi: string; chiPhi: number; tongChiPhi: number; } interface TripCostDetailModalProps { visible: boolean; onClose: () => void; data: CostItem[]; } // --------------------------- // 💰 Component Modal // --------------------------- const TripCostDetailModal: React.FC = ({ visible, onClose, data, }) => { const [isEditing, setIsEditing] = useState(false); const [editableData, setEditableData] = useState(data); const tongCong = editableData.reduce((sum, item) => sum + item.tongChiPhi, 0); const handleEdit = () => { setIsEditing(!isEditing); }; const handleSave = () => { setIsEditing(false); // TODO: Save data to backend // console.log("Saved data:", editableData); }; const handleCancel = () => { setIsEditing(false); setEditableData(data); // Reset to original data }; const updateItem = (id: string, field: keyof CostItem, value: string) => { setEditableData((prev) => prev.map((item) => { if (item.id === id) { const numValue = field === "loai" || field === "donVi" ? value : Number(value) || 0; const updated = { ...item, [field]: numValue }; // Recalculate tongChiPhi if (field === "soLuong" || field === "chiPhi") { updated.tongChiPhi = updated.soLuong * updated.chiPhi; } return updated; } return item; }) ); }; return ( {/* Header */} Chi tiết chi phí chuyến đi {isEditing ? ( <> Hủy Lưu ) : ( )} {/* Content */} {editableData.map((item) => ( {/* Loại */} Loại chi phí updateItem(item.id, "loai", value)} editable={isEditing} placeholder="Nhập loại chi phí" /> {/* Số lượng & Đơn vị */} Số lượng updateItem(item.id, "soLuong", value) } editable={isEditing} keyboardType="numeric" placeholder="0" /> Đơn vị updateItem(item.id, "donVi", value) } editable={isEditing} placeholder="kg, lít..." /> {/* Chi phí/đơn vị */} Chi phí/đơn vị (VNĐ) updateItem(item.id, "chiPhi", value) } editable={isEditing} keyboardType="numeric" placeholder="0" /> {/* Tổng chi phí */} Tổng chi phí {item.tongChiPhi.toLocaleString()} VNĐ ))} {/* Footer Total */} Tổng cộng {tongCong.toLocaleString()} VNĐ ); }; export default TripCostDetailModal;