TextArea
Genel görünümimport { TextArea, TextAreaResize } from '@nili/ui';Bu, kütüphanenin kendi genel görünüm sayfası — canlı olarak render ediliyor. Üstten dili veya temayı değiştirin, o da değişir.
Etiket, ipucu ve hata
Alanı geçersiz kılan şey error’ın varlığıdır; böylece kenarlık ile mesaj asla çelişmez — unutulacak ayrı bir invalid bayrağı yoktur.
Markdown desteklenir.
Lütfen en az yirmi karakter yazın.
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}
/>
</>
)
}Karakter sayacı
showCount alanın altına used / limit koyar. countLimit, maxLength da ayarlamadan yumuşak bir sınır koyar — katı bir maxLength yapıştırılan metnin sonunu sessizce yutar ki bu, kişiye sınırı aştığını göstermekten kötüdür.
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}
/>
</>
)
}Yeniden boyutlandırma tutamakları
Tarayıcının hangi tutamakları sunduğu. Varsayılan vertical; dar bir düzendeki, biçimi bozulmaması gereken bir alan için 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} />
</>
)
}Otomatik boyutlandırma
Kaydırmak yerine maxRows’a kadar içerikle büyür. Varsayılan kapalı: her tuş vuruşunda boyutlanan bir alan altındaki her şeyi oynatır ki bu uzun bir formda tatsızdır.
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' >
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| 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
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| resize | none | vertical | both | vertical |
TextAreaCounter
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| over | 'true' | 'false' | false | |
| disabled | 'true' | 'false' | false |
TextAreaField
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| invalid | 'true' | 'false' | false |
TextAreaFooter
dahiliTextAreaGrip
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| disabled | 'true' | 'false' | false |