coprl 3.0.0.beta.4 → 3.0.0.beta.8

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +11 -16
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +37 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +43 -47
  7. data/README.md +3 -3
  8. data/app/demo/components/dialogs.pom +1 -1
  9. data/app/demo/components/snackbar.pom +9 -3
  10. data/app/demo/events/content_as_form.pom +3 -3
  11. data/app/demo/events/halted.pom +23 -0
  12. data/app/demo/events/nav/drawer.pom +1 -1
  13. data/app/demo/events/tagged_input.pom +2 -2
  14. data/app/demo/patterns/search_select.pom +1 -1
  15. data/coprl.gemspec +1 -2
  16. data/lib/coprl/presenters/dsl/components/actions/base.rb +5 -1
  17. data/lib/coprl/presenters/dsl/components/base.rb +6 -4
  18. data/lib/coprl/presenters/dsl/components/multi_select.rb +3 -3
  19. data/lib/coprl/presenters/dsl/components/table.rb +2 -2
  20. data/lib/coprl/presenters/dsl/definition.rb +2 -2
  21. data/lib/coprl/presenters/dsl/user_interface.rb +2 -2
  22. data/lib/coprl/presenters/helpers/rails/routes.rb +14 -0
  23. data/lib/coprl/presenters/helpers/rails.rb +8 -6
  24. data/lib/coprl/presenters/rails/concerns/coprl_partial.rb +51 -0
  25. data/lib/coprl/presenters/rails/engine.rb +5 -0
  26. data/lib/coprl/presenters/rails/railtie.rb +6 -14
  27. data/lib/coprl/presenters/rails/reloader.rb +15 -0
  28. data/lib/coprl/presenters/version.rb +1 -1
  29. data/lib/coprl/presenters/web_client/helpers/headers.rb +8 -6
  30. data/lib/coprl/presenters/web_client/helpers/rails/template_helper.rb +10 -0
  31. data/lib/coprl/presenters/web_client/helpers/rails.rb +1 -0
  32. data/lib/coprl/presenters/web_client/helpers/sinatra/template_helper.rb +20 -0
  33. data/lib/coprl/presenters/web_client/helpers/sinatra.rb +1 -0
  34. data/lib/coprl/presenters/web_client/plugin_views_path.rb +5 -5
  35. data/public/bundle.js +10 -4
  36. data/public/wc.js +10 -4
  37. data/rails-engine/app/controllers/coprl_controller.rb +0 -17
  38. data/rails-engine/app/views/layouts/coprl.html.erb +4 -4
  39. data/rails-engine/config/initializers/presenters.rb +4 -2
  40. data/rails-engine/config/initializers/routes.rb +5 -0
  41. data/views/mdc/assets/js/components/events/posts.js +10 -6
  42. data/views/mdc/body/{_preamble.erb → _wrapper.erb} +16 -5
  43. data/views/mdc/components/_card.erb +2 -2
  44. data/views/mdc/components/_checkbox.erb +1 -1
  45. data/views/mdc/components/_chip.erb +2 -2
  46. data/views/mdc/components/_content.erb +2 -2
  47. data/views/mdc/components/_datetime.erb +1 -1
  48. data/views/mdc/components/_dialog.erb +2 -2
  49. data/views/mdc/components/_form.erb +2 -2
  50. data/views/mdc/components/_grid.erb +2 -2
  51. data/views/mdc/components/_hidden_field.erb +1 -1
  52. data/views/mdc/components/_multi_select.erb +1 -1
  53. data/views/mdc/components/_number_field.erb +1 -1
  54. data/views/mdc/components/_radio_button.erb +1 -1
  55. data/views/mdc/components/_rich_text_area.erb +1 -1
  56. data/views/mdc/components/_select.erb +1 -1
  57. data/views/mdc/components/_slider.erb +2 -2
  58. data/views/mdc/components/_stepper.erb +4 -4
  59. data/views/mdc/components/_switch.erb +1 -1
  60. data/views/mdc/components/_text_area.erb +1 -1
  61. data/views/mdc/components/_text_field.erb +1 -1
  62. data/views/mdc/components/buttons/_image.erb +1 -1
  63. data/views/mdc/layout.erb +4 -4
  64. metadata +17 -26
  65. data/app/demo/components/snackbar_attached.pom +0 -6
  66. data/views/mdc/body/_postamble.erb +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45145c29a52d2d2074e5df3ea11da0a7c88620b1043341a1189cd08a52b0d88c
4
- data.tar.gz: d7de08262cb1acd575cad2128b11994e4951f40b87c14cab80adec38abc512c9
3
+ metadata.gz: 75ce54746d2a84764c59cef17d5a95716ecb0fdf677fba2067443d75c3c16ddd
4
+ data.tar.gz: be6092483bcb43bfe4d46ac3834fdaedc1b8ecc69ce2f6c6ad18d7e86d88f69f
5
5
  SHA512:
6
- metadata.gz: 8a7cd7a2ef1e87c04010151ee4617dfa1bf341431a8663a5877fba94bd7347ee5b2c894ac87d62d06c6f806559dcfab1969d51ec1129c208ac5d316a85d4bd62
7
- data.tar.gz: b5e9bdf460093dc6d0d54150ea03d1e2cf7f285b486fe4c9f70606abbc90fb8800e566ef6100a1d4703cc08dc82b4a52c90383ea16262d1c9efaf83d784eaa0d
6
+ metadata.gz: 595b2f2af38f2683ba51cf4380d683a995dd007802e1b433f61d8197c8fb7893a03a67e9937d5c0f16a978ab4dfaffd0bc2d93762a993f93691d84269d41524b
7
+ data.tar.gz: 12bbdfc968bde0e12e70d40a94574323d72214fbc9bd5d9a20e0c6d5ee91804ba7f07d58070a6ae79cf51c5e14b3116a26809d01ce4722101cda2e8682986136
data/.circleci/config.yml CHANGED
@@ -7,7 +7,7 @@ jobs:
7
7
  build:
8
8
  docker:
9
9
  # specify the version you desire here
10
- - image: circleci/ruby:2.7.2-node-browsers
10
+ - image: circleci/ruby:2.7.4-node-browsers
11
11
 
12
12
  # Specify service dependencies here if necessary
13
13
  # CircleCI maintains a library of pre-built images
@@ -18,28 +18,23 @@ jobs:
18
18
 
19
19
  steps:
20
20
  - checkout
21
-
22
- # Download and cache dependencies
23
21
  - restore_cache:
24
22
  keys:
25
- - v1-dependencies-{{ checksum "Gemfile.lock" }}
26
- # fallback to using the latest cache if no exact match is found
27
- - v1-dependencies-
28
-
29
- - run:
30
- name: install dependencies
31
- command: |
32
- bundle install --jobs=4 --retry=3 --path vendor/bundle
33
-
23
+ # when lock file changes, use increasingly general patterns to restore cache
24
+ - v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
25
+ - v1-gem-cache-{{ arch }}-{{ .Branch }}-
26
+ - v1-gem-cache-{{ arch }}-
27
+ - run: gem install bundler:2.2.20
28
+ - run: bundle install
29
+ - run: bundle clean --force
34
30
  - save_cache:
35
31
  paths:
36
- - ./vendor/bundle
37
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
38
-
32
+ - ~/.bundle
33
+ key: v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
39
34
  - run:
40
35
  name: 'start integration testing server'
41
36
  command: |
42
- rackup
37
+ bundle exec rackup
43
38
  background: true
44
39
 
45
40
  # run tests!
