mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
30 lines
925 B
Ruby
30 lines
925 B
Ruby
|
class Tabs::NavComponent < ViewComponent::Base
|
||
|
erb_template <<~ERB
|
||
|
<%= tag.nav class: classes do %>
|
||
|
<% btns.each do |btn| %>
|
||
|
<%= btn %>
|
||
|
<% end %>
|
||
|
<% end %>
|
||
|
ERB
|
||
|
|
||
|
renders_many :btns, ->(id:, label:, classes: nil, &block) do
|
||
|
content_tag(
|
||
|
:button, label, id: id,
|
||
|
type: "button",
|
||
|
class: class_names(btn_classes, id == active_tab ? active_btn_classes : inactive_btn_classes, classes),
|
||
|
data: { id: id, action: "tabs#show", tabs_target: "navBtn" },
|
||
|
&block
|
||
|
)
|
||
|
end
|
||
|
|
||
|
attr_reader :active_tab, :classes, :active_btn_classes, :inactive_btn_classes, :btn_classes
|
||
|
|
||
|
def initialize(active_tab:, classes: nil, active_btn_classes: nil, inactive_btn_classes: nil, btn_classes: nil)
|
||
|
@active_tab = active_tab
|
||
|
@classes = classes
|
||
|
@active_btn_classes = active_btn_classes
|
||
|
@inactive_btn_classes = inactive_btn_classes
|
||
|
@btn_classes = btn_classes
|
||
|
end
|
||
|
end
|