Pantrix UI

Radio Group

Bir radyo düğmeleri grubu: options arasından birinin seçimi. Üstünde bir etiket, altında yardım metni ya da bir hatanın mesajı durur.

import com.pantrixui.components.elements.radiobutton.PantrixRadioGroup

Örnekler

Bir grup ve seçenekleri

PantrixRadioGroup seçenekleri label'ın altında alt alta dizer, en altına supportingText'i yazar. Her seçenek bir RadioOption'dır; burada her birinin altında ne anlama geldiği yazar. "Mağazadan teslim" seçilemez (enabled = false): basılmaz ve ok tuşları onu atlar.

Klavyeyle dene: Tab gruba bir kez girer ve seçili seçenekte durur. Aşağı ve yukarı ok seçimi ve odağı birlikte taşır, sondan başa döner.

var delivery by rememberSaveable { mutableStateOf("standard") }
PantrixRadioGroup(
    options = DELIVERIES,
    selected = delivery,
    onSelect = { delivery = it },
    label = "Teslimat",
    supportingText = "Sipariş kargoya verilene kadar değiştirebilirsiniz",
    tagKey = "delivery"
)

private val DELIVERIES = listOf(
    RadioOption("standard", "Standart", supportingText = "Üç ila beş iş günü", tagKey = "standard"),
    RadioOption("express", "Hızlı", supportingText = "Ertesi iş günü", tagKey = "express"),
    RadioOption(
        value = "pickup",
        label = "Mağazadan teslim",
        supportingText = "Şehrinizde henüz yok",
        enabled = false,
        tagKey = "pickup"
    )
)

Yan yana

orientation = Orientation.Horizontal seçenekleri yan yana dizer: satıra sığdığı kadarı yan yana durur, kalanı alt satıra geçer. Halkalar, altlarında bir metin olsun olmasın, etiketlerinin ilk satırında hizalanır.

Sol ve sağ ok da seçimi taşır; sağdan sola düzende yönleri değişir. Aşağı ve yukarı ok iki dizilişte de sonraki ve önceki seçenektir.

var digest by rememberSaveable { mutableStateOf("weekly") }
PantrixRadioGroup(
    options = listOf(
        RadioOption("daily", "Her gün", tagKey = "daily"),
        RadioOption("weekly", "Haftada bir", tagKey = "weekly"),
        RadioOption("monthly", "Ayda bir", tagKey = "monthly"),
        RadioOption("never", "Hiç", tagKey = "never")
    ),
    selected = digest,
    onSelect = { digest = it },
    orientation = Orientation.Horizontal,
    label = "Özet e-postası",
    tagKey = "digest"
)

Bir forma bağlı beden seçimi

field alan PantrixRadioGroup bir formun alanına bağlıdır: seçimini, hatasını ve adını alandan alır. Yapılması zorunlu bir seçim böyle kurulur: alan null ile başlar ve Rules.required taşır. Alanın kimliği otomasyon anahtarıdır: grup RadioGroup_size'dır, seçenekleri onun içinde adlandırılır.

Beden seçmeden "Sepete ekle"ye bas: kuralın mesajı yardım metninin yerine geçer, halkalar hata rengine döner ve odak gruba gider. Bedenler yan yana dizildi; tükenen "XL" seçilemez.

val snackbars = LocalPantrixSnackbars.current
val scope = rememberCoroutineScope()
val form = rememberFormState()
PantrixRadioGroup(
    field = form.field<String?>("size", initial = null, Rules.required("Devam etmek için bir beden seçin")),
    options = SIZES,
    orientation = Orientation.Horizontal,
    label = "Beden",
    supportingText = "Kalıbı dardır; arada kaldıysanız bir büyüğünü seçin"
)
PantrixButton(
    text = "Sepete ekle",
    onClick = {
        scope.launch { form.submit { snackbars?.show(message = "Sepete eklendi", tagKey = "added_to_cart") } }
    },
    form = form,
    tagKey = "add_to_cart"
)

private val SIZES = listOf("XS", "S", "M", "L", "XL", "XXL").map { size ->
    RadioOption(value = size.lowercase(), label = size, enabled = size != "XL", tagKey = size.lowercase())
}

Hata

error halkaları ve grubun altındaki metni temanın danger rolüne çevirir; ekran okuyucuya girdinin geçersiz olduğunu grup, bir kez söyler. Seçeneklerin altındaki metinler rengini korur: onlar seçeneğin ne olduğunu söyler, neyin yanlış olduğunu değil.

Burada hatayı örnek kendisi hesaplar: hiçbiri seçili değilken error true'dur. Birini seç: halkalar ve alttaki metin eski hâline döner.

var invoice by rememberSaveable { mutableStateOf<String?>(null) }
PantrixRadioGroup(
    options = listOf(
        RadioOption("personal", "Bireysel", supportingText = "Fatura adınıza kesilir", tagKey = "personal"),
        RadioOption("company", "Kurumsal", supportingText = "Vergi numarası istenir", tagKey = "company")
    ),
    selected = invoice,
    onSelect = { invoice = it },
    label = "Fatura türü",
    supportingText = if (invoice == null) "Devam etmek için bir tür seçin" else "Sonradan değiştirebilirsiniz",
    error = invoice == null,
    tagKey = "invoice"
)

