diff --git a/app/assets/stylesheets/bar.css b/app/assets/stylesheets/bar.css index de30037f8..77b33975b 100644 --- a/app/assets/stylesheets/bar.css +++ b/app/assets/stylesheets/bar.css @@ -16,4 +16,14 @@ border-block-start: 1px solid var(--color-ink-lighter); } } + + .bar__modal { + inset: auto 0 0 0; + bottom: 0; + left: 0; + max-height: 70vh; + position: fixed; + right: 0; + width: 100%; + } } diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index e2f21b1c6..0193539ac 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -1,6 +1,6 @@ class ConversationsController < ApplicationController def create - Conversation.create_or_find_by(user: Current.user) + Current.user.start_or_continue_conversation end def show diff --git a/app/javascript/controllers/bar_controller.js b/app/javascript/controllers/bar_controller.js index a4bd388a2..200f1fe37 100644 --- a/app/javascript/controllers/bar_controller.js +++ b/app/javascript/controllers/bar_controller.js @@ -2,7 +2,7 @@ import { Controller } from "@hotwired/stimulus" import { post } from "@rails/request.js" export default class extends Controller { - static targets = [ "modalTurboFrame" ] + static targets = [ "turboFrame" ] static outlets = [ "dialog" ] static values = { searchUrl: String, @@ -11,6 +11,15 @@ export default class extends Controller { askTurboFrameName: String } + connect() { + this.closeModal() + } + + closeModal() { + this.dialogOutlet.close() + this.#clearTurboFrame() + } + search() { this.#openInTurboFrame(this.searchTurboFrameNameValue, this.searchUrlValue) this.dialogOutlet.open() @@ -22,9 +31,15 @@ export default class extends Controller { this.dialogOutlet.open() } + #clearTurboFrame() { + this.turboFrameTarget.removeAttribute("id") + this.turboFrameTarget.removeAttribute("src") + this.turboFrameTarget.innerHtml = "" + } + #openInTurboFrame(name, url) { - this.modalTurboFrameTarget.id = name - this.modalTurboFrameTarget.src = url + this.turboFrameTarget.id = name + this.turboFrameTarget.src = url } #initializeConversation() { diff --git a/app/views/conversations/show.html.erb b/app/views/conversations/show.html.erb index ba045611d..8a9b7f2a4 100644 --- a/app/views/conversations/show.html.erb +++ b/app/views/conversations/show.html.erb @@ -1,14 +1,12 @@ -<%= turbo_frame_tag "conversation", target: "_top" do %> +<%= turbo_frame_tag "conversation" do %> <%= turbo_stream_from Current.user, :conversation %>
Fizzy /Ask -
- -
+
<%= turbo_frame_tag dom_id(@conversation, :messages_container), src: conversation_messages_path, target: "_top" %> <%= render partial: "conversations/show/thinking_indicator", locals: { conversation: @conversation } %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 836fb99f5..ff43e5d5b 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -19,8 +19,8 @@ <% if Current.user && !@hide_footer_frames %> <% end %> diff --git a/app/views/searches/_result.html.erb b/app/views/searches/_result.html.erb index 810135262..eea2fbb1e 100644 --- a/app/views/searches/_result.html.erb +++ b/app/views/searches/_result.html.erb @@ -1,5 +1,5 @@
  • - <%= link_to result.source, class: "card card--search" do %> + <%= link_to result.source, class: "card card--search", data: { turbo_frame: "_top" } do %>