PushButtonComponent

This class combines the configuration and the core rendering of a button.

The rendering functions are used by the component factory functions pushButton and clickButton, so they are not meant to be called directly unless you plan to implement your own button. If not, just use those functions for stetting up a button!

Much more important are the configuration functions. You can configure the following aspects:

  • the type (`colorScheme`) - default is `primary`

  • the label text

  • the icon including its position (left or right)

  • a state called `loading` for visualizing a longer background task

  • an additional label during the loading state

  • some predefined styling variants

  • link events of the button like `clicks` with external handlers

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

The following example shows the usage:

pushButton {
icon { fromTheme { check } } // set up an icon
iconPlacement { right } // place the icon on the right side (``left`` is the default)
loading(someStore.loading) // pass in some [Flow<Boolean>] that shows a spinner if ``true`` is passed
loadingText("saving") // show an _alternate_ label, if store sends ``true``
text("save") // define the default label
disabled(true) // disable the button; could also be a ``Flow<Boolean>`` for dynamic disabling
events { // open inner context with all DOM-element events
clicks handledBy someStore.update // react to click event
}
element {
// exposes the underlying HTML button element for direct access. Use with caution!
}
}

Constructors

Link copied to clipboard
fun PushButtonComponent()

Types

Link copied to clipboard
enum ButtonVariant : Enum<PushButtonComponent.ButtonVariant>
Link copied to clipboard
object Companion
Link copied to clipboard
enum IconPlacement : Enum<PushButtonComponent.IconPlacement>
Link copied to clipboard
class IconPlacementContext
Link copied to clipboard
object VariantContext

Functions

Link copied to clipboard
open override fun enabled(value: Boolean)
open override fun enabled(value: Flow<Boolean>)
Link copied to clipboard
fun loading(value: Flow<Boolean>)
Link copied to clipboard
fun loadingText(value: String)
fun loadingText(value: Flow<String>)
Link copied to clipboard
open override fun render(    context: RenderContext,     styling: BoxParams.() -> Unit,     baseClass: StyleClass,     id: String?,     prefix: String)

Central method that should do the actual rendering of a component.

Link copied to clipboard
fun text(value: String)
fun text(value: Flow<String>)
Link copied to clipboard
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

Link copied to clipboard
val centerIconStyle: Style<BasicParams>
Link copied to clipboard
val centerSpinnerStyle: Style<BasicParams>
Link copied to clipboard
open override val disabled: DynamicComponentProperty<Boolean>
Link copied to clipboard
open override val element: ComponentProperty<Button.() -> 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. A client should use this with caution, as it might massively change the default behaviour of the component!

Link copied to clipboard
open override val events: ComponentProperty<EventContext<HTMLButtonElement>.() -> Unit>

This property enables the client to access all events offered by the underlying HTML element.

Link copied to clipboard
val icon: ComponentProperty<Icons.() -> IconDefinition?>
Link copied to clipboard
val leftIconStyle: Style<BasicParams>
Link copied to clipboard
val leftSpinnerStyle: Style<BasicParams>
Link copied to clipboard
open override val renderTooltip: ComponentProperty<Tag<HTMLElement>.() -> Unit>
Link copied to clipboard
val rightIconStyle: Style<BasicParams>
Link copied to clipboard
val rightSpinnerStyle: Style<BasicParams>
Link copied to clipboard
val size: ComponentProperty<FormSizesStyles.() -> Style<BasicParams>>
Link copied to clipboard
val type: ComponentProperty<PushButtonTypes.() -> ColorScheme>
Link copied to clipboard

Inheritors

Link copied to clipboard