Raxol.UI.Components.Input.Button (Raxol v0.4.0)

View Source

Button component for interactive UI elements.

This component provides a clickable button with customizable appearance and behavior.

Summary

Functions

Handles input events for the button component.

Initializes the Button component state from the given props.

Mounts the Button component. Performs any setup needed after initialization.

Creates a new Button state map, applying defaults. Expects opts to be a Map.

Renders the button component based on its current state.

Unmounts the Button component, performing any necessary cleanup.

Updates the Button component state in response to messages or prop changes.

Types

t()

@type t() :: %{
  id: String.t(),
  label: String.t(),
  on_click: function() | nil,
  disabled: boolean(),
  focused: boolean(),
  theme: map(),
  style: map(),
  width: integer() | nil,
  height: integer() | nil,
  shortcut: String.t() | nil,
  tooltip: String.t() | nil,
  role: :primary | :secondary | :danger | :success | nil
}

Functions

handle_event(button, event, context)

@spec handle_event(t(), any(), map()) ::
  {:update, t(), list()} | {:handled, t()} | :passthrough

Handles input events for the button component.

Parameters

  • button - The button component
  • event - The input event to handle
  • context - The event context

Returns

{:update, updated_button} if the button state changed, {:handled, button} if the event was handled but state didn't change, :passthrough if the event wasn't handled by the button.

init(state)

@spec init(map()) :: {:ok, t()}

Initializes the Button component state from the given props.

mount(state)

@spec mount(t()) :: t()

Mounts the Button component. Performs any setup needed after initialization.

new(opts)

@spec new(map()) :: t()

Creates a new Button state map, applying defaults. Expects opts to be a Map.

render(button, context)

@spec render(t(), map()) :: map()

Renders the button component based on its current state.

Parameters

  • button - The button component to render
  • context - The rendering context

Returns

A rendered view representation of the button.

unmount(state)

@spec unmount(t()) :: t()

Unmounts the Button component, performing any necessary cleanup.

update(state, message)

@spec update(t(), term()) :: {:noreply, t()}

Updates the Button component state in response to messages or prop changes.