Module: UI::SelectItemBehavior
- Included in:
- SelectItem, SelectItemComponent
- Defined in:
- app/helpers/ui/select_item_behavior.rb,
app/behaviors/ui/select_item_behavior.rb
Overview
UI::SelectItemBehavior
Shared behavior for Individual select option across ERB, ViewComponent, and Phlex implementations. This module provides consistent HTML attribute generation and styling.
Instance Method Summary collapse
-
#select_item_classes ⇒ Object
Returns combined CSS classes.
-
#select_item_html_attributes ⇒ Object
Returns HTML attributes for the select item element.
Instance Method Details
#select_item_classes ⇒ Object
Returns combined CSS classes
34 35 36 37 38 39 40 |
# File 'app/helpers/ui/select_item_behavior.rb', line 34 def select_item_classes classes_value = respond_to?(:classes, true) ? classes : @classes TailwindMerge::Merger.new.merge([ select_item_base_classes, classes_value ].compact.join(" ")) end |
#select_item_html_attributes ⇒ Object
Returns HTML attributes for the select item element
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/helpers/ui/select_item_behavior.rb', line 9 def select_item_html_attributes attributes_value = respond_to?(:attributes, true) ? attributes : @attributes attrs = { class: select_item_classes, role: "option", "aria-selected": "false", data: { ui__select_target: "item", action: "click->ui--select#selectItem mouseenter->ui--select#handleItemMouseEnter mouseleave->ui--select#handleItemMouseLeave", value: @value, slot: "select-item" # ADDED: data-slot attribute } } # Add disabled state if specified if @disabled attrs[:data][:disabled] = "true" attrs[:"aria-disabled"] = "true" attrs[:data][:state] = "disabled" end attrs.merge(attributes_value || {}) end |