diff --git a/app/controllers/edge_controller.rb b/app/controllers/edge_controller.rb index 1b63d79..59f5e11 100644 --- a/app/controllers/edge_controller.rb +++ b/app/controllers/edge_controller.rb @@ -1,4 +1,7 @@ class EdgeController < ApplicationController - def index + def index; end + + def turbo_edit + render turbo_stream: turbo_stream.console_log(text: 'Hello world server-side') end end diff --git a/app/helpers/turbo_stream_actions_helper.rb b/app/helpers/turbo_stream_actions_helper.rb new file mode 100644 index 0000000..ac5c9ba --- /dev/null +++ b/app/helpers/turbo_stream_actions_helper.rb @@ -0,0 +1,7 @@ +module TurboStreamActionsHelper + def console_log(text) + turbo_stream_action_tag :console_log, text: text + end +end + +Turbo::Streams::TagBuilder.prepend(TurboStreamActionsHelper) diff --git a/app/javascript/application.js b/app/javascript/application.js index 7a0e71d..390e8db 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -1,23 +1,2 @@ -import "@hotwired/turbo-rails" -Turbo.config.drive.progressBarDelay = 300 -Turbo.config.forms.confirm = (title) => { - const dialog = document.getElementById("main-dialog") - const dialogTitle = dialog.querySelector('[data-modal=title]') - const previousTitleContent = dialogTitle.textContent - - dialogTitle.textContent = title - dialog.showModal() - - return new Promise((resolve, _) => { - dialog.addEventListener( - "close", - () => { - dialogTitle.textContent = previousTitleContent - resolve(dialog.returnValue == "confirm") - }, - { once: true }, - ); - }); -} - +import "initializers" import "controllers" \ No newline at end of file diff --git a/app/javascript/initializers/confirm.js b/app/javascript/initializers/confirm.js new file mode 100644 index 0000000..b140a01 --- /dev/null +++ b/app/javascript/initializers/confirm.js @@ -0,0 +1,19 @@ +Turbo.config.forms.confirm = (title) => { + const dialog = document.getElementById("main-dialog") + const dialogTitle = dialog.querySelector('[data-modal=title]') + const previousTitleContent = dialogTitle.textContent + + dialogTitle.textContent = title + dialog.showModal() + + return new Promise((resolve, _) => { + dialog.addEventListener( + "close", + () => { + dialogTitle.textContent = previousTitleContent + resolve(dialog.returnValue == "confirm") + }, + { once: true }, + ); + }); +} diff --git a/app/javascript/initializers/drive.js b/app/javascript/initializers/drive.js new file mode 100644 index 0000000..de75c8a --- /dev/null +++ b/app/javascript/initializers/drive.js @@ -0,0 +1 @@ +Turbo.config.drive.progressBarDelay = 300 diff --git a/app/javascript/initializers/index.js b/app/javascript/initializers/index.js new file mode 100644 index 0000000..ff8620f --- /dev/null +++ b/app/javascript/initializers/index.js @@ -0,0 +1,6 @@ +import "@hotwired/turbo-rails" + +import "initializers/drive" +import "initializers/confirm" +import "initializers/stream_actions" + diff --git a/app/javascript/initializers/stream_actions.js b/app/javascript/initializers/stream_actions.js new file mode 100644 index 0000000..929dfa7 --- /dev/null +++ b/app/javascript/initializers/stream_actions.js @@ -0,0 +1,4 @@ +Turbo.StreamActions.console_log = function () { + const text = this.getAttribute("text") + console.log(text) +} \ No newline at end of file diff --git a/app/views/edge/index.html.erb b/app/views/edge/index.html.erb index ad4b624..0f217ba 100644 --- a/app/views/edge/index.html.erb +++ b/app/views/edge/index.html.erb @@ -9,3 +9,9 @@ <%= button_to 'Delete', @meeting, method: :delete, class: "btn btn-error", data: { turbo_confirm: 'merci de confirmer'} %> + + diff --git a/config/importmap.rb b/config/importmap.rb index 909dfc5..1b4acba 100644 --- a/config/importmap.rb +++ b/config/importmap.rb @@ -1,7 +1,9 @@ # Pin npm packages by running ./bin/importmap -pin "application" -pin "@hotwired/turbo-rails", to: "turbo.min.js" -pin "@hotwired/stimulus", to: "stimulus.min.js" -pin "@hotwired/stimulus-loading", to: "stimulus-loading.js" -pin_all_from "app/javascript/controllers", under: "controllers" +pin 'application' +pin '@hotwired/turbo-rails', to: 'turbo.min.js' +pin '@hotwired/stimulus', to: 'stimulus.min.js' +pin '@hotwired/stimulus-loading', to: 'stimulus-loading.js' + +pin_all_from 'app/javascript/controllers', under: 'controllers' +pin_all_from 'app/javascript/initializers', under: 'initializers' diff --git a/config/routes.rb b/config/routes.rb index d8b5af0..e8623b5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,7 @@ Rails.application.routes.draw do root to: 'edge#index' get 'edge/index' + post 'edge/turbo_edit' # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.