infoalloggi-monorepo/apps/infoalloggi/src/components/MapDialog.tsx

65 lines
1.7 KiB
TypeScript

"use client";
import { MapIcon } from "lucide-react";
import dynamic from "next/dynamic";
import { useState } from "react";
import { Button } from "~/components/ui/button";
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "~/components/ui/dialog";
import { useTranslation } from "~/providers/I18nProvider";
const MapComp = dynamic(() => import("~/components/map/Map"), {
ssr: false,
});
export const MappaDialogFullscreen = ({
lat,
long,
}: {
lat: string | null;
long: string | null;
}) => {
const { t } = useTranslation();
const [open, setOpen] = useState(false);
return (
<Dialog onOpenChange={setOpen} open={open}>
<DialogTrigger asChild>
<Button className="w-auto grow" disabled={!lat || !long}>
<MapIcon className="size-5" /> {t.mappa}
</Button>
</DialogTrigger>
<DialogContent className="h-full w-screen max-w-[100vw] p-0 sm:max-h-[60vh] sm:max-w-2xl [&_#dialog-close>svg]:size-8 [&_#dialog-close]:bg-white [&_#dialog-close]:opacity-100">
<DialogHeader className="hidden h-0">
<DialogTitle className="sr-only">{t.mappa}</DialogTitle>
<DialogDescription className="sr-only">{t.mappa}</DialogDescription>
</DialogHeader>
<div className="size-full">
{lat && long && (
<>
<MapComp
height="100%"
markerType="home"
posix={{
popupTxt:
"Posizione esatta fornita dopo la richiesta di contatto",
pos: {
lat: Number.parseFloat(lat),
lng: Number.parseFloat(long),
},
}}
scrollWheelZoom
width="100%"
zoom={14}
/>
</>
)}
</div>
</DialogContent>
</Dialog>
);
};