TextArea
عرض شاملimport { TextArea, TextAreaResize } from '@nili/ui';هذه صفحة العرض الشامل الخاصة بالمكتبة، معروضة حيّة. غيّر اللغة أو السمة من الأعلى وسَتتبعك.
التسمية والتلميح والخطأ
وجود error هو ما يجعل الحقل غير صالح، فلا يتناقض الإطار مع الرسالة أبدًا — ولا توجد راية invalid منفصلة كي تُنسى.
الماركداون مدعوم.
اكتب عشرين حرفًا على الأقل من فضلك.
import { TextArea } from "@nili/ui"
export function Example() {
return (
<>
<TextArea
label="Description"
placeholder="Tell us a little about the project…"
hint="Markdown is supported."
rows={4}
/>
<TextArea
label="Description"
defaultValue="Too short"
error="Please write at least twenty characters."
rows={4}
/>
</>
)
}عدّاد الأحرف
يضع showCount النسبة used / limit تحت الحقل. ويضبط countLimit حدًّا مرنًا دون ضبط maxLength — فـmaxLength الصارمة تبتلع آخر ما يُلصق بصمت، وهذا أسوأ من إخبار المستخدم بتجاوزه الحد.
import { TextArea } from "@nili/ui"
export function Example() {
const [value, setValue] = useState("")
return (
<>
{/* soft limit: typing past it is allowed, and shown */}
<TextArea
label="Bio"
showCount
countLimit={120}
value={value}
onChange={(e) => setValue(e.target.value)}
rows={3}
/>
{/* hard limit */}
<TextArea label="Tweet" showCount maxLength={280} rows={3} />
{/* custom format */}
<TextArea
label="Notes"
showCount
countLimit={200}
formatCount={(used, limit) => `${used} of ${limit}`}
rows={3}
/>
</>
)
}مقابض تغيير الحجم
أي المقابض يقدّمها المتصفّح. القيمة vertical هي الافتراضية، وnone لحقل داخل تخطيط ضيّق يجب ألا يُسحب فيفقد شكله.
import { TextArea } from "@nili/ui"
export function Example() {
return (
<>
<TextArea label="Vertical (default)" resize="vertical" rows={3} />
<TextArea label="Both axes" resize="both" rows={3} />
<TextArea label="Fixed" resize="none" rows={3} />
</>
)
}تغيير الحجم التلقائي
ينمو مع المحتوى بدل التمرير، حتى maxRows. وهو مطفأ افتراضيًا: فحقل يتغيّر حجمه مع كل ضغطة يحرّك كل ما تحته، وهذا مزعج في نموذج طويل.
import { TextArea } from "@nili/ui"
export function Example() {
return (
<TextArea
label="Message"
autoResize
maxRows={8}
rows={2}
placeholder="Type a few lines…"
/>
)
}TextArea
extends Omit< ComponentPropsWithoutRef<'textarea'>, 'size' >
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| disabled | boolean | — | |
| required | boolean | — | |
| readOnly | boolean | — | |
| checked | boolean | — | |
| defaultChecked | boolean | — | |
| placeholder | string | — | |
| value | string | — | |
| defaultValue | string | — | |
| name | string | — | |
| maxLength | number | — | |
| rows | number | 4 | |
| autoComplete | string | — | |
| aria-label | string | — | |
| label | ReactNode | — | |
| hint | ReactNode | — | |
| error | ReactNode | — | Validation message. Its presence is what marks the field invalid, so the border and the message can never disagree. |
| resize | none | vertical | both | vertical | Which handles the browser offers. |
| autoResize | boolean | false | Grow with the content instead of scrolling, up to `maxRows`. Off by default: a field that resizes on every keystroke moves everything below it, which is unpleasant in a long form. |
| maxRows | number | 10 | |
| showCount | boolean | false | Shows `used / limit` under the field. Pass a number to set the limit without also passing `maxLength` — see the note in the component about why those are different things. |
| countLimit | number | — | Soft limit for the counter. Defaults to `maxLength` when that is set. |
| formatCount | (used: string, limit: string) => string | — | Formats the counter, e.g. `` (used, limit) => `${used} of ${limit}` ``. |
| locale | string | — | BCP-47 tag driving the counter digits (`'fa'` → Persian). Defaults to the ambient locale from `NiliProvider`. |
| rootClassName | string | — | Wrapper class. Use `className` for the `<textarea>` itself. |
| fieldClassName | string | — | Class for the bordered field box. |
TextAreaControl
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| resize | none | vertical | both | vertical |
TextAreaCounter
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| over | 'true' | 'false' | false | |
| disabled | 'true' | 'false' | false |
TextAreaField
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| invalid | 'true' | 'false' | false |
TextAreaFooter
داخليTextAreaGrip
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| disabled | 'true' | 'false' | false |