Method: Primer::Beta::NavList::Item#before_render

Defined in:
app/components/primer/beta/nav_list/item.rb

#before_renderObject

Raises:

  • (ArgumentError)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'app/components/primer/beta/nav_list/item.rb', line 68

def before_render
  if active_sub_item?
    expand!

    @content_arguments[:classes] = class_names(
      @content_arguments[:classes],
      "ActionListContent--hasActiveSubItem"
    )
  else
    @system_arguments[:classes] = class_names(
      @system_arguments[:classes],
      "ActionListItem--navActive" => active?
    )
  end

  @content_arguments[:"aria-current"] = "page" if active?

  super

  raise "Cannot render a trailing action for an item with subitems" if items.present? && trailing_action.present?

  raise "Cannot pass `selected_by_ids:` for an item with subitems, since parent items cannot be selected" if items.present? && @selected_by_ids.present?

  return if items.blank?

  @sub_list_arguments[:aria] = merge_aria(
    @sub_list_arguments,
    { aria: { labelledby: id } }
  )

  raise ArgumentError, "Items with sub-items cannot have hrefs" if href.present?

  @content_arguments[:tag] = :button
  @content_arguments[:"aria-expanded"] = @expanded.to_s
  @content_arguments[:"data-action"] = "
    click:#{@list.custom_element_name}#handleItemWithSubItemClick
    keydown:#{@list.custom_element_name}#handleItemWithSubItemKeydown
  "

  with_private_trailing_action_icon(:"chevron-down", classes: "ActionListItem-collapseIcon")

  @system_arguments[:classes] = class_names(
    @system_arguments[:classes],
    "ActionListItem--hasSubItem"
  )
end