class Primer::Alpha::ActionMenu

def initialize(

Parameters:
  • system_arguments (Hash) -- <%= link_to_system_arguments_docs %>.
  • overlay_arguments (Hash) -- Arguments to pass to the underlying <%= link_to_component(Primer::Alpha::Overlay) %>
  • form_arguments (Hash) -- Allows an `ActionMenu` to act as a select list in multi- and single-select modes. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission.
  • select_variant (Symbol) -- <%= one_of(Primer::Alpha::ActionMenu::SELECT_VARIANT_OPTIONS) %>
  • dynamic_label_prefix (String) -- If provided, the prefix is prepended to the dynamic label and displayed in the show button.
  • dynamic_label (Boolean) -- Whether or not to display the text of the currently selected item in the show button.
  • preload (Boolean) -- When true, and src is present, loads the `include-fragment` on trigger hover.
  • src (String) -- Used with an `include-fragment` element to load menu content from the given source URL.
  • size (Symbol) -- <%= one_of(Primer::Alpha::Overlay::SIZE_OPTIONS) %>.
  • anchor_side (Symbol) -- <%= one_of(Primer::Alpha::Overlay::ANCHOR_SIDE_OPTIONS) %>.
  • anchor_align (Symbol) -- <%= one_of(Primer::Alpha::Overlay::ANCHOR_ALIGN_OPTIONS) %>.
  • menu_id (String) -- Id of the menu.
def initialize(
  menu_id: self.class.generate_id,
  anchor_align: Primer::Alpha::Overlay::DEFAULT_ANCHOR_ALIGN,
  anchor_side: Primer::Alpha::Overlay::DEFAULT_ANCHOR_SIDE,
  size: Primer::Alpha::Overlay::DEFAULT_SIZE,
  src: nil,
  preload: DEFAULT_PRELOAD,
  dynamic_label: false,
  dynamic_label_prefix: nil,
  select_variant: DEFAULT_SELECT_VARIANT,
  form_arguments: {},
  overlay_arguments: {},
  **system_arguments
)
  @menu_id = menu_id
  @src = src
  @preload = fetch_or_fallback_boolean(preload, DEFAULT_PRELOAD)
  @system_arguments = deny_tag_argument(**system_arguments)
  @system_arguments[:preload] = true if @src.present? && preload?
  @select_variant = fetch_or_fallback(SELECT_VARIANT_OPTIONS, select_variant, DEFAULT_SELECT_VARIANT)
  @system_arguments[:tag] = :"action-menu"
  @system_arguments[:"data-select-variant"] = select_variant
  @system_arguments[:"data-dynamic-label"] = "" if dynamic_label
  @system_arguments[:"data-dynamic-label-prefix"] = dynamic_label_prefix if dynamic_label_prefix.present?
  overlay_arguments[:data] = merge_data(
    overlay_arguments, data: {
      target: "action-menu.overlay"
    }
  )
  @overlay = Primer::Alpha::Overlay.new(
    id: "#{@menu_id}-overlay",
    title: "Menu",
    visually_hide_title: true,
    anchor_align: anchor_align,
    anchor_side: anchor_side,
    size: size,
    **overlay_arguments
  )
  @list = Primer::Alpha::ActionMenu::List.new(
    menu_id: @menu_id,
    select_variant: select_variant,
    form_arguments: form_arguments
  )
end