Devre dışı ve salt okunur

Grubun enabled = false'u her seçeneği kapatır; etiket ve yardım metni de devre dışı yazı rengiyle yazılır. Hangi seçeneğin seçili olduğu yine görünür.

onClick = null verilen PantrixRadioButton salt okunurdur: basış ve odak almaz, renkleri değişmez, adını ve seçili olduğunu yine söyler.

PantrixRadioGroup(
    options = listOf(
        RadioOption("card", "Kart", tagKey = "card"),
        RadioOption("transfer", "Havale", tagKey = "transfer")
    ),
    selected = "card",
    onSelect = {},
    orientation = Orientation.Horizontal,
    enabled = false,
    label = "Ödeme",
    supportingText = "Devre dışı: kayıtlı kartınızla ödenecek",
    tagKey = "payment"
)
PantrixRadioButton(
    selected = true,
    onClick = null,
    label = "Salt okunur",
    supportingText = "Basılmaz; yalnızca neyin seçildiğini gösterir",
    tagKey = "read_only"
)

Kendi renkleri

colors grubun her seçeneğini boyar. Burada yalnızca seçili halkanın rengi verildi (RadioColors(selected = …)): seçili halka ve noktası uygulamanın kendi morundadır, ötekiler temanın renginde kalır.

Bu renkler seçilebilen ve hatasız bir halkanındır. Devre dışı bir seçenek ve hatalı bir grup, renk verilse de temanın renkleriyle çizilir.

var wrapping by rememberSaveable { mutableStateOf("gift") }
PantrixRadioGroup(
    options = listOf(
        RadioOption("plain", "Sade", tagKey = "plain"),
        RadioOption("gift", "Hediye paketi", tagKey = "gift")
    ),
    selected = wrapping,
    onSelect = { wrapping = it },
    orientation = Orientation.Horizontal,
    label = "Paket",
    supportingText = "Seçili halkanın rengi dışarıdan verildi; ötekiler temanın renginde",
    colors = RadioColors(selected = ownColors().color),
    tagKey = "wrapping"
)

Stil

style grubun her seçeneğinin halkasını değiştirir: size halkanın, dotSize içindeki noktanın boyudur, strokeWidth halkanın çizgi kalınlığı. Yalnızca verilen alanlar değişir; gerisi temanın ve platformun stilinden gelir.

Buradaki halka 28dp, noktası 14dp, çizgisi 3dp'dir. Halkanın rengi stilin parçası değildir: o durumdan ve colors'tan gelir.

var seat by rememberSaveable { mutableStateOf("window") }
PantrixRadioGroup(
    options = listOf(
        RadioOption("window", "Cam kenarı", tagKey = "window"),
        RadioOption("aisle", "Koridor", tagKey = "aisle")
    ),
    selected = seat,
    onSelect = { seat = it },
    orientation = Orientation.Horizontal,
    label = "Koltuk",
    style = RadioStyle(size = 28.dp, dotSize = 14.dp, strokeWidth = 3.dp),
    tagKey = "seat"
)

Halkalar sonda

Halkalar seçeneklerin sonunda (controlPosition = ControlPosition.End): alt alta seçenekler grubun genişliğini alır ve halkalar grubun sonunda bir sütunda durur.

var delivery by rememberSaveable { mutableStateOf("standard") }
PantrixRadioGroup(
    options = DELIVERIES,
    selected = delivery,
    onSelect = { delivery = it },
    modifier = Modifier.widthIn(max = 360.dp),
    label = "Teslimat",
    tagKey = "delivery_end",
    controlPosition = ControlPosition.End
)

private val DELIVERIES = listOf(
    RadioOption("standard", "Standart", supportingText = "Üç ila beş iş günü", tagKey = "standard"),
    RadioOption("express", "Hızlı", supportingText = "Ertesi iş günü", tagKey = "express"),
    RadioOption(
        value = "pickup",
        label = "Mağazadan teslim",
        supportingText = "Şehrinizde henüz yok",
        enabled = false,
        tagKey = "pickup"
    )
)

API

options

Bir radyo düğmeleri grubu: options arasından birinin seçimi. Üstünde bir etiket, altında yardım metni ya da bir hatanın mesajı durur.

