You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

38 lines
1.1 KiB

import { Button, Drawer, DrawerProps } from 'antd'
import React, { useState } from 'react'
import { useStyle } from './style'
import { generateUUID } from '@/utils/uuid.ts'
export interface DrawerPickerProps extends DrawerProps {
target?: React.ReactNode
children?: React.ReactNode
key?: string
}
const DrawerPicker = ({ children, target, ...props }: DrawerPickerProps) => {
const { styles } = useStyle()
const [ open, setOpen ] = useState(false)
const getTarget = () => {
const def = <Button>{props.title ?? 'Target'}</Button>
return <span className={styles.target}>{target ?? def}</span>
}
return (
<div className={styles.container} key={props.key ?? generateUUID()}>
<span className={styles.target} onClick={() => {
setOpen(true)
}}>
{getTarget()}
</span>
<Drawer {...props}
open={open}
onClose={() => setOpen(false)}
>{children}</Drawer>
</div>
)
}
export default DrawerPicker