phlexi-form 0.4.1 → 0.4.2

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: aa37fb3ecaded18bae5e7be4d2773c227acc970c588eceb276214f39597cf5cf
4
- data.tar.gz: cc06f9e6d21d87e66efe7eb4a27fd1b2e9721b14f9dab5b1ab7df5c74ff58834
3
+ metadata.gz: 6e48bcf63b4a10f2a96634c9bc29da6d4aaf2aa2b07610a068b8855f3b886f00
4
+ data.tar.gz: 9dc72e580de4b3c2106b8b11b87ee9c98f529541d7fb32338fd6a0364fe7ad8f
5
5
  SHA512:
6
- metadata.gz: d37efe7ef9526991cce1495180edeacab2322c499302dab5e1118731bf2410e708e1404a6dfc1c3bebaf7846366fa05c57acc94669cc6caf60a798159ff9bf8b
7
- data.tar.gz: ec2a45b47b89e0215cf034584d7d1d7cd5f60aa3fc640447492ba184a01069150879ddb101e7616b71fbde770222701df50ac96f0361e7a848967bc17c405885
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
@@ -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.1"
5
+ VERSION = "0.4.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlexi-form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Froelich
@@ -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