glib-web 3.20.5 → 3.22.0

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