glib-web 3.20.5 → 3.22.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '09a9fcb392c01c3befef1f951014fe4934bafea422cb1d5a7f13d2eed5f3e5db'
4
- data.tar.gz: 21c5e44448d4eaa6b51ff67dfdf8d20234e83cdbfc8f2bfd571c58ee5cbf98cb
3
+ metadata.gz: 61bf1dd4994bb6105fb043e7b7b0943cb44e4e418baf246556855816442d6293
4
+ data.tar.gz: 88902efc0cc5e18d925a1261106df0dca345f5880959dc2cbaca1a91938f83d4
5
5
  SHA512:
6
- metadata.gz: 4420d70795aa12b42bb493cec14553c150740b48864bf7c90a92c4012139109c301721b61d31bba3333ddc85dab39a8a45cac82a0ce0d4b40e285b9e2554319f
7
- data.tar.gz: bae84a5f666c73f04151cbc47e685335914bcfd527392350f31ba90b1450f18f09d3fd2aca1dc92ae7a9ff1c883e99b31a7403d15f437448f584d22c7927accb
6
+ metadata.gz: 8b86a31567e3e1eeb2252d5e3fa72796e563873ee7ff72f394e322227a876c31267bc4462383c323ebba40f302fa5fc16be86703569b86ebec3607cbc8caa967
7
+ data.tar.gz: ebdd87d23e46513bfce6804d6d1ed3fd6004cd00fa9c57b706aace77350d0c13b8603a8344b5e285535286b8fbb8e0b3bbdd23aeb227597ea289709736822e7f
@@ -68,6 +68,11 @@ module Glib::Json::Libs
68
68
  redirect_to url
69
69
  end
70
70
  format.json do
71
+ if __json_ui_rendering?
72
+ redirect_to url
73
+ return
74
+ end
75
+
71
76
  json_ui_redirect_to url
72
77
  end
73
78
  end
@@ -91,6 +96,10 @@ module Glib::Json::Libs
91
96
 
92
97
  REDIRECT_BACK_KEY = :glib_return_to_url
93
98
 
99
+ def json_ui_save_return_url(url = nil)
100
+ session[REDIRECT_BACK_KEY] = url || url_for(params.to_unsafe_h.merge(format: nil))
101
+ end
102
+
94
103
  def glib_handle_401(sign_in_url)
95
104
  if !glib_json_dialog_mode? && request.get?
96
105
  session[REDIRECT_BACK_KEY] = url_for(params.to_unsafe_h.merge(format: nil))
@@ -172,10 +181,29 @@ module Glib::Json::Libs
172
181
  }
173
182
  end
174
183
 
175
- def glib_json_handle_500(exception)
176
- if json_ui_activated? && Rails.env.production?
177
- Rollbar.error(exception, :use_exception_level_filters => true) if defined?(Rollbar)
178
- render file: Rails.root.join('public', '500.html'), status: :internal_server_error
184
+ def glib_json_handle_500(exception, preview_mode)
185
+ if json_ui_activated?
186
+ if Rails.env.production? || preview_mode
187
+ if defined?(Rollbar) && !preview_mode
188
+ Rollbar.error(exception, :use_exception_level_filters => true)
189
+ end
190
+
191
+ render file: Rails.root.join('public', '500.html'), status: :internal_server_error
192
+ else
193
+ raise exception
194
+ end
195
+ else
196
+ raise exception
197
+ end
198
+ end
199
+
200
+ def glib_json_handle_404(exception, preview_mode)
201
+ if json_ui_activated?
202
+ if Rails.env.production? || preview_mode
203
+ render file: Rails.root.join('public', '404.html'), status: :not_found
204
+ else
205
+ raise exception
206
+ end
179
207
  else
180
208
  raise exception
181
209
  end
@@ -262,18 +290,16 @@ module Glib::Json::Libs
262
290
 
263
291
  # Call this before other rescues. Later rescue_from statements will take precedence, so more specific
264
292
  # rescues have to be declared later.
265
- def json_libs_rescue_500
293
+ def json_libs_rescue_500(preview_mode: false)
266
294
  rescue_from StandardError do |exception|
267
- glib_json_handle_500(exception)
295
+ glib_json_handle_500(exception, preview_mode)
268
296
  end
269
297
  end
270
298
 
271
- def json_libs_rescue_404
272
- # Removed because it doesn't seem to offer anything extra
273
- # rescue_from ActiveRecord::RecordNotFound do |exception|
274
- # glib_json_handle_404
275
- # end
299
+ def json_libs_rescue_404(preview_mode: false)
300
+ rescue_from ActiveRecord::RecordNotFound do |exception|
301
+ glib_json_handle_404(exception, preview_mode)
302
+ end
276
303
  end
277
-
278
304
  end
279
305
  end
@@ -5,6 +5,10 @@ class Glib::JsonUi::ActionBuilder
5
5
  action :onFocus
6
6
  end
7
7
 
8
+ class Blur < Action
9
+ action :onBlur
10
+ end
11
+
8
12
  class Reset < Action
9
13
  string :targetId
10
14
  action :onReset
@@ -277,18 +277,21 @@ class Glib::JsonUi::ViewBuilder
277
277
  end
278
278
 
279
279
  class Column < View
280
+ hash :xxl
280
281
  hash :xl
281
282
  hash :lg
282
283
  hash :md
283
284
  hash :sm
284
285
  hash :xs
285
286
 
287
+ hash :xxlOnly
286
288
  hash :xlOnly
287
289
  hash :lgOnly
288
290
  hash :mdOnly
289
291
  hash :smOnly
290
292
  hash :xsOnly
291
293
 
294
+ hash :xxlAndDown
292
295
  hash :xlAndDown
293
296
  hash :lgAndDown
294
297
  hash :mdAndDown
@@ -275,6 +275,7 @@ module Glib
275
275
  bool :showTitle
276
276
  bool :aboveLeftDrawer
277
277
  bool :collapseButtonsOnMobile
278
+ bool :showBreakpoint
278
279
  int :elevation
279
280
 
280
281
  # def leftButtons(block)
@@ -82,7 +82,8 @@ page.form \
82
82
  form.h2 text: 'Country'
83
83
  form.spacer height: 6
84
84
  region_field = { name: 'user[city]', label: 'City' }
85
- form.fields_country name: 'user[country]', width: 'matchParent', label: 'Country', region: region_field
85
+ form.fields_country name: 'user[country]', width: 'matchParent', label: 'Country', region: nil
86
+ form.fields_country name: 'user[country_with_region]', width: 'matchParent', label: 'Country with region', region: region_field
86
87
 
87
88
  form.spacer height: 20
88
89
  form.h2 text: 'Map'
@@ -72,6 +72,14 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
72
72
  end
73
73
  accessory.footer padding: { x: 16, y: 10 }, childViews: ->(footer) do
74
74
  footer.label text: 'Footer'
75
+ footer.spacer height: 14
76
+ footer.label text: 'Click me', onClick: ->(action) do
77
+ action.components_findClosest view: 'fields/select', onFind: ->(subaction) do
78
+ subaction.components_set data: { value: 'pt' }, onSet: ->(subsubaction) do
79
+ subsubaction.fields_blur
80
+ end
81
+ end
82
+ end
75
83
  end
76
84
  end
77
85
 
@@ -16,4 +16,8 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
16
16
  scroll.spacer height: 20
17
17
  scroll.h2 text: 'Icon with badge'
18
18
  scroll.icon name: 'home', badge: { text: '22', backgroundColor: '#00ff00' }
19
+
20
+ scroll.spacer height: 20
21
+ scroll.h2 text: 'Icon with styleClasses'
22
+ scroll.icon name: 'home', styleClasses: ['small']
19
23
  end
@@ -3,37 +3,110 @@ module Glib
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- project_root = Rails.root
7
- paths = Dir.glob(project_root + 'test/mailers/previews/*')
8
- paths.each do |file|
9
- require file
10
- end
6
+ extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def generate_preview_tests
11
+ project_root = Rails.root
12
+ paths = Dir.glob(project_root + 'test/mailers/previews/*')
13
+ paths.each do |file|
14
+ require file
15
+ end
11
16
 
12
- ActionMailer::Preview.subclasses.each do |preview_class|
13
- preview = preview_class.new
17
+ ActionMailer::Preview.subclasses.each do |preview_class|
18
+ preview = preview_class.new
14
19
 
