diff --git a/app/components/menu_item_component.rb b/app/components/menu_item_component.rb index c029afa7..9270de11 100644 --- a/app/components/menu_item_component.rb +++ b/app/components/menu_item_component.rb @@ -1,25 +1,26 @@ class MenuItemComponent < ViewComponent::Base VARIANTS = %i[link button divider].freeze - attr_reader :variant, :text, :icon, :href, :method, :destructive, :confirm, :opts + attr_reader :variant, :text, :icon, :href, :method, :destructive, :confirm, :frame, :opts - def initialize(variant:, text: nil, icon: nil, href: nil, method: :post, destructive: false, confirm: nil, **opts) + def initialize(variant:, text: nil, icon: nil, href: nil, method: :post, destructive: false, confirm: nil, frame: nil, **opts) @variant = variant.to_sym @text = text @icon = icon @href = href @method = method.to_sym @destructive = destructive - @opts = opts @confirm = confirm + @frame = frame + @opts = opts raise ArgumentError, "Invalid variant: #{@variant}" unless VARIANTS.include?(@variant) end def wrapper(&block) if variant == :button - button_to href, method: method, class: container_classes, **merged_button_opts, &block + button_to href, method: method, class: container_classes, **merged_opts, &block elsif variant == :link - link_to href, class: container_classes, **opts, &block + link_to href, class: container_classes, **merged_opts, &block else nil end @@ -44,7 +45,7 @@ class MenuItemComponent < ViewComponent::Base ].join(" ") end - def merged_button_opts + def merged_opts merged_opts = opts.dup || {} data = merged_opts.delete(:data) || {} @@ -52,6 +53,10 @@ class MenuItemComponent < ViewComponent::Base data = data.merge(turbo_confirm: confirm.to_data_attribute) end + if frame.present? + data = data.merge(turbo_frame: frame) + end + merged_opts.merge(data: data) end end diff --git a/app/views/chats/_chat.html.erb b/app/views/chats/_chat.html.erb index fd904de1..c61c5a04 100644 --- a/app/views/chats/_chat.html.erb +++ b/app/views/chats/_chat.html.erb @@ -2,7 +2,9 @@ <%= tag.div class: "flex items-center justify-between px-4 py-3 bg-container shadow-border-xs rounded-lg" do %>
<%= time_ago_in_words(chat.updated_at) %> ago @@ -10,7 +12,13 @@