ParametreTürVarsayılanNe olduğu
optionsList<RadioOption<T>>Seçenekler, sırasıyla.
selectedT?Seçili seçeneğin değeri. Null ya da hiçbir seçeneğin taşımadığı bir değer hiçbirini seçmez.
onSelect(T) -> UnitKullanıcının bir basışla ya da tuşlarla seçtiği seçeneğin değeriyle çağrılır. Grup kendiliğinden bir şey seçmez: selected hangi değeri söylüyorsa o seçenek seçilidir. Seçili olan seçeneğe basmak onu yeniden ister, bir ok tuşu ise yalnızca başka bir seçeneği ister.
modifierModifierModifierGrubun modifier'ı.
orientationOrientationOrientation.VerticalAlt alta seçenekler için Orientation.Vertical, yan yana seçenekler için Orientation.Horizontal.
enabledBooleantrueFalse verilirse her seçenek devre dışı kalır, etiket ve yardım metni de devre dışı yazı rengiyle yazılır.
labelString?nullSeçimin ne olduğunu söyler ve seçeneklerin üstüne yazılır: ekran okuyucu için grubun adıdır.
supportingTextString?nullSeçeneklerin altında, daha küçük bir yazıyla duran yardım metni: error true iken mesajın kendisidir.
errorBooleanfalseSeçimin yanlış ya da eksik olup olmadığı: halkalar ve yardım metni danger rolüne döner, ekran okuyucuya girdinin geçersiz olduğu söylenir.
styleRadioStyle?nullBu çağrının kendi stili, her seçeneğin çizildiği stil: çevresindeki bütün stilleri ezer, yoğunluk ona da uygulanır. Yalnızca verdiği alanlar değişir, her platformda.
colorsRadioColors?nullTemanın renkleri kullanılmayacaksa her seçeneğin çizildiği renkler: burada verilenler kullanılır, gerisi temanınkilerdir. Devre dışı bir seçenek ve hatalı bir grup temanın renklerinde kalır.
tagKeyString?nullGrubun otomasyon anahtarı: grup RadioGroup_<tagKey>'dir ve seçenekleri onun içinde adlandırılır, RadioGroup_<tagKey>.RadioButton_<key>. Böylece seçenekleri aynı olan iki grup birbirinden ayırt edilir. Bir seçim bir kez, bir RadioGroup olayı olarak bildirilir: olay seçeneğin sırasını taşır, değerini ya da etiketini hiçbir zaman taşımaz.
controlPositionControlPositionControlPosition.Starther seçeneğin halkasının durduğu yer: etiketinin önü ya da arkası. Arkasındaysa, alt alta seçeneklerin her biri grubu boydan boya kaplar ve halkalar grubun sonunda hizalanır; yan yana seçeneklerde her halka etiketinin ardından gelir.

field

Bir formun alanına bağlı radyo grubu: seçimi, hatası ve adı field'den gelir.

ParametreTürVarsayılanNe olduğu
fieldFormField<T>Grubun gösterdiği ve değiştirdiği alan.
optionsList<RadioOption<T>>Seçenekler, sırasıyla.
modifierModifierModifierGrubun modifier'ı.
orientationOrientationOrientation.VerticalAlt alta seçenekler için Orientation.Vertical, yan yana seçenekler için Orientation.Horizontal.
enabledBooleantrueFalse verilirse her seçenek devre dışı kalır.
labelString?nullSeçimin ne olduğunu söyler ve seçeneklerin üstüne yazılır: ekran okuyucu için grubun adıdır.
supportingTextString?nullSeçeneklerin altındaki yardım metni. Alanın orada gösterilecek bir hatası yokken görünür.
styleRadioStyle?nullBu çağrının kendi stili, her seçeneğin çizildiği stil: çevresindeki bütün stilleri ezer, yoğunluk ona da uygulanır. Yalnızca verdiği alanlar değişir, her platformda.
colorsRadioColors?nullTemanın renkleri kullanılmayacaksa her seçeneğin çizildiği renkler: burada verilenler kullanılır, gerisi temanınkilerdir. Devre dışı bir seçenek ve hatalı bir grup temanın renklerinde kalır.
controlPositionControlPositionControlPosition.Starther seçeneğin halkasının durduğu yer: etiketinin önü ya da arkası. Arkasındaysa, alt alta seçeneklerin her biri grubu boydan boya kaplar ve halkalar grubun sonunda hizalanır; yan yana seçeneklerde her halka etiketinin ardından gelir.

RadioStyle

PantrixRadioButton'ın halkası ve içindeki nokta: her birinin boyu ve halkanın kalınlığı.

ParametreTürVarsayılanNe olduğu
sizeDpDp.UnspecifiedHalkanın genişliği ve yüksekliği, çizgisiyle birlikte.
dotSizeDpDp.UnspecifiedSeçili bir halkanın içindeki noktanın genişliği ve yüksekliği.
strokeWidthDpDp.UnspecifiedHalkanın çizgisinin kalınlığı.

RadioColors

Temanın renklerini almayanlar için PantrixRadioButton'ın ve PantrixRadioGroup seçeneklerinin boyandığı renkler: verilen renk kullanılır, verilmeyen temanın rolünde kalır.

ParametreTürVarsayılanNe olduğu
selectedColorColor.UnspecifiedSeçilen seçeneğin halkası ve noktası. Temanın primary rengi.
unselectedColorColor.UnspecifiedSeçili olmayan bir seçeneğin halkası. Temanın borderStrong rengi: boş bir halka çizgisinden ibarettir.

Erişilebilirlik