Switch

Component

Interactive examples and API documentation

Basic
Basic usage of switch.
Code
<%= render Hakumi::Switch::Component.new %>
Sizes
Small, middle, and large switches.
Code
<%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
  <%= render Hakumi::Switch::Component.new(size: :small) %>
  <%= render Hakumi::Switch::Component.new %>
  <%= render Hakumi::Switch::Component.new(size: :large) %>
<% end %>
Disabled & Loading
Disabled and loading states. Use the API to toggle states dynamically.

Toggle disabled state via API:

Toggle loading state via API:

Code
<%= render Hakumi::Space::Component.new(size: :large, direction: :vertical, align: :start) do %>
  <%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
    <%= render Hakumi::Switch::Component.new(disabled: true) %>
    <%= render Hakumi::Switch::Component.new(checked: true, disabled: true) %>
    <%= render Hakumi::Switch::Component.new(loading: true) %>
    <%= render Hakumi::Switch::Component.new(checked: true, loading: true) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(size: :middle, direction: :vertical, align: :start) do %>
    <p style="margin-bottom: 8px;">Toggle disabled state via API:</p>
    <%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
      <%= render Hakumi::Switch::Component.new(
        id: "switch-disabled-demo",
        checked: true,
        disabled: true
      ) %>
      <%= render Hakumi::Button::Component.new(
        size: :small,
        onclick: "document.getElementById('switch-disabled-demo').hakumiComponent.api.toggleDisabled()"
      ) do %>
        Toggle Disabled
      <% end %>
    <% end %>
  <% end %>

  <%= render Hakumi::Space::Component.new(size: :middle, direction: :vertical, align: :start) do %>
    <p style="margin-bottom: 8px;">Toggle loading state via API:</p>
    <%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
      <%= render Hakumi::Switch::Component.new(
        id: "switch-loading-demo",
        checked: true
      ) %>
      <%= render Hakumi::Button::Component.new(
        size: :small,
        onclick: "document.getElementById('switch-loading-demo').hakumiComponent.api.toggleLoading()"
      ) do %>
        Toggle Loading
      <% end %>
    <% end %>
  <% end %>
<% end %>
With labels
Checked and unchecked labels.
Code
<%= render Hakumi::Space::Component.new(size: :large, direction: :vertical, align: :start) do %>
  <%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
    <%= render Hakumi::Switch::Component.new(
      checked_text: "On",
      unchecked_text: "Off"
    ) %>

    <%= render Hakumi::Switch::Component.new(
      checked: true,
      checked_text: "YES",
      unchecked_text: "NO"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
    <%= render Hakumi::Switch::Component.new(
      checked: true,
      checked_text: "Enabled",
      unchecked_text: "Disabled"
    ) %>

    <%= render Hakumi::Switch::Component.new(
      checked_text: "Active",
      unchecked_text: "Inactive"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(size: :middle, align: :center) do %>
    <%= render Hakumi::Switch::Component.new(
      checked: true,
      checked_text: render(Hakumi::Icon::Component.new(name: :check)),
      unchecked_text: render(Hakumi::Icon::Component.new(name: :close))
    ) %>
  <% end %>
<% end %>

Switch API

Prop Type Default Description
checked Boolean false Controlled checked state.
default_checked Boolean false Initial checked state.
disabled Boolean false Disable switch.
loading Boolean false Show loading state and disable switch.
size Symbol :middle Switch size (:small, :middle, :large).
checked_text String or Slot - Content shown when checked.
unchecked_text String or Slot - Content shown when unchecked.
standalone Boolean true Render without form item wrapper.
label String - Form label when standalone is false.
caption String - Form caption when standalone is false.

Switch JavaScript API (element.hakumiComponent.api)

Prop Type Default Description
setChecked(checked) Function - Set checked state (true/false).
setDisabled(disabled) Function - Set disabled state (true/false).
setLoading(loading) Function - Set loading state (true/false).
isChecked() Function - Return current checked state.
isDisabled() Function - Return current disabled state.
isLoading() Function - Return current loading state.
toggleChecked() Function - Toggle checked state.
toggleDisabled() Function - Toggle disabled state.
toggleLoading() Function - Toggle loading state.
check() Function - Set checked to true.
uncheck() Function - Set checked to false.
enable() Function - Set disabled to false.
disable() Function - Set disabled to true.