Pantrix UI

Time Filled Text Field

Günün bir saati için dolu bir metin alanı: saat rakamlarla yazılır ya da kutunun sonundaki bir düğmenin açtığı bir saat seçiciden seçilir. Dolu bir kutudaki PantrixTimeTextField'dır.

import com.pantrixui.components.date.timefilledtextfield.PantrixTimeFilledTextField

Örnekler

Toplantı başlangıcı, çeyrek saatlerle

Bir toplantının başlangıcı, çeyrek saatlerle: seçicinin dakikaları on beşer dakika arayla gelir.

var start by remember { mutableStateOf<PantrixTime?>(null) }
val strings = PantrixTheme.strings
Column(verticalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.sm)) {
    PantrixTimeFilledTextField(
        value = start,
        onValueChange = { start = it },
        label = "Toplantı başlangıcı",
        minuteStep = QUARTER,
        showClearButton = true,
        tagKey = "meeting_start"
    )
    PantrixText(
        text = start?.let { "Başlangıç: ${strings.time(it.hour, it.minute, is24Hour = true)}" }
            ?: "Henüz bir saat yok",
        style = PantrixTheme.typography.body
    )
}

private const val QUARTER = 15

Çalışma saatleri içinde

Çalışma saatleri içinde bir arama: aralık dışında yazılan bir saat alınmaz ve alan iki ucu söyler.

var call by remember { mutableStateOf<PantrixTime?>(null) }
PantrixTimeFilledTextField(
    value = call,
    onValueChange = { call = it },
    label = "Arama saati",
    supportingText = "Hafta içi 09:00 ile 18:00 arası",
    minTime = PantrixTime(OPENS, 0),
    maxTime = PantrixTime(CLOSES, 0),
    tagKey = "call"
)

private const val OPENS = 9

private const val CLOSES = 18

12 saatlik saat

12 saatlik bir saat: günün yarısı kutuda rakamların yanında durur ve basınca çevrilir.

var alarm by remember { mutableStateOf<PantrixTime?>(PantrixTime(7, 30)) }
PantrixTimeFilledTextField(
    value = alarm,
    onValueChange = { alarm = it },
    label = "Alarm",
    is24Hour = false,
    tagKey = "alarm"
)

Forma bağlı

Bir formun alanına bağlı: saat boşken "Kaydet" hatayı gösterir ve odağı alana gönderir.

val form = rememberFormState()
val scope = rememberCoroutineScope()
val report = LocalExampleEvents.current
val start = form.field<PantrixTime?>("shift_start", initial = null, Rules.required("Vardiyanın başlangıcını yazın"))
PantrixTimeFilledTextField(
    field = start,
    modifier = Modifier.fillMaxWidth(),
    form = form,
    label = "Vardiya başlangıcı",
    minuteStep = QUARTER
)
PantrixButton(
    text = "Kaydet",
    onClick = { scope.launch { form.submit { report("Kaydedildi") } } },
    form = form,
    tagKey = "save_shift"
)

private const val QUARTER = 15

Bir durumla

Bir durumla: state.time alanın saati, state.text yazılan rakamlar. İkisi birlikte boş alanı yarım yazılmış alandan ayırır. Düğme durumun saatini değiştirir; alan onu kendisi yazar, 12 saatte günün yarısıyla birlikte.

val state = rememberTimeTextFieldState()
Column(verticalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.sm)) {
    PantrixTimeFilledTextField(
        state = state,
        label = "Hatırlatma",
        is24Hour = false,
        tagKey = "reminder"
    )
    PantrixText(
        text = when {
            state.time != null -> "Saat: ${state.time}"
            state.text.isEmpty() -> "Alan boş"
            else -> "Yarım: ${state.text}"
        },
        style = PantrixTheme.typography.body
    )
    PantrixButton(
        text = "Şimdiyi yaz",
        onClick = { state.time = PantrixTime.now() },
        variant = ButtonVariant.Outline,
        tagKey = "write_now"
    )
}

API

value

Günün bir saati için dolu bir metin alanı: saat rakamlarla yazılır ya da kutunun sonundaki bir düğmenin açtığı bir saat seçiciden seçilir. Dolu bir kutudaki PantrixTimeTextField'dır.