15
- preview_class.instance_methods(false).each do |mailer_method|
16
- test "mailer for #{preview_class}##{mailer_method}" do
17
- preview.send(mailer_method).deliver_now
20
+ preview_class.instance_methods(false).each do |mailer_method|
21
+ test "mailer for #{preview_class}##{mailer_method}" do
22
+ preview.send(mailer_method).deliver_now
18
23
 
19
- # See TimeFreezableMailer
20
- preview.try(:return_time_if_frozen)
24
+ # See TimeFreezableMailer
25
+ preview.try(:return_time_if_frozen)
21
26
 
22
- logfile = File.join(log_dir, "#{preview_class.name.underscore}##{mailer_method}.txt")
27
+ _assert_last_mail_body_unchanged("#{preview_class.name.underscore}##{mailer_method}")
23
28
 
24
- # Use rstrip to avoid trailing space issues
25
- expected = File.exist?(logfile) ? File.read(logfile).rstrip : ''
26
- last_delivery = ActionMailer::Base.deliveries.last
27
- result = last_delivery.html_part.body.raw_source.rstrip
29
+ # logfile = File.join(log_dir, "#{preview_class.name.underscore}##{mailer_method}.txt")
28
30
 
29
- logger = File.open(logfile, 'w')
30
- logger.puts result
31
- logger.close
31
+ # # Use rstrip to avoid trailing space issues
32
+ # expected = File.exist?(logfile) ? File.read(logfile).rstrip : ''
33
+ # # last_delivery = ActionMailer::Base.deliveries.last
34
+ # # result = last_delivery.html_part.body.raw_source.rstrip
32
35
 
33
- assert_equal expected, result, "Result mismatch! #{logfile.sub(/\.txt$/, '')}"
36
+ # # result = mails.last.html_part.body.raw_source.rstrip
37
+ # result = last_mail_body
38
+
39
+ # logger = File.open(logfile, 'w')
40
+ # logger.puts result
41
+ # logger.close
42
+
43
+ # assert_equal expected, result, "Result mismatch! #{logfile.sub(/\.txt$/, '')}"
44
+ end
34
45
  end
35
46
  end
36
47
  end
37
48
  end
49
+
50
+ def log_root_dir
51
+ raise 'Implementation needed'
52
+ end
53
+
54
+ # Overridable
55
+ def log_dir
56
+ File.expand_path(File.join(log_root_dir, "results/#{class_name.underscore}/"))
57
+ end
58
+
59
+ def reset_mails
60
+ ActionMailer::Base.deliveries = []
61
+ end
62
+
63
+ def mails
64
+ @mails ||= ActionMailer::Base.deliveries
65
+ end
66
+
67
+ def last_mail
68
+ raise 'Last mail does not exist' unless (mail = mails.last)
69
+
70
+ mail
71
+ end
72
+
73
+ def assert_mails_unchanged
74
+ mails.each do |mail|
75
+ assert_mail_unchanged(mail)
76
+ end
77
+ end
78
+
79
+ # TODO: Remove test result files that are not relevant anymore
80
+ def assert_mail_unchanged(mail)
81
+ # `method_name` refers to the name of the current test method.
82
+ dir = File.join(log_dir, method_name)
83
+ unless File.directory?(dir)
84
+ FileUtils.mkdir_p(dir)
85
+ end
86
+
87
+ mail.to.each do |recipient|
88
+ _assert_mail_body_unchanged("#{method_name}/#{recipient}", mail)
89
+ end
90
+ end
91
+
92
+ # def assert_last_mail_body_unchanged
93
+ # # `method_name` refers to the name of the current test method.
94
+ # _assert_mail_body_unchanged(method_name, last_mail)
95
+ # end
96
+
97
+ private
98
+ def _assert_mail_body_unchanged(log_path, mail)
99
+ file = File.join(log_dir, "#{log_path}.txt")
100
+
101
+ # Use rstrip to avoid trailing space issues
102
+ expected = File.exist?(file) ? File.read(file).rstrip : ''
103
+ result = mail.html_part.body.raw_source.rstrip
104
+
105
+ logger = File.open(file, 'w')
106
+ logger.puts result
107
+ logger.close
108
+
109
+ assert_equal expected, result, "Result mismatch! #{file.sub(/\.txt$/, '')}"
110
+ end
38
111
  end
39
112
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.20.5
4
+ version: 3.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''