Browse Source

remote_dialog part1

remote_dialog
pvincent 1 week ago
parent
commit
95b2fb4c3a
  1. 2
      app/controllers/edge_controller.rb
  2. 4
      app/helpers/turbo_stream_actions_helper.rb
  3. 4
      app/javascript/initializers/stream_actions.js
  4. 13
      app/views/edge/_turbo_dialog.html.erb
  5. 2
      app/views/layouts/application.html.erb
  6. 8
      app/views/layouts/components/_dialog.html.erb
  7. 22
      app/views/layouts/components/_dialogs.html.erb
  8. 29
      app/views/layouts/components/_main_dialog.html.erb

2
app/controllers/edge_controller.rb

@ -2,6 +2,6 @@ class EdgeController < ApplicationController
def index; end def index; end
def turbo_edit def turbo_edit
render turbo_stream: turbo_stream.console_log(text: 'Hello world server-side')
render turbo_stream: turbo_stream.remote_dialog(id: 'remote-dialog', title: 'my remote title', partial: 'turbo_dialog')
end end
end end

4
app/helpers/turbo_stream_actions_helper.rb

@ -2,6 +2,10 @@ module TurboStreamActionsHelper
def console_log(text) def console_log(text)
turbo_stream_action_tag :console_log, text: text turbo_stream_action_tag :console_log, text: text
end end
def remote_dialog(dialog_id = 'remote-dialog', **rendering, &block)
action :remoteDialog, nil, **rendering, &block
end
end end
Turbo::Streams::TagBuilder.prepend(TurboStreamActionsHelper) Turbo::Streams::TagBuilder.prepend(TurboStreamActionsHelper)

4
app/javascript/initializers/stream_actions.js

@ -2,3 +2,7 @@ Turbo.StreamActions.console_log = function () {
const text = this.getAttribute("text") const text = this.getAttribute("text")
console.log(text) console.log(text)
} }
Turbo.StreamActions.remoteDialog = function () {
console.log('remote-dialog', this)
}

13
app/views/edge/_turbo_dialog.html.erb

@ -0,0 +1,13 @@
<%= render 'layouts/components/dialog', id: 'remote-dialog', title:'my title' do %>
<p class="mb-6">
This is a centered dialog using the HTML dialog element with Tailwind CSS.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Porro quisquam
enim blanditiis iusto neque accusantium minus, aspernatur ex eius at.
Aliquam nam ex sit vel nesciunt qui ducimus velit nulla.
</p>
<form method="dialog" class="modal-action items-end text-center">
<%= content_tag :button, 'OK2', value: :confirm, class: "btn btn-primary" %>
<%= content_tag :button, 'Cancel2', value: :cancel, class: "btn btn-ghost" %>
</form>
<% end %>

2
app/views/layouts/application.html.erb

@ -26,9 +26,9 @@
</head> </head>
<body class="flex flex-col"> <body class="flex flex-col">
<%= render '/layouts/components/main_dialog' %>
<%= render '/layouts/components/navbar' %> <%= render '/layouts/components/navbar' %>
<main class="m-8 min-h-60"><%= yield %></main> <main class="m-8 min-h-60"><%= yield %></main>
<%= render '/layouts/components/footer' %> <%= render '/layouts/components/footer' %>
<%= render '/layouts/components/dialogs' %>
</body> </body>
</html> </html>

8
app/views/layouts/components/_dialog.html.erb

@ -0,0 +1,8 @@
<%# locals: (id:, title:) %>
<dialog id="<%= id %>" class="modal">
<div class="modal-box bg-base-200">
<h3 class="text-lg font-bold"><%= title %></h3>
<%= yield %>
</div>
</dialog>

22
app/views/layouts/components/_dialogs.html.erb

@ -0,0 +1,22 @@
<%= render 'layouts/components/dialog', id: 'front-dialog', title:'Demande de confirmation' do %>
<p data-dialog-content class="mb-6">CONTENT</p>
<form method="dialog" class="modal-action">
<%= content_tag :button, 'OK', value: :confirm, class: "btn btn-primary" %>
<%= content_tag :button, 'Cancel', value: :cancel, class: "btn btn-ghost" %>
</form>
<% end %>
<%= render 'layouts/components/dialog', id: 'remote-dialog', title:'Demande de confirmation' do %>
<p class="mb-6">
This is a centered dialog using the HTML dialog element with Tailwind CSS.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Porro quisquam
enim blanditiis iusto neque accusantium minus, aspernatur ex eius at.
Aliquam nam ex sit vel nesciunt qui ducimus velit nulla.
</p>
<form method="dialog" class="modal-action items-end text-center">
<%= content_tag :button, 'OK', value: :confirm, class: "btn btn-primary" %>
<%= content_tag :button, 'Cancel', value: :cancel, class: "btn btn-ghost" %>
</form>
<% end %>

29
app/views/layouts/components/_main_dialog.html.erb

@ -1,29 +0,0 @@
<dialog id="front-dialog" class="modal">
<div class="modal-box bg-base-200">
<h3 class="text-lg font-bold">Demande de confirmation</h3>
<p data-dialog-content class="mb-6"></p>
<form method="dialog" class="modal-action">
<%= content_tag :button, 'OK', value: :confirm, class: "btn btn-primary" %>
<%= content_tag :button, 'Cancel', value: :cancel, class: "btn btn-ghost" %>
</form>
</div>
</dialog>
<dialog id="remote-dialog" class="modal">
<div class="modal-box bg-base-200">
<h3 data-modal="title" class="text-lg font-bold">Remote Dialog</h3>
<p class="mb-6">
This is a centered dialog using the HTML dialog element with Tailwind CSS.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Porro quisquam
enim blanditiis iusto neque accusantium minus, aspernatur ex eius at.
Aliquam nam ex sit vel nesciunt qui ducimus velit nulla.
</p>
<form method="dialog" class="modal-action items-end text-center">
<%= content_tag :button, 'OK', value: :confirm, class: "btn btn-primary" %>
<%= content_tag :button, 'Cancel', value: :cancel, class: "btn btn-ghost" %>
</form>
</div>
</dialog>
Loading…
Cancel
Save