diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1057a076f..ddd15a408 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -92,16 +92,6 @@ module ApplicationHelper DText.strip_dtext(text) end - def error_messages_for(instance_name) - instance = instance_variable_get("@#{instance_name}") - - if instance&.errors&.any? - %{
}.html_safe - else - "" - end - end - def time_tag(content, time, **options) datetime = time.strftime("%Y-%m-%dT%H:%M%:z") @@ -256,7 +246,14 @@ module ApplicationHelper def edit_form_for(model, **options, &block) options[:html] = { autocomplete: "off", **options[:html].to_h } options[:authenticity_token] = true if options[:remote] == true - simple_form_for(model, **options, &block) + + simple_form_for(model, **options) do |form| + if model.try(:errors).try(:any?) + concat tag.div(model.errors.full_messages.join("; "), class: "notice notice-error notice-small") + end + + block.call(form) + end end def table_for(...) diff --git a/app/javascript/src/styles/base/040_colors.css b/app/javascript/src/styles/base/040_colors.css index c480df553..83b141c35 100644 --- a/app/javascript/src/styles/base/040_colors.css +++ b/app/javascript/src/styles/base/040_colors.css @@ -114,6 +114,7 @@ html { --form-input-border-color: var(--grey-2); --form-input-placeholder-text-color: var(--grey-4); --form-input-validation-error-border-color: var(--red-4); + --form-input-validation-error-text-color: var(--red-5); --form-button-text-color: var(--text-color); --form-button-background: var(--grey-1); @@ -246,8 +247,6 @@ html { --keyboard-shortcut-color: var(--inverse-text-color); --keyboard-shortcut-background-color: var(--grey-6); - --error-message-color: var(--red-5); - --login-link-color: var(--red-5); --footer-border-color: var(--grey-1); --details-border-color: var(--grey-2); @@ -326,6 +325,7 @@ body[data-current-user-theme="dark"] { --form-input-border-color: var(--grey-5); --form-input-placeholder-text-color: var(--grey-3); --form-input-validation-error-border-color: var(--red-4); + --form-input-validation-error-text-color: var(--red-5); --form-button-text-color: var(--grey-9); --form-button-background: var(--grey-2); @@ -444,8 +444,6 @@ body[data-current-user-theme="dark"] { --keyboard-shortcut-color: var(--grey-0); --keyboard-shortcut-background-color: var(--grey-7); - --error-message-color: var(--red-4); - --login-link-color: var(--red-4); --footer-border-color: var(--grey-7); --details-border-color: var(--grey-7); diff --git a/app/javascript/src/styles/common/inline.scss b/app/javascript/src/styles/common/inline.scss index a68b08f34..d2f831de1 100644 --- a/app/javascript/src/styles/common/inline.scss +++ b/app/javascript/src/styles/common/inline.scss @@ -1,9 +1,3 @@ -span.error { - display: block; - font-weight: bold; - color: var(--error-color); -} - span.link { color: var(--link-color); cursor: pointer; diff --git a/app/javascript/src/styles/common/notices.scss b/app/javascript/src/styles/common/notices.scss index 1e0b36a76..5684b97f0 100644 --- a/app/javascript/src/styles/common/notices.scss +++ b/app/javascript/src/styles/common/notices.scss @@ -1,13 +1,3 @@ -div.error-messages { - margin: 1em 0; - padding: 1em; - - h1 { - font-size: 1em; - color: var(--error-message-color); - } -} - div#notice { padding: 0.5em; position: fixed; diff --git a/app/javascript/src/styles/common/simple_form.scss b/app/javascript/src/styles/common/simple_form.scss index 5ee01139b..2d290762f 100644 --- a/app/javascript/src/styles/common/simple_form.scss +++ b/app/javascript/src/styles/common/simple_form.scss @@ -44,8 +44,17 @@ form.simple_form { } } - &.field_with_errors input { - border: 1px solid var(--form-input-validation-error-border-color); + &.field_with_errors { + input, select, textarea { + border: 1px solid var(--form-input-validation-error-border-color); + } + + span.error { + display: block; + color: var(--form-input-validation-error-text-color); + font-style: italic; + font-size: 0.8em; + } } &.text, &.dtext { diff --git a/app/views/artists/new.html.erb b/app/views/artists/new.html.erb index bc37bbebc..f0a620466 100644 --- a/app/views/artists/new.html.erb +++ b/app/views/artists/new.html.erb @@ -2,8 +2,6 @@Request aliases or implications using the format shown below. An alias makes the first tag a synonym for the second tag. An implication makes the first tag automatically add the second tag. diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index 33ff69df8..01d91892c 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -1,5 +1,3 @@ -<%= error_messages_for :comment %> - <%= edit_form_for(comment, namespace: "post_#{comment&.post_id}_comment_#{comment.id || "new"}", html: { style: ("display: none;" if local_assigns[:hidden]), class: "edit_comment" }) do |f| %> <% if comment.new_record? %> <%= f.hidden_field :post_id %> diff --git a/app/views/favorite_groups/edit.html.erb b/app/views/favorite_groups/edit.html.erb index ac6e706bc..29d7369eb 100644 --- a/app/views/favorite_groups/edit.html.erb +++ b/app/views/favorite_groups/edit.html.erb @@ -2,8 +2,6 @@
- <%= error_messages_for "ip_ban" %> - <%= edit_form_for(@ip_ban) do |f| %> <%= f.input :ip_addr, label: "IP Address", as: :string, hint: "Add /24 to ban a subnet. Example: 1.2.3.4/24" %> <%= f.input :reason, as: :string %> diff --git a/app/views/pools/edit.html.erb b/app/views/pools/edit.html.erb index 2c2652d6a..c4eedcc35 100644 --- a/app/views/pools/edit.html.erb +++ b/app/views/pools/edit.html.erb @@ -3,8 +3,6 @@ <%= edit_form_for(@pool) do |f| %>