Module: BetterUi::General::Components::Input::Select::SelectHelper

Included in:
ApplicationHelper
Defined in:
app/helpers/better_ui/general/components/input/select/select_helper.rb

Instance Method Summary collapse

Instance Method Details

#bui_input_select(name:, options:, selected: nil, required: false, disabled: false, multiple: false, searchable: true, theme: :default, size: :medium, rounded: :medium, placeholder: nil, search_placeholder: nil, max_height: "300px", form: nil, classes: '', **html_options) ⇒ String

Renderizza un componente Select personalizzato con ricerca, animazioni e multi-selezione.

Examples:

Uso base

<%= bui_input_select(name: 'country', options: [{value: 'it', label: 'Italia'}, {value: 'us', label: 'USA'}]) %>

Con selezione multipla

<%= bui_input_select(name: 'skills', multiple: true, options: skills_options) %>

Con ricerca e temi

<%= bui_input_select(name: 'category', searchable: true, theme: :blue, options: categories) %>

Con dimensioni personalizzate

<%= bui_input_select(name: 'priority', size: :large, options: priorities, selected: 'high') %>

Con Rails form builder

<%= form_with model: @user do |form| %>
  <%= bui_input_select(name: :role, form: form, options: role_options, theme: :green) %>
<% end %>

Con opzioni avanzate

<%= bui_input_select(
      name: 'tags', 
      multiple: true, 
      searchable: true,
      placeholder: 'Seleziona tag...',
      search_placeholder: 'Cerca tag...',
      max_height: '200px',
      options: tag_options,
      selected: ['ruby', 'rails']
    ) %>

Parameters:

  • name (String)

    Nome del campo select (obbligatorio)

  • options (Array<Hash>)

    Array di opzioni nel formato [‘value’, label: ‘label’, …]

  • selected (String, Array, nil) (defaults to: nil)

    Valore/i selezionato/i

  • required (Boolean) (defaults to: false)

    Se il campo è obbligatorio

  • disabled (Boolean) (defaults to: false)

    Se il campo è disabilitato

  • multiple (Boolean) (defaults to: false)

    Se multiple opzioni possono essere selezionate

  • searchable (Boolean) (defaults to: true)

    Se abilitare la ricerca

  • 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: :medium)

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

  • placeholder (String) (defaults to: nil)

    Testo placeholder per il trigger

  • search_placeholder (String) (defaults to: nil)

    Testo placeholder per il campo search

  • max_height (String) (defaults to: "300px")

    Altezza massima del dropdown (default: “300px”)

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

    Form builder Rails opzionale

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

    Classi CSS aggiuntive

  • options (Hash)

    Opzioni aggiuntive per attributi HTML

Returns:

  • (String)

    HTML del componente Select renderizzato



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/helpers/better_ui/general/components/input/select/select_helper.rb', line 58

def bui_input_select(name:, options:, selected: nil, required: false, disabled: false, 
                     multiple: false, searchable: true, theme: :default, size: :medium, 
                     rounded: :medium, placeholder: nil, search_placeholder: nil, 
                     max_height: "300px", form: nil, classes: '', **html_options)
  render BetterUi::General::Input::Select::Component.new(
    name: name,
    options: options,
    selected: selected,
    required: required,
    disabled: disabled,
    multiple: multiple,
    searchable: searchable,
    theme: theme,
    size: size,
    rounded: rounded,
    placeholder: placeholder,
    search_placeholder: search_placeholder,
    max_height: max_height,
    form: form,
    classes: classes,
    **html_options
  )
end