view_component 4.0.0.alpha5 → 4.0.0.alpha7

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.
@@ -70,12 +70,12 @@ module ViewComponent
70
70
 
71
71
  def initialize(scope:, load_paths:)
72
72
  @__vc_i18n_scope = scope.split(".").map(&:to_sym)
73
- @load_paths = load_paths
73
+ @__vc_load_paths = load_paths
74
74
  end
75
75
 
76
76
  # Ensure the Simple backend won't load paths from ::I18n.load_path
77
77
  def load_translations
78
- super(@load_paths)
78
+ super(@__vc_load_paths)
79
79
  end
80
80
 
81
81
  def scope_data(data)
@@ -100,7 +100,7 @@ module ViewComponent
100
100
  key = self.class.__vc_i18n_key(key, options.delete(:scope))
101
101
  as_html = HTML_SAFE_TRANSLATION_KEY.match?(key)
102
102
 
103
- html_escape_translation_options!(options) if as_html
103
+ __vc_html_escape_translation_options!(options) if as_html
104
104
 
105
105
  if key.start_with?(__vc_i18n_scope + ".")
106
106
  translated =
@@ -113,7 +113,7 @@ module ViewComponent
113
113
  return @view_context.translate(key, locale: locale, **options)
114
114
  end
115
115
 
116
- translated = html_safe_translation(translated) if as_html
116
+ translated = __vc_html_safe_translation(translated) if as_html
117
117
  translated
118
118
  else
119
119
  @view_context.translate(key, locale: locale, **options)
@@ -127,9 +127,9 @@ module ViewComponent
127
127
 
128
128
  private
129
129
 
130
- def html_safe_translation(translation)
130
+ def __vc_html_safe_translation(translation)
131
131
  if translation.respond_to?(:map)
132
- translation.map { |element| html_safe_translation(element) }
132
+ translation.map { |element| __vc_html_safe_translation(element) }
133
133
  else
134
134
  # It's assumed here that objects loaded by the i18n backend will respond to `#html_safe?`.
135
135
  # It's reasonable that if we're in Rails, `active_support/core_ext/string/output_safety.rb`
@@ -138,7 +138,7 @@ module ViewComponent
138
138
  end
139
139
  end
140
140
 
141
- def html_escape_translation_options!(options)
141
+ def __vc_html_escape_translation_options!(options)
142
142
  options.except(*::I18n::RESERVED_KEYS).each do |name, value|
143
143
  next if name == :count && value.is_a?(Numeric)
144
144
 
@@ -5,7 +5,7 @@ module ViewComponent
5
5
  MAJOR = 4
6
6
  MINOR = 0
7
7
  PATCH = 0
8
- PRE = "alpha5"
8
+ PRE = "alpha7"
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join(".")
11
11
  end
@@ -7,7 +7,6 @@ module ViewComponent
7
7
  extend ActiveSupport::Autoload
8
8
 
9
9
  autoload :Base
10
- autoload :CaptureCompatibility
11
10
  autoload :Compiler
12
11
  autoload :CompileCache
13
12
  autoload :Config
@@ -15,11 +14,14 @@ module ViewComponent
15
14
  autoload :InlineTemplate
16
15
  autoload :Instrumentation
17
16
  autoload :Preview
18
- autoload :TestHelpers
19
- autoload :SystemTestHelpers
20
- autoload :TestCase
21
- autoload :SystemTestCase
22
17
  autoload :Translatable
18
+
19
+ if Rails.env.test?
20
+ autoload :TestHelpers
21
+ autoload :SystemTestHelpers
22
+ autoload :TestCase
23
+ autoload :SystemTestCase
24
+ end
23
25
  end
24
26
 
25
27
  require "view_component/engine" if defined?(Rails::Engine)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: view_component
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.alpha5
4
+ version: 4.0.0.alpha7
5
5
  platform: ruby
6
6
  authors:
7
7
  - ViewComponent Team
@@ -43,412 +43,6 @@ dependencies:
43
43
  - - "~>"
