import { Form, Input } from 'antd'; import type { TextAreaProps } from 'antd/es/input/TextArea'; import { useCallback, useEffect, useRef, useState } from 'react'; import Wrapper from './components/wrapper'; import { SealFormItemProps } from './types'; const SealTextArea: React.FC = (props) => { const { label, placeholder, onChange, onFocus, onBlur, onInput, style, required, isInFormItems = true, description, variant, extra, addAfter, ...rest } = props; const [isFocus, setIsFocus] = useState(false); const inputRef = useRef(null); let status = ''; if (isInFormItems) { const statusData = Form?.Item?.useStatus?.(); status = statusData?.status || ''; } useEffect(() => { if (props.value) { setIsFocus(true); } }, [props.value]); const handleClickWrapper = useCallback(() => { if (!props.disabled && !isFocus) { inputRef.current?.focus?.({ cursor: 'all' }); setIsFocus(true); } }, [props.disabled, isFocus]); const handleChange = useCallback( (e: any) => { onChange?.(e); }, [onChange] ); const handleOnFocus = useCallback( (e: any) => { setIsFocus(true); onFocus?.(e); }, [onFocus] ); const handleOnBlur = useCallback( (e: any) => { if (!inputRef.current?.resizableTextArea?.textArea?.value) { setIsFocus(false); onBlur?.(e); } }, [onBlur] ); const handleInput = useCallback( (e: any) => { onInput?.(e); }, [onInput] ); return ( handleChange(e)} > ); }; export default SealTextArea;