package dev.inmo.jsuikit.elements import androidx.compose.runtime.* import dev.inmo.jsuikit.modifiers.UIKitModifier import dev.inmo.jsuikit.modifiers.include import org.jetbrains.compose.web.attributes.* import org.jetbrains.compose.web.dom.AttrBuilderContext import org.jetbrains.compose.web.dom.Input import org.w3c.dom.HTMLInputElement @Composable fun StandardInput( type: InputType, value: T? = null, vararg modifiers: UIKitModifier, disabled: Boolean = false, placeholder: String? = null, attributesCustomizer: AttrBuilderContext = {}, onChange: HTMLInputElement.(T) -> Unit ) { Input(type) { classes("uk-input") include(*modifiers) placeholder ?.let(::placeholder) value ?.let { when (it) { is String -> value(it) is Number -> value(it) else -> {} } } onInput { event -> event.target.onChange(event.value) } if (disabled) { disabled() } attributesCustomizer() } } @Deprecated("Renamed", ReplaceWith("StandardInput(type, value, *modifiers, disabled, placeholder, attributesCustomizer, onChange)")) @Composable fun DefaultInput( type: InputType, value: T, disabled: Boolean = false, placeholder: String? = null, vararg modifiers: UIKitModifier, attributesCustomizer: AttrBuilderContext = {}, onChange: (T) -> Unit ) = StandardInput(type, value, modifiers = modifiers, disabled, placeholder, attributesCustomizer) { onChange(it) } @Composable fun StandardInput( type: InputType, state: MutableState, disabledState: State? = null, placeholder: String? = null, vararg modifiers: UIKitModifier, attributesCustomizer: AttrBuilderContext = {}, ) = StandardInput( type, state.value, modifiers = modifiers, disabledState ?.value == true, placeholder, attributesCustomizer = attributesCustomizer ) { state.value = it }