KotlinPublicationScriptsBui.../core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt

93 lines
2.4 KiB
Kotlin
Raw Normal View History

2022-11-15 12:53:59 +00:00
package dev.inmo.kmppscriptbuilder.core.ui.utils
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
2022-11-15 18:56:24 +00:00
import androidx.compose.material.Divider
2022-11-15 12:53:59 +00:00
import androidx.compose.material.OutlinedTextField
import androidx.compose.material.Switch
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
2022-11-15 18:56:24 +00:00
import androidx.compose.ui.focus.onFocusChanged
2022-11-15 12:53:59 +00:00
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
val commonTextFieldTextStyle = TextStyle(
fontSize = 12.sp
)
@Composable
actual fun SwitchWithLabel(
label: String,
checked: Boolean,
placeSwitchAtTheStart: Boolean,
switchEnabled: Boolean,
onCheckedChange: (Boolean) -> Unit
) {
2022-11-15 18:56:24 +00:00
Row(Modifier.padding(0.dp, 8.dp).clickable { onCheckedChange(!checked) }, Arrangement.Start, Alignment.Top) {
2022-11-15 12:53:59 +00:00
val switchCreator = @Composable {
2022-11-15 18:56:24 +00:00
Switch(checked, null, Modifier.padding(8.dp, 0.dp), enabled = switchEnabled)
2022-11-15 12:53:59 +00:00
}
if (placeSwitchAtTheStart) {
switchCreator()
}
2022-11-15 18:56:24 +00:00
Box(Modifier.fillMaxWidth().align(Alignment.CenterVertically)) {
CommonText(label)
2022-11-15 12:53:59 +00:00
}
if (!placeSwitchAtTheStart) {
switchCreator()
}
}
}
@Composable
2022-11-15 18:56:24 +00:00
actual fun CommonTextField(
presetText: String,
hint: String,
onFocusChanged: (Boolean) -> Unit,
onChange: (String) -> Unit
) {
2022-11-15 12:53:59 +00:00
OutlinedTextField(
presetText,
onChange,
2022-11-15 18:56:24 +00:00
Modifier.fillMaxWidth().onFocusChanged {
onFocusChanged(it.isFocused)
},
2022-11-15 12:53:59 +00:00
singleLine = true,
label = {
2022-11-15 13:55:54 +00:00
CommonText(hint,)
2022-11-15 12:53:59 +00:00
}
)
}
@Composable
2022-11-15 13:55:54 +00:00
actual fun CommonText(text: String, onClick: (() -> Unit)?) {
Text(text, modifier = Modifier.run { onClick ?.let { clickable(onClick = it) } ?: this })
2022-11-15 12:53:59 +00:00
}
@Composable
actual fun TitleText(text: String) {
Text(
text, Modifier.padding(0.dp, 8.dp), fontSize = 18.sp
)
}
2022-11-15 18:56:24 +00:00
@Composable
actual fun <T> ButtonsPanel(data: Iterable<T>, itemDrawer: @Composable (T) -> Unit) {
Row {
data.forEach { itemDrawer(it) }
}
}
@Composable
actual fun DefaultDivider() {
Divider()
}