44
44
  - !ruby/object:Gem::Version
45
45
  version: '1'
46
- - !ruby/object:Gem::Dependency
47
- name: allocation_stats
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: '0'
53
- type: :development
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: '0'
60
- - !ruby/object:Gem::Dependency
61
- name: appraisal
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '2'
67
- type: :development
68
- prerelease: false
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '2'
74
- - !ruby/object:Gem::Dependency
75
- name: benchmark-ips
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '2'
81
- type: :development
82
- prerelease: false
83
- version_requirements: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '2'
88
- - !ruby/object:Gem::Dependency
89
- name: better_html
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- type: :development
96
- prerelease: false
97
- version_requirements: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- - !ruby/object:Gem::Dependency
103
- name: bundler
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '2'
109
- type: :development
110
- prerelease: false
111
- version_requirements: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '2'
116
- - !ruby/object:Gem::Dependency
117
- name: capybara
118
- requirement: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '3'
123
- type: :development
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '3'
130
- - !ruby/object:Gem::Dependency
131
- name: cuprite
132
- requirement: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: '0'
137
- type: :development
138
- prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: '0'
144
- - !ruby/object:Gem::Dependency
145
- name: erb_lint
146
- requirement: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: '0'
151
- type: :development
152
- prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- version: '0'
158
- - !ruby/object:Gem::Dependency
159
- name: haml
160
- requirement: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: '6'
165
- type: :development
166
- prerelease: false
167
- version_requirements: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: '6'
172
- - !ruby/object:Gem::Dependency
173
- name: jbuilder
174
- requirement: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - "~>"
177
- - !ruby/object:Gem::Version
178
- version: '2'
179
- type: :development
180
- prerelease: false
181
- version_requirements: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - "~>"
184
- - !ruby/object:Gem::Version
185
- version: '2'
186
- - !ruby/object:Gem::Dependency
187
- name: m
188
- requirement: !ruby/object:Gem::Requirement
189
- requirements:
190
- - - "~>"
191
- - !ruby/object:Gem::Version
192
- version: '1'
193
- type: :development
194
- prerelease: false
195
- version_requirements: !ruby/object:Gem::Requirement
196
- requirements:
197
- - - "~>"
198
- - !ruby/object:Gem::Version
199
- version: '1'
200
- - !ruby/object:Gem::Dependency
201
- name: method_source
202
- requirement: !ruby/object:Gem::Requirement
203
- requirements:
204
- - - "~>"
205
- - !ruby/object:Gem::Version
206
- version: '1'
207
- type: :development
208
- prerelease: false
209
- version_requirements: !ruby/object:Gem::Requirement
210
- requirements:
211
- - - "~>"
212
- - !ruby/object:Gem::Version
213
- version: '1'
214
- - !ruby/object:Gem::Dependency
215
- name: minitest
216
- requirement: !ruby/object:Gem::Requirement
217
- requirements:
218
- - - "~>"
219
- - !ruby/object:Gem::Version
220
- version: '5'
221
- type: :development
222
- prerelease: false
223
- version_requirements: !ruby/object:Gem::Requirement
224
- requirements:
225
- - - "~>"
226
- - !ruby/object:Gem::Version
227
- version: '5'
228
- - !ruby/object:Gem::Dependency
229
- name: puma
230
- requirement: !ruby/object:Gem::Requirement
231
- requirements:
232
- - - "~>"
233
- - !ruby/object:Gem::Version
234
- version: '6'
235
- type: :development
236
- prerelease: false
237
- version_requirements: !ruby/object:Gem::Requirement
238
- requirements:
239
- - - "~>"
240
- - !ruby/object:Gem::Version
241
- version: '6'
242
- - !ruby/object:Gem::Dependency
243
- name: rake
244
- requirement: !ruby/object:Gem::Requirement
245
- requirements:
246
- - - "~>"
247
- - !ruby/object:Gem::Version
248
- version: '13'
249
- type: :development
250
- prerelease: false
251
- version_requirements: !ruby/object:Gem::Requirement
252
- requirements:
253
- - - "~>"
254
- - !ruby/object:Gem::Version
255
- version: '13'
256
- - !ruby/object:Gem::Dependency
257
- name: redis
258
- requirement: !ruby/object:Gem::Requirement
259
- requirements:
260
- - - ">="
261
- - !ruby/object:Gem::Version
262
- version: '0'
263
- type: :development
264
- prerelease: false
265
- version_requirements: !ruby/object:Gem::Requirement
266
- requirements:
267
- - - ">="
268
- - !ruby/object:Gem::Version
269
- version: '0'
270
- - !ruby/object:Gem::Dependency
271
- name: rspec-rails
272
- requirement: !ruby/object:Gem::Requirement
273
- requirements:
274
- - - "~>"
275
- - !ruby/object:Gem::Version
276
- version: '7'
277
- type: :development
278
- prerelease: false
279
- version_requirements: !ruby/object:Gem::Requirement
280
- requirements:
281
- - - "~>"
282
- - !ruby/object:Gem::Version
283
- version: '7'
284
- - !ruby/object:Gem::Dependency
285
- name: rubocop-md
286
- requirement: !ruby/object:Gem::Requirement
287
- requirements:
288
- - - "~>"
289
- - !ruby/object:Gem::Version
290
- version: '2'
291
- type: :development
292
- prerelease: false
293
- version_requirements: !ruby/object:Gem::Requirement
294
- requirements:
295
- - - "~>"
296
- - !ruby/object:Gem::Version
297
- version: '2'
298
- - !ruby/object:Gem::Dependency
299
- name: selenium-webdriver
300
- requirement: !ruby/object:Gem::Requirement
301
- requirements:
302
- - - "~>"
303
- - !ruby/object:Gem::Version
304
- version: '4'
305
- type: :development
306
- prerelease: false
307
- version_requirements: !ruby/object:Gem::Requirement
308
- requirements:
309
- - - "~>"
310
- - !ruby/object:Gem::Version
311
- version: '4'
312
- - !ruby/object:Gem::Dependency
313
- name: simplecov-console
314
- requirement: !ruby/object:Gem::Requirement
315
- requirements:
316
- - - "<"
317
- - !ruby/object:Gem::Version
318
- version: '1'
319
- type: :development
320
- prerelease: false
321
- version_requirements: !ruby/object:Gem::Requirement
322
- requirements:
323
- - - "<"
324
- - !ruby/object:Gem::Version
325
- version: '1'
326
- - !ruby/object:Gem::Dependency
327
- name: simplecov
328
- requirement: !ruby/object:Gem::Requirement
329
- requirements:
330
- - - "<"
331
- - !ruby/object:Gem::Version
332
- version: '1'
333
- type: :development
334
- prerelease: false
335
- version_requirements: !ruby/object:Gem::Requirement
336
- requirements:
337
- - - "<"
338
- - !ruby/object:Gem::Version
339
- version: '1'
340
- - !ruby/object:Gem::Dependency
341
- name: slim
342
- requirement: !ruby/object:Gem::Requirement
343
- requirements:
344
- - - "~>"
345
- - !ruby/object:Gem::Version
346
- version: '5'
347
- type: :development
348
- prerelease: false
349
- version_requirements: !ruby/object:Gem::Requirement
350
- requirements:
351
- - - "~>"
352
- - !ruby/object:Gem::Version
353
- version: '5'
354
- - !ruby/object:Gem::Dependency
355
- name: sprockets-rails
356
- requirement: !ruby/object:Gem::Requirement
357
- requirements:
358
- - - "~>"
359
- - !ruby/object:Gem::Version
360
- version: '3'
361
- type: :development
362
- prerelease: false
363
- version_requirements: !ruby/object:Gem::Requirement
364
- requirements:
365
- - - "~>"
366
- - !ruby/object:Gem::Version
367
- version: '3'
368
- - !ruby/object:Gem::Dependency
369
- name: standard
370
- requirement: !ruby/object:Gem::Requirement
371
- requirements:
372
- - - "~>"
373
- - !ruby/object:Gem::Version
374
- version: '1'
375
- type: :development
376
- prerelease: false
377
- version_requirements: !ruby/object:Gem::Requirement
378
- requirements:
379
- - - "~>"
380
- - !ruby/object:Gem::Version
381
- version: '1'
382
- - !ruby/object:Gem::Dependency
383
- name: turbo-rails
384
- requirement: !ruby/object:Gem::Requirement
385
- requirements:
386
- - - "~>"
387
- - !ruby/object:Gem::Version
388
- version: '2'
389
- type: :development
390
- prerelease: false
391
- version_requirements: !ruby/object:Gem::Requirement
392
- requirements:
393
- - - "~>"
394
- - !ruby/object:Gem::Version
395
- version: '2'
396
- - !ruby/object:Gem::Dependency
397
- name: warning
398
- requirement: !ruby/object:Gem::Requirement
399
- requirements:
400
- - - ">="
401
- - !ruby/object:Gem::Version
402
- version: '0'
403
- type: :development
404
- prerelease: false
405
- version_requirements: !ruby/object:Gem::Requirement
406
- requirements:
407
- - - ">="
408
- - !ruby/object:Gem::Version
409
- version: '0'
410
- - !ruby/object:Gem::Dependency
411
- name: yard-activesupport-concern
412
- requirement: !ruby/object:Gem::Requirement
413
- requirements:
414
- - - "<"
415
- - !ruby/object:Gem::Version
416
- version: '1'
417
- type: :development
418
- prerelease: false
419
- version_requirements: !ruby/object:Gem::Requirement
420
- requirements:
421
- - - "<"
422
- - !ruby/object:Gem::Version
423
- version: '1'
424
- - !ruby/object:Gem::Dependency
425
- name: yard
426
- requirement: !ruby/object:Gem::Requirement
427
- requirements:
428
- - - "<"
429
- - !ruby/object:Gem::Version
430
- version: '1'
431
- type: :development
432
- prerelease: false
433
- version_requirements: !ruby/object:Gem::Requirement
434
- requirements:
435
- - - "<"
436
- - !ruby/object:Gem::Version
437
- version: '1'
438
- - !ruby/object:Gem::Dependency
439
- name: propshaft
440
- requirement: !ruby/object:Gem::Requirement
441
- requirements:
442
- - - "~>"
443
- - !ruby/object:Gem::Version
444
- version: '1'
445
- type: :development
446
- prerelease: false
447
- version_requirements: !ruby/object:Gem::Requirement
448
- requirements:
449
- - - "~>"
450
- - !ruby/object:Gem::Version
451
- version: '1'
452
46
  executables: []
