4 changed files with 78 additions and 9 deletions
@ -0,0 +1,51 @@ |
|||||||
|
import { Drawer, DrawerContent, DrawerTrigger } from '@/components/ui/drawer' |
||||||
|
import { |
||||||
|
DropdownMenu, |
||||||
|
DropdownMenuContent, |
||||||
|
DropdownMenuTrigger |
||||||
|
} from '@/components/ui/dropdown-menu' |
||||||
|
import { useScreenSize } from '@/providers/ScreenSizeProvider' |
||||||
|
import { useState } from 'react' |
||||||
|
import EmojiPicker from '../EmojiPicker' |
||||||
|
|
||||||
|
export default function EmojiPickerDialog({ |
||||||
|
children, |
||||||
|
onEmojiClick |
||||||
|
}: { |
||||||
|
children: React.ReactNode |
||||||
|
onEmojiClick?: (emoji: string) => void |
||||||
|
}) { |
||||||
|
const { isSmallScreen } = useScreenSize() |
||||||
|
const [open, setOpen] = useState(false) |
||||||
|
|
||||||
|
if (isSmallScreen) { |
||||||
|
return ( |
||||||
|
<Drawer open={open} onOpenChange={setOpen}> |
||||||
|
<DrawerTrigger asChild>{children}</DrawerTrigger> |
||||||
|
<DrawerContent> |
||||||
|
<EmojiPicker |
||||||
|
onEmojiClick={(data) => { |
||||||
|
setOpen(false) |
||||||
|
onEmojiClick?.(data.emoji) |
||||||
|
}} |
||||||
|
/> |
||||||
|
</DrawerContent> |
||||||
|
</Drawer> |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
return ( |
||||||
|
<DropdownMenu open={open} onOpenChange={setOpen}> |
||||||
|
<DropdownMenuTrigger asChild>{children}</DropdownMenuTrigger> |
||||||
|
<DropdownMenuContent side="top" className="p-0 w-fit"> |
||||||
|
<EmojiPicker |
||||||
|
onEmojiClick={(data, e) => { |
||||||
|
e.stopPropagation() |
||||||
|
setOpen(false) |
||||||
|
onEmojiClick?.(data.emoji) |
||||||
|
}} |
||||||
|
/> |
||||||
|
</DropdownMenuContent> |
||||||
|
</DropdownMenu> |
||||||
|
) |
||||||
|
} |
||||||
Loading…
Reference in new issue