From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001
From: wwf <yearningwang@iqtogether.com>
Date: 星期三, 04 六月 2025 15:17:49 +0800
Subject: [PATCH] 初始化

---
 app/components/base/auto-height-textarea/common.tsx |   80 ++++++++++++++++++++--------------------
 1 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/app/components/base/auto-height-textarea/common.tsx b/app/components/base/auto-height-textarea/common.tsx
index 841bfdd..98ff0b7 100644
--- a/app/components/base/auto-height-textarea/common.tsx
+++ b/app/components/base/auto-height-textarea/common.tsx
@@ -1,53 +1,53 @@
-import { useEffect, useRef } from 'react'
+import { forwardRef, useEffect, useRef } from 'react'
 import cn from '@/utils/classnames'
 
 type AutoHeightTextareaProps =
   & React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>
   & { outerClassName?: string }
 
-const AutoHeightTextarea = (
-  {
-    ref: outRef,
-    outerClassName,
-    value,
-    className,
-    placeholder,
-    autoFocus,
-    disabled,
-    ...rest
-  }: AutoHeightTextareaProps & {
-    ref: React.RefObject<HTMLTextAreaElement>;
-  },
-) => {
-  const innerRef = useRef<HTMLTextAreaElement>(null)
-  const ref = outRef || innerRef
+const AutoHeightTextarea = forwardRef<HTMLTextAreaElement, AutoHeightTextareaProps>(
+  (
+    {
+      outerClassName,
+      value,
+      className,
+      placeholder,
+      autoFocus,
+      disabled,
+      ...rest
+    },
+    outRef,
+  ) => {
+    const innerRef = useRef<HTMLTextAreaElement>(null)
+    const ref = outRef || innerRef
 
-  useEffect(() => {
-    if (autoFocus && !disabled && value) {
-      if (typeof ref !== 'function') {
-        ref.current?.setSelectionRange(`${value}`.length, `${value}`.length)
-        ref.current?.focus()
+    useEffect(() => {
+      if (autoFocus && !disabled && value) {
+        if (typeof ref !== 'function') {
+          ref.current?.setSelectionRange(`${value}`.length, `${value}`.length)
+          ref.current?.focus()
+        }
       }
-    }
-  }, [autoFocus, disabled, ref])
-  return (
-    (<div className={outerClassName}>
-      <div className='relative'>
-        <div className={cn(className, 'invisible whitespace-pre-wrap break-all')}>
-          {!value ? placeholder : `${value}`.replace(/\n$/, '\n ')}
+    }, [autoFocus, disabled, ref])
+    return (
+      <div className={outerClassName}>
+        <div className='relative'>
+          <div className={cn(className, 'invisible whitespace-pre-wrap break-all')}>
+            {!value ? placeholder : `${value}`.replace(/\n$/, '\n ')}
+          </div>
+          <textarea
+            ref={ref}
+            placeholder={placeholder}
+            className={cn(className, 'disabled:bg-transparent absolute inset-0 outline-none border-none appearance-none resize-none w-full h-full')}
+            value={value}
+            disabled={disabled}
+            {...rest}
+          />
         </div>
-        <textarea
-          ref={ref}
-          placeholder={placeholder}
-          className={cn(className, 'absolute inset-0 h-full w-full resize-none appearance-none border-none outline-none disabled:bg-transparent')}
-          value={value}
-          disabled={disabled}
-          {...rest}
-        />
       </div>
-    </div>)
-  )
-}
+    )
+  },
+)
 
 AutoHeightTextarea.displayName = 'AutoHeightTextarea'
 

--
Gitblit v1.8.0