SwitchComponent

This class combines the configuration and the core styling of a switch.

This class offers the following configuration features:

  • the optional label of a switch (static, dynamic via a Flow<String> or customized content of a Div.RenderContext )

  • some predefined styling variants (size)

  • the style of the switch

  • the style checked state

  • the style of the dot

  • the style of the label

  • link an external boolean flow to set the checked state of the box

  • link an external boolean flow to set the disabled state of the box

  • link events of the switch like `changes` with external handlers

This can be done within a functional expression that is the last parameter of the factory function, called `build`. It offers an initialized instance of this SwitchComponent class as receiver, so every mutating method can be called for configuring the desired state for rendering the switch.

Example usage

val cheeseStore = storeOf(false)
switch(value = cheeseStore) {
label("with extra cheese") // set the label
size { normal } // choose a predefined size
}

// one can handle the events and preselect the control also manually if needed:
switch {
label("with extra cheese") // set the label
size { normal } // choose a predefined size
checked(cheeseStore.data) // link a [Flow<Boolean>] in order to visualize the checked state
events { // open inner context with all DOM-element events
changes.states() handledBy cheeseStore.update // connect the changes event with the state store
}
element {
// exposes the underlying HTML input element for direct access. Use with caution!
}
}

Constructors

SwitchComponent
Link copied to clipboard
js
fun SwitchComponent(value: Store<Boolean>? = null)

Types

Companion
Link copied to clipboard
js
object Companion

Functions

enabled
Link copied to clipboard
js
open override fun enabled(value: Boolean)
open override fun enabled(value: Flow<Boolean>)
label
Link copied to clipboard
js
fun label(value: Div.() -> Unit)
fun label(value: String)
fun label(value: Flow<String>)
render
Link copied to clipboard
js
open override fun render(context: RenderContext, styling: BoxParams.() -> Unit, baseClass: StyleClass, id: String?, prefix: String): Label
Central method that should do the actual rendering of a component.
severity
Link copied to clipboard
js
open override fun severity(value: SeverityProperties.SeverityContext.() -> Severity)
Property to manage the severity value of the component.
severityClassOf
Link copied to clipboard
js
open override fun severityClassOf(severityStyle: SeverityStyles): Flow<StyleClass>
This function manages the task to map a value of the Severity enumeration to a corresponding style defined within the SeverityStyles interface.
tooltip
Link copied to clipboard
js
open override fun tooltip(vararg text: String, build: TooltipComponent.() -> Unit)
open override fun tooltip(styling: BasicParams.() -> Unit, text: String?, baseClass: StyleClass, id: String, prefix: String, build: TooltipComponent.() -> Unit)

Properties

checked
Link copied to clipboard
js
val checked: DynamicComponentProperty<Boolean>
checkedStyle
Link copied to clipboard
js
var checkedStyle: ComponentProperty<Style<BasicParams>>
disabled
Link copied to clipboard
js
open override val disabled: DynamicComponentProperty<Boolean>
dotStyle
Link copied to clipboard
js
val dotStyle: ComponentProperty<Style<BasicParams>>
element
Link copied to clipboard
js
open override val element: ComponentProperty<Input.() -> Unit>
This property enables the client to access the deeper features of an element even though the component itself does not offer an appropriate functionality.
events
Link copied to clipboard
js
open override val events: ComponentProperty<EventContext<HTMLInputElement>.() -> Unit>
This property enables the client to access all events offered by the underlying HTML element.
labelStyle
Link copied to clipboard
js
val labelStyle: ComponentProperty<Style<BasicParams>>
readonly
Link copied to clipboard
js
open override val readonly: DynamicComponentProperty<Boolean>
renderTooltip
Link copied to clipboard
js
open override val renderTooltip: ComponentProperty<Tag<HTMLElement>.() -> Unit>
severity
Link copied to clipboard
js
open override val severity: NullableDynamicComponentProperty<Severity?>
size
Link copied to clipboard
js
val size: ComponentProperty<FormSizesStyles.() -> Style<BasicParams>>