Switch

Değiştiği anda uygulanan ayarlar için 34×20'lik bir açık/kapalı anahtarı. Bir checkbox değil, <button role="switch">'tir.

KararlıKaynak kod

Import

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

Örnekler

Controlled

defaultChecked state'i switch'in içinde tutar. Controlled kullanım için checked ve bir sonraki boolean değeri alan onCheckedChange ver.

checked: false

Etiket konumu

Devre dışı ve etiketsiz

Children vermiyorsan switch'e bir aria-label ver.

Form içinde

Bir buton kendi başına değer göndermez. name verirsen switch gizli bir input render'lar; bu input switch açıkken value değerini gönderir (varsayılanı "on"). Kapalıyken hiçbir şey gönderilmez.

API referansı

Ref ve kalan buton attribute'ları track <button>'ına gider; className dıştaki sarmalayıcıya gider.

PropTipVarsayılanAçıklama
checkedboolean–Açık state'i (controlled).
defaultCheckedbooleanfalseBaşlangıçtaki açık state'i (uncontrolled).
onCheckedChange(checked: boolean) => void–Değiştirildiğinde yeni state ile çağrılır.
childrenReactNode–Görünür etiket; erişilebilir ad olur. Yoksa aria-label ver.
labelPosition"start" | "end""end"Etiketin hangi tarafta duracağı.
namestring–Verildiğinde bu adla gizli bir input, switch açıkken value'yu gönderir.
valuestring"on"Açıkken gönderilen değer.
disabledboolean–Switch'i devre dışı bırakır ve etiketi soluklaştırır. Bir `Field` içindeyse ondan devralınır.
invalidboolean–Geçersiz stilini (`data-invalid`) ve `aria-invalid`'i zorlar. Bir `Field` içindeyse onun `error`'ından türetilir.

Stil verme

SeçiciDeğerler
.mrd-switchSarmalayıcı; className buraya gelir
.mrd-switch__track<button role="switch"> elemanı
.mrd-switch__thumbHareket eden topuz
.mrd-switch__labelGörünür etiket
data-stateon · off (sarmalayıcı ve track)
data-label-positionstart · end
data-disabledDevre dışıyken sarmalayıcıda
data-invalidGeçersizken track'te; danger halkasını çizer

Switch'in component değişkeni yok; kapalı track --mrd-control-off, açık track --mrd-accent kullanır.

Erişilebilirlik

  • aria-checked ile birlikte role="switch" olarak sunulur, ekran okuyucular “açık” / “kapalı” diye okur.
  • Görünür etiket aria-labelledby ile bağlanır; etikete tıklamak da switch'i değiştirir.
  • Bir Field içinde switch, Field'ın id'sini alır (böylece adını Field etiketinden alır); aria-describedby, aria-invalid ve disabled değerlerini de ondan alır.
  • Geçersizlik anlamını aria-invalid taşır; stili data-invalid belirler.
TuşNe yapar
TabFocus'u switch'e taşır.
SpaceSwitch'i açar ya da kapatır.
EnterSwitch'i açar ya da kapatır.

Kullanım ilkeleri

Yap

Switch'i anında uygulanan ayarlar için kullan ve ayarın adıyla etiketle: “Koyu tema”.

Kaçın

Kaydet butonu gerektiren bir formda switch kullanmak; orada Checkbox kullan.

Yap

Etiketi sabit tut; state'i switch'in kendisi gösterir.

Kaçın

Etiketi “Açık” ve “Kapalı” arasında değiştirmek; state'i tekrarlar ve ekran okuyucu kullanıcılarının kafasını karıştırır.

İlgili sayfalar