From 4b07e87911b2731341488e7bdc874e508a64f976 Mon Sep 17 00:00:00 2001 From: Niklas Haeusele Date: Wed, 25 Dec 2024 21:10:33 +0100 Subject: [PATCH 1/2] Add basic Hotwire Spark support --- lib/custom_elements/rails/railtie.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/custom_elements/rails/railtie.rb b/lib/custom_elements/rails/railtie.rb index 60cff90..70e433f 100644 --- a/lib/custom_elements/rails/railtie.rb +++ b/lib/custom_elements/rails/railtie.rb @@ -2,10 +2,23 @@ module CustomElements module Rails class Railtie < ::Rails::Engine initializer "custom_elements-rails.assets.precompile" do |app| - if app.config.respond_to? :assets + if app.config.respond_to?(:assets) app.config.assets.precompile += %w( custom_elements-rails.js ) end end + + initializer "custom_elements-rails.spark", after: "hotwire_spark.config" do |app| + spark_available = app.config.respond_to?(:hotwire) && app.config.hotwire.respond_to?(:spark) + if spark_available + puts "spark_available" + # Custom elements don't seem to work with morphing + Hotwire::Spark.html_reload_method = :replace + + # Just force full reloads after custom element change for now + Hotwire::Spark.html_paths << ::Rails.root.join("app/javascript/custom_elements").to_s + Hotwire::Spark.html_extensions << "js" + end + end end end end From 5a04f7171308445f8f2c5c8ebf73085922a8133c Mon Sep 17 00:00:00 2001 From: Niklas Haeusele Date: Wed, 25 Dec 2024 21:35:11 +0100 Subject: [PATCH 2/2] fixup --- lib/custom_elements/rails/railtie.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/custom_elements/rails/railtie.rb b/lib/custom_elements/rails/railtie.rb index 70e433f..8cf51d3 100644 --- a/lib/custom_elements/rails/railtie.rb +++ b/lib/custom_elements/rails/railtie.rb @@ -7,10 +7,9 @@ class Railtie < ::Rails::Engine end end - initializer "custom_elements-rails.spark", after: "hotwire_spark.config" do |app| + initializer "custom_elements-rails.configure_spark", after: "hotwire_spark.config" do |app| spark_available = app.config.respond_to?(:hotwire) && app.config.hotwire.respond_to?(:spark) if spark_available - puts "spark_available" # Custom elements don't seem to work with morphing Hotwire::Spark.html_reload_method = :replace