ParametreTürVarsayılanNe olduğu
valuePantrixTime?alanın gösterdiği saat ya da null.
onValueChange(PantrixTime?) -> Unitkullanıcı alanın saatini her değiştirdiğinde söylenir: bir saat, ya da hiçbiri için null.
modifierModifierModifierbütün alanın modifier'ı: etiketi, kutusu ve altındakiler.
enabledBooleantruealanın kullanılıp kullanılamayacağı. Kullanılamayan bir alan odak almaz ve seçici açmaz.
readOnlyBooleanfalsesaatin yazılmayıp yalnız seçiciden seçilip seçilemeyeceği.
labelString?nullalanın ne için olduğu, kutunun üstüne yazılır: ekran okuyucu için alanın ve seçicisinin adı.
placeholderString?nullkutu boşken, alanın kendisinin gösterdiği düzenin yerinde gösterilir.
supportingTextString?nullkutunun altındaki yardım. error ile neyin düzeltileceğini söyleyen mesajdır; onsuz, alanın kendi hatası varken onun yerini alır.
errorBooleanfalseçağıranın saati yanlış bulup bulmadığı, önceden alınmış bir saat gibi: alan hatalı çizilir ve mesaj supportingText'tir.
leadingIcon(@Composable () -> Unit)?nullmetnin önünde duran. Bir yuva içine konanı boyutlandırmaz.
showClearButtonBooleanfalsealan yazılabilirken ve boş değilken onu boşaltan bir düğme gösterir.
minTimePantrixTime?nullalanın aldığı ilk saat ya da ilk olmaması için null. maxTime'dan sonraysa saatler bir gecenin saatleri gibi gece yarısını geçer.
maxTimePantrixTime?nullalanın aldığı son saat ya da son olmaması için null.
minuteStepInt1seçicinin dakikalarının kaç dakika arayla geldiği, 1 ile 60 arası. Aralarında yazılan bir dakika alınır.
is24HourBooleantruealanın ve seçicisinin bir günün saatlerini, 00 ile 23 arasını mı, yoksa 12 saatlik bir saatle mi saydığı.
presentationDatePickerPresentationDatePickerPresentation.Adaptiveseçicinin neyde açıldığı: varsayılan dar bir pencerede bir sheet, daha geniş pencerede kutunun altında bir popover, açılırken seçilir; ya da her zaman bir popover, bir sheet ya da bir dialog.
styleFilledTextFieldStyle?nullalanın bu çağrıya ait stili: kapsayan her stilin üstünde, yoğunluğun altında.
colorsFilledTextFieldColors?nullbu çağrının alanın kendi renkleri, temanın rollerinin yerine.
pickerStyleTimePickerStyle?nullbu çağrının kendi seçici stili.
pickerColorsTimePickerColors?nullbu çağrının kendi seçici renkleri.
contentDescriptionString?nulllabel'ı olmayan alan için ekran okuyucunun söylediği.
tagKeyString?nullalanın otomasyon anahtarı: alan TimeFilledTextField_<tagKey>, düğmesi TimeFilledTextFieldClock_<tagKey>, günün yarısı TimeFilledTextFieldPeriod_<tagKey>, temizleme düğmesi TimeFilledTextFieldClear_<tagKey> ve seçicisi TimePicker_<tagKey>'dır. Alan seçicinin açıldığını ve onda bir değer seçildiğini bildirir, saati hiçbir zaman bildirmez.
interactionSourceMutableInteractionSource?nullalanın etkileşimleri, dışarı taşınmış: odağı, üstündeki işaretçi ve basışları.

state

Çağıranın tuttuğu bir state üzerinde bir saat alanı; başka her bakımdan bir değerin PantrixTimeFilledTextField'ı gibidir: durumun time'ı alanın saatidir, onu yazmak saati alana koyar, text'i de yarım yazılmış bir alanı boş bir alandan ayırır.

