stimulus_reflex 3.3.0.pre4 → 3.3.0.pre5
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/CHANGELOG.md +30 -4
- data/Gemfile.lock +56 -54
- data/README.md +1 -1
- data/lib/generators/templates/app/javascript/controllers/%file_name%_controller.js.tt +53 -21
- data/lib/generators/templates/app/javascript/controllers/application_controller.js.tt +11 -8
- data/lib/stimulus_reflex.rb +63 -0
- data/lib/stimulus_reflex/version.rb +1 -1
- data/lib/tasks/stimulus_reflex/install.rake +13 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cc5d928ba770cb4cb0e167431b216953d3d024f60797ceeba8cb1e941c321f2f
|
|
4
|
+
data.tar.gz: 21ecfef7c3b45524547905728b8dffe13317f76e07685f1c41e9eb59ad20f1aa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d89100f1ae64da55040f3ed0435832f593b67ff78631def4bfbf2a02c6eb577b6803ad9ae84760d123e2b5e85a9e52a1d1923a5949b4c76ccdcb82489671d0e4
|
|
7
|
+
data.tar.gz: 7d1c3c338457b2f7c8895726cc381c273aec9c7b65158409dc6e2d7d146cd8d1c51102783dda302e241a207a8c09fd0ebd92b850d96f3bbf0c2e884700bf55e7
|
data/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased](https://github.com/hopsoft/stimulus_reflex/tree/HEAD)
|
|
4
4
|
|
|
5
|
-
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.3.0.
|
|
5
|
+
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.3.0.pre4...HEAD)
|
|
6
|
+
|
|
7
|
+
**Implemented enhancements:**
|
|
8
|
+
|
|
9
|
+
- Fail loudly if there's a version mismatch between the gem and the npm package. [\#294](https://github.com/hopsoft/stimulus_reflex/issues/294)
|
|
10
|
+
|
|
11
|
+
**Closed issues:**
|
|
12
|
+
|
|
13
|
+
- IE11 Support: "crypto" is undefined [\#308](https://github.com/hopsoft/stimulus_reflex/issues/308)
|
|
14
|
+
- Using `morph` gives error on missing Warden::Manager midddleware? [\#304](https://github.com/hopsoft/stimulus_reflex/issues/304)
|
|
15
|
+
- Update client controller template comments [\#298](https://github.com/hopsoft/stimulus_reflex/issues/298)
|
|
16
|
+
|
|
17
|
+
**Merged pull requests:**
|
|
18
|
+
|
|
19
|
+
- Support IE11 msCrypto \(\#308\) [\#310](https://github.com/hopsoft/stimulus_reflex/pull/310) ([chooselife22](https://github.com/chooselife22))
|
|
20
|
+
- Print warning and exit if caching is disabled or npm/gem versions are mismatched [\#309](https://github.com/hopsoft/stimulus_reflex/pull/309) ([excid3](https://github.com/excid3))
|
|
21
|
+
- ActionCable connectivity events [\#307](https://github.com/hopsoft/stimulus_reflex/pull/307) ([leastbad](https://github.com/leastbad))
|
|
22
|
+
- Copyedits [\#306](https://github.com/hopsoft/stimulus_reflex/pull/306) ([CodingItWrong](https://github.com/CodingItWrong))
|
|
23
|
+
- add redis to cable.yml in development mode [\#305](https://github.com/hopsoft/stimulus_reflex/pull/305) ([leastbad](https://github.com/leastbad))
|
|
24
|
+
- Update morph-modes.md [\#302](https://github.com/hopsoft/stimulus_reflex/pull/302) ([scottbarrow](https://github.com/scottbarrow))
|
|
25
|
+
- Enhance controller templates docs [\#300](https://github.com/hopsoft/stimulus_reflex/pull/300) ([pinzonjulian](https://github.com/pinzonjulian))
|
|
26
|
+
- Avoid mismatching client and server versions [\#297](https://github.com/hopsoft/stimulus_reflex/pull/297) ([piotrwodz](https://github.com/piotrwodz))
|
|
27
|
+
|
|
28
|
+
## [v3.3.0.pre4](https://github.com/hopsoft/stimulus_reflex/tree/v3.3.0.pre4) (2020-09-13)
|
|
29
|
+
|
|
30
|
+
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.3.0.pre3...v3.3.0.pre4)
|
|
6
31
|
|
|
7
32
|
**Fixed bugs:**
|
|
8
33
|
|
|
9
34
|
- Lifecycle callbacks do not work [\#281](https://github.com/hopsoft/stimulus_reflex/issues/281)
|
|
35
|
+
- Fix timing issues with post-Reflex lifecycle callbacks [\#299](https://github.com/hopsoft/stimulus_reflex/pull/299) ([leastbad](https://github.com/leastbad))
|
|
10
36
|
|
|
11
37
|
**Closed issues:**
|
|
12
38
|
|
|
@@ -460,9 +486,7 @@
|
|
|
460
486
|
**Implemented enhancements:**
|
|
461
487
|
|
|
462
488
|
- Custom Stimulus schema breaks Reflex [\#91](https://github.com/hopsoft/stimulus_reflex/issues/91)
|
|
463
|
-
- Add schema support [\#94](https://github.com/hopsoft/stimulus_reflex/pull/94) ([hopsoft](https://github.com/hopsoft))
|
|
464
489
|
- inherit stimulus schema [\#92](https://github.com/hopsoft/stimulus_reflex/pull/92) ([nickyvanurk](https://github.com/nickyvanurk))
|
|
465
|
-
- Single source of truth [\#76](https://github.com/hopsoft/stimulus_reflex/pull/76) ([leastbad](https://github.com/leastbad))
|
|
466
490
|
|
|
467
491
|
**Fixed bugs:**
|
|
468
492
|
|
|
@@ -481,6 +505,7 @@
|
|
|
481
505
|
|
|
482
506
|
**Implemented enhancements:**
|
|
483
507
|
|
|
508
|
+
- Single source of truth [\#76](https://github.com/hopsoft/stimulus_reflex/pull/76) ([leastbad](https://github.com/leastbad))
|
|
484
509
|
- Add CodeFund sponsorship [\#75](https://github.com/hopsoft/stimulus_reflex/pull/75) ([coderberry](https://github.com/coderberry))
|
|
485
510
|
|
|
486
511
|
**Fixed bugs:**
|
|
@@ -494,9 +519,11 @@
|
|
|
494
519
|
**Implemented enhancements:**
|
|
495
520
|
|
|
496
521
|
- Create Rails generators [\#3](https://github.com/hopsoft/stimulus_reflex/issues/3)
|
|
522
|
+
- Add schema support [\#94](https://github.com/hopsoft/stimulus_reflex/pull/94) ([hopsoft](https://github.com/hopsoft))
|
|
497
523
|
- Update installer [\#71](https://github.com/hopsoft/stimulus_reflex/pull/71) ([hopsoft](https://github.com/hopsoft))
|
|
498
524
|
- Tweak generators [\#69](https://github.com/hopsoft/stimulus_reflex/pull/69) ([hopsoft](https://github.com/hopsoft))
|
|
499
525
|
- add generators [\#67](https://github.com/hopsoft/stimulus_reflex/pull/67) ([andrewmcodes](https://github.com/andrewmcodes))
|
|
526
|
+
- Add reflex name to the lifecycle args [\#62](https://github.com/hopsoft/stimulus_reflex/pull/62) ([hopsoft](https://github.com/hopsoft))
|
|
500
527
|
|
|
501
528
|
**Fixed bugs:**
|
|
502
529
|
|
|
@@ -525,7 +552,6 @@
|
|
|
525
552
|
- Client side call-backs? [\#34](https://github.com/hopsoft/stimulus_reflex/issues/34)
|
|
526
553
|
- Scoped register\(\)? [\#26](https://github.com/hopsoft/stimulus_reflex/issues/26)
|
|
527
554
|
- Add guard to verify same URL prior to morph [\#63](https://github.com/hopsoft/stimulus_reflex/pull/63) ([hopsoft](https://github.com/hopsoft))
|
|
528
|
-
- Add reflex name to the lifecycle args [\#62](https://github.com/hopsoft/stimulus_reflex/pull/62) ([hopsoft](https://github.com/hopsoft))
|
|
529
555
|
- Refactor some helper methods out of main file [\#61](https://github.com/hopsoft/stimulus_reflex/pull/61) ([hopsoft](https://github.com/hopsoft))
|
|
530
556
|
- Documentation update [\#58](https://github.com/hopsoft/stimulus_reflex/pull/58) ([leastbad](https://github.com/leastbad))
|
|
531
557
|
- \# Support for data-reflex-permanent [\#57](https://github.com/hopsoft/stimulus_reflex/pull/57) ([hopsoft](https://github.com/hopsoft))
|
data/Gemfile.lock
CHANGED
|
@@ -1,65 +1,66 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
stimulus_reflex (3.3.0.
|
|
4
|
+
stimulus_reflex (3.3.0.pre4)
|
|
5
5
|
cable_ready (>= 4.1.2)
|
|
6
6
|
nokogiri
|
|
7
7
|
rack
|
|
8
8
|
rails (>= 5.2)
|
|
9
|
+
redis
|
|
9
10
|
|
|
10
11
|
GEM
|
|
11
12
|
remote: https://rubygems.org/
|
|
12
13
|
specs:
|
|
13
|
-
actioncable (6.0.3.
|
|
14
|
-
actionpack (= 6.0.3.
|
|
14
|
+
actioncable (6.0.3.3)
|
|
15
|
+
actionpack (= 6.0.3.3)
|
|
15
16
|
nio4r (~> 2.0)
|
|
16
17
|
websocket-driver (>= 0.6.1)
|
|
17
|
-
actionmailbox (6.0.3.
|
|
18
|
-
actionpack (= 6.0.3.
|
|
19
|
-
activejob (= 6.0.3.
|
|
20
|
-
activerecord (= 6.0.3.
|
|
21
|
-
activestorage (= 6.0.3.
|
|
22
|
-
activesupport (= 6.0.3.
|
|
18
|
+
actionmailbox (6.0.3.3)
|
|
19
|
+
actionpack (= 6.0.3.3)
|
|
20
|
+
activejob (= 6.0.3.3)
|
|
21
|
+
activerecord (= 6.0.3.3)
|
|
22
|
+
activestorage (= 6.0.3.3)
|
|
23
|
+
activesupport (= 6.0.3.3)
|
|
23
24
|
mail (>= 2.7.1)
|
|
24
|
-
actionmailer (6.0.3.
|
|
25
|
-
actionpack (= 6.0.3.
|
|
26
|
-
actionview (= 6.0.3.
|
|
27
|
-
activejob (= 6.0.3.
|
|
25
|
+
actionmailer (6.0.3.3)
|
|
26
|
+
actionpack (= 6.0.3.3)
|
|
27
|
+
actionview (= 6.0.3.3)
|
|
28
|
+
activejob (= 6.0.3.3)
|
|
28
29
|
mail (~> 2.5, >= 2.5.4)
|
|
29
30
|
rails-dom-testing (~> 2.0)
|
|
30
|
-
actionpack (6.0.3.
|
|
31
|
-
actionview (= 6.0.3.
|
|
32
|
-
activesupport (= 6.0.3.
|
|
31
|
+
actionpack (6.0.3.3)
|
|
32
|
+
actionview (= 6.0.3.3)
|
|
33
|
+
activesupport (= 6.0.3.3)
|
|
33
34
|
rack (~> 2.0, >= 2.0.8)
|
|
34
35
|
rack-test (>= 0.6.3)
|
|
35
36
|
rails-dom-testing (~> 2.0)
|
|
36
37
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
37
|
-
actiontext (6.0.3.
|
|
38
|
-
actionpack (= 6.0.3.
|
|
39
|
-
activerecord (= 6.0.3.
|
|
40
|
-
activestorage (= 6.0.3.
|
|
41
|
-
activesupport (= 6.0.3.
|
|
38
|
+
actiontext (6.0.3.3)
|
|
39
|
+
actionpack (= 6.0.3.3)
|
|
40
|
+
activerecord (= 6.0.3.3)
|
|
41
|
+
activestorage (= 6.0.3.3)
|
|
42
|
+
activesupport (= 6.0.3.3)
|
|
42
43
|
nokogiri (>= 1.8.5)
|
|
43
|
-
actionview (6.0.3.
|
|
44
|
-
activesupport (= 6.0.3.
|
|
44
|
+
actionview (6.0.3.3)
|
|
45
|
+
activesupport (= 6.0.3.3)
|
|
45
46
|
builder (~> 3.1)
|
|
46
47
|
erubi (~> 1.4)
|
|
47
48
|
rails-dom-testing (~> 2.0)
|
|
48
49
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
49
|
-
activejob (6.0.3.
|
|
50
|
-
activesupport (= 6.0.3.
|
|
50
|
+
activejob (6.0.3.3)
|
|
51
|
+
activesupport (= 6.0.3.3)
|
|
51
52
|
globalid (>= 0.3.6)
|
|
52
|
-
activemodel (6.0.3.
|
|
53
|
-
activesupport (= 6.0.3.
|
|
54
|
-
activerecord (6.0.3.
|
|
55
|
-
activemodel (= 6.0.3.
|
|
56
|
-
activesupport (= 6.0.3.
|
|
57
|
-
activestorage (6.0.3.
|
|
58
|
-
actionpack (= 6.0.3.
|
|
59
|
-
activejob (= 6.0.3.
|
|
60
|
-
activerecord (= 6.0.3.
|
|
53
|
+
activemodel (6.0.3.3)
|
|
54
|
+
activesupport (= 6.0.3.3)
|
|
55
|
+
activerecord (6.0.3.3)
|
|
56
|
+
activemodel (= 6.0.3.3)
|
|
57
|
+
activesupport (= 6.0.3.3)
|
|
58
|
+
activestorage (6.0.3.3)
|
|
59
|
+
actionpack (= 6.0.3.3)
|
|
60
|
+
activejob (= 6.0.3.3)
|
|
61
|
+
activerecord (= 6.0.3.3)
|
|
61
62
|
marcel (~> 0.3.1)
|
|
62
|
-
activesupport (6.0.3.
|
|
63
|
+
activesupport (6.0.3.3)
|
|
63
64
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
64
65
|
i18n (>= 0.7, < 2)
|
|
65
66
|
minitest (~> 5.1)
|
|
@@ -88,8 +89,8 @@ GEM
|
|
|
88
89
|
mimemagic (0.3.5)
|
|
89
90
|
mini_mime (1.0.2)
|
|
90
91
|
mini_portile2 (2.4.0)
|
|
91
|
-
minitest (5.14.
|
|
92
|
-
nio4r (2.5.
|
|
92
|
+
minitest (5.14.2)
|
|
93
|
+
nio4r (2.5.4)
|
|
93
94
|
nokogiri (1.10.10)
|
|
94
95
|
mini_portile2 (~> 2.4.0)
|
|
95
96
|
parallel (1.19.2)
|
|
@@ -103,34 +104,35 @@ GEM
|
|
|
103
104
|
rack (2.2.3)
|
|
104
105
|
rack-test (1.1.0)
|
|
105
106
|
rack (>= 1.0, < 3)
|
|
106
|
-
rails (6.0.3.
|
|
107
|
-
actioncable (= 6.0.3.
|
|
108
|
-
actionmailbox (= 6.0.3.
|
|
109
|
-
actionmailer (= 6.0.3.
|
|
110
|
-
actionpack (= 6.0.3.
|
|
111
|
-
actiontext (= 6.0.3.
|
|
112
|
-
actionview (= 6.0.3.
|
|
113
|
-
activejob (= 6.0.3.
|
|
114
|
-
activemodel (= 6.0.3.
|
|
115
|
-
activerecord (= 6.0.3.
|
|
116
|
-
activestorage (= 6.0.3.
|
|
117
|
-
activesupport (= 6.0.3.
|
|
107
|
+
rails (6.0.3.3)
|
|
108
|
+
actioncable (= 6.0.3.3)
|
|
109
|
+
actionmailbox (= 6.0.3.3)
|
|
110
|
+
actionmailer (= 6.0.3.3)
|
|
111
|
+
actionpack (= 6.0.3.3)
|
|
112
|
+
actiontext (= 6.0.3.3)
|
|
113
|
+
actionview (= 6.0.3.3)
|
|
114
|
+
activejob (= 6.0.3.3)
|
|
115
|
+
activemodel (= 6.0.3.3)
|
|
116
|
+
activerecord (= 6.0.3.3)
|
|
117
|
+
activestorage (= 6.0.3.3)
|
|
118
|
+
activesupport (= 6.0.3.3)
|
|
118
119
|
bundler (>= 1.3.0)
|
|
119
|
-
railties (= 6.0.3.
|
|
120
|
+
railties (= 6.0.3.3)
|
|
120
121
|
sprockets-rails (>= 2.0.0)
|
|
121
122
|
rails-dom-testing (2.0.3)
|
|
122
123
|
activesupport (>= 4.2.0)
|
|
123
124
|
nokogiri (>= 1.6)
|
|
124
125
|
rails-html-sanitizer (1.3.0)
|
|
125
126
|
loofah (~> 2.3)
|
|
126
|
-
railties (6.0.3.
|
|
127
|
-
actionpack (= 6.0.3.
|
|
128
|
-
activesupport (= 6.0.3.
|
|
127
|
+
railties (6.0.3.3)
|
|
128
|
+
actionpack (= 6.0.3.3)
|
|
129
|
+
activesupport (= 6.0.3.3)
|
|
129
130
|
method_source
|
|
130
131
|
rake (>= 0.8.7)
|
|
131
132
|
thor (>= 0.20.3, < 2.0)
|
|
132
133
|
rainbow (3.0.0)
|
|
133
134
|
rake (13.0.1)
|
|
135
|
+
redis (4.2.2)
|
|
134
136
|
regexp_parser (1.7.1)
|
|
135
137
|
rexml (3.2.4)
|
|
136
138
|
rubocop (0.89.1)
|
|
@@ -150,7 +152,7 @@ GEM
|
|
|
150
152
|
sprockets (4.0.2)
|
|
151
153
|
concurrent-ruby (~> 1.0)
|
|
152
154
|
rack (> 1, < 3)
|
|
153
|
-
sprockets-rails (3.2.
|
|
155
|
+
sprockets-rails (3.2.2)
|
|
154
156
|
actionpack (>= 4.0)
|
|
155
157
|
activesupport (>= 4.0)
|
|
156
158
|
sprockets (>= 3.0.0)
|
data/README.md
CHANGED
|
@@ -74,7 +74,7 @@ This project strives to live up to the vision outlined in [The Rails Doctrine](h
|
|
|
74
74
|
|
|
75
75
|
## 👩👩👧 Discord Community
|
|
76
76
|
|
|
77
|
-
Please join over
|
|
77
|
+
Please join over 500 of us on [Discord](https://discord.gg/XveN625) for support getting started, as well as active discussions around Rails, StimulusJS and CableReady.
|
|
78
78
|
|
|
79
79
|

|
|
80
80
|
|
|
@@ -1,56 +1,88 @@
|
|
|
1
1
|
import ApplicationController from './application_controller'
|
|
2
2
|
|
|
3
|
-
/* This is the custom StimulusReflex controller for <%= class_name %>Reflex.
|
|
3
|
+
/* This is the custom StimulusReflex controller for the <%= class_name %> Reflex.
|
|
4
4
|
* Learn more at: https://docs.stimulusreflex.com
|
|
5
5
|
*/
|
|
6
6
|
export default class extends ApplicationController {
|
|
7
|
+
/*
|
|
8
|
+
* Regular Stimulus lifecycle methods
|
|
9
|
+
* Learn more at: https://stimulusjs.org/reference/lifecycle-callbacks
|
|
10
|
+
*
|
|
11
|
+
* If you intend to use this controller as a regular stimulus controller as well,
|
|
12
|
+
* make sure any Stimulus lifecycle methods overridden in ApplicationController call super.
|
|
13
|
+
*
|
|
14
|
+
* Important:
|
|
15
|
+
* By default, StimulusReflex overrides the -connect- method so make sure you
|
|
16
|
+
* call super if you intend to do anything else when this controller connects.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
connect () {
|
|
20
|
+
super.connect()
|
|
21
|
+
// add your code here, if applicable
|
|
22
|
+
}
|
|
23
|
+
|
|
7
24
|
/* Reflex specific lifecycle methods.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* For every method defined in your Reflex class, a matching set of lifecycle methods become available
|
|
27
|
+
* in this javascript controller. These are optional, so feel free to delete these stubs if you don't
|
|
28
|
+
* need them.
|
|
29
|
+
*
|
|
30
|
+
* Important:
|
|
31
|
+
* Make sure to add data-controller="<%= class_name.underscore.dasherize %>" to your markup alongside
|
|
32
|
+
* data-reflex="<%= class_name %>#dance" for the lifecycle methods to fire properly.
|
|
10
33
|
*
|
|
11
34
|
* Example:
|
|
12
35
|
*
|
|
13
|
-
* <a href="#" data-reflex="<%= class_name %>
|
|
36
|
+
* <a href="#" data-reflex="click-><%= class_name %>#dance" data-controller="<%= class_name.underscore.dasherize %>">Dance!</a>
|
|
14
37
|
*
|
|
15
38
|
* Arguments:
|
|
16
39
|
*
|
|
17
40
|
* element - the element that triggered the reflex
|
|
18
41
|
* may be different than the Stimulus controller's this.element
|
|
19
42
|
*
|
|
20
|
-
* reflex - the name of the reflex e.g. "<%= class_name
|
|
43
|
+
* reflex - the name of the reflex e.g. "<%= class_name %>#dance"
|
|
44
|
+
*
|
|
45
|
+
* error/noop - the error message (for reflexError), otherwise null
|
|
21
46
|
*
|
|
22
|
-
*
|
|
47
|
+
* reflexId - a UUID4 or developer-provided unique identifier for each Reflex
|
|
23
48
|
*/
|
|
24
49
|
|
|
25
50
|
<% if actions.empty? -%>
|
|
26
|
-
//
|
|
27
|
-
//
|
|
51
|
+
// Assuming you create a "<%= class_name %>#dance" action in your Reflex class
|
|
52
|
+
// you'll be able to use the following lifecycle methods:
|
|
53
|
+
|
|
54
|
+
// beforeDance(element, reflex, noop, reflexId) {
|
|
55
|
+
// element.innerText = 'Putting dance shoes on...'
|
|
28
56
|
// }
|
|
29
57
|
|
|
30
|
-
//
|
|
31
|
-
// element.innerText = '
|
|
58
|
+
// danceSuccess(element, reflex, noop, reflexId) {
|
|
59
|
+
// element.innerText = 'Danced like no one was watching! Was someone watching?'
|
|
32
60
|
// }
|
|
33
61
|
|
|
34
|
-
//
|
|
35
|
-
// console.error('
|
|
36
|
-
// element.innerText = '
|
|
62
|
+
// danceError(element, reflex, error, reflexId) {
|
|
63
|
+
// console.error('danceError', error);
|
|
64
|
+
// element.innerText = "Couldn't dance!"
|
|
37
65
|
// }
|
|
38
66
|
<% end -%>
|
|
39
67
|
<% actions.each do |action| -%>
|
|
40
|
-
// <%= "before_#{action}".camelize(:lower) %>(element, reflex) {
|
|
41
|
-
// console.log("before <%= action %>", element, reflex)
|
|
68
|
+
// <%= "before_#{action}".camelize(:lower) %>(element, reflex, noop, reflexId) {
|
|
69
|
+
// console.log("before <%= action %>", element, reflex, reflexId)
|
|
70
|
+
// }
|
|
71
|
+
|
|
72
|
+
// <%= "#{action}_success".camelize(:lower) %>(element, reflex, noop, reflexId) {
|
|
73
|
+
// console.log("<%= action %> success", element, reflex, reflexId)
|
|
42
74
|
// }
|
|
43
75
|
|
|
44
|
-
// <%= "#{action}
|
|
45
|
-
// console.
|
|
76
|
+
// <%= "#{action}_error".camelize(:lower) %>(element, reflex, error, reflexId) {
|
|
77
|
+
// console.error("<%= action %> error", element, reflex, error, reflexId)
|
|
46
78
|
// }
|
|
47
79
|
|
|
48
|
-
// <%= "#{action}
|
|
49
|
-
// console.
|
|
80
|
+
// <%= "#{action}_halted".camelize(:lower) %>(element, reflex, noop, reflexId) {
|
|
81
|
+
// console.warn("<%= action %> halted", element, reflex, reflexId)
|
|
50
82
|
// }
|
|
51
83
|
|
|
52
|
-
// <%= "after_#{action}".camelize(:lower) %>(element, reflex,
|
|
53
|
-
// console.log("after <%= action %>", element, reflex,
|
|
84
|
+
// <%= "after_#{action}".camelize(:lower) %>(element, reflex, noop, reflexId) {
|
|
85
|
+
// console.log("after <%= action %>", element, reflex, reflexId)
|
|
54
86
|
// }
|
|
55
87
|
<%= "\n" unless action == actions.last -%>
|
|
56
88
|
<% end -%>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Controller } from 'stimulus'
|
|
2
2
|
import StimulusReflex from 'stimulus_reflex'
|
|
3
3
|
|
|
4
|
-
/* This is your
|
|
4
|
+
/* This is your ApplicationController.
|
|
5
5
|
* All StimulusReflex controllers should inherit from this class.
|
|
6
6
|
*
|
|
7
7
|
* Example:
|
|
@@ -17,7 +17,8 @@ export default class extends Controller {
|
|
|
17
17
|
StimulusReflex.register(this)
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
/* Application
|
|
20
|
+
/* Application-wide lifecycle methods
|
|
21
|
+
*
|
|
21
22
|
* Use these methods to handle lifecycle concerns for the entire application.
|
|
22
23
|
* Using the lifecycle is optional, so feel free to delete these stubs if you don't need them.
|
|
23
24
|
*
|
|
@@ -26,24 +27,26 @@ export default class extends Controller {
|
|
|
26
27
|
* element - the element that triggered the reflex
|
|
27
28
|
* may be different than the Stimulus controller's this.element
|
|
28
29
|
*
|
|
29
|
-
* reflex - the name of the reflex e.g. "
|
|
30
|
+
* reflex - the name of the reflex e.g. "Example#demo"
|
|
31
|
+
*
|
|
32
|
+
* error/noop - the error message (for reflexError), otherwise null
|
|
30
33
|
*
|
|
31
|
-
*
|
|
34
|
+
* reflexId - a UUID4 or developer-provided unique identifier for each Reflex
|
|
32
35
|
*/
|
|
33
36
|
|
|
34
|
-
beforeReflex (element, reflex) {
|
|
37
|
+
beforeReflex (element, reflex, noop, reflexId) {
|
|
35
38
|
// document.body.classList.add('wait')
|
|
36
39
|
}
|
|
37
40
|
|
|
38
|
-
reflexSuccess (element, reflex,
|
|
41
|
+
reflexSuccess (element, reflex, noop, reflexId) {
|
|
39
42
|
// show success message etc...
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
reflexError (element, reflex, error) {
|
|
45
|
+
reflexError (element, reflex, error, reflexId) {
|
|
43
46
|
// show error message etc...
|
|
44
47
|
}
|
|
45
48
|
|
|
46
|
-
afterReflex (element, reflex) {
|
|
49
|
+
afterReflex (element, reflex, noop, reflexId) {
|
|
47
50
|
// document.body.classList.remove('wait')
|
|
48
51
|
}
|
|
49
52
|
}
|
data/lib/stimulus_reflex.rb
CHANGED
|
@@ -20,5 +20,68 @@ require "generators/stimulus_reflex_generator"
|
|
|
20
20
|
|
|
21
21
|
module StimulusReflex
|
|
22
22
|
class Engine < Rails::Engine
|
|
23
|
+
NODE_VERSION_FORMAT = /(\d\.\d\.\d.*):/
|
|
24
|
+
JSON_VERSION_FORMAT = /(\d\.\d\.\d.*)\"/
|
|
25
|
+
|
|
26
|
+
initializer "stimulus_reflex.verify_caching_enabled" do
|
|
27
|
+
unless caching_enabled?
|
|
28
|
+
puts <<~WARN
|
|
29
|
+
Stimulus Reflex requires caching to be enabled. Caching allows the session to be modified during ActionCable requests.
|
|
30
|
+
To enable caching in development, run:
|
|
31
|
+
|
|
32
|
+
rails dev:cache
|
|
33
|
+
WARN
|
|
34
|
+
exit
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
initializer "stimulus_reflex.verify_npm_package_version" do
|
|
39
|
+
unless node_version_matches?
|
|
40
|
+
puts <<~WARN
|
|
41
|
+
The Stimulus Reflex javascript package version (#{node_package_version}) does not match the Rubygem version (#{gem_version}).
|
|
42
|
+
To update the Stimulus Reflex node module:
|
|
43
|
+
|
|
44
|
+
yarn upgrade stimulus_reflex@#{gem_version}
|
|
45
|
+
WARN
|
|
46
|
+
exit
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def caching_enabled?
|
|
53
|
+
Rails.application.config.action_controller.perform_caching &&
|
|
54
|
+
Rails.application.config.cache_store != :null_store
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def node_version_matches?
|
|
58
|
+
node_package_version == gem_version
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def gem_version
|
|
62
|
+
StimulusReflex::VERSION.gsub(".pre", "-pre")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def node_package_version
|
|
66
|
+
match = File.foreach(yarn_lock_path).grep(/^stimulus_reflex/)
|
|
67
|
+
return match.first[NODE_VERSION_FORMAT, 1] if match.present?
|
|
68
|
+
|
|
69
|
+
match = File.foreach(yarn_link_path).grep(/version/)
|
|
70
|
+
return match.first[JSON_VERSION_FORMAT, 1] if match.present?
|
|
71
|
+
|
|
72
|
+
puts <<~WARN
|
|
73
|
+
Can't locate the stimulus_reflex NPM package.
|
|
74
|
+
Either add it to your package.json as a dependency or use "yarn link stimulus_reflex" if you are doing development.
|
|
75
|
+
WARN
|
|
76
|
+
exit
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def yarn_lock_path
|
|
80
|
+
Rails.root.join("yarn.lock")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def yarn_link_path
|
|
84
|
+
Rails.root.join("node_modules", "stimulus_reflex", "package.json")
|
|
85
|
+
end
|
|
23
86
|
end
|
|
24
87
|
end
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "fileutils"
|
|
4
|
+
require "stimulus_reflex/version"
|
|
4
5
|
|
|
5
6
|
namespace :stimulus_reflex do
|
|
6
7
|
desc "Install StimulusReflex in this application"
|
|
7
8
|
task install: :environment do
|
|
8
9
|
system "bundle exec rails webpacker:install:stimulus"
|
|
9
|
-
|
|
10
|
+
gem_version = StimulusReflex::VERSION.gsub(".pre", "-pre")
|
|
11
|
+
system "yarn add stimulus_reflex@#{gem_version}"
|
|
10
12
|
|
|
11
13
|
FileUtils.mkdir_p Rails.root.join("app/javascript/controllers"), verbose: true
|
|
12
14
|
FileUtils.mkdir_p Rails.root.join("app/reflexes"), verbose: true
|
|
@@ -50,6 +52,16 @@ namespace :stimulus_reflex do
|
|
|
50
52
|
File.open(filepath, "w") { |f| f.write lines.join }
|
|
51
53
|
end
|
|
52
54
|
|
|
55
|
+
filepath = Rails.root.join("config/cable.yml")
|
|
56
|
+
lines = File.open(filepath, "r") { |f| f.readlines }
|
|
57
|
+
if lines[1].include?("adapter: async")
|
|
58
|
+
lines.delete_at 1
|
|
59
|
+
lines.insert 1, " adapter: redis\n"
|
|
60
|
+
lines.insert 2, " url: <%= ENV.fetch(\"REDIS_URL\") { \"redis://localhost:6379/1\" } %>\n"
|
|
61
|
+
lines.insert 3, " channel_prefix: " + Rails.application.class.module_parent.to_s.underscore + "_development\n"
|
|
62
|
+
File.open(filepath, "w") { |f| f.write lines.join }
|
|
63
|
+
end
|
|
64
|
+
|
|
53
65
|
system "bundle exec rails generate stimulus_reflex example"
|
|
54
66
|
system "rails dev:cache" unless Rails.root.join("tmp", "caching-dev.txt").exist?
|
|
55
67
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stimulus_reflex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.0.
|
|
4
|
+
version: 3.3.0.pre5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nathan Hopkins
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-09-
|
|
11
|
+
date: 2020-09-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rack
|