Module: BetterUi::General::Components::Input::Radio::RadioHelper

Included in:
ApplicationHelper
Defined in:
app/helpers/better_ui/general/components/input/radio/radio_helper.rb

Overview

Helper specifico per radio button Better UI

Instance Method Summary collapse

Instance Method Details

#bui_input_radio(name:, value:, checked: false, required: false, disabled: false, label: nil, label_position: :right, theme: :default, size: :medium, rounded: :full, classes: '', form: nil, **options) ⇒ String

Genera un radio button con stili Better UI

Examples:

Gruppo radio base - Selezione genere (STESSO name, value DIVERSI)

bui_input_radio(name: "gender", value: "male", label: "Maschio")
bui_input_radio(name: "gender", value: "female", label: "Femmina") 
bui_input_radio(name: "gender", value: "other", label: "Altro")

Gruppo radio con temi diversi - Priorità task

bui_input_radio(name: "priority", value: "low", label: "Bassa", theme: :green)
bui_input_radio(name: "priority", value: "medium", label: "Media", theme: :yellow)
bui_input_radio(name: "priority", value: "high", label: "Alta", theme: :red, size: :large)

Gruppo radio con Rails form builder

<%= form_with model: @user do |form| %>
  <%= bui_input_radio(name: :role, value: "admin", label: "Amministratore", form: form) %>
  <%= bui_input_radio(name: :role, value: "user", label: "Utente", form: form) %>
  <%= bui_input_radio(name: :role, value: "guest", label: "Ospite", form: form) %>
<% end %>

Gruppo radio con selezione dinamica e validazione

current_method = @user&.payment_method
bui_input_radio(name: "payment", value: "card", label: "Carta", checked: current_method == "card", required: true)
bui_input_radio(name: "payment", value: "bank", label: "Bonifico", checked: current_method == "bank", required: true)
bui_input_radio(name: "payment", value: "cash", label: "Contrassegno", checked: current_method == "cash", required: true)

Gruppo radio con attributi HTML personalizzati

bui_input_radio(name: "notification", value: "email", label: "Email", theme: :blue, data: { action: "change->form#updateNotification" })
bui_input_radio(name: "notification", value: "sms", label: "SMS", theme: :blue, data: { action: "change->form#updateNotification" })
bui_input_radio(name: "notification", value: "push", label: "Push", theme: :blue, data: { action: "change->form#updateNotification" })

Parameters:

  • name (String)

    Nome del campo radio (obbligatorio)

  • value (String)

    Valore del radio button (obbligatorio)

  • checked (Boolean) (defaults to: false)

    Se il radio è selezionato

  • required (Boolean) (defaults to: false)

    Se il campo è obbligatorio

  • disabled (Boolean) (defaults to: false)

    Se il campo è disabilitato

  • label (String, nil) (defaults to: nil)

    Testo della label associata al radio

  • label_position (Symbol) (defaults to: :right)

    Posizione della label (:left, :right)

  • theme (Symbol) (defaults to: :default)

    Tema del componente (:default, :white, :red, :rose, :orange, :green, :blue, :yellow, :violet)

  • size (Symbol) (defaults to: :medium)

    Dimensione del componente (:small, :medium, :large)

  • rounded (Symbol) (defaults to: :full)

    Border radius (:none, :small, :medium, :large, :full)

  • classes (String) (defaults to: '')

    Classi CSS aggiuntive

  • form (ActionView::Helpers::FormBuilder, nil) (defaults to: nil)

    Form builder Rails opzionale

  • options (Hash)

    Opzioni aggiuntive per l’input

Returns:

  • (String)

    HTML del radio button renderizzato



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/helpers/better_ui/general/components/input/radio/radio_helper.rb', line 55

def bui_input_radio(name:, value:, checked: false, required: false, disabled: false, 
                   label: nil, label_position: :right, theme: :default, 
                   size: :medium, rounded: :full, classes: '', form: nil, **options)
  render BetterUi::General::Input::Radio::Component.new(
    name: name,
    value: value,
    checked: checked,
    required: required,
    disabled: disabled,
    label: label,
    label_position: label_position,
    theme: theme,
    size: size,
    rounded: rounded,
    classes: classes,
    form: form,
    **options
  )
end