ParametreTürVarsayılanNe olduğu
stateTimeTextFieldStateyazılan rakamlar ve onların ettiği saat. rememberTimeTextFieldState() ile oluşturun.
modifierModifierModifierbütün alanın modifier'ı: etiketi, kutusu ve altındakiler.
enabledBooleantruealanın kullanılıp kullanılamayacağı. Kullanılamayan bir alan odak almaz ve seçici açmaz.
readOnlyBooleanfalsesaatin yazılmayıp yalnız seçiciden seçilip seçilemeyeceği.
labelString?nullalanın ne için olduğu, kutunun üstüne yazılır: ekran okuyucu için alanın ve seçicisinin adı.
placeholderString?nullkutu boşken, alanın kendisinin gösterdiği düzenin yerinde gösterilir.
supportingTextString?nullkutunun altındaki yardım. error ile mesajdır; onsuz, alanın kendi hatası varken onun yerini alır.
errorBooleanfalseçağıranın saati yanlış bulup bulmadığı: alan hatalı çizilir ve mesaj supportingText'tir.
leadingIcon(@Composable () -> Unit)?nullmetnin önünde duran.
showClearButtonBooleanfalsealan yazılabilirken ve boş değilken onu boşaltan bir düğme gösterir.
minTimePantrixTime?nullalanın aldığı ilk saat ya da ilk olmaması için null; maxTime'dan sonraysa saatler gece yarısını geçer.
maxTimePantrixTime?nullalanın aldığı son saat ya da son olmaması için null.
minuteStepInt1seçicinin dakikalarının kaç dakika arayla geldiği, 1 ile 60 arası.
is24HourBooleantruealanın ve seçicisinin bir günün saatlerini mi, yoksa 12 saatlik bir saatle mi saydığı.
presentationDatePickerPresentationDatePickerPresentation.Adaptiveseçicinin neyde açıldığı: varsayılan dar bir pencerede bir sheet, daha geniş pencerede kutunun altında bir popover, açılırken seçilir; ya da her zaman bir popover, bir sheet ya da bir dialog.
styleFilledTextFieldStyle?nullbu çağrının alanın kendi stili.
colorsFilledTextFieldColors?nullbu çağrının alanın kendi renkleri.
pickerStyleTimePickerStyle?nullbu çağrının kendi seçici stili.
pickerColorsTimePickerColors?nullbu çağrının kendi seçici renkleri.
contentDescriptionString?nulllabel'ı olmayan alan için ekran okuyucunun söylediği.
tagKeyString?nullalanın otomasyon anahtarı; bir değerin PantrixTimeFilledTextField'ı onu nasıl alıyorsa öyle.
interactionSourceMutableInteractionSource?nullalanın etkileşimleri, dışarı taşınmış.

field

Bir formun alanına bağlı bir saat alanı: saati, hatası ve adı field'dan gelir.

ParametreTürVarsayılanNe olduğu
fieldFormField<PantrixTime?>saat alanının gösterdiği ve değiştirdiği formun alanı.
modifierModifierModifierbütün alanın modifier'ı.
formFormState?nullverilirse klavyenin eylem tuşu formu ona kayıtlı düğme üzerinden gönderir.
enabledBooleantruealanın kullanılıp kullanılamayacağı.
readOnlyBooleanfalsesaatin yalnız seçiciden seçilip seçilemeyeceği.
labelString?nullalanın ne için olduğu, kutunun üstünde yazılı.
placeholderString?nullkutu boşken, düzenin yerinde gösterilir.
supportingTextString?nullkutunun altındaki yardım, alanın orada gösterecek bir hatası yokken.
leadingIcon(@Composable () -> Unit)?nullmetnin önünde duran.
showClearButtonBooleanfalsealan yazılabilirken ve boş değilken onu boşaltan bir düğme gösterir.
minTimePantrixTime?nullalanın aldığı ilk saat ya da ilk olmaması için null; maxTime'dan sonraysa saatler gece yarısını geçer.
maxTimePantrixTime?nullalanın aldığı son saat ya da son olmaması için null.
minuteStepInt1seçicinin dakikalarının kaç dakika arayla geldiği, 1 ile 60 arası.
is24HourBooleantruealanın ve seçicisinin bir günün saatlerini mi, yoksa 12 saatlik bir saatle mi saydığı.
presentationDatePickerPresentationDatePickerPresentation.Adaptiveseçicinin neyde açıldığı: varsayılan dar bir pencerede bir sheet, daha geniş pencerede kutunun altında bir popover, açılırken seçilir; ya da her zaman bir popover, bir sheet ya da bir dialog.
styleFilledTextFieldStyle?nullbu çağrının alanın kendi stili.
colorsFilledTextFieldColors?nullbu çağrının alanın kendi renkleri.
pickerStyleTimePickerStyle?nullbu çağrının kendi seçici stili.
pickerColorsTimePickerColors?nullbu çağrının kendi seçici renkleri.
contentDescriptionString?nulllabel'ı olmayan alan için ekran okuyucunun söylediği.
interactionSourceMutableInteractionSource?nullalanın etkileşimleri, dışarı taşınmış.

