stimulus-rails 0.4.0 → 0.5.1
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/README.md +9 -16
- data/app/assets/javascripts/stimulus-importmap-autoloader.js +6 -2
- data/app/assets/javascripts/stimulus.js +1 -1
- data/app/assets/javascripts/stimulus@3.0.0-beta.2.js +2034 -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/javascript/controllers/index_for_importmap.js +3 -11
- data/lib/install/app/javascript/controllers/index_for_node.js +3 -8
- data/lib/install/stimulus_with_importmap.rb +3 -1
- data/lib/install/stimulus_with_node.rb +10 -11
- data/lib/stimulus/manifest.rb +23 -0
- data/lib/stimulus/version.rb +1 -1
- data/lib/tasks/stimulus_tasks.rake +21 -0
- metadata +8 -4
- data/lib/install/app/javascript/controllers/index_for_webpacker.js +0 -14
- data/lib/install/install.rb +0 -10
@@ -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
|
@@ -1,13 +1,5 @@
|
|
1
|
-
import { Application } from "@hotwired/stimulus"
|
2
|
-
|
3
|
-
const application = Application.start()
|
4
|
-
|
5
|
-
// Configure Stimulus development experience
|
6
|
-
application.warnings = true
|
7
|
-
application.debug = false
|
8
|
-
window.Stimulus = application
|
9
|
-
|
10
1
|
// Import and register all your controllers from the importmap under controllers/*
|
2
|
+
|
3
|
+
import { application } from "controllers/application"
|
11
4
|
import { registerControllersFrom } from "@hotwired/stimulus-importmap-autoloader"
|
12
|
-
|
13
|
-
registerControllersFrom("controllers", importmap, application)
|
5
|
+
registerControllersFrom("controllers", application)
|
@@ -1,12 +1,7 @@
|
|
1
|
-
|
1
|
+
// This file is auto-generated by ./bin/rails stimulus:manifest:update
|
2
|
+
// Run that command whenever you add a new controller
|
2
3
|
|
3
|
-
|
4
|
+
import { application } from "./application"
|
4
5
|
|
5
|
-
// Configure Stimulus development experience
|
6
|
-
application.warnings = true
|
7
|
-
application.debug = false
|
8
|
-
window.Stimulus = application
|
9
|
-
|
10
|
-
// Import and register all your controllers
|
11
6
|
import HelloController from "./hello_controller"
|
12
7
|
application.register("hello", HelloController)
|
@@ -2,11 +2,13 @@ say "Create controllers directory"
|
|
2
2
|
empty_directory "app/javascript/controllers"
|
3
3
|
copy_file "#{__dir__}/app/javascript/controllers/index_for_importmap.js",
|
4
4
|
"app/javascript/controllers/index.js"
|
5
|
+
copy_file "#{__dir__}/app/javascript/controllers/application.js",
|
6
|
+
"app/javascript/controllers/application.js"
|
5
7
|
copy_file "#{__dir__}/app/javascript/controllers/hello_controller.js",
|
6
8
|
"app/javascript/controllers/hello_controller.js"
|
7
9
|
|
8
10
|
say "Import Stimulus controllers"
|
9
|
-
append_to_file "app/javascript/application.js", %(import "
|
11
|
+
append_to_file "app/javascript/application.js", %(import "controllers"\n)
|
10
12
|
|
11
13
|
say "Pin Stimulus"
|
12
14
|
append_to_file "config/importmap.rb" do <<-RUBY
|
@@ -1,19 +1,18 @@
|
|
1
1
|
say "Create controllers directory"
|
2
2
|
empty_directory "app/javascript/controllers"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
else
|
8
|
-
copy_file "#{__dir__}/app/javascript/controllers/index_for_node.js",
|
9
|
-
"app/javascript/controllers/index.js"
|
10
|
-
end
|
11
|
-
|
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"
|
12
7
|
copy_file "#{__dir__}/app/javascript/controllers/hello_controller.js",
|
13
8
|
"app/javascript/controllers/hello_controller.js"
|
14
9
|
|
15
|
-
|
16
|
-
|
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
|
17
16
|
|
18
17
|
say "Install Stimulus"
|
19
18
|
run "yarn add @hotwired/stimulus"
|
@@ -0,0 +1,23 @@
|
|
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
|
+
module_path = controller_path.relative_path_from(controllers_path).to_s.remove(".js")
|
7
|
+
controller_class_name = module_path.camelize.gsub(/::/, "__")
|
8
|
+
tag_name = module_path.remove("_controller").gsub(/\//, "--")
|
9
|
+
|
10
|
+
<<-JS
|
11
|
+
|
12
|
+
import #{controller_class_name} from "./#{module_path}"
|
13
|
+
application.register("#{tag_name}", #{controller_class_name})
|
14
|
+
JS
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def extract_controllers_from(directory)
|
19
|
+
(directory.children.select { |e| e.to_s =~ /_controller.js$/ } +
|
20
|
+
directory.children.select(&:directory?).collect { |d| extract_controllers_from(d) }
|
21
|
+
).flatten
|
22
|
+
end
|
23
|
+
end
|
data/lib/stimulus/version.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
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
|
@@ -23,4 +25,23 @@ namespace :stimulus do
|
|
23
25
|
run_stimulus_install_template "stimulus_with_node"
|
24
26
|
end
|
25
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"))
|
37
|
+
|
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
|
45
|
+
end
|
46
|
+
end
|
26
47
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimulus-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Stephenson
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-09-
|
13
|
+
date: 2021-09-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -40,15 +40,19 @@ files:
|
|
40
40
|
- app/assets/javascripts/stimulus.js
|
41
41
|
- app/assets/javascripts/stimulus@2.js
|
42
42
|
- app/assets/javascripts/stimulus@3.0.0-beta.1.js
|
43
|
+
- app/assets/javascripts/stimulus@3.0.0-beta.2.js
|
44
|
+
- lib/generators/stimulus/USAGE
|
45
|
+
- lib/generators/stimulus/stimulus_generator.rb
|
46
|
+
- lib/generators/stimulus/templates/controller.js.tt
|
47
|
+
- lib/install/app/javascript/controllers/application.js
|
43
48
|
- lib/install/app/javascript/controllers/hello_controller.js
|
44
49
|
- lib/install/app/javascript/controllers/index_for_importmap.js
|
45
50
|
- lib/install/app/javascript/controllers/index_for_node.js
|
46
|
-
- lib/install/app/javascript/controllers/index_for_webpacker.js
|
47
|
-
- lib/install/install.rb
|
48
51
|
- lib/install/stimulus_with_importmap.rb
|
49
52
|
- lib/install/stimulus_with_node.rb
|
50
53
|
- lib/stimulus-rails.rb
|
51
54
|
- lib/stimulus/engine.rb
|
55
|
+
- lib/stimulus/manifest.rb
|
52
56
|
- lib/stimulus/version.rb
|
53
57
|
- lib/tasks/stimulus_tasks.rake
|
54
58
|
homepage: https://stimulus.hotwired.dev
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { Application } from "@hotwired/stimulus"
|
2
|
-
|
3
|
-
const application = Application.start()
|
4
|
-
|
5
|
-
// Configure Stimulus development experience
|
6
|
-
application.warnings = true
|
7
|
-
application.debug = false
|
8
|
-
window.Stimulus = application
|
9
|
-
|
10
|
-
// Import and register all your controllers within this directory and all subdirectories
|
11
|
-
// Controller files must be named *_controller.js or *_controller.ts
|
12
|
-
import { definitionsFromContext } from "@hotwired/stimulus"
|
13
|
-
const context = require.context("controllers", true, /_controller\.(js|ts)$/)
|
14
|
-
application.load(definitionsFromContext(context))
|
data/lib/install/install.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
if (js_entrypoint_path = Rails.root.join("app/javascript/application.js")).exist?
|
2
|
-
say "Appending Stimulus setup code to JavaScript entrypoint"
|
3
|
-
append_to_file "app/javascript/application.js", %(\nimport "controllers")
|
4
|
-
else
|
5
|
-
end
|
6
|
-
|
7
|
-
say "Creating controllers directory"
|
8
|
-
directory "#{__dir__}/app/javascript/controllers", "app/javascript/controllers"
|
9
|
-
|
10
|
-
say "Add @hotwired/stimulus package"
|