import { Button, Container, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, List, ListItem, ListItemButton, ListItemText, MenuItem, Stack, TextField, Typography, } from '@mui/material'; import { Delete, Edit } from '@mui/icons-material'; import { format } from 'date-fns'; import { useMemo, useState } from 'react'; import { Link as RouterLink } from 'react-router-dom'; import { usePickLists, useAreas } from '../hooks/dataHooks'; import { useDatabase } from '../context/DBProvider'; import { PickList } from '../models/PickList'; export const PickListsScreen = () => { const lists = usePickLists(); const areas = useAreas(); const db = useDatabase(); const [editingList, setEditingList] = useState(null); const [areaId, setAreaId] = useState(''); const [notes, setNotes] = useState(''); const sortedLists = useMemo(() => { return [...lists].sort((a, b) => a.created_at - b.created_at); }, [lists]); const getAreaName = (areaId: string) => areas.find((a) => a.id === areaId)?.name ?? 'Unknown area'; const openEdit = (list: PickList) => { setEditingList(list); setAreaId(list.area_id); setNotes(list.notes ?? ''); }; const closeEdit = () => { setEditingList(null); setAreaId(''); setNotes(''); }; const saveEdit = async () => { if (!editingList || !areaId) return; await db.pickLists.update(editingList.id, { area_id: areaId, notes: notes.trim() || undefined, }); closeEdit(); }; const deleteList = async (list: PickList) => { const confirmed = window.confirm('Remove this pick list and its items?'); if (!confirmed) return; await db.pickItems.where('pick_list_id').equals(list.id).delete(); await db.pickLists.delete(list.id); }; return ( Pick Lists {sortedLists.map((list) => ( { event.stopPropagation(); event.preventDefault(); openEdit(list); }} > { event.stopPropagation(); event.preventDefault(); deleteList(list); }} > }> {list.notes ? {list.notes} : null} Created {format(list.created_at, 'PPpp')} } /> ))} Edit Pick List setAreaId(event.target.value)} > {areas.map((area) => ( {area.name} ))} setNotes(event.target.value)} multiline minRows={2} /> ); };