1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 'use client'
- import type { FC } from 'react'
- import React, { useCallback, useState } from 'react'
- import { useTranslation } from 'react-i18next'
- import s from './style.module.css'
- import EmojiPickerInner from './Inner'
- import cn from '@/utils/classnames'
- import Divider from '@/app/components/base/divider'
- import Button from '@/app/components/base/button'
- import Modal from '@/app/components/base/modal'
- type IEmojiPickerProps = {
- isModal?: boolean
- onSelect?: (emoji: string, background: string) => void
- onClose?: () => void
- className?: string
- }
- const EmojiPicker: FC<IEmojiPickerProps> = ({
- isModal = true,
- onSelect,
- onClose,
- className,
- }) => {
- const { t } = useTranslation()
- const [selectedEmoji, setSelectedEmoji] = useState('')
- const [selectedBackground, setSelectedBackground] = useState<string>()
- const handleSelectEmoji = useCallback((emoji: string, background: string) => {
- setSelectedEmoji(emoji)
- setSelectedBackground(background)
- }, [setSelectedEmoji, setSelectedBackground])
- return isModal
- ? <Modal
- onClose={() => { }}
- isShow
- closable={false}
- wrapperClassName={className}
- className={cn(s.container, '!w-[362px] !p-0')}
- >
- <EmojiPickerInner
- className="pt-3"
- onSelect={handleSelectEmoji} />
- <Divider className='m-0' />
- <div className='w-full flex items-center justify-center p-3 gap-2'>
- <Button className='w-full' onClick={() => {
- onClose && onClose()
- }}>
- {t('app.iconPicker.cancel')}
- </Button>
- <Button
- disabled={selectedEmoji === '' || !selectedBackground}
- variant="primary"
- className='w-full'
- onClick={() => {
- onSelect && onSelect(selectedEmoji, selectedBackground!)
- }}>
- {t('app.iconPicker.ok')}
- </Button>
- </div>
- </Modal>
- : <></>
- }
- export default EmojiPicker
|