Class: RubyNative::Helper::NavbarMenuBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_native/helper.rb

Instance Method Summary collapse

Constructor Details

#initialize(context) ⇒ NavbarMenuBuilder

Returns a new instance of NavbarMenuBuilder.



184
185
186
187
# File 'lib/ruby_native/helper.rb', line 184

def initialize(context)
  @context = context
  @items = []
end

Instance Method Details

#item(title, href: nil, click: nil, icon: nil, icons: nil, selected: false) ⇒ Object



189
190
191
192
193
194
195
196
197
# File 'lib/ruby_native/helper.rb', line 189

def item(title, href: nil, click: nil, icon: nil, icons: nil, selected: false)
  resolved = RubyNative::Helper.resolve_icon(icon: icon, icons: icons, platform: @context.try(:native_platform))
  data = { native_menu_item: "", native_title: title }
  data[:native_href] = href if href
  data[:native_click] = click if click
  data[:native_icon] = resolved if resolved
  data[:native_selected] = "" if selected
  add(@context.tag.div(data: data))
end

#share_item(title = "Share", url: nil, icon: "square.and.arrow.up", icons: nil, selected: false) ⇒ Object

Adds a share entry to a navbar button's dropdown menu. Selecting it opens the platform share sheet for url: (defaults to the current page on the web side). Icons follow the same icon:/icons: rules as the other menu items.



203
204
205
206
207
208
209
210
# File 'lib/ruby_native/helper.rb', line 203

def share_item(title = "Share", url: nil, icon: "square.and.arrow.up", icons: nil, selected: false)
  resolved = RubyNative::Helper.resolve_icon(icon: icon, icons: icons, platform: @context.try(:native_platform))
  data = { native_menu_item: "", native_title: title, native_share: "" }
  data[:native_share_url] = url if url
  data[:native_icon] = resolved if resolved
  data[:native_selected] = "" if selected
  add(@context.tag.div(data: data))
end

#to_htmlObject



212
213
214
# File 'lib/ruby_native/helper.rb', line 212

def to_html
  @context.safe_join(@items)
end