2022-01-12 10:27:49 +00:00
|
|
|
package dev.inmo.jsuikit.elements
|
2021-12-22 08:38:12 +00:00
|
|
|
|
|
|
|
import androidx.compose.runtime.*
|
2022-01-12 13:58:52 +00:00
|
|
|
import dev.inmo.jsuikit.modifiers.UIKitModifier
|
|
|
|
import dev.inmo.jsuikit.modifiers.include
|
2021-12-22 08:38:12 +00:00
|
|
|
import org.jetbrains.compose.web.attributes.*
|
2022-01-13 05:55:08 +00:00
|
|
|
import org.jetbrains.compose.web.dom.AttrBuilderContext
|
2021-12-22 08:38:12 +00:00
|
|
|
import org.jetbrains.compose.web.dom.Input
|
2022-01-13 05:55:08 +00:00
|
|
|
import org.w3c.dom.HTMLInputElement
|
2021-12-22 08:38:12 +00:00
|
|
|
|
|
|
|
@Composable
|
2022-01-25 18:51:26 +00:00
|
|
|
fun <T> StandardInput(
|
2021-12-22 08:38:12 +00:00
|
|
|
type: InputType<T>,
|
|
|
|
state: MutableState<T>,
|
|
|
|
disabledState: State<Boolean>? = null,
|
|
|
|
placeholder: String? = null,
|
2022-01-13 13:56:39 +00:00
|
|
|
vararg modifiers: UIKitModifier,
|
2022-01-13 05:55:08 +00:00
|
|
|
attributesCustomizer: AttrBuilderContext<HTMLInputElement> = {},
|
2021-12-22 08:38:12 +00:00
|
|
|
) {
|
|
|
|
Input(type) {
|
|
|
|
classes("uk-input")
|
|
|
|
include(*modifiers)
|
|
|
|
|
|
|
|
placeholder ?.let(::placeholder)
|
|
|
|
|
2022-01-25 18:51:26 +00:00
|
|
|
state.value.let {
|
|
|
|
when (it) {
|
|
|
|
is String -> value(it)
|
|
|
|
is Number -> value(it)
|
|
|
|
else -> {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onInput { state.value = it.value }
|
|
|
|
|
2021-12-22 08:38:12 +00:00
|
|
|
disabledState ?.let {
|
|
|
|
if (it.value) {
|
|
|
|
disabled()
|
|
|
|
}
|
|
|
|
}
|
2022-01-13 05:55:08 +00:00
|
|
|
attributesCustomizer()
|
2021-12-22 08:38:12 +00:00
|
|
|
}
|
|
|
|
}
|
2022-01-25 18:51:26 +00:00
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Deprecated("Renamed", ReplaceWith("StandardInput", "dev.inmo.jsuikit.elements.StandardInput"))
|
|
|
|
fun <T> TextField(
|
|
|
|
type: InputType<T>,
|
|
|
|
state: MutableState<T>,
|
|
|
|
disabledState: State<Boolean>? = null,
|
|
|
|
placeholder: String? = null,
|
|
|
|
vararg modifiers: UIKitModifier,
|
|
|
|
attributesCustomizer: AttrBuilderContext<HTMLInputElement> = {},
|
|
|
|
) = StandardInput(type, state, disabledState, placeholder, modifiers = modifiers, attributesCustomizer)
|