2024-10-16 03:25:59 +03:00
|
|
|
import {
|
|
|
|
|
MobilePage,
|
|
|
|
|
MobilePageContent,
|
|
|
|
|
MobilePageHeader,
|
|
|
|
|
MobilePageTitle,
|
|
|
|
|
} from "@/components/mobile/MobilePage";
|
2024-09-25 19:05:40 +03:00
|
|
|
import { Drawer, DrawerContent, DrawerTrigger } from "@/components/ui/drawer";
|
|
|
|
|
import {
|
|
|
|
|
Popover,
|
|
|
|
|
PopoverContent,
|
|
|
|
|
PopoverTrigger,
|
|
|
|
|
} from "@/components/ui/popover";
|
2024-10-16 03:25:59 +03:00
|
|
|
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet";
|
2024-09-25 19:05:40 +03:00
|
|
|
import { isMobile } from "react-device-detect";
|
|
|
|
|
|
|
|
|
|
type PlatformAwareDialogProps = {
|
|
|
|
|
trigger: JSX.Element;
|
|
|
|
|
content: JSX.Element;
|
|
|
|
|
triggerClassName?: string;
|
|
|
|
|
contentClassName?: string;
|
|
|
|
|
open: boolean;
|
|
|
|
|
onOpenChange: (open: boolean) => void;
|
|
|
|
|
};
|
|
|
|
|
export default function PlatformAwareDialog({
|
|
|
|
|
trigger,
|
|
|
|
|
content,
|
|
|
|
|
triggerClassName = "",
|
|
|
|
|
contentClassName = "",
|
|
|
|
|
open,
|
|
|
|
|
onOpenChange,
|
|
|
|
|
}: PlatformAwareDialogProps) {
|
|
|
|
|
if (isMobile) {
|
|
|
|
|
return (
|
|
|
|
|
<Drawer open={open} onOpenChange={onOpenChange}>
|
|
|
|
|
<DrawerTrigger asChild>{trigger}</DrawerTrigger>
|
2024-09-26 23:30:56 +03:00
|
|
|
<DrawerContent className="max-h-[75dvh] overflow-hidden px-4">
|
2024-09-25 19:05:40 +03:00
|
|
|
{content}
|
|
|
|
|
</DrawerContent>
|
|
|
|
|
</Drawer>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Popover open={open} onOpenChange={onOpenChange}>
|
|
|
|
|
<PopoverTrigger asChild className={triggerClassName}>
|
|
|
|
|
{trigger}
|
|
|
|
|
</PopoverTrigger>
|
|
|
|
|
<PopoverContent className={contentClassName}>{content}</PopoverContent>
|
|
|
|
|
</Popover>
|
|
|
|
|
);
|
|
|
|
|
}
|
2024-10-16 03:25:59 +03:00
|
|
|
|
|
|
|
|
type PlatformAwareSheetProps = {
|
|
|
|
|
trigger: JSX.Element;
|
|
|
|
|
content: JSX.Element;
|
|
|
|
|
triggerClassName?: string;
|
|
|
|
|
contentClassName?: string;
|
|
|
|
|
open: boolean;
|
|
|
|
|
onOpenChange: (open: boolean) => void;
|
|
|
|
|
};
|
|
|
|
|
export function PlatformAwareSheet({
|
|
|
|
|
trigger,
|
|
|
|
|
content,
|
|
|
|
|
triggerClassName = "",
|
|
|
|
|
contentClassName = "",
|
|
|
|
|
open,
|
|
|
|
|
onOpenChange,
|
|
|
|
|
}: PlatformAwareSheetProps) {
|
|
|
|
|
if (isMobile) {
|
|
|
|
|
return (
|
|
|
|
|
<div>
|
|
|
|
|
<div onClick={() => onOpenChange(true)}>{trigger}</div>
|
|
|
|
|
<MobilePage open={open} onOpenChange={onOpenChange}>
|
|
|
|
|
<MobilePageContent className="h-full overflow-hidden">
|
|
|
|
|
<MobilePageHeader
|
|
|
|
|
className="mx-2"
|
|
|
|
|
onClose={() => onOpenChange(false)}
|
|
|
|
|
>
|
|
|
|
|
<MobilePageTitle>More Filters</MobilePageTitle>
|
|
|
|
|
</MobilePageHeader>
|
|
|
|
|
<div className={contentClassName}>{content}</div>
|
|
|
|
|
</MobilePageContent>
|
|
|
|
|
</MobilePage>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Sheet open={open} onOpenChange={onOpenChange}>
|
|
|
|
|
<SheetTrigger asChild className={triggerClassName}>
|
|
|
|
|
{trigger}
|
|
|
|
|
</SheetTrigger>
|
|
|
|
|
<SheetContent className={contentClassName}>{content}</SheetContent>
|
|
|
|
|
</Sheet>
|
|
|
|
|
);
|
|
|
|
|
}
|