stimulus-rails 0.2.4 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +11 -22
- data/app/assets/javascripts/{stimulus/loaders/autoloader.js → stimulus-autoloader.js} +2 -2
- data/app/assets/javascripts/stimulus-importmap-autoloader.js +25 -0
- data/app/assets/javascripts/stimulus.js +1926 -0
- data/lib/generators/stimulus/USAGE +15 -0
- data/lib/generators/stimulus/stimulus_generator.rb +16 -0
- data/lib/generators/stimulus/templates/controller.js.tt +7 -0
- data/lib/install/app/javascript/controllers/application.js +10 -0
- data/lib/install/app/{assets/javascripts → javascript}/controllers/hello_controller.js +1 -1
- data/lib/install/app/javascript/controllers/index_for_importmap.js +5 -0
- data/lib/install/app/javascript/controllers/index_for_node.js +7 -0
- data/lib/install/stimulus_with_importmap.rb +19 -0
- data/lib/install/stimulus_with_node.rb +18 -0
- data/lib/stimulus/engine.rb +1 -17
- data/lib/stimulus/manifest.rb +27 -0
- data/lib/stimulus/version.rb +1 -1
- data/lib/tasks/stimulus_tasks.rake +32 -9
- metadata +21 -22
- data/app/assets/javascripts/stimulus/libraries/es-module-shims.js +0 -1
- data/app/assets/javascripts/stimulus/libraries/es-module-shims@0.7.1.js +0 -475
- data/app/assets/javascripts/stimulus/libraries/stimulus.js +0 -1
- data/app/assets/javascripts/stimulus/libraries/stimulus@2.js +0 -1699
- data/app/assets/javascripts/stimulus/manifest.js +0 -2
- data/app/helpers/stimulus/stimulus_helper.rb +0 -10
- data/lib/install/app/assets/javascripts/controllers/index.js +0 -9
- data/lib/install/app/assets/javascripts/importmap.json.erb +0 -5
- data/lib/install/application.js +0 -1
- data/lib/install/stimulus_with_asset_pipeline.rb +0 -23
- data/lib/install/stimulus_with_webpacker.rb +0 -10
- data/lib/stimulus/importmap_helper.rb +0 -33
@@ -0,0 +1,15 @@
|
|
1
|
+
Description:
|
2
|
+
============
|
3
|
+
Generates a new Stimulus controller at the passed path. If running under node,
|
4
|
+
it'll also call the stimulus:manifest:update task to update the controllers/index.js.
|
5
|
+
|
6
|
+
Examples:
|
7
|
+
=========
|
8
|
+
bin/rails generate stimulus chat
|
9
|
+
|
10
|
+
creates: app/javascript/controllers/chat_controller.js
|
11
|
+
|
12
|
+
|
13
|
+
bin/rails generate stimulus nested/chat
|
14
|
+
|
15
|
+
creates: app/javascript/controllers/nested/chat_controller.js
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "rails/generators/named_base"
|
2
|
+
|
3
|
+
class StimulusGenerator < Rails::Generators::NamedBase # :nodoc:
|
4
|
+
source_root File.expand_path("templates", __dir__)
|
5
|
+
|
6
|
+
def copy_view_files
|
7
|
+
@attribute = stimulus_attribute_value(name)
|
8
|
+
template "controller.js", "app/javascript/controllers/#{name}_controller.js"
|
9
|
+
rails_command "stimulus:manifest:update" if Rails.root.join("package.json").exist?
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def stimulus_attribute_value(name)
|
14
|
+
name.gsub(/\//, "--")
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
// Import and register all your controllers from the importmap under controllers/*
|
2
|
+
|
3
|
+
import { application } from "controllers/application"
|
4
|
+
import { registerControllersFrom } from "@hotwired/stimulus-importmap-autoloader"
|
5
|
+
registerControllersFrom("controllers", application)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
// This file is auto-generated by ./bin/rails stimulus:manifest:update
|
2
|
+
// Run that command whenever you add a new controller
|
3
|
+
|
4
|
+
import { application } from "./application"
|
5
|
+
|
6
|
+
import HelloController from "./hello_controller"
|
7
|
+
application.register("hello", HelloController)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
say "Create controllers directory"
|
2
|
+
empty_directory "app/javascript/controllers"
|
3
|
+
copy_file "#{__dir__}/app/javascript/controllers/index_for_importmap.js",
|
4
|
+
"app/javascript/controllers/index.js"
|
5
|
+
copy_file "#{__dir__}/app/javascript/controllers/application.js",
|
6
|
+
"app/javascript/controllers/application.js"
|
7
|
+
copy_file "#{__dir__}/app/javascript/controllers/hello_controller.js",
|
8
|
+
"app/javascript/controllers/hello_controller.js"
|
9
|
+
|
10
|
+
say "Import Stimulus controllers"
|
11
|
+
append_to_file "app/javascript/application.js", %(import "controllers"\n)
|
12
|
+
|
13
|
+
say "Pin Stimulus"
|
14
|
+
append_to_file "config/importmap.rb" do <<-RUBY
|
15
|
+
pin "@hotwired/stimulus", to: "stimulus.js"
|
16
|
+
pin "@hotwired/stimulus-importmap-autoloader", to: "stimulus-importmap-autoloader.js"
|
17
|
+
pin_all_from "app/javascript/controllers", under: "controllers"
|
18
|
+
RUBY
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
say "Create controllers directory"
|
2
|
+
empty_directory "app/javascript/controllers"
|
3
|
+
copy_file "#{__dir__}/app/javascript/controllers/index_for_node.js",
|
4
|
+
"app/javascript/controllers/index.js"
|
5
|
+
copy_file "#{__dir__}/app/javascript/controllers/application.js",
|
6
|
+
"app/javascript/controllers/application.js"
|
7
|
+
copy_file "#{__dir__}/app/javascript/controllers/hello_controller.js",
|
8
|
+
"app/javascript/controllers/hello_controller.js"
|
9
|
+
|
10
|
+
if (Rails.root.join("app/javascript/application.js")).exist?
|
11
|
+
say "Import Stimulus controllers"
|
12
|
+
append_to_file "app/javascript/application.js", %(import "./controllers"\n)
|
13
|
+
else
|
14
|
+
say %(You must import "./controllers" in your JavaScript entrypoint), :red
|
15
|
+
end
|
16
|
+
|
17
|
+
say "Install Stimulus"
|
18
|
+
run "yarn add @hotwired/stimulus"
|
data/lib/stimulus/engine.rb
CHANGED
@@ -1,24 +1,8 @@
|
|
1
|
-
require "stimulus/importmap_helper"
|
2
|
-
|
3
1
|
module Stimulus
|
4
2
|
class Engine < ::Rails::Engine
|
5
|
-
config.autoload_once_paths = %w( #{root}/app/helpers )
|
6
|
-
|
7
3
|
initializer "stimulus.assets" do
|
8
4
|
if Rails.application.config.respond_to?(:assets)
|
9
|
-
Rails.application.config.assets.precompile += %w(
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
initializer "stimulus.helpers" do
|
14
|
-
ActiveSupport.on_load(:action_controller_base) do
|
15
|
-
helper Stimulus::StimulusHelper
|
16
|
-
end
|
17
|
-
|
18
|
-
if Rails.application.config.respond_to?(:assets)
|
19
|
-
Rails.application.config.assets.configure do |env|
|
20
|
-
env.context_class.class_eval { include Stimulus::ImportmapHelper }
|
21
|
-
end
|
5
|
+
Rails.application.config.assets.precompile += %w( stimulus )
|
22
6
|
end
|
23
7
|
end
|
24
8
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Stimulus::Manifest
|
2
|
+
extend self
|
3
|
+
|
4
|
+
def generate_from(controllers_path)
|
5
|
+
extract_controllers_from(controllers_path).collect do |controller_path|
|
6
|
+
import_and_register_controller(controllers_path, controller_path)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def import_and_register_controller(controllers_path, controller_path)
|
11
|
+
module_path = controller_path.relative_path_from(controllers_path).to_s.remove(".js")
|
12
|
+
controller_class_name = module_path.camelize.gsub(/::/, "__")
|
13
|
+
tag_name = module_path.remove("_controller").gsub(/_/, "-").gsub(/\//, "--")
|
14
|
+
|
15
|
+
<<-JS
|
16
|
+
|
17
|
+
import #{controller_class_name} from "./#{module_path}"
|
18
|
+
application.register("#{tag_name}", #{controller_class_name})
|
19
|
+
JS
|
20
|
+
end
|
21
|
+
|
22
|
+
def extract_controllers_from(directory)
|
23
|
+
(directory.children.select { |e| e.to_s =~ /_controller.js$/ } +
|
24
|
+
directory.children.select(&:directory?).collect { |d| extract_controllers_from(d) }
|
25
|
+
).flatten.sort
|
26
|
+
end
|
27
|
+
end
|
data/lib/stimulus/version.rb
CHANGED
@@ -1,24 +1,47 @@
|
|
1
|
+
require "stimulus/manifest"
|
2
|
+
|
1
3
|
def run_stimulus_install_template(path) system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../install/#{path}.rb", __dir__)}" end
|
2
4
|
|
3
5
|
namespace :stimulus do
|
4
6
|
desc "Install Stimulus into the app"
|
5
7
|
task :install do
|
6
|
-
if
|
7
|
-
Rake::Task["stimulus:install:
|
8
|
+
if Rails.root.join("config/importmap.rb").exist?
|
9
|
+
Rake::Task["stimulus:install:importmap"].invoke
|
10
|
+
elsif Rails.root.join("package.json").exist?
|
11
|
+
Rake::Task["stimulus:install:node"].invoke
|
8
12
|
else
|
9
|
-
|
13
|
+
puts "You must either be running with node (package.json) or importmap-rails (config/importmap.rb) to use this gem."
|
10
14
|
end
|
11
15
|
end
|
12
16
|
|
13
17
|
namespace :install do
|
14
|
-
desc "Install Stimulus on
|
15
|
-
task :
|
16
|
-
run_stimulus_install_template "
|
18
|
+
desc "Install Stimulus on an app running importmap-rails"
|
19
|
+
task :importmap do
|
20
|
+
run_stimulus_install_template "stimulus_with_importmap"
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Install Stimulus on an app running node"
|
24
|
+
task :node do
|
25
|
+
run_stimulus_install_template "stimulus_with_node"
|
17
26
|
end
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
task :display do
|
31
|
+
puts Stimulus::Manifest.generate_from(Rails.root.join("app/javascript/controllers"))
|
32
|
+
end
|
33
|
+
|
34
|
+
task :update do
|
35
|
+
manifest =
|
36
|
+
Stimulus::Manifest.generate_from(Rails.root.join("app/javascript/controllers"))
|
18
37
|
|
19
|
-
|
20
|
-
|
21
|
-
|
38
|
+
File.open(Rails.root.join("app/javascript/controllers/index.js"), "w+") do |index|
|
39
|
+
index.puts "// This file is auto-generated by ./bin/rails stimulus:manifest:update"
|
40
|
+
index.puts "// Run that command whenever you add a new controller"
|
41
|
+
index.puts
|
42
|
+
index.puts %(import { application } from "./application")
|
43
|
+
index.puts manifest
|
44
|
+
end
|
22
45
|
end
|
23
46
|
end
|
24
47
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimulus-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Stephenson
|
8
8
|
- Javan Mahkmali
|
9
9
|
- David Heinemeier Hansson
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: 6.0.0
|
29
|
-
description:
|
29
|
+
description:
|
30
30
|
email: david@loudthinking.com
|
31
31
|
executables: []
|
32
32
|
extensions: []
|
@@ -35,31 +35,30 @@ files:
|
|
35
35
|
- MIT-LICENSE
|
36
36
|
- README.md
|
37
37
|
- Rakefile
|
38
|
-
- app/assets/javascripts/stimulus
|
39
|
-
- app/assets/javascripts/stimulus
|
40
|
-
- app/assets/javascripts/stimulus
|
41
|
-
-
|
42
|
-
-
|
43
|
-
-
|
44
|
-
- app/
|
45
|
-
- lib/install/app/
|
46
|
-
- lib/install/app/
|
47
|
-
- lib/install/app/
|
48
|
-
- lib/install/
|
49
|
-
- lib/install/
|
50
|
-
- lib/install/stimulus_with_webpacker.rb
|
38
|
+
- app/assets/javascripts/stimulus-autoloader.js
|
39
|
+
- app/assets/javascripts/stimulus-importmap-autoloader.js
|
40
|
+
- app/assets/javascripts/stimulus.js
|
41
|
+
- lib/generators/stimulus/USAGE
|
42
|
+
- lib/generators/stimulus/stimulus_generator.rb
|
43
|
+
- lib/generators/stimulus/templates/controller.js.tt
|
44
|
+
- lib/install/app/javascript/controllers/application.js
|
45
|
+
- lib/install/app/javascript/controllers/hello_controller.js
|
46
|
+
- lib/install/app/javascript/controllers/index_for_importmap.js
|
47
|
+
- lib/install/app/javascript/controllers/index_for_node.js
|
48
|
+
- lib/install/stimulus_with_importmap.rb
|
49
|
+
- lib/install/stimulus_with_node.rb
|
51
50
|
- lib/stimulus-rails.rb
|
52
51
|
- lib/stimulus/engine.rb
|
53
|
-
- lib/stimulus/
|
52
|
+
- lib/stimulus/manifest.rb
|
54
53
|
- lib/stimulus/version.rb
|
55
54
|
- lib/tasks/stimulus_tasks.rake
|
56
|
-
homepage: https://stimulus.
|
55
|
+
homepage: https://stimulus.hotwired.dev
|
57
56
|
licenses:
|
58
57
|
- MIT
|
59
58
|
metadata:
|
60
|
-
homepage_uri: https://stimulus.
|
59
|
+
homepage_uri: https://stimulus.hotwired.dev
|
61
60
|
source_code_uri: https://github.com/hotwired/stimulus-rails
|
62
|
-
post_install_message:
|
61
|
+
post_install_message:
|
63
62
|
rdoc_options: []
|
64
63
|
require_paths:
|
65
64
|
- lib
|
@@ -75,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
74
|
version: '0'
|
76
75
|
requirements: []
|
77
76
|
rubygems_version: 3.1.4
|
78
|
-
signing_key:
|
77
|
+
signing_key:
|
79
78
|
specification_version: 4
|
80
79
|
summary: A modest JavaScript framework for the HTML you already have.
|
81
80
|
test_files: []
|
@@ -1 +0,0 @@
|
|
1
|
-
//= require ./es-module-shims@0.7.1.js
|