Field

Tek bir kontrolü etiketi, yardım metni ve hata mesajıyla birlikte sarar ve bunları context üzerinden birbirine bağlar: htmlFor, aria-describedby, aria-invalid, required ve disabled.

KararlıKaynak kod

Yalnızca makbuzlar için kullanıyoruz.

Import

tsx
import { Field } from "@merid/react";

Örnekler

Hata

error verildiğinde kontrol aria-invalid="true" ve geçersiz stilini alır, mesaj da aria-describedby'ına eklenir. Temizlemek için undefined, null ya da false ver.

Bu kullanıcı adı alınmış.

Controlled input

Değeri Field tutmaz. Child'ı her zamanki gibi kontrol et, error'u da kendi state'inden türet.

Kenar çubuğunda görünür.

Uncontrolled input

defaultValue ve name ile kontrol kendi state'ini tutar ve formla birlikte gönderilir.

Devre dışı

disabled kontrolü devre dışı bırakır ve etiketi soluklaştırır.

Field'ı hangi kontroller okur

Input, Textarea ve NativeSelect bağlantıların tamamını okur. Kontrolün kendisine verilen prop'lar her zaman Field'ınkilerin önüne geçer.

  • Checkbox adını Field etiketinden alır. Kendi children'ı yine tıklanabilir bir etiket olarak render'lanır ama açıklamasına (aria-describedby) dönüşür; böylece hiçbir zaman iki kez etiketlenmez.
  • Switch, Field id'sini (böylece Field etiketi onu adlandırır), aria-describedby, aria-invalid ve disabled'ı alır.
  • RadioGroup adını Field etiketinden alır (aria-labelledby); açıklamasını, hatasını, required ve disabled'ı da devralır.

Her kontrol aynı kurala uyar: semantiği aria-invalid taşır, stili data-invalid yönetir.

API referansı

Field bir <div> render'lar, ref'ini iletir ve diğer div attribute'larını olduğu gibi geçirir.

PropTipVarsayılanAçıklama
labelZorunluReactNode–Görünen etiket, htmlFor ile kontrole bağlanır.
childrenZorunluReactNode–Tek bir Merid kontrolü; bağlantıları context'ten alır.
descriptionReactNode–Kontrolün altındaki yardım metni, aria-describedby ile bağlanır.
errorReactNode–Hata mesajı. Kontrole aria-invalid atar ve mesajı bağlar.
requiredbooleanfalseKontrolü zorunlu yapar ve görsel işareti gösterir.
disabledbooleanfalseKontrolü devre dışı bırakır ve etiketi soluklaştırır.
idstring–Kontrol için açık bir id. Verilmezse üretilir.

Özel kontroller için useFieldContext() bağlantı bilgilerini (controlId, labelId, descriptionId, errorId, invalid, required, disabled) döndürür; Field dışında null döner.

Stil verme

SeçiciDeğerler
.mrd-fieldKök <div>
.mrd-field__descriptionYardım metni
.mrd-field__errorHata mesajı
data-invaliderror verildiğinde bulunur
data-disableddisabled olduğunda bulunur

Etiket bir Label'dır (.mrd-label).

Erişilebilirlik

  • Etiket kontrolü adlandırır; açıklama ve hata, aria-describedby üzerinden ondan sonra okunur.
  • Hata bir live region değildir. Gönderimde doğrulama yapıyorsan mesaj duyurulsun diye focus'u ilk geçersiz kontrole taşı.
  • required kontrolün kendisine atanır; böylece ekran okuyucu bunu duyurur ve native doğrulama devreye girer.

Kullanım ilkeleri

Yap

Sorunun nasıl düzeltileceğini söyleyen hata mesajları yaz: “En az 3 karakter kullan.”

Kaçın

“Geçersiz giriş” göstermek ya da bir Field'ın içine birden fazla kontrol koymak.

İlgili sayfalar