import React from 'react' import * as Dialog from '@radix-ui/react-dialog' import { Cross2Icon } from '@radix-ui/react-icons' import classes from './styles.module.css' import NiceModal, { useModal } from '@ebay/nice-modal-react' import { debounce } from 'lodash-es' import classNames from 'classnames' const { DialogOverlay, DialogContent, DialogTitle, DialogDescription, Button, IconButton, green, } = classes const MyDialog = NiceModal.create<{ title?: string description?: string children?: React.ReactNode button?: string }>(({ title, description, children, button }) => { const modal = useModal() return ( { if (value) modal.show() else modal.hide() }} > {title} {description} {children} { modal.resolve('action') }} > {button} ) }) declare type NiceModalArgs = T extends | keyof JSX.IntrinsicElements | React.JSXElementConstructor ? Omit, 'id'> : Record export type ShowProps = NiceModalArgs export function GetDialog(wait = 0) { const show = debounce((props: ShowProps) => { NiceModal.show(MyDialog, props) }, wait) return { show: (props: ShowProps) => { show(props) }, hide: () => { show.cancel() HideDialog() }, } } export async function ShowDialog(props: ShowProps): Promise { console.log(props) return await NiceModal.show(MyDialog, props) } export function HideDialog() { return NiceModal.hide(MyDialog) }