phlexi-form 0.4.0 → 0.4.2

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: 275c0339b1d6b87503e8acf312fe8fa7f4dddeb2cc8a54840b3adfa66d3b61a6
4
- data.tar.gz: b7f6fe52cfb50974dfec86e3c45ffb22a4ea2a0c1a65cb28d947ed325b0f6965
3
+ metadata.gz: 6e48bcf63b4a10f2a96634c9bc29da6d4aaf2aa2b07610a068b8855f3b886f00
4
+ data.tar.gz: 9dc72e580de4b3c2106b8b11b87ee9c98f529541d7fb32338fd6a0364fe7ad8f
5
5
  SHA512:
6
- metadata.gz: d55f3d6c19be8cab8fe158085730b81bd199c0c4ec4912209b8ec3273b4d5e312412036f534330da6f357adcdff0bd327686736fcba3a078d60270e904c8da26
7
- data.tar.gz: 547e96dc75e481b0a645ff2156a92f6ff9c3629af5658b5612649df713f81c024bc44b91f53e053db35728d0420572fc831bc6786a0b90bb6e3244768d6c343f
6
+ metadata.gz: badb2048ae77cffec7f21d75f010fe60cf66fce6da0131d2432d4f1a530f48a7ef9694e46386106e87d165456dd641fe096d9eb3f6c24db0bdf4426b69d720a8
7
+ data.tar.gz: 124992bdef2e96b91a238ba124be3a587252cf113df6bc75fe88b94b18090cda1b075ac6e24c835be11b4debfd0788a78dc5f054487ec7453987cf8188c05536
@@ -22,6 +22,8 @@ module Phlexi
22
22
 
23
23
  class Builder < Phlexi::Form::Builder; end
24
24
 
25
+ class Errors < Phlexi::Form::Components::FormErrors; end
26
+
25
27
  def self.inline(*, **, &block)
26
28
  raise ArgumentError, "block is required" unless block
27
29
 
@@ -61,7 +63,28 @@ module Phlexi
61
63
  #
62
64
  # @return [void]
63
65
  def view_template(&)
64
- form_tag { form_template(&) }
66
+ form_tag {
67
+ form_errors
68
+ form_template(&)
69
+ }
70
+ end
71
+
72
+ def form_errors
73
+ return unless errors.present?
74
+
75
+ render self.class::Errors.new error_message, errors
76
+ end
77
+
78
+ def error_message
79
+ lookups = []
80
+ lookups << :"#{key}"
81
+ lookups << :default_message
82
+ lookups << options.fetch(:error_message) { "Please review the problems below" }
83
+ I18n.t(lookups.shift, scope: :"phlexi_form.error_notification", default: lookups)
84
+ end
85
+
86
+ def errors
87
+ @errors ||= options.fetch(:errors) { object.respond_to?(:errors) && object.errors.full_messages }
65
88
  end
66
89
 
67
90
  # Executes the form's content block.
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlexi
4
+ module Form
5
+ module Components
6
+ class FormErrors < Phlexi::Form::HTML
7
+ def initialize(message, errors)
8
+ @message = message
9
+ @errors = errors
10
+ end
11
+
12
+ def view_template
13
+ div(class: themed(:form_errors_wrapper, nil), role: "alert") do
14
+ div(class: themed(:form_errors_inner_wrapper, nil)) do
15
+ p(class: themed(:form_errors_message, nil)) { @message }
16
+ ul(class: themed(:form_errors_list, nil)) do
17
+ @errors.each do |error|
18
+ li(class: themed(:form_errors_list_item, nil)) {
19
+ error.to_s
20
+ }
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -4,7 +4,7 @@ module Phlexi
4
4
  module Form
5
5
  module Structure
6
6
  class FieldCollection < Phlexi::Field::Structure::FieldCollection
7
- class Builder < Builder
7
+ class Builder < Phlexi::Field::Structure::FieldCollection::Builder
8
8
  def field(**options)
9
9
  options = mix({input_attributes: @field.input_attributes}, options)
10
10
  @field.class.new(key, **options, parent: @field).tap do |field|
@@ -13,6 +13,11 @@ module Phlexi
13
13
  button: nil,
14
14
  submit_button: :button,
15
15
 
16
+ # == Errors
17
+ form_errors_wrapper: nil,
18
+ form_errors_message: nil,
19
+ form_errors_list: nil,
20
+
16
21
  # == Label
17
22
  label: nil,
18
23
  invalid_label: nil,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Phlexi
4
4
  module Form
5
- VERSION = "0.4.0"
5
+ VERSION = "0.4.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlexi-form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Froelich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-15 00:00:00.000000000 Z
11
+ date: 2024-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: phlex
@@ -216,6 +216,7 @@ files:
216
216
  - lib/phlexi/form/components/concerns/submits_form.rb
217
217
  - lib/phlexi/form/components/error.rb
218
218
  - lib/phlexi/form/components/file_input.rb
219
+ - lib/phlexi/form/components/form_errors.rb
219
220
  - lib/phlexi/form/components/full_error.rb
220
221
  - lib/phlexi/form/components/hint.rb
221
222
  - lib/phlexi/form/components/input.rb