Class: RubyNative::Helper::NavbarBuilder
- Inherits:
-
Object
- Object
- RubyNative::Helper::NavbarBuilder
- Defined in:
- lib/ruby_native/helper.rb
Instance Method Summary collapse
- #button(title = nil, icon: nil, icons: nil, href: nil, click: nil, position: :trailing, selected: false, &block) ⇒ Object
-
#initialize(context) ⇒ NavbarBuilder
constructor
A new instance of NavbarBuilder.
-
#segment(title, href: nil, click: nil, selected: false) ⇒ Object
Adds a segment to the nav bar.
-
#share_button(url: nil, title: "Share", icon: "square.and.arrow.up", icons: nil, position: :trailing) ⇒ Object
Adds a native share button to the nav bar.
- #submit_button(title: "Save", click: "[type='submit']") ⇒ Object
- #to_html ⇒ Object
Constructor Details
#initialize(context) ⇒ NavbarBuilder
Returns a new instance of NavbarBuilder.
173 174 175 176 |
# File 'lib/ruby_native/helper.rb', line 173 def initialize(context) @context = context @items = [] end |
Instance Method Details
#button(title = nil, icon: nil, icons: nil, href: nil, click: nil, position: :trailing, selected: false, &block) ⇒ Object
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/ruby_native/helper.rb', line 178 def (title = nil, icon: nil, icons: nil, href: nil, click: nil, position: :trailing, selected: false, &block) resolved = RubyNative::Helper.resolve_icon(icon: icon, icons: icons, platform: @context.try(:native_platform)) data = { native_button: "" } data[:native_title] = title if title data[:native_icon] = resolved if resolved data[:native_href] = href if href data[:native_click] = click if click data[:native_position] = position.to_s data[:native_selected] = "" if selected if block = NavbarMenuBuilder.new(@context) @context.capture(, &block) add(@context.tag.div(data: data) { .to_html }) else add(@context.tag.div(data: data)) end end |
#segment(title, href: nil, click: nil, selected: false) ⇒ Object
Adds a segment to the nav bar. On iOS the segments render as a centered
segmented control (the same control the App Store uses for Apps/Games).
Mark the current page's segment selected: true. Tapping a segment
navigates to its href (or clicks the click selector), replacing
history so the back button doesn't walk back through segment switches.
202 203 204 205 206 207 208 |
# File 'lib/ruby_native/helper.rb', line 202 def segment(title, href: nil, click: nil, selected: false) data = { native_segment: "", native_title: title } data[:native_href] = href if href data[:native_click] = click if click data[:native_selected] = "" if selected add(@context.tag.div(data: data)) end |
#share_button(url: nil, title: "Share", icon: "square.and.arrow.up", icons: nil, position: :trailing) ⇒ Object
Adds a native share button to the nav bar. Tapping it opens the
platform share sheet for url: (defaults to the current page on the
web side) so it works even where embedded web views don't support
navigator.share. Icons follow the same rules as the other navbar
buttons: icon: applies to every platform and icons: ({ ios:,
android: }) overrides per platform.
216 217 218 219 220 221 222 223 224 |
# File 'lib/ruby_native/helper.rb', line 216 def (url: nil, title: "Share", icon: "square.and.arrow.up", icons: nil, position: :trailing) resolved = RubyNative::Helper.resolve_icon(icon: icon, icons: icons, platform: @context.try(:native_platform)) data = { native_button: "", native_share: "" } data[:native_title] = title if title data[:native_icon] = resolved if resolved data[:native_position] = position.to_s data[:native_share_url] = url if url add(@context.tag.div(data: data)) end |
#submit_button(title: "Save", click: "[type='submit']") ⇒ Object
226 227 228 229 230 231 232 |
# File 'lib/ruby_native/helper.rb', line 226 def (title: "Save", click: "[type='submit']") add(@context.tag.div(data: { native_submit_button: "", native_title: title, native_click: click })) end |
#to_html ⇒ Object
234 235 236 |
# File 'lib/ruby_native/helper.rb', line 234 def to_html @context.safe_join(@items) end |