Module: UI::NavigationMenuTriggerBehavior
- Included in:
- NavigationMenuTrigger, NavigationMenuTriggerComponent
- Defined in:
- app/behaviors/ui/navigation_menu_trigger_behavior.rb
Overview
TriggerBehavior
Shared behavior for NavigationMenu Trigger component.
Instance Method Summary collapse
-
#navigation_menu_trigger_chevron_classes ⇒ Object
Returns CSS classes for the chevron icon.
-
#navigation_menu_trigger_classes ⇒ Object
Returns combined CSS classes for the trigger.
-
#navigation_menu_trigger_data_attributes ⇒ Object
Returns data attributes.
-
#navigation_menu_trigger_html_attributes ⇒ Object
Returns HTML attributes for the trigger.
Instance Method Details
#navigation_menu_trigger_chevron_classes ⇒ Object
Returns CSS classes for the chevron icon
53 54 55 |
# File 'app/behaviors/ui/navigation_menu_trigger_behavior.rb', line 53 def "size-3 shrink-0 transition-transform duration-200 group-data-[state=open]/navigation-menu-trigger:rotate-180" end |
#navigation_menu_trigger_classes ⇒ Object
Returns combined CSS classes for the trigger
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/behaviors/ui/navigation_menu_trigger_behavior.rb', line 21 def classes_value = respond_to?(:classes, true) ? classes : @classes TailwindMerge::Merger.new.merge([ # Base styles "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center gap-1", "rounded-md bg-background px-4 py-2 text-sm font-medium", # Focus and hover states "outline-hidden transition-colors", "hover:bg-accent hover:text-accent-foreground", "focus:bg-accent focus:text-accent-foreground", "focus-visible:ring-[3px] focus-visible:ring-ring/50", # Disabled state "disabled:pointer-events-none disabled:opacity-50", # Open state "data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground", classes_value ].compact.join(" ")) end |
#navigation_menu_trigger_data_attributes ⇒ Object
Returns data attributes
41 42 43 44 45 46 47 48 49 50 |
# File 'app/behaviors/ui/navigation_menu_trigger_behavior.rb', line 41 def attributes_value = respond_to?(:attributes, true) ? attributes : @attributes base_data = { slot: "navigation-menu-trigger", state: "closed", "ui--navigation-menu-target": "trigger", action: "click->ui--navigation-menu#toggle mouseenter->ui--navigation-menu#handleTriggerHover mouseleave->ui--navigation-menu#handleTriggerLeave" } (attributes_value&.fetch(:data, {}) || {}).merge(base_data) end |
#navigation_menu_trigger_html_attributes ⇒ Object
Returns HTML attributes for the trigger
8 9 10 11 12 13 14 15 16 17 18 |
# File 'app/behaviors/ui/navigation_menu_trigger_behavior.rb', line 8 def first_value = defined?(@first) && @first { class: , data: , type: "button", "aria-expanded": "false", tabindex: first_value ? "0" : "-1" } end |