FilledTextFieldStyle

PantrixFilledTextField'ın kutusu: şekli, en az yüksekliği ve genişliği, içindekilerin çevresindeki boşluk, ikonları ve çerçevesi.

ParametreTürVarsayılanNe olduğu
shapeShapeSpecShapeSpec.UnspecifiedKutunun şekli. Tam yuvarlak bir şekil, ShapeRole.Full, yalnızca alan tek satır tutarken bir haptır: birkaç satırlı bir alan onun yerine ShapeRole.Large alır, çünkü bir kapsülün eğrisi metninin ilk satırına girer.
heightDpDp.UnspecifiedKutunun en az yüksekliği.
minWidthDpDp.UnspecifiedKutunun en az genişliği: boş bir alanın, kullanıcı içine yazdıkça genişlemesini önler.
horizontalPaddingDpDp.Unspecifiedİkon olmayan yerde, kutunun kenarı ile etiketi ve metni arasındaki boşluk.
verticalPaddingDpDp.UnspecifiedEtiketin satırının üstündeki ve metnin son satırının altındaki boşluk.
iconPaddingDpDp.UnspecifiedYuvasındaki bir ikonun çevresindeki boşluk.
iconSizeDpDp.UnspecifiedYuvadaki bir ikonun alması gereken boyut. Yuva, içine konanı boyutlandırmaz.
borderWidthDpDp.UnspecifiedKutunun odakta, hatada ve fare üstündeyken aldığı çerçevenin kalınlığı. Dinlenirken çerçevesi yoktur.
textRoleTypeRole?nullMetnin yazıldığı, etiketin dinlendiği ve yer tutucunun yazıldığı yazı ölçeği rolü: Android'de ve iOS'ta body, 16sp, Material 3'ün bir alana yazdığı gibi; masaüstünde ve web'de label, 14sp, işaretçiyle kullanılan bir sayfadaki gibi.

FilledTextFieldColors

Temanın renklerini almayan bir alan için PantrixFilledTextField'ın boyandığı renkler: verilen renk kullanılır, verilmeyen temadaki rolünde kalır. Bir ürün yalnızca değiştirdiği renkleri verir, başkasını vermez:

ParametreTürVarsayılanNe olduğu
containerColorColor.UnspecifiedDinlenirken kutunun dolgusu. Temanın neutral rolünün container'ı.
focusedContainerColorColor.UnspecifiedÇerçeveliyken kutunun dolgusu: odakta ve hatada. Temanın surface rengi.
hoveredOutlineColorColor.UnspecifiedFare üstündeyken çerçeve. Temanın borderHover rengi.
focusedOutlineColorColor.UnspecifiedAlan odaktayken çerçeve. Temanın primary rengi.
errorColorColor.UnspecifiedMetnin yanlış olduğunu söyleyenler: çerçeve, kutunun altındaki mesaj, imleç ve sınırını aştığında sayaç. Temanın danger rengi.
textColorColor.UnspecifiedYazılan metin. Temanın textPrimary rengi.
labelColorColor.UnspecifiedEtiket: hem dinlenirken yazının yerinde, hem yazının üstündeki kendi satırında. Temanın textSecondary rengi.
placeholderColorColor.UnspecifiedYer tutucu. Temanın textSecondary rengi.
supportingTextColorColor.UnspecifiedKutunun altındaki yardım metni ve sayaç. Temanın textSecondary rengi.
iconColorColor.UnspecifiedYuvadaki bir ikonun, kendi rengini vermedikçe çizildiği renk ve temizleme düğmesinin çarpısı. Temanın textSecondary rengi.
cursorColorColor.Unspecifiedİmleç ve onunla birlikte bir seçimin tutamaçları ile zemini. Temanın primary rengi.
scrollBarColorColor.UnspecifiedBirkaç satırlı bir kutunun metninin ne kadar kaydığını gösteren çubuk. Temanın borderStrong rengi: çubuk, kutunun dolgusunun üstünde bir işarettir ve bir kutunun yumuşak kenarı orada görünmezdi.