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.



159
160
161
162
# File 'lib/ruby_native/helper.rb', line 159

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

Instance Method Details

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



164
165
166
167
168
169
170
171
172
# File 'lib/ruby_native/helper.rb', line 164

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
  @items << @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.



178
179
180
181
182
183
184
185
# File 'lib/ruby_native/helper.rb', line 178

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
  @items << @context.tag.div(data: data)
end

#to_htmlObject



187
188
189
# File 'lib/ruby_native/helper.rb', line 187

def to_html
  @context.safe_join(@items)
end