diff --git a/apps/edr-freight-web/backoffice/src/components/fleet/FleetRecordActions.tsx b/apps/edr-freight-web/backoffice/src/components/fleet/FleetRecordActions.tsx index 959273aa6..5aa1fbf00 100644 --- a/apps/edr-freight-web/backoffice/src/components/fleet/FleetRecordActions.tsx +++ b/apps/edr-freight-web/backoffice/src/components/fleet/FleetRecordActions.tsx @@ -1,5 +1,5 @@ -import { MoreHorizontal, Pencil, Trash2, Eye, Copy } from "lucide-react"; -import { ActionIcon, Button, Group, Menu, Tooltip } from "@mantine/core"; +import { Edit2, Trash2, Eye, Users } from "lucide-react"; +import { ActionIcon, Group, Tooltip } from "@mantine/core"; import { useNavigate } from "react-router-dom"; import type { FleetResourceConfig } from "@/pages/fleet/config/resources"; @@ -10,6 +10,7 @@ export interface FleetRecordActionsProps { config: FleetResourceConfig; onEdit: (record: FleetRecord) => void; onRemove: (record: FleetRecord) => void; + onAssignDriver?: (record: FleetRecord) => void; layout?: "row" | "compact"; } @@ -18,11 +19,13 @@ const FleetRecordActions = ({ config, onEdit, onRemove, + onAssignDriver, layout = "row", }: FleetRecordActionsProps) => { const navigate = useNavigate(); const removeLabel = config.removeActionLabel ?? "Delete"; const showDetail = Boolean(config.detailPath && "id" in record); + const isVehicle = config.slug === "vehicles"; const handleDetail = () => { if (!config.detailPath || !("id" in record)) return; @@ -31,14 +34,25 @@ const FleetRecordActions = ({ if (layout === "compact") { return ( - - {showDetail ? ( - + + {isVehicle && onAssignDriver ? ( + onAssignDriver(record)} + > + + + + ) : null} + {showDetail ? ( + + @@ -47,21 +61,19 @@ const FleetRecordActions = ({ ) : null} onEdit(record)} > - + onRemove(record)} > @@ -73,32 +85,30 @@ const FleetRecordActions = ({ return ( + {isVehicle && onAssignDriver ? ( + + onAssignDriver(record)}> + + + + ) : null} {showDetail ? ( - - + + ) : null} - onEdit(record)}> - + onEdit(record)}> + + + + + onRemove(record)}> + - - - - - - - - - - } onClick={() => onRemove(record)}> - {removeLabel} - - - ); }; diff --git a/apps/edr-freight-web/backoffice/src/pages/fleet/FleetResourcePage.tsx b/apps/edr-freight-web/backoffice/src/pages/fleet/FleetResourcePage.tsx index 2332f59d9..15f271b27 100644 --- a/apps/edr-freight-web/backoffice/src/pages/fleet/FleetResourcePage.tsx +++ b/apps/edr-freight-web/backoffice/src/pages/fleet/FleetResourcePage.tsx @@ -48,6 +48,7 @@ const FleetResourcePage = () => { const [formOpen, setFormOpen] = useState(false); const [editing, setEditing] = useState(null); const [removeTarget, setRemoveTarget] = useState(null); + const [assigningDriver, setAssigningDriver] = useState(null); const { viewMode, setViewMode } = useFleetViewMode(slug); const serverListFilters = useMemo((): FleetListFilters | undefined => { @@ -246,6 +247,7 @@ const FleetResourcePage = () => { setFormOpen(true); }} onRemove={setRemoveTarget} + onAssignDriver={setAssigningDriver} /> ), @@ -478,6 +480,30 @@ const FleetResourcePage = () => { + + setAssigningDriver(null)} + title={Assign Driver} + radius="lg" + centered + > + + + {assigningDriver && "id" in assigningDriver ? + `Assign a driver to vehicle: ${(assigningDriver as unknown as Record).plateNumber}` + : "Select a driver to assign"} + + + Driver assignment feature coming soon + + + + + + ); };