import React, { useRef, useState } from 'react' import { InputEditModal } from '~components/Modal' import { TextField } from '~components/TextField' import { validateLink, type ValidationResponse } from '../../validation' import styles from './LinkModal.module.scss' type LinkModalProps = { onSubmit: (href: string) => void onDismiss: () => void onAfterLeave: () => void isOpen: boolean defaultHref?: string } export const LinkModal = ({ onSubmit, onDismiss, onAfterLeave, isOpen, defaultHref, }: LinkModalProps): JSX.Element => { const [href, setHref] = useState(defaultHref ?? '') const [validationStatus, setValidationStatus] = useState({ status: 'default', }) const inputRef = useRef(null) const handleSubmit = (): void => { const validation = validateLink(href) if (validation.status !== 'success') { inputRef.current?.focus() setValidationStatus(validation) return } onSubmit(href) } return ( inputRef.current?.focus()} > {validationStatus.message} ) } status={validationStatus.status} onChange={(e: React.ChangeEvent) => { setHref(e.target.value) }} inline /> ) } LinkModal.displayName = 'LinkModal'