453
47
  extensions: []
454
48
  extra_rdoc_files: []
@@ -460,6 +54,7 @@ files:
460
54
  - app/controllers/view_components_system_test_controller.rb
461
55
  - app/views/test_mailer/test_asset_email.html.erb
462
56
  - app/views/test_mailer/test_email.html.erb
57
+ - app/views/test_mailer/test_url_email.html.erb
463
58
  - app/views/view_components/index.html.erb
464
59
  - app/views/view_components/preview.html.erb
465
60
  - app/views/view_components/previews.html.erb
@@ -469,7 +64,6 @@ files:
469
64
  - lib/view_component/collection.rb
470
65
  - lib/view_component/compile_cache.rb
471
66
  - lib/view_component/compiler.rb
472
- - lib/view_component/component_local_config.rb
473
67
  - lib/view_component/config.rb
474
68
  - lib/view_component/configurable.rb
475
69
  - lib/view_component/deprecation.rb
@@ -481,14 +75,12 @@ files:
481
75
  - lib/view_component/request_details.rb
482
76
  - lib/view_component/slot.rb
483
77
  - lib/view_component/slotable.rb
484
- - lib/view_component/slotable_default.rb
485
78
  - lib/view_component/system_test_case.rb
486
79
  - lib/view_component/system_test_helpers.rb
