import Button, { ButtonType } from '../UI/Button/Button'; import React, { useEffect, useState } from 'react'; import { BaseDialogProps } from '../../utils/types'; import Modal from './Modal'; import styles from './Modal.module.scss'; interface PromptDialogProps extends BaseDialogProps { defaultValue?: string; okButtonText?: string; isRequired?: boolean; cancelButtonText?: string; errorText?: string; } export function PromptDialog(props: PromptDialogProps): JSX.Element | null { const [isOpen, setOpen] = useState(true); const [isError, setError] = useState(false); const dialogUniqId = (~~(Math.random() * 1e8)).toString(16); const defaultValue = props.defaultValue !== undefined ? String(props.defaultValue) : undefined; const [value, setValue] = useState(defaultValue); const close = (result: string | undefined) => { setOpen(false); if (props.onClose) { props.onClose(result); } }; useEffect(() => { if (props.isRequired && value !== undefined) { value.trim() === '' ? setError(true) : setError(false); } }, [value, props]); return ( close(undefined)} onCompletelyHidden={() => { if (props.onCompletelyHidden) { props.onCompletelyHidden(); } }} > {props.title && (
{props.title}
)}
{ setValue(e.target.value); }} defaultValue={value} name="promtDialog" autoFocus={true} />
{(isError && props.errorText) ?? 'Value input required'}
); }