data/.ruby-version CHANGED
@@ -1,2 +1,2 @@
1
- 2.7.2
1
+ 2.7.4
2
2
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ # [3.0.0-beta.8](https://github.com/rx/presenters/compare/v3.0.0-beta.7...v3.0.0-beta.8) (2021-09-17)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * added check for engine coprl_presenters_rails_engine_url ([d2ee7b5](https://github.com/rx/presenters/commit/d2ee7b5900a256c30e6715d1246639dec682ff08))
7
+
8
+ # [3.0.0-beta.7](https://github.com/rx/presenters/compare/v3.0.0-beta.6...v3.0.0-beta.7) (2021-07-09)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Rails routes automatically made available as helpers ([#322](https://github.com/rx/presenters/issues/322)) ([abb0031](https://github.com/rx/presenters/commit/abb00311940fda8741459f8aafe29cd7bf074b88))
14
+ * view paths issue when using partials with Rails Engine ([#321](https://github.com/rx/presenters/issues/321)) ([2a917e7](https://github.com/rx/presenters/commit/2a917e7076895037e5a069e77525ef53d2ca45f1))
15
+
16
+
17
+ ### Features
18
+
19
+ * switch to use Rails built-in watchers and reloader ([#320](https://github.com/rx/presenters/issues/320)) ([53e0ee4](https://github.com/rx/presenters/commit/53e0ee49caa663ce93ff731c280bcd754da73fc1))
20
+
21
+ # [3.0.0-beta.6](https://github.com/rx/presenters/compare/v3.0.0-beta.5...v3.0.0-beta.6) (2021-06-23)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * fixed typo on if check ([95b3091](https://github.com/rx/presenters/commit/95b3091365a853eee24e4bce0e37b182da1fdc3d))
27
+ * small tweaks to simplify the presenters wrappers ([#319](https://github.com/rx/presenters/issues/319)) ([cbf0c7c](https://github.com/rx/presenters/commit/cbf0c7c4c80d68ecc84a2989934d2d02e8a1a928))
28
+
29
+ # [3.0.0-beta.5](https://github.com/rx/presenters/compare/v3.0.0-beta.4...v3.0.0-beta.5) (2021-06-18)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * add Rack > 2.2.2 support ([c39c18d](https://github.com/rx/presenters/commit/c39c18d48c557f9f206396eb73e20f15b0a85e7e))
35
+ * add Rack > 2.2.2 support ([6e23287](https://github.com/rx/presenters/commit/6e232875d1ea3c4250f9e19e841215a750082ffc))
36
+ * native rails tag helper conflicts with base components tag method. ([c9d3847](https://github.com/rx/presenters/commit/c9d3847405ab53c1ba728bf9f2afac655f0b1c1f))
37
+
1
38
  # [3.0.0-beta.4](https://github.com/rx/presenters/compare/v3.0.0-beta.3...v3.0.0-beta.4) (2021-06-15)
2
39
 
3
40
 
data/Gemfile CHANGED
@@ -13,7 +13,7 @@ end
13
13
  group :test do
14
14
  gem 'rspec'
15
15
  gem 'rspec-html-matchers'
16
- gem 'watir', '~> 6.16'
16
+ gem 'watir', '~> 6.19'
17
17
  gem 'webdrivers', '~> 4.1'
18
18
  gem 'watir-rspec', '~> 3.0'
19
19
  gem 'rspec_junit_formatter'
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
 
13
13
  GIT
14
14
  remote: https://github.com/coprl/chart_presenter_plugin.git
15
- revision: ae9a8bb805570dbf2c1156e3c81f07e3a24807e2
15
+ revision: 6b93c7a1b04356987cbe962841f564f4afc744c4
16
16
  specs:
17
17
  chart_presenter_plugin (0.1.0)
18
18
 
@@ -24,32 +24,32 @@ GIT
24
24
 
25
25
  GIT
26
26
  remote: https://github.com/coprl/color_picker_presenter_plugin.git
27
- revision: 73807e71d3c9410ff76437323b3f480784f98b47
27
+ revision: 10bdc8b555b2c168ee1d93316c7b10e961a7f5b5
28
28
  specs:
29
29
  color_picker_presenter_plugin (0.0.1)
30
30
 
31
31
  GIT
32
32
  remote: https://github.com/coprl/foo_presenter_plugin.git
33
- revision: f9c92ab98388aeb150c9b523e97042c1386aff10
33
+ revision: 6f1d796bf030bf69fca87777d28bdee63e9880d8
34
34
  specs:
35
35
  foo_presenter_plugin (0.0.2)
36
36
 
37
37
  GIT
38
38
  remote: https://github.com/coprl/google_maps_presenter_plugin.git
39
- revision: 237d956ce36b6c9945080088e4d9e5a2f042ee5b
39
+ revision: 53d8d4d778fcc0295980aaae29bbc3fdb3a947d4
40
40
  branch: main
41
41
  specs:
42
42
  google_maps_presenter_plugin (0.1.0)
43
43
 
44
44
  GIT
45
45
  remote: https://github.com/coprl/iframe_presenter_plugin.git
46
- revision: 7b460d23a277e85e89cb8547538c7af484a873f7
46
+ revision: d0bc691adba4807499af30ee375e9b6dd1426732
47
47
  specs:
48
48
  iframe_presenter_plugin (0.0.1)
49
49
 
50
50
  GIT
51
51
  remote: https://github.com/coprl/image_crop_presenter_plugin.git
52
- revision: 33452c5d3b232e93a942280f8429be2707c992ab
52
+ revision: 586ef47bd6132f94810cfb04d02fcf7c9df1ae10
53
53
  specs:
54
54
  image_crop_presenter_plugin (0.1.0)
55
55
 
@@ -67,24 +67,23 @@ GIT
67
67
 
68
68
  GIT
69
69
  remote: https://github.com/coprl/scroll_to_presenter_plugin.git
70
- revision: e1dd957723561117ee45743ac9e27a4fd91a4a97
70
+ revision: c34ab770665a16b81b8274357dd9cc77dbd0a566
71
71
  specs:
72
72
  scroll_to_presenter_plugin (0.0.2)
73
73
 
74
74
  GIT
75
75
  remote: https://github.com/coprl/timer_presenter_plugin.git
76
- revision: 319392281f17875cbe69aaeb8b5ac26ec78fc7bf
76
+ revision: 5901fd1a368ae7b293c0b87f58ebd01a24a38573
77
77
  specs:
78
78
  timer_presenter_plugin (0.0.1)
79
79
 
80
80
  PATH
81
81
  remote: .
82
82
  specs:
83
- coprl (1.0.0)
83
+ coprl (3.0.0.beta.8)
84
84
  dry-configurable (> 0.1, <= 7.0)
85
85
  dry-container (~> 0.6)
86
86
  dry-inflector (~> 0.1)
87
- filewatcher (~> 1.1.1)
88
87
  ice_nine (~> 0.11)
89
88
  redcarpet (~> 3.4)
90
89
  sinatra (>= 1.4, < 3.0)
@@ -98,35 +97,31 @@ GEM
98
97
  byebug (11.1.3)
99
98
  childprocess (3.0.0)
100
99
  coderay (1.1.2)
101
- concurrent-ruby (1.1.8)
102
- diff-lcs (1.3)
100
+ concurrent-ruby (1.1.9)
101
+ diff-lcs (1.4.4)
103
102
  docile (1.3.1)
104
103
  dotenv (2.7.6)
105
- dry-configurable (0.12.1)
104
+ dry-configurable (0.13.0)
106
105
  concurrent-ruby (~> 1.0)
107
- dry-core (~> 0.5, >= 0.5.0)
108
- dry-container (0.7.2)
106
+ dry-core (~> 0.6)
107
+ dry-container (0.9.0)
109
108
  concurrent-ruby (~> 1.0)
110
- dry-configurable (~> 0.1, >= 0.1.3)
111
- dry-core (0.5.0)
109
+ dry-configurable (~> 0.13, >= 0.13.0)
110
+ dry-core (0.7.1)
112
111
  concurrent-ruby (~> 1.0)
113
- dry-inflector (0.2.0)
114
- filewatcher (1.1.1)
115
- optimist (~> 3.0)
116
- gem-release (2.0.1)
112
+ dry-inflector (0.2.1)
117
113
  ice_nine (0.11.2)
118
114
  json (2.3.1)
119
115
  method_source (0.9.0)
120
- mini_portile2 (2.5.1)
116
+ mini_portile2 (2.5.3)
121
117
  mustermann (1.1.1)
122
118
  ruby2_keywords (~> 0.0.1)
123
119
  nio4r (2.5.7)
124
- nokogiri (1.11.4)
120
+ nokogiri (1.11.7)
125
121
  mini_portile2 (~> 2.5.0)
126
122
  racc (~> 1.4)
127
- nokogiri (1.11.4-x86_64-darwin)
123
+ nokogiri (1.11.7-x86_64-darwin)
128
124
  racc (~> 1.4)
129
- optimist (3.0.1)
130
125
  pry (0.11.3)
131
126
  coderay (~> 1.1.0)
132
127
  method_source (~> 0.9.0)
@@ -145,27 +140,27 @@ GEM
145
140
  rack (>= 1.0, < 3)
146
141
  rake (13.0.1)
147
142
  redcarpet (3.5.1)
148
- regexp_parser (1.6.0)
149
- rspec (3.8.0)
150
- rspec-core (~> 3.8.0)
151
- rspec-expectations (~> 3.8.0)
152
- rspec-mocks (~> 3.8.0)
153
- rspec-core (3.8.2)
154
- rspec-support (~> 3.8.0)
155
- rspec-expectations (3.8.4)
143
+ regexp_parser (2.1.1)
144
+ rspec (3.10.0)
145
+ rspec-core (~> 3.10.0)
146
+ rspec-expectations (~> 3.10.0)
147
+ rspec-mocks (~> 3.10.0)
148
+ rspec-core (3.10.1)
149
+ rspec-support (~> 3.10.0)
150
+ rspec-expectations (3.10.1)
156
151
  diff-lcs (>= 1.2.0, < 2.0)
157
- rspec-support (~> 3.8.0)
152
+ rspec-support (~> 3.10.0)
158
153
  rspec-html-matchers (0.9.1)
159
154
  nokogiri (~> 1)
160
155
  rspec (>= 3.0.0.a, < 4)
161
- rspec-mocks (3.8.1)
156
+ rspec-mocks (3.10.2)
162
157
  diff-lcs (>= 1.2.0, < 2.0)
163
- rspec-support (~> 3.8.0)
164
- rspec-support (3.8.2)
158
+ rspec-support (~> 3.10.0)
159
+ rspec-support (3.10.2)
165
160
  rspec_junit_formatter (0.4.1)
166
161
  rspec-core (>= 2, < 4, != 2.12.0)
167
- ruby2_keywords (0.0.4)
168
- rubyzip (1.3.0)
162
+ ruby2_keywords (0.0.5)
163
+ rubyzip (2.3.0)
169
164
  selenium-webdriver (3.142.7)
170
165
  childprocess (>= 0.5, < 4.0)
171
166
  rubyzip (>= 1.2.2)
@@ -183,19 +178,20 @@ GEM
183
178
  tilt (~> 2.0)
184
179
  thor (1.1.0)
185
180
  tilt (2.0.10)
181
+ timecop (0.9.4)
186
182
  tzinfo (2.0.4)
187
183
  concurrent-ruby (~> 1.0)
188
184
  tzinfo-data (1.2021.1)
189
185
  tzinfo (>= 1.0.0)
190
- watir (6.16.5)
191
- regexp_parser (~> 1.2)
192
- selenium-webdriver (~> 3.6)
186
+ watir (6.19.1)
187
+ regexp_parser (>= 1.2, < 3)
188
+ selenium-webdriver (>= 3.142.7)
193
189
  watir-rspec (3.0.0)
194
190
  rspec (~> 3.0)
195
191
  watir (>= 6.0.0.beta4)
196
- webdrivers (4.1.0)
192
+ webdrivers (4.6.0)
197
193
  nokogiri (~> 1.6)
198
- rubyzip (~> 1.0)
194
+ rubyzip (>= 1.3.0)
199
195
  selenium-webdriver (>= 3.0, < 4.0)
200
196
  zeitwerk (2.4.2)
201
197
 
@@ -213,7 +209,6 @@ DEPENDENCIES
213
209
  coprl!
214
210
  dotenv
215
211
  foo_presenter_plugin!
216
- gem-release (~> 2.0)
217
212
  google_maps_presenter_plugin!
218
213
  iframe_presenter_plugin!
219
214
  image_crop_presenter_plugin!
@@ -233,13 +228,14 @@ DEPENDENCIES
233
228
  shotgun (~> 0.9)
234
229
  simplecov
235
230
  thor (~> 1.1.0)
231
+ timecop (~> 0.9.4)
236
232
  timer_presenter_plugin!
237
- watir (~> 6.16)
233
+ watir (~> 6.19)
238
234
  watir-rspec (~> 3.0)
239
235
  webdrivers (~> 4.1)
240
236
 
241
237
  RUBY VERSION
242
- ruby 2.7.2p137
238
+ ruby 2.7.4p191
243
239
 
244
240
  BUNDLED WITH
245
241
  2.2.20
data/README.md CHANGED
@@ -101,13 +101,13 @@ You need to add the following to your layout to use presenters as a partial alon
101
101
  ##### Inside the &lt;head&gt; tag add the following:
102
102
 
103
103
  <title><%= @pom.page.title if @pom.page %></title>
104
- <%= coprl_headers(@base_url, request, @pom) %>
104
+ <%= coprl_headers %>
105
105
 
106
106
  ##### Inside the &lt;body&gt; tag, around you existing yield add the following:
107
107
 
108
- <%= partial "body/preamble", :locals => {pom:@pom} %>
108
+ <%= with_presenters_wrapper do %>
109
109
  <%= yield %>
110
- <%= partial "body/postamble", :locals => {pom:@pom} %>
110
+ <%= end %>
111
111
 
112
112
  ### Rack
113
113
  #### 1) To use it, add this line to your Gemfile:
@@ -170,7 +170,7 @@ Coprl::Presenters.define(:dialogs) do
170
170
  end
171
171
  end
172
172
  separator
173
- content tag: :second_form_input do
173
+ content input_tag: :second_form_input do
174
174
  dlg_form
175
175
  end
176
176
  subtitle 'The buttons below are Dialog Action buttons. When clicked, they will process any configured actions, then automatically clsoe the dialog.'
@@ -8,10 +8,10 @@ Coprl::Presenters.define(:snackbar) do
8
8
 
9
9
  indented_grid do
10
10
  title 'On Page'
11
- body 'You can attach a snackbar on the server side and will render after load.'
11
+ body 'You can invoke or attach a snackbar on the server side and will render after load.'
12
12
  snackbar 'Top Level Important Information!'
13
-
14
- attach :snackbar_attached
13
+ # This is the same as above -- see POM at end of file
14
+ # attach :snackbar_attached
15
15
 
16
16
  title 'As Event'
17
17
  button 'Show Snackbar', id: :show_snackbar do
@@ -33,3 +33,9 @@ Coprl::Presenters.define(:snackbar) do
33
33
 
34
34
  attach :code, file: __FILE__
35
35
  end
36
+
37
+ # Coprl::Presenters.define(:snackbar_attached) do
38
+ # title 'In Attached'
39
+ # body 'This can be done in an attached presenter as well'
40
+ # snackbar 'Attached Snackbar Displayed!'
41
+ # end
@@ -118,7 +118,7 @@ Coprl::Presenters.define(:content_as_form) do
118
118
 
119
119
  grid do
120
120
  column 12 do
121
- text_field id: :input_tag_extra, name: :whatever, tag: :test_input_tag do
121
+ text_field id: :input_tag_extra, name: :whatever, input_tag: :test_input_tag do
122
122
  value 'foo bar'
123
123
  end
124
124
  end
@@ -127,7 +127,7 @@ Coprl::Presenters.define(:content_as_form) do
127
127
  indented_grid do
128
128
  card do
129
129
  title 'Content with input_tag'
130
- content id: :content_2, tag: :test_input_tag do
130
+ content id: :content_2, input_tag: :test_input_tag do
131
131
  text_field name: :text1 do
132
132
  label 'Text 1'
133
133
  end
@@ -275,7 +275,7 @@ end
275
275
 
276
276
  Coprl::Presenters.define(:dialog_c) do
277
277
  dialog id: :dialog_c do
278
- content tag: :some_dialog_tag do
278
+ content input_tag: :some_dialog_tag do
279
279
  text_field name: :dialog_text_field do
280
280
  value 'whatever'
281
281
  end
@@ -0,0 +1,23 @@
1
+ Coprl::Presenters.define(:halted) do
2
+ helpers Demo::Helpers::IndentedGrid
3
+ attach :top_nav
4
+ attach :events_drawer
5
+
6
+ indented_grid do
7
+ display 'Halted Events'
8
+ body 'This demonstrates how to respond to failed, or halted events'
9
+
10
+ content do
11
+ button :failed_post do
12
+ event :click do
13
+ posts '_echo_', status: 500
14
+ end
15
+ event 'V:eventsHalted' do
16
+ snackbar 'That did not work! Please try again later.'
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ attach :code, file: __FILE__
23
+ end
@@ -1,7 +1,7 @@
1
1
  Coprl::Presenters.define(:events_drawer) do
2
2
  helpers Coprl::Presenters::Helpers::Inflector
3
3
 
4
- events = %i[field_level_events form_level_events tagged_input parallel_events].sort
4
+ events = %i[field_level_events form_level_events tagged_input parallel_events halted].sort
5
5
  actions = %i[dialog replaces loads toggle_visibility snackbar updates deletes posts clear last_response prompt_if_dirty].sort
6
6
 
7
7
  drawer 'Events' do
@@ -18,11 +18,11 @@ Coprl::Presenters.define(:tagged_input) do
18
18
 
19
19
  title 'Example'
20
20
 
21
- content tag: :somefields do
21
+ content input_tag: :somefields do
22
22
  radio_button text: :on, name: :check_me, value: :on, checked: true
23
23
  radio_button text: :off, name: :check_me, value: :off
24
24
  end
25
- text_field name: :myfield2, tag: :somefields do
25
+ text_field name: :myfield2, input_tag: :somefields do
26
26
  label 'More Data to post'
27
27
  end
28
28
 
@@ -21,7 +21,7 @@ Coprl::Presenters.define(:search_select) do
21
21
 
22
22
  page_title 'Search and Select Pattern'
23
23
  indented_grid do
24
- grid tag: :input_data_container do
24
+ grid input_tag: :input_data_container do
25
25
  column 6 do
26
26
  grid do
27
27
  column 4 do
data/coprl.gemspec CHANGED
@@ -28,7 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency 'tzinfo', '>=1.1', '< 3.0'
29
29
  spec.add_runtime_dependency 'tzinfo-data', '~>1.2018'
30
30
  spec.add_runtime_dependency 'redcarpet', '~>3.4'
31
- spec.add_runtime_dependency 'filewatcher', '~> 1.1.1'
32
31
  spec.add_runtime_dependency 'zeitwerk', '~> 2.1'
33
32
 
34
33
  spec.add_development_dependency 'thor', '~> 1.1.0'
@@ -38,6 +37,6 @@ Gem::Specification.new do |spec|
38
37
  spec.add_development_dependency 'bundler', '>= 1.13'
39
38
  spec.add_development_dependency 'rake', '~> 13.0'
40
39
  spec.add_development_dependency 'rspec', '~> 3.0'
41
- spec.add_development_dependency 'gem-release', '~> 2.0'
42
40
  spec.add_development_dependency 'shotgun', '~> 0.9'
41
+ spec.add_development_dependency 'timecop', '~> 0.9.4 '
43
42
  end
@@ -25,10 +25,14 @@ module Coprl
25
25
  private
26
26
 
27
27
  def extract_options!
28
- %i(path presenter target input_tag headers).each do |option|
28
+ %i(path presenter target headers).each do |option|
29
29
  option_value = attribs.delete(option){:not_found}
30
30
  @options.merge!({option => option_value}) unless option_value==:not_found
31
31
  end
32
+ # Special case ... the input tag is defined at the component base level for all components
33
+ # By the time we get here we have put it into its accessor via the super call
34
+ # So we manually move it to the options for all actions
35
+ @options.merge!(input_tag: self.input_tag) if self.input_tag
32
36
  end
33
37
 
34
38
  def extract_dynamic_params(hash)
@@ -15,16 +15,19 @@ module Coprl
15
15
  include Mixins::YieldTo
16
16
  extend Pluggable
17
17
 
18
- attr_reader :type, :id, :tag, :attributes, :draggable, :drop_zone, :css_class
18
+ attr_reader :type, :id, :input_tag, :attributes, :draggable, :drop_zone, :css_class
19
19
 
20
20
  alias attribs attributes
21
21
 
22
- def initialize(type:, parent:, id: nil, tag: nil, **attributes, &block)
22
+ def initialize(type:, parent:, id: nil, tag: nil, input_tag: nil, **attributes, &block)
23
23
  @draggable = attributes.delete(:draggable) {nil}
24
24
  @drop_zone = attributes.delete(:drop_zone) {nil}
25
25
  @css_class = Array(attributes.delete(:class) {nil})
26
26
  @id = id || generate_id
27
- @tag = tag
27
+ @input_tag = input_tag || tag
28
+ logger.warn(
29
+ 'The `tag` attribute is deprecated. ' \
30
+ 'Please use `input_tag` instead. This will change in a future feature release.') unless tag.nil?
28
31
  @type = type
29
32
  @parent = parent
30
33
  @attributes = attributes
@@ -72,7 +75,6 @@ module Coprl
72
75
 
73
76
  alias params context
74
77
 
75
-
76
78
  def yield_block
77
79
  return @_yield_block_ if @_yield_block_
78
80
  @parent.send(:yield_block)
@@ -16,8 +16,8 @@ module Coprl
16
16
  def check_option(**attribs, &block)
17
17
  @options << CheckOption.new(parent: self,
18
18
  name: @name,
19
- tag: @tag,
20
- **attribs.delete_if{ |k,v| [:tag, :name].include?(k) }, &block)
19
+ input_tag: @input_tag,
20
+ **attribs.delete_if{ |k,v| [:tag, :name, :input_tag].include?(k) }, &block)
21
21
  end
22
22
 
23
23
  class CheckOption < EventBase
@@ -33,7 +33,7 @@ module Coprl
33
33
  self.checkbox(name: "#{attribs[:name]}[]",
34
34
  value: @value,
35
35
  text: @text,
36
- tag: tag,
36
+ input_tag: self.input_tag,
37
37
  checked: @selected,
38
38
  disabled: @disabled,
39
39
  &block)
@@ -58,10 +58,10 @@ module Coprl
58
58
  def checkbox(**attributes, &block)
59
59
  return @checkbox if locked?
60
60
  field_name = @type == :header ? 'all' : "#{attributes.delete(:name)}[]"
61
- tag = @type == :header ? '' : @parent.tag
61
+ tag = @type == :header ? '' : @parent.input_tag
62
62
  @checkbox = Components::Checkbox.new(parent: self,
63
63
  name: field_name,
64
- tag: tag,
64
+ input_tag: tag,
65
65
  **attributes,
66
66
  &block)
67
67
  end
@@ -17,8 +17,8 @@ module Coprl
17
17
  self
18
18
  end
19
19
 
20
- def expand(router: , context:{}, &block)
21
- presenter = UserInterface.new(router: router, context: context, name: @name, namespace: @namespace, &@block)
20
+ def expand(router: , context:{}, plugins: [], &block)
21
+ presenter = UserInterface.new(router: router, context: context, plugins: plugins, name: @name, namespace: @namespace, &@block)
22
22
  yield(presenter) if block
23
23
  presenter.expand_instance
24
24
  end
@@ -25,7 +25,7 @@ module Coprl
25
25
  private :context, :router, :namespace
26
26
  alias params context
27
27
 
28
- def initialize(context:, parent: nil, router: nil, name: nil, namespace: [], &block)
28
+ def initialize(context:, parent: nil, router: nil, name: nil, plugins: [], namespace: [], &block)
29
29
  @parent = parent
30
30
  @router = router || @parent&.send(:router)
31
31
  @context = context || {}
@@ -36,7 +36,7 @@ module Coprl
36
36
  @footer = nil
37
37
  @name = name
38
38
  @namespace = namespace
39
- @plugins = []
39
+ @plugins = plugins || []
40
40
  @csrf_meta_tags = authenticity_token_meta_tags(@context.fetch(:session, nil))
41
41
  add_global_helpers
42
42
  initialize_plugins
@@ -0,0 +1,14 @@
1
+ module Coprl
2
+ module Presenters
3
+ module Helpers
4
+ module Rails
5
+ module Routes
6
+ include ::Rails.application.routes.url_helpers
7
+ def default_url_options
8
+ ::Rails.application.config.action_controller.default_url_options || { :host => context[:request].host_with_port }
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -6,18 +6,20 @@ if defined?(Rails)
6
6
  include ActionView::Helpers::AssetUrlHelper
7
7
  include Coprl::Presenters::Helpers::Rails::Currency
8
8
  include Coprl::Presenters::Helpers::Rails::ModelTable
9
+ include Coprl::Presenters::Helpers::Rails::Routes
9
10
  include Namespace
10
11
 
11
- def default_url_options
12
- {}
13
- end
14
-
15
12
  def presenters_path(presenter, host: false, **params)
16
13
  presenter = _expand_namespace_(presenter, namespace)
17
14
  presenter = presenter.gsub(':', '/')
18
15
 
19
- path = host ? coprl_presenters_web_client_app_url(params, host: router.base_url) :
20
- coprl_presenters_web_client_app_path(params)
16
+ path = if defined?(coprl_presenters_rails_engine_url)
17
+ host ? coprl_presenters_rails_engine_url(params, host: router.base_url) :
18
+ coprl_presenters_rails_engine_path(params)
19
+ else
20
+ host ? coprl_presenters_web_client_app_url(params, host: router.base_url) :
21
+ coprl_presenters_web_client_app_path(params)
22
+ end
21
23
 
22
24
  if path.include?('?')
23
25
  path = path.sub('?', "#{presenter}?")