منطقة النص (Textarea)

يتيح لك مكوّن منطقة النص كتابة نص من عدة أسطر، ويزداد ارتفاعه كلما طال النص. ويمكنك أن تضيف إليه تسمية ونصًا مساعدًا وعدّادًا للأحرف عند الحاجة، ويُظهر الحقل نتيجة التحقق من القيمة.

التثبيت

bash
npx @smicolon/fasla-ui@latest add textarea

قبل إضافة أي مكوّن، شغّل الأمر init مرة واحدة في مشروعك. التفاصيل في صفحة التثبيت.

معاينة

يرى المندوب ملاحظتك عند وصوله.

الأنماط (variant)

تتسع لها البطاقة.

اكتب 20 حرفًا على الأقل لنتمكن من مساعدتك.

تُقفل الملاحظات بعد شحن الطلب.

اختياري

نغلّف الهدايا مجانًا.

الارتفاع

يبدأ الحقل بارتفاع 60px، ثم يزداد سطرًا بعد سطر كلما طال النص، فيبقى النص كله ظاهرًا. ولزيادة ارتفاعه بنفسك، اسحب زاويته. أما الحقل المعطّل فيبقى بارتفاعه.

مطلوب

أخبرنا بما طلبته وما الخطأ الذي حدث وما تريد منا فعله.

249/1000

التسميات وعدّاد الأحرف

اختياري

يرى المندوب ملاحظتك عند وصوله.

27/200

أخبرنا لماذا تُرجع المنتج.

0/200

الخصائص (props)

الخاصيةالنوعالافتراضيالوصف
status"default" | "success""default"اختر القيمة success لتمييز قيمة اجتازت التحقق.
invalidbooleanfalseيجعل الحقل غير صالح، وللسمة aria-invalid الأثر نفسه.
disabledbooleanfalseيعطّل الحقل ويُظهر المجموعة كلها باهتة، ويوقف تغيير الحجم.
labelReactNodeلا يوجدتسمية الحقل، ترتبط بمنطقة النص تلقائيًا.
labelEndReactNodeلا يوجدملاحظة قصيرة في نهاية سطر التسمية، مثل «اختياري».
descriptionReactNodeلا يوجدنص مساعد تحت الحقل، يقرؤه قارئ الشاشة مع الحقل.
descriptionEndReactNodeلا يوجدملاحظة في نهاية سطر النص المساعد، وغالبًا ما تكون عدّاد الأحرف.
errorReactNodeلا يوجدرسالة تظهر مكان description ما دام الحقل غير صالح.
placeholderstringلا يوجدنص يظهر والحقل فارغ.
maxLengthnumberلا يوجدأقصى عدد من الأحرف يقبله الحقل. اعرض العدد في descriptionEnd.
valuestringلا يوجدقيمة الحقل، وتُستخدم مع onChange.
onChange(event) => voidلا يوجدتُستدعى عند تغيير النص.
classNamestringلا يوجدأصناف CSS إضافية لمجموعة الحقل.

الاستخدام

tsx
"use client"

import * as React from "react"
import { Textarea } from "@/components/ui/textarea"

export function DeliveryNotes() {
  const [notes, setNotes] = React.useState("")
  return (
    <Textarea
      name="notes"
      label="ملاحظات التوصيل"
      description="يرى المندوب ملاحظتك عند وصوله."
      maxLength={200}
      value={notes}
      onChange={(event) => setNotes(event.target.value)}
      descriptionEnd={`${notes.length}/200`}
    />
  )
}