turbo_power 0.1.0 → 0.1.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/Gemfile +1 -0
- data/Gemfile.lock +95 -1
- data/README.md +97 -8
- data/lib/turbo_power/stream_helper.rb +18 -18
- data/lib/turbo_power/version.rb +1 -1
- data/lib/turbo_power.rb +3 -0
- data/turbo_power.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ec77740a41b50382edd8441dcb76a453fc60d57d5429e107398de38578e147b
|
4
|
+
data.tar.gz: f4419c8721ffd08fdcc02b1f1449d2671af16cc34c7e2f73185777276236bc27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f1a90e7eae214a0f6d3d1bcb371f4c8a9f06e302f5a8135a68027be105a6c93f549ba860de1bdc9be7959309c277458295661d9dbd14e2158583017ee931101
|
7
|
+
data.tar.gz: 0a8753c7d57f4865ca27641d8767723dc1d97bda6c5e6fb37aee54f6f1d2e58e64d3e79d2a9472abbce1664e7abb22793d0073ad4d1e999bcc125838424d2f3c
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -8,15 +8,50 @@ GIT
|
|
8
8
|
activejob (>= 6.0.0)
|
9
9
|
railties (>= 6.0.0)
|
10
10
|
|
11
|
+
GIT
|
12
|
+
remote: https://github.com/marcoroth/turbo_ready.git
|
13
|
+
revision: ccd0ceb7a1209501f60591c833aba2a150d46066
|
14
|
+
branch: main
|
15
|
+
specs:
|
16
|
+
turbo_ready (0.0.5)
|
17
|
+
rails (>= 6.1)
|
18
|
+
turbo-rails (>= 1.1)
|
19
|
+
|
11
20
|
PATH
|
12
21
|
remote: .
|
13
22
|
specs:
|
14
|
-
turbo_power (0.1.
|
23
|
+
turbo_power (0.1.1)
|
15
24
|
turbo-rails
|
25
|
+
turbo_ready
|
16
26
|
|
17
27
|
GEM
|
18
28
|
remote: https://rubygems.org/
|
19
29
|
specs:
|
30
|
+
actioncable (7.0.3.1)
|
31
|
+
actionpack (= 7.0.3.1)
|
32
|
+
activesupport (= 7.0.3.1)
|
33
|
+
nio4r (~> 2.0)
|
34
|
+
websocket-driver (>= 0.6.1)
|
35
|
+
actionmailbox (7.0.3.1)
|
36
|
+
actionpack (= 7.0.3.1)
|
37
|
+
activejob (= 7.0.3.1)
|
38
|
+
activerecord (= 7.0.3.1)
|
39
|
+
activestorage (= 7.0.3.1)
|
40
|
+
activesupport (= 7.0.3.1)
|
41
|
+
mail (>= 2.7.1)
|
42
|
+
net-imap
|
43
|
+
net-pop
|
44
|
+
net-smtp
|
45
|
+
actionmailer (7.0.3.1)
|
46
|
+
actionpack (= 7.0.3.1)
|
47
|
+
actionview (= 7.0.3.1)
|
48
|
+
activejob (= 7.0.3.1)
|
49
|
+
activesupport (= 7.0.3.1)
|
50
|
+
mail (~> 2.5, >= 2.5.4)
|
51
|
+
net-imap
|
52
|
+
net-pop
|
53
|
+
net-smtp
|
54
|
+
rails-dom-testing (~> 2.0)
|
20
55
|
actionpack (7.0.3.1)
|
21
56
|
actionview (= 7.0.3.1)
|
22
57
|
activesupport (= 7.0.3.1)
|
@@ -24,6 +59,13 @@ GEM
|
|
24
59
|
rack-test (>= 0.6.3)
|
25
60
|
rails-dom-testing (~> 2.0)
|
26
61
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
62
|
+
actiontext (7.0.3.1)
|
63
|
+
actionpack (= 7.0.3.1)
|
64
|
+
activerecord (= 7.0.3.1)
|
65
|
+
activestorage (= 7.0.3.1)
|
66
|
+
activesupport (= 7.0.3.1)
|
67
|
+
globalid (>= 0.6.0)
|
68
|
+
nokogiri (>= 1.8.5)
|
27
69
|
actionview (7.0.3.1)
|
28
70
|
activesupport (= 7.0.3.1)
|
29
71
|
builder (~> 3.1)
|
@@ -33,6 +75,18 @@ GEM
|
|
33
75
|
activejob (7.0.3.1)
|
34
76
|
activesupport (= 7.0.3.1)
|
35
77
|
globalid (>= 0.3.6)
|
78
|
+
activemodel (7.0.3.1)
|
79
|
+
activesupport (= 7.0.3.1)
|
80
|
+
activerecord (7.0.3.1)
|
81
|
+
activemodel (= 7.0.3.1)
|
82
|
+
activesupport (= 7.0.3.1)
|
83
|
+
activestorage (7.0.3.1)
|
84
|
+
actionpack (= 7.0.3.1)
|
85
|
+
activejob (= 7.0.3.1)
|
86
|
+
activerecord (= 7.0.3.1)
|
87
|
+
activesupport (= 7.0.3.1)
|
88
|
+
marcel (~> 1.0)
|
89
|
+
mini_mime (>= 1.1.0)
|
36
90
|
activesupport (7.0.3.1)
|
37
91
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
38
92
|
i18n (>= 1.6, < 2)
|
@@ -42,6 +96,7 @@ GEM
|
|
42
96
|
builder (3.2.4)
|
43
97
|
concurrent-ruby (1.1.10)
|
44
98
|
crass (1.0.6)
|
99
|
+
digest (3.1.0)
|
45
100
|
erubi (1.11.0)
|
46
101
|
globalid (1.0.0)
|
47
102
|
activesupport (>= 5.0)
|
@@ -51,8 +106,27 @@ GEM
|
|
51
106
|
loofah (2.18.0)
|
52
107
|
crass (~> 1.0.2)
|
53
108
|
nokogiri (>= 1.5.9)
|
109
|
+
mail (2.7.1)
|
110
|
+
mini_mime (>= 0.1.1)
|
111
|
+
marcel (1.0.2)
|
54
112
|
method_source (1.0.0)
|
113
|
+
mini_mime (1.1.2)
|
55
114
|
minitest (5.16.3)
|
115
|
+
net-imap (0.2.3)
|
116
|
+
digest
|
117
|
+
net-protocol
|
118
|
+
strscan
|
119
|
+
net-pop (0.1.1)
|
120
|
+
digest
|
121
|
+
net-protocol
|
122
|
+
timeout
|
123
|
+
net-protocol (0.1.3)
|
124
|
+
timeout
|
125
|
+
net-smtp (0.3.1)
|
126
|
+
digest
|
127
|
+
net-protocol
|
128
|
+
timeout
|
129
|
+
nio4r (2.5.8)
|
56
130
|
nokogiri (1.13.8-x86_64-darwin)
|
57
131
|
racc (~> 1.4)
|
58
132
|
parallel (1.22.1)
|
@@ -62,6 +136,20 @@ GEM
|
|
62
136
|
rack (2.2.4)
|
63
137
|
rack-test (2.0.2)
|
64
138
|
rack (>= 1.3)
|
139
|
+
rails (7.0.3.1)
|
140
|
+
actioncable (= 7.0.3.1)
|
141
|
+
actionmailbox (= 7.0.3.1)
|
142
|
+
actionmailer (= 7.0.3.1)
|
143
|
+
actionpack (= 7.0.3.1)
|
144
|
+
actiontext (= 7.0.3.1)
|
145
|
+
actionview (= 7.0.3.1)
|
146
|
+
activejob (= 7.0.3.1)
|
147
|
+
activemodel (= 7.0.3.1)
|
148
|
+
activerecord (= 7.0.3.1)
|
149
|
+
activestorage (= 7.0.3.1)
|
150
|
+
activesupport (= 7.0.3.1)
|
151
|
+
bundler (>= 1.15.0)
|
152
|
+
railties (= 7.0.3.1)
|
65
153
|
rails-dom-testing (2.0.3)
|
66
154
|
activesupport (>= 4.2.0)
|
67
155
|
nokogiri (>= 1.6)
|
@@ -91,10 +179,15 @@ GEM
|
|
91
179
|
rubocop-ast (1.21.0)
|
92
180
|
parser (>= 3.1.1.0)
|
93
181
|
ruby-progressbar (1.11.0)
|
182
|
+
strscan (3.0.4)
|
94
183
|
thor (1.2.1)
|
184
|
+
timeout (0.3.0)
|
95
185
|
tzinfo (2.0.5)
|
96
186
|
concurrent-ruby (~> 1.0)
|
97
187
|
unicode-display_width (2.2.0)
|
188
|
+
websocket-driver (0.7.5)
|
189
|
+
websocket-extensions (>= 0.1.0)
|
190
|
+
websocket-extensions (0.1.5)
|
98
191
|
zeitwerk (2.6.0)
|
99
192
|
|
100
193
|
PLATFORMS
|
@@ -106,6 +199,7 @@ DEPENDENCIES
|
|
106
199
|
rubocop (~> 1.21)
|
107
200
|
turbo-rails!
|
108
201
|
turbo_power!
|
202
|
+
turbo_ready!
|
109
203
|
|
110
204
|
BUNDLED WITH
|
111
205
|
2.3.19
|
data/README.md
CHANGED
@@ -1,20 +1,109 @@
|
|
1
|
-
# TurboPower
|
1
|
+
# TurboPower Rails
|
2
2
|
|
3
|
-
|
3
|
+
`turbo_power` is a power-pack for Turbo Streams. This gem provides server-side Ruby helpers for the NPM package [`turbo_power`](https://github.com/marcoroth/turbo_power).
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Install the gem and add to the application's Gemfile by executing:
|
8
8
|
|
9
|
-
|
9
|
+
```shell
|
10
|
+
bundle add turbo_power
|
11
|
+
```
|
10
12
|
|
11
|
-
|
13
|
+
Install the JavaScript package:
|
12
14
|
|
13
|
-
|
15
|
+
```shell
|
16
|
+
yarn add turbo_power
|
17
|
+
```
|
18
|
+
|
19
|
+
Initialize TurboPower in `application.js`:
|
20
|
+
|
21
|
+
```diff
|
22
|
+
// application.js
|
23
|
+
import * as Turbo from '@hotwired/turbo'
|
24
|
+
|
25
|
+
+import TurboPower from 'turbo_power'
|
26
|
+
+TurboPower.initialize(Turbo.StreamActions)
|
27
|
+
```
|
14
28
|
|
15
29
|
## Usage
|
16
30
|
|
17
|
-
|
31
|
+
### Actions from `turbo_ready`
|
32
|
+
|
33
|
+
* [`turbo_stream.invoke(method, *args, selector: nil, camelize: true, id: nil)`](https://github.com/hopsoft/turbo_ready)
|
34
|
+
|
35
|
+
### Actions from `turbo-morph`
|
36
|
+
|
37
|
+
* [`turbo_stream.morph(target, html = nil, **attributes, &block)`](https://github.com/marcoroth/turbo-morph)
|
38
|
+
|
39
|
+
### DOM Actions
|
40
|
+
|
41
|
+
* `turbo_stream.graft(target, parent, **attributes)`
|
42
|
+
* `turbo_stream.inner_html(target, html = nil, **attributes, &block)`
|
43
|
+
* `turbo_stream.insert_adjacent_html(target, html = nil, position: 'beforeend', **attributes, &block)`
|
44
|
+
* `turbo_stream.insert_adjacent_text(target, text, position: 'beforebegin', **attributes)`
|
45
|
+
* `turbo_stream.morph(target, html = nil, **attribtues, &block)`
|
46
|
+
* `turbo_stream.outer_html(target, html = nil, **attributes, &block)`
|
47
|
+
* `turbo_stream.text_content(target, text, **attributes)`
|
48
|
+
* `turbo_stream.set_meta(name, content, **attributes)`
|
49
|
+
|
50
|
+
|
51
|
+
### Attribute Actions
|
52
|
+
|
53
|
+
* `turbo_stream.add_css_class(target, classes, **attributes)`
|
54
|
+
* `turbo_stream.remove_attribute(target, attribute, **attributes)`
|
55
|
+
* `turbo_stream.remove_css_class(target, classes, **attributes)`
|
56
|
+
* `turbo_stream.set_attribute(target, attribute, value, **attributes)`
|
57
|
+
* `turbo_stream.set_dataset_attribute(target, attribute, value, **attributes)`
|
58
|
+
* `turbo_stream.set_property(target, property, value, **attributes)`
|
59
|
+
* `turbo_stream.set_style(target, name, value, **attributes)`
|
60
|
+
* `turbo_stream.set_styles(target, styles, **attributes)`
|
61
|
+
* `turbo_stream.set_value(target, value, **attributes)`
|
62
|
+
|
63
|
+
|
64
|
+
### Event Actions
|
65
|
+
|
66
|
+
* `turbo_stream.dispatch_event(target, name, detail: {}, **attributes)`
|
67
|
+
|
68
|
+
|
69
|
+
### Storage Actions
|
70
|
+
|
71
|
+
* `turbo_stream.clear_storage(type, **attributes)`
|
72
|
+
* `turbo_stream.clear_local_storage(**attributes)`
|
73
|
+
* `turbo_stream.clear_session_storage(**attributes)`
|
74
|
+
* `turbo_stream.remove_storage_item(key, type, **attributes)`
|
75
|
+
* `turbo_stream.remove_local_storage_item(key, **attributes)`
|
76
|
+
* `turbo_stream.remove_session_storage_item(key, **attributes)`
|
77
|
+
* `turbo_stream.set_storage_item(key, value, type, **attributes)`
|
78
|
+
* `turbo_stream.set_local_storage_item(key, value, **attributes)`
|
79
|
+
* `turbo_stream.set_session_storage_item(key, value, **attributes)`
|
80
|
+
|
81
|
+
|
82
|
+
### Browser Actions
|
83
|
+
|
84
|
+
* `turbo_stream.redirect_to(url, action_name = nil, **attributes)`
|
85
|
+
* `turbo_stream.reload(**attributes)`
|
86
|
+
* `turbo_stream.scroll_into_view(target, inline = "nearest", **attributes)`
|
87
|
+
* `turbo_stream.set_cookie(cookie, **attributes)`
|
88
|
+
* `turbo_stream.set_cookie_item(key, value, **attributes)`
|
89
|
+
* `turbo_stream.set_focus(target, **attributes)`
|
90
|
+
|
91
|
+
|
92
|
+
### Browser History Actions
|
93
|
+
|
94
|
+
* `turbo_stream.history_go(delta, **attributes)`
|
95
|
+
* `turbo_stream.push_state(url, title = nil, state = nil, **attributes)`
|
96
|
+
* `turbo_stream.replace_state(url, title = nil, state = nil, **attributes)`
|
97
|
+
|
98
|
+
|
99
|
+
### Debug Actions
|
100
|
+
|
101
|
+
* `turbo_stream.console_log(message, level = 'log', **attributes)`
|
102
|
+
* `turbo_stream.console_table(data, columns, **attributes)`
|
103
|
+
|
104
|
+
### Notification Actions
|
105
|
+
|
106
|
+
* `turbo_stream.notification(title, options, **attributes)`
|
18
107
|
|
19
108
|
## Development
|
20
109
|
|
@@ -24,7 +113,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
24
113
|
|
25
114
|
## Contributing
|
26
115
|
|
27
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/marcoroth/turbo_power. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/marcoroth/turbo_power/blob/master/CODE_OF_CONDUCT.md).
|
116
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/marcoroth/turbo_power-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/marcoroth/turbo_power-rails/blob/master/CODE_OF_CONDUCT.md).
|
28
117
|
|
29
118
|
## License
|
30
119
|
|
@@ -32,4 +121,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
32
121
|
|
33
122
|
## Code of Conduct
|
34
123
|
|
35
|
-
Everyone interacting in the TurboPower project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/marcoroth/turbo_power/blob/master/CODE_OF_CONDUCT.md).
|
124
|
+
Everyone interacting in the TurboPower project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/marcoroth/turbo_power-rails/blob/master/CODE_OF_CONDUCT.md).
|
@@ -3,7 +3,7 @@ require "turbo-rails"
|
|
3
3
|
module TurboPower
|
4
4
|
module StreamHelper
|
5
5
|
|
6
|
-
# DOM
|
6
|
+
# DOM Actions
|
7
7
|
|
8
8
|
def graft(target, parent, **attributes)
|
9
9
|
action_all :graft, targets: target, attributes: attributes.merge(parent: parent)
|
@@ -33,9 +33,12 @@ module TurboPower
|
|
33
33
|
action_all :text_content, targets: target, attributes: attributes.merge(text: text)
|
34
34
|
end
|
35
35
|
|
36
|
+
def set_meta(name, content, **attributes)
|
37
|
+
action :set_meta, attributes: attributes.merge(name: name, content: content)
|
38
|
+
end
|
36
39
|
|
37
|
-
# Element Attribute/Property Mutations
|
38
40
|
|
41
|
+
# Attribute Actions
|
39
42
|
|
40
43
|
def add_css_class(target, classes, **attributes)
|
41
44
|
action_all :add_css_class, targets: target, attributes: attributes.merge(classes: classes)
|
@@ -74,18 +77,14 @@ module TurboPower
|
|
74
77
|
end
|
75
78
|
|
76
79
|
|
77
|
-
#
|
80
|
+
# Event Actions
|
78
81
|
|
79
82
|
def dispatch_event(target, name, detail: {}, **attributes)
|
80
83
|
action_all :dispatch_event, targets: target, attributes: attributes.merge(detail: detail)
|
81
84
|
end
|
82
85
|
|
83
|
-
def set_meta(name, content)
|
84
|
-
action :set_meta, attributes: attributes.merge(name: name, content: content)
|
85
|
-
end
|
86
86
|
|
87
|
-
|
88
|
-
# LocalStorage / SessionStorage
|
87
|
+
# Storage Actions
|
89
88
|
|
90
89
|
def clear_storage(type, **attributes)
|
91
90
|
action :clear_storage, attributes: attributes.merge(type: type)
|
@@ -99,7 +98,6 @@ module TurboPower
|
|
99
98
|
clear_storage("session", **attributes)
|
100
99
|
end
|
101
100
|
|
102
|
-
|
103
101
|
def remove_storage_item(key, type, **attributes)
|
104
102
|
action :remove_storage_item, attributes: attributes.merge(key: key, type: type)
|
105
103
|
end
|
@@ -126,18 +124,18 @@ module TurboPower
|
|
126
124
|
end
|
127
125
|
|
128
126
|
|
129
|
-
# Browser
|
127
|
+
# Browser Actions
|
130
128
|
|
131
129
|
def redirect_to(url, action_name = nil, **attributes)
|
132
130
|
action :redirect_to, attributes: attributes.merge(url: url, action: action_name)
|
133
131
|
end
|
134
132
|
|
135
133
|
def reload(**attributes)
|
136
|
-
action :
|
134
|
+
action :reload, attributes: attributes
|
137
135
|
end
|
138
136
|
|
139
|
-
def scroll_into_view(target, inline = "nearest")
|
140
|
-
action_all :
|
137
|
+
def scroll_into_view(target, inline = "nearest", **attributes)
|
138
|
+
action_all :scroll_into_view, targets: target, attributes: attributes.merge(inline: inline)
|
141
139
|
end
|
142
140
|
|
143
141
|
def set_cookie(cookie, **attributes)
|
@@ -145,7 +143,7 @@ module TurboPower
|
|
145
143
|
end
|
146
144
|
|
147
145
|
def set_cookie_item(key, value, **attributes)
|
148
|
-
action :
|
146
|
+
action :set_cookie_item, attributes: attributes.merge(key: key, value: value)
|
149
147
|
end
|
150
148
|
|
151
149
|
def set_focus(target, **attributes)
|
@@ -153,7 +151,7 @@ module TurboPower
|
|
153
151
|
end
|
154
152
|
|
155
153
|
|
156
|
-
# Browser History
|
154
|
+
# Browser History Actions
|
157
155
|
|
158
156
|
def history_go(delta, **attributes)
|
159
157
|
action :history_go, attributes: attributes.merge(delta: delta)
|
@@ -168,16 +166,18 @@ module TurboPower
|
|
168
166
|
end
|
169
167
|
|
170
168
|
|
171
|
-
#
|
169
|
+
# Debug Actions
|
172
170
|
|
173
|
-
def console_log(message, level
|
174
|
-
action :console_log, attributes:
|
171
|
+
def console_log(message, level = :log, **attributes)
|
172
|
+
action :console_log, attributes: attributes.merge(message: message, level: level)
|
175
173
|
end
|
176
174
|
|
177
175
|
def console_table(data, columns, **attributes)
|
178
176
|
action :console_table, attributes: attributes.merge(data: data, columns: columns)
|
179
177
|
end
|
180
178
|
|
179
|
+
# Notification Actions
|
180
|
+
|
181
181
|
def notification(title, options, **attributes)
|
182
182
|
action :notification, attributes: attributes.merge(title: title, options: options)
|
183
183
|
end
|
data/lib/turbo_power/version.rb
CHANGED
data/lib/turbo_power.rb
CHANGED
data/turbo_power.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbo_power
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Roth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: turbo-rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: turbo_ready
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
description: Powerpack for Turbo
|
28
42
|
email:
|
29
43
|
- marco.roth@hey.com
|