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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +11 -22
  4. data/app/assets/javascripts/{stimulus/loaders/autoloader.js → stimulus-autoloader.js} +2 -2
  5. data/app/assets/javascripts/stimulus-importmap-autoloader.js +25 -0
  6. data/app/assets/javascripts/stimulus.js +1926 -0
  7. data/lib/generators/stimulus/USAGE +15 -0
  8. data/lib/generators/stimulus/stimulus_generator.rb +16 -0
  9. data/lib/generators/stimulus/templates/controller.js.tt +7 -0
  10. data/lib/install/app/javascript/controllers/application.js +10 -0
  11. data/lib/install/app/{assets/javascripts → javascript}/controllers/hello_controller.js +1 -1
  12. data/lib/install/app/javascript/controllers/index_for_importmap.js +5 -0
  13. data/lib/install/app/javascript/controllers/index_for_node.js +7 -0
  14. data/lib/install/stimulus_with_importmap.rb +19 -0
  15. data/lib/install/stimulus_with_node.rb +18 -0
  16. data/lib/stimulus/engine.rb +1 -17
  17. data/lib/stimulus/manifest.rb +27 -0
  18. data/lib/stimulus/version.rb +1 -1
  19. data/lib/tasks/stimulus_tasks.rake +32 -9
  20. metadata +21 -22
  21. data/app/assets/javascripts/stimulus/libraries/es-module-shims.js +0 -1
  22. data/app/assets/javascripts/stimulus/libraries/es-module-shims@0.7.1.js +0 -475
  23. data/app/assets/javascripts/stimulus/libraries/stimulus.js +0 -1
  24. data/app/assets/javascripts/stimulus/libraries/stimulus@2.js +0 -1699
  25. data/app/assets/javascripts/stimulus/manifest.js +0 -2
  26. data/app/helpers/stimulus/stimulus_helper.rb +0 -10
  27. data/lib/install/app/assets/javascripts/controllers/index.js +0 -9
  28. data/lib/install/app/assets/javascripts/importmap.json.erb +0 -5
  29. data/lib/install/application.js +0 -1
  30. data/lib/install/stimulus_with_asset_pipeline.rb +0 -23
  31. data/lib/install/stimulus_with_webpacker.rb +0 -10
  32. data/lib/stimulus/importmap_helper.rb +0 -33
@@ -1,2 +0,0 @@
1
- //= link_directory ./libraries
2
- //= link_directory ./loaders
@@ -1,10 +0,0 @@
1
- module Stimulus::StimulusHelper
2
- def stimulus_include_tags(importmap = "importmap.json")
3
- safe_join [
4
- javascript_include_tag("stimulus/libraries/es-module-shims", type: "module"),
5
- tag.script(type: "importmap-shim", src: asset_path(importmap)),
6
- javascript_include_tag("stimulus/libraries/stimulus", type: "module-shim"),
7
- javascript_include_tag("stimulus/loaders/autoloader", type: "module-shim")
8
- ], "\n"
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- // Load all the controllers within this directory and all subdirectories.
2
- // Controller files must be named *_controller.js or *_controller.ts.
3
-
4
- import { Application } from "stimulus"
5
- import { definitionsFromContext } from "stimulus/webpack-helpers"
6
-
7
- const application = Application.start()
8
- const context = require.context("controllers", true, /_controller\.(js|ts)$/)
9
- application.load(definitionsFromContext(context))
@@ -1,5 +0,0 @@
1
- {
2
- "imports": {
3
- <%= importmap_list_with_stimulus_from "app/assets/javascripts/controllers", "app/assets/javascripts/libraries" %>
4
- }
5
- }
@@ -1 +0,0 @@
1
- import "controllers"
@@ -1,23 +0,0 @@
1
- say "Copying Stimulus JavaScript"
2
- directory "#{__dir__}/app/assets/javascripts", "app/assets/javascripts"
3
- empty_directory_with_keep_file "app/assets/javascripts/libraries"
4
-
5
- say "Add app/assets/javascripts to asset pipeline manifest"
6
- append_to_file Rails.root.join("app/assets/config/manifest.js").to_s, "//= link_tree ../javascripts\n"
7
-
8
- APPLICATION_LAYOUT_PATH = Rails.root.join("app/views/layouts/application.html.erb")
9
-
10
- if APPLICATION_LAYOUT_PATH.exist?
11
- say "Add Stimulus include tags in application layout"
12
- insert_into_file Rails.root.join("app/views/layouts/application.html.erb").to_s, "\n <%= stimulus_include_tags %>", before: /\s*<\/head>/
13
- else
14
- say "Default application.html.erb is missing!", :red
15
- say " Add <%= stimulus_include_tags %> within the <head> tag in your custom layout."
16
- end
17
-
18
- say "Turn off development debug mode"
19
- comment_lines Rails.root.join("config/environments/development.rb"), /config.assets.debug = true/
20
-
21
- say "Turn off rack-mini-profiler"
22
- comment_lines Rails.root.join("Gemfile"), /rack-mini-profiler/
23
- run "bin/bundle", capture: true
@@ -1,10 +0,0 @@
1
- say "Appending Stimulus setup code to #{Webpacker.config.source_entry_path}/application.js"
2
- append_to_file "#{Webpacker.config.source_entry_path}/application.js" do
3
- "\n" + open("#{__dir__}/application.js").read
4
- end
5
-
6
- say "Creating controllers directory"
7
- directory "#{__dir__}/app/assets/javascripts/controllers", "#{Webpacker.config.source_path}/controllers"
8
-
9
- say "Installing all Stimulus dependencies"
10
- run "yarn add stimulus"
@@ -1,33 +0,0 @@
1
- module Stimulus::ImportmapHelper
2
- def importmap_list_with_stimulus_from(*paths)
3
- [ %("stimulus": "#{asset_path("stimulus/libraries/stimulus")}"), importmap_list_from(*paths) ].reject(&:blank?).join(",\n")
4
- end
5
-
6
- def importmap_list_from(*paths)
7
- Array(paths).flat_map do |path|
8
- if (absolute_path = absolute_root_of(path)).exist?
9
- find_javascript_files_in_tree(absolute_path).collect do |filename|
10
- module_filename = filename.relative_path_from(absolute_path)
11
- module_name = importmap_module_name_from(module_filename)
12
- module_path = asset_path(absolute_path.basename.join(module_filename))
13
-
14
- %("#{module_name}": "#{module_path}")
15
- end
16
- end
17
- end.compact.join(",\n")
18
- end
19
-
20
- private
21
- # Strip off the extension and any versioning data for an absolute module name.
22
- def importmap_module_name_from(filename)
23
- filename.to_s.remove(filename.extname).split("@").first
24
- end
25
-
26
- def find_javascript_files_in_tree(path)
27
- Dir[path.join("**/*.js{,m}")].collect { |file| Pathname.new(file) }.select(&:file?)
28
- end
29
-
30
- def absolute_root_of(path)
31
- (pathname = Pathname.new(path)).absolute? ? pathname : Rails.root.join(path)
32
- end
33
- end