stimulus-rails 0.2.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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