487
80
  - lib/view_component/template.rb
488
81
  - lib/view_component/test_case.rb
489
82
  - lib/view_component/test_helpers.rb
490
83
  - lib/view_component/translatable.rb
491
- - lib/view_component/use_helpers.rb
492
84
  - lib/view_component/version.rb
493
85
  - lib/view_component/with_content_helper.rb
494
86
  homepage: https://viewcomponent.org
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ViewComponent
4
- module ComponentLocalConfig
5
- class Configuration
6
- def self.defaults
7
- ActiveSupport::Configurable::Configuration[
8
- strip_trailing_whitespace: false
9
- ]
10
- end
11
-
12
- def initialize(config = defaults)
13
- @config = config
14
- end
15
-
16
- delegate_missing_to :@config
17
-
18
- def inheritable_copy
19
- self.class.new(@config.inheritable_copy)
20
- end
21
-
22
- private
23
-
24
- delegate :defaults, to: :class
25
- end
26
-
27
- extend ActiveSupport::Concern
28
-
29
- included do
30
- # :nocov:
31
- def view_component_config
32
- @__vc_config ||= self.class.view_component_config.inheritable_copy
33
- end
34
-
35
- private
36
-
37
- def inherited(child)
38
- child.instance_variable_set(:@__vc_config, nil)
39
- super
40
- end
41
- # :nocov:
42
- end
43
-
44
- class_methods do
45
- def view_component_config
46
- @__vc_config ||= if respond_to?(:superclass) && superclass.respond_to?(:view_component_config)
47
- superclass.view_component_config.inheritable_copy
48
- else
49
- # create a new "anonymous" class that will host the compiled reader methods
50
- ViewComponent::ComponentLocalConfig::Configuration.new
51
- end
52
- end
53
-
54
- def configure_view_component(&block)
55
- view_component_config.instance_eval(&block)
56
- view_component_config.compile_methods!
57
- end
58
- end
59
- end
60
- end
@@ -1,18 +0,0 @@
1
- module ViewComponent
2
- module SlotableDefault
3
- def get_slot(slot_name)
4
- return super unless !@__vc_set_slots[slot_name] && (default_method = registered_slots[slot_name][:default_method])
5
-
6
- renderable_value = send(default_method)
7
- slot = Slot.new(self)
8
-
9
- if renderable_value.respond_to?(:render_in)
10
- slot.__vc_component_instance = renderable_value
11
- else
12
- slot.__vc_content = renderable_value
13
- end
14
-
15
- slot
16
- end
17
- end
18
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ViewComponent::UseHelpers
4
- extend ActiveSupport::Concern
5
-
6
- class_methods do
7
- def use_helpers(*args, from: nil, prefix: false)
8
- args.each { |helper_method| use_helper(helper_method, from: from, prefix: prefix) }
9
- end
10
-
11
- def use_helper(helper_method, from: nil, prefix: false)
12
- helper_method_name = full_helper_method_name(helper_method, prefix: prefix, source: from)
13
-
14
- class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
15
- def #{helper_method_name}(...)
16
- raise HelpersCalledBeforeRenderError if view_context.nil?
17
-
18
- #{define_helper(helper_method: helper_method, source: from)}
19
- end
20
- RUBY
21
- end
22
-
23
- private
24
-
25
- def full_helper_method_name(helper_method, prefix: false, source: nil)
26
- return helper_method unless prefix.present?
27
-
28
- if !!prefix == prefix
29
- "#{source.to_s.underscore}_#{helper_method}"
30
- else
31
- "#{prefix}_#{helper_method}"
32
- end
33
- end
34
-
35
- def define_helper(helper_method:, source:)
36
- return "__vc_original_view_context.#{helper_method}(...)" unless source.present?
37
-
38
- "#{source}.instance_method(:#{helper_method}).bind(self).call(...)"
39
- end
40
- end
41
- end