forest_admin_datasource_customizer 1.0.0.pre.beta.67 → 1.0.0.pre.beta.69

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: dc7be9cd681f1268f79a3196e2df52f823bf27435addf2bafd6149d54c2cccae
4
- data.tar.gz: 4ec5d39db429e15805cd46c0ae414a1486c24c42df2f2bd89c00b171e01bb7ab
3
+ metadata.gz: e1c8a06acb9a7a54a9b3307d8ced770afb79f524830002e3df64a0c4d2942663
4
+ data.tar.gz: 42839a7a96efa461771180ccfc4c7eeba8c111d35fef2c9677f09a9e264b2dad
5
5
  SHA512:
6
- metadata.gz: d7f31dd4e49979ecd1b488b505eaf7c87ed8a41f2301578a2b4b26458075e64fd491c15b58638663d166da004d2c1f972412c5c4418809e77533b4bdc736de9c
7
- data.tar.gz: 928ae535652f6eba9f2ccf93686d09e71b0a51d0d8a98e24fd70a702e37f8734f5f0358b2b2c30bfc30d5972135b31ff02b37fadda364d9116f12304986e98f9
6
+ metadata.gz: 4d0c9a2a6baa9054af52915b4987b570acc90376dc2f66ecaaae3749c1b59752968e6e4f85c8f91f2f7a1910312b9f9ebd51e1225a2c5dbfafd43bfc360a6a70
7
+ data.tar.gz: e184b1912374f9f8aca77f44a97b1d4b3d0e09d87eccaab1a9332d1e3039e040ff9a201cafefb3641f27e0fe90b11d4424aded5b503a43e42f67dd56162b052c
@@ -48,7 +48,7 @@ module ForestAdminDatasourceCustomizer
48
48
  dynamic_fields = drop_defaults(context, dynamic_fields, form_values)
49
49
  dynamic_fields = drop_ifs(context, dynamic_fields) unless metas[:include_hidden_fields]
50
50
 
51
- fields = drop_deferred(context, metas[:search_values], dynamic_fields)
51
+ fields = drop_deferred(context, metas[:search_values], dynamic_fields).compact
52
52
 
53
53
  fields.each do |field|
54
54
  next if field.type == 'Layout'
@@ -70,6 +70,10 @@ module ForestAdminDatasourceCustomizer
70
70
  case field[:component]
71
71
  when 'Separator'
72
72
  FormLayoutElement::SeparatorElement.new(**field)
73
+ when 'HtmlBlock'
74
+ FormLayoutElement::HtmlBlockElement.new(**field)
75
+ when 'Row'
76
+ FormLayoutElement::RowElement.new(**field)
73
77
  else
74
78
  raise ForestAdminDatasourceToolkit::Exceptions::ForestException,
75
79
  "Unknow component type: #{field[:component]}"
@@ -77,7 +81,7 @@ module ForestAdminDatasourceCustomizer
77
81
  end
78
82
 
79
83
  def static_form?
80
- return form&.all?(&:static?) if form
84
+ return form&.all?(&:static?) && form&.none? { |field| field.type == 'Layout' } if form
81
85
 
82
86
  true
83
87
  end
@@ -3,23 +3,65 @@ module ForestAdminDatasourceCustomizer
3
3
  module Action
4
4
  module FormLayoutElement
5
5
  include Types
6
+ include ForestAdminDatasourceToolkit::Exceptions
6
7
 
7
8
  class LayoutElement < BaseFormElement
8
9
  attr_accessor :if_condition, :component
9
10
 
10
11
  def initialize(component:, if_condition: nil, **kwargs)
11
12
  super(type: 'Layout', **kwargs)
12
-
13
13
  @component = component
14
14
  @if_condition = if_condition
15
15
  end
16
16
  end
17
17
 
18
18
  class SeparatorElement < LayoutElement
19
- def initialize(options)
19
+ def initialize(**options)
20
20
  super(component: 'Separator', **options)
21
21
  end
22
22
  end
23
+
24
+ class HtmlBlockElement < LayoutElement
25
+ attr_accessor :content
26
+
27
+ def initialize(content:, **options)
28
+ super(component: 'HtmlBlock', **options)
29
+ @content = content
30
+ end
31
+ end
32
+
33
+ class RowElement < LayoutElement
34
+ include ForestAdminDatasourceToolkit::Exceptions
35
+ attr_accessor :fields
36
+
37
+ def initialize(options)
38
+ super(component: 'Row', **options)
39
+ validate_fields_presence!(options)
40
+ validate_no_layout_subfields!(options[:fields])
41
+ @fields = instantiate_subfields(options[:fields] || [])
42
+ end
43
+
44
+ private
45
+
46
+ def validate_fields_presence!(options)
47
+ raise ForestException, "Using 'fields' in a 'Row' configuration is mandatory" unless options.key?(:fields)
48
+ end
49
+
50
+ def validate_no_layout_subfields!(fields)
51
+ fields.each do |field|
52
+ if (field.is_a?(DynamicField) && field.type == 'Layout') ||
53
+ (field.is_a?(Hash) && field[:type] == 'Layout')
54
+ raise ForestException, "A 'Row' form element doesn't allow layout elements as subfields"
55
+ end
56
+ end
57
+ end
58
+
59
+ def instantiate_subfields(fields)
60
+ fields.map do |field|
61
+ ForestAdminDatasourceToolkit::Components::Actions::ActionFieldFactory.build(field.to_h)
62
+ end
63
+ end
64
+ end
23
65
  end
24
66
  end
25
67
  end
@@ -1,3 +1,3 @@
1
1
  module ForestAdminDatasourceCustomizer
2
- VERSION = "1.0.0-beta.67"
2
+ VERSION = "1.0.0-beta.69"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_admin_datasource_customizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta.67
4
+ version: 1.0.0.pre.beta.69
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-09-19 00:00:00.000000000 Z
12
+ date: 2024-09-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport