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.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
value | PantrixTime? | alanın gösterdiği saat ya da null. | |
onValueChange | (PantrixTime?) -> Unit | kullanıcı alanın saatini her değiştirdiğinde söylenir: bir saat, ya da hiçbiri için null. | |
modifier | Modifier | Modifier | bütün alanın modifier'ı: etiketi, kutusu ve altındakiler. |
enabled | Boolean | true | alanın kullanılıp kullanılamayacağı. Kullanılamayan bir alan odak almaz ve seçici açmaz. |
readOnly | Boolean | false | saatin yazılmayıp yalnız seçiciden seçilip seçilemeyeceği. |
label | String? | null | alanın ne için olduğu, kutunun üstüne yazılır: ekran okuyucu için alanın ve seçicisinin adı. |
placeholder | String? | null | kutu boşken, alanın kendisinin gösterdiği düzenin yerinde gösterilir. |
supportingText | String? | null | kutunun altındaki yardım. error ile neyin düzeltileceğini söyleyen mesajdır; onsuz, alanın kendi hatası varken onun yerini alır. |
error | Boolean | false | çağıranın saati yanlış bulup bulmadığı, önceden alınmış bir saat gibi: alan hatalı çizilir ve mesaj supportingText'tir. |
leadingIcon | (@Composable () -> Unit)? | null | metnin önünde duran. Bir yuva içine konanı boyutlandırmaz. |
showClearButton | Boolean | false | alan yazılabilirken ve boş değilken onu boşaltan bir düğme gösterir. |
minTime | PantrixTime? | null | alanı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. |
maxTime | PantrixTime? | null | alanın aldığı son saat ya da son olmaması için null. |
minuteStep | Int | 1 | seçicinin dakikalarının kaç dakika arayla geldiği, 1 ile 60 arası. Aralarında yazılan bir dakika alınır. |
is24Hour | Boolean | true | alanın ve seçicisinin bir günün saatlerini, 00 ile 23 arasını mı, yoksa 12 saatlik bir saatle mi saydığı. |
presentation | DatePickerPresentation | DatePickerPresentation.Adaptive | seç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. |
style | FilledTextFieldStyle? | null | alanın bu çağrıya ait stili: kapsayan her stilin üstünde, yoğunluğun altında. |
colors | FilledTextFieldColors? | null | bu çağrının alanın kendi renkleri, temanın rollerinin yerine. |
pickerStyle | TimePickerStyle? | null | bu çağrının kendi seçici stili. |
pickerColors | TimePickerColors? | null | bu çağrının kendi seçici renkleri. |
contentDescription | String? | null | label'ı olmayan alan için ekran okuyucunun söylediği. |
tagKey | String? | null | alanı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. |
interactionSource | MutableInteractionSource? | null | alanı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.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
state | TimeTextFieldState | yazılan rakamlar ve onların ettiği saat. rememberTimeTextFieldState() ile oluşturun. | |
modifier | Modifier | Modifier | bütün alanın modifier'ı: etiketi, kutusu ve altındakiler. |
enabled | Boolean | true | alanın kullanılıp kullanılamayacağı. Kullanılamayan bir alan odak almaz ve seçici açmaz. |
readOnly | Boolean | false | saatin yazılmayıp yalnız seçiciden seçilip seçilemeyeceği. |
label | String? | null | alanın ne için olduğu, kutunun üstüne yazılır: ekran okuyucu için alanın ve seçicisinin adı. |
placeholder | String? | null | kutu boşken, alanın kendisinin gösterdiği düzenin yerinde gösterilir. |
supportingText | String? | null | kutunun altındaki yardım. error ile mesajdır; onsuz, alanın kendi hatası varken onun yerini alır. |
error | Boolean | false | çağıranın saati yanlış bulup bulmadığı: alan hatalı çizilir ve mesaj supportingText'tir. |
leadingIcon | (@Composable () -> Unit)? | null | metnin önünde duran. |
showClearButton | Boolean | false | alan yazılabilirken ve boş değilken onu boşaltan bir düğme gösterir. |
minTime | PantrixTime? | null | alanın aldığı ilk saat ya da ilk olmaması için null; maxTime'dan sonraysa saatler gece yarısını geçer. |
maxTime | PantrixTime? | null | alanın aldığı son saat ya da son olmaması için null. |
minuteStep | Int | 1 | seçicinin dakikalarının kaç dakika arayla geldiği, 1 ile 60 arası. |
is24Hour | Boolean | true | alanın ve seçicisinin bir günün saatlerini mi, yoksa 12 saatlik bir saatle mi saydığı. |
presentation | DatePickerPresentation | DatePickerPresentation.Adaptive | seç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. |
style | FilledTextFieldStyle? | null | bu çağrının alanın kendi stili. |
colors | FilledTextFieldColors? | null | bu çağrının alanın kendi renkleri. |
pickerStyle | TimePickerStyle? | null | bu çağrının kendi seçici stili. |
pickerColors | TimePickerColors? | null | bu çağrının kendi seçici renkleri. |
contentDescription | String? | null | label'ı olmayan alan için ekran okuyucunun söylediği. |
tagKey | String? | null | alanın otomasyon anahtarı; bir değerin PantrixTimeFilledTextField'ı onu nasıl alıyorsa öyle. |
interactionSource | MutableInteractionSource? | null | alanın etkileşimleri, dışarı taşınmış. |
field
Bir formun alanına bağlı bir saat alanı: saati, hatası ve adı field'dan gelir.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
field | FormField<PantrixTime?> | saat alanının gösterdiği ve değiştirdiği formun alanı. | |
modifier | Modifier | Modifier | bütün alanın modifier'ı. |
form | FormState? | null | verilirse klavyenin eylem tuşu formu ona kayıtlı düğme üzerinden gönderir. |
enabled | Boolean | true | alanın kullanılıp kullanılamayacağı. |
readOnly | Boolean | false | saatin yalnız seçiciden seçilip seçilemeyeceği. |
label | String? | null | alanın ne için olduğu, kutunun üstünde yazılı. |
placeholder | String? | null | kutu boşken, düzenin yerinde gösterilir. |
supportingText | String? | null | kutunun altındaki yardım, alanın orada gösterecek bir hatası yokken. |
leadingIcon | (@Composable () -> Unit)? | null | metnin önünde duran. |
showClearButton | Boolean | false | alan yazılabilirken ve boş değilken onu boşaltan bir düğme gösterir. |
minTime | PantrixTime? | null | alanın aldığı ilk saat ya da ilk olmaması için null; maxTime'dan sonraysa saatler gece yarısını geçer. |
maxTime | PantrixTime? | null | alanın aldığı son saat ya da son olmaması için null. |
minuteStep | Int | 1 | seçicinin dakikalarının kaç dakika arayla geldiği, 1 ile 60 arası. |
is24Hour | Boolean | true | alanın ve seçicisinin bir günün saatlerini mi, yoksa 12 saatlik bir saatle mi saydığı. |
presentation | DatePickerPresentation | DatePickerPresentation.Adaptive | seç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. |
style | FilledTextFieldStyle? | null | bu çağrının alanın kendi stili. |
colors | FilledTextFieldColors? | null | bu çağrının alanın kendi renkleri. |
pickerStyle | TimePickerStyle? | null | bu çağrının kendi seçici stili. |
pickerColors | TimePickerColors? | null | bu çağrının kendi seçici renkleri. |
contentDescription | String? | null | label'ı olmayan alan için ekran okuyucunun söylediği. |
interactionSource | MutableInteractionSource? | null | alanı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.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
shape | ShapeSpec | ShapeSpec.Unspecified | Kutunun ş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. |
height | Dp | Dp.Unspecified | Kutunun en az yüksekliği. |
minWidth | Dp | Dp.Unspecified | Kutunun en az genişliği: boş bir alanın, kullanıcı içine yazdıkça genişlemesini önler. |
horizontalPadding | Dp | Dp.Unspecified | İkon olmayan yerde, kutunun kenarı ile etiketi ve metni arasındaki boşluk. |
verticalPadding | Dp | Dp.Unspecified | Etiketin satırının üstündeki ve metnin son satırının altındaki boşluk. |
iconPadding | Dp | Dp.Unspecified | Yuvasındaki bir ikonun çevresindeki boşluk. |
iconSize | Dp | Dp.Unspecified | Yuvadaki bir ikonun alması gereken boyut. Yuva, içine konanı boyutlandırmaz. |
borderWidth | Dp | Dp.Unspecified | Kutunun odakta, hatada ve fare üstündeyken aldığı çerçevenin kalınlığı. Dinlenirken çerçevesi yoktur. |
textRole | TypeRole? | null | Metnin 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:
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
container | Color | Color.Unspecified | Dinlenirken kutunun dolgusu. Temanın neutral rolünün container'ı. |
focusedContainer | Color | Color.Unspecified | Çerçeveliyken kutunun dolgusu: odakta ve hatada. Temanın surface rengi. |
hoveredOutline | Color | Color.Unspecified | Fare üstündeyken çerçeve. Temanın borderHover rengi. |
focusedOutline | Color | Color.Unspecified | Alan odaktayken çerçeve. Temanın primary rengi. |
error | Color | Color.Unspecified | Metnin 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. |
text | Color | Color.Unspecified | Yazılan metin. Temanın textPrimary rengi. |
label | Color | Color.Unspecified | Etiket: hem dinlenirken yazının yerinde, hem yazının üstündeki kendi satırında. Temanın textSecondary rengi. |
placeholder | Color | Color.Unspecified | Yer tutucu. Temanın textSecondary rengi. |
supportingText | Color | Color.Unspecified | Kutunun altındaki yardım metni ve sayaç. Temanın textSecondary rengi. |
icon | Color | Color.Unspecified | Yuvadaki bir ikonun, kendi rengini vermedikçe çizildiği renk ve temizleme düğmesinin çarpısı. Temanın textSecondary rengi. |
cursor | Color | Color.Unspecified | İmleç ve onunla birlikte bir seçimin tutamaçları ile zemini. Temanın primary rengi. |
scrollBar | Color | Color.Unspecified | Birkaç 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. |