Improving all forms
This commit is contained in:
		| @@ -12,3 +12,6 @@ com.graphaware.module.NR.maxTopRankNodes=10\n\ | ||||
| com.graphaware.module.NR.dampingFactor=0.85\n\ | ||||
| com.graphaware.module.NR.propertyKey=nodeRank\n'\ | ||||
|   >> /var/lib/neo4j/conf/neo4j.conf | ||||
| RUN echo 'com.graphaware.runtime.stats.disabled=true\n\ | ||||
| com.graphaware.server.stats.disabled=true\n'\ | ||||
|   >> /var/lib/neo4j/conf/neo4j.conf | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| @@ -189,192 +189,6 @@ body { | ||||
|   } | ||||
| } | ||||
|  | ||||
| .form-container { | ||||
|   max-width: 400px; | ||||
|   margin: 0 auto; | ||||
|   padding: 20px; | ||||
|  | ||||
|   .field { | ||||
|     margin-bottom: 15px; | ||||
|   } | ||||
|  | ||||
|   .file-field { | ||||
|     padding: 15px 0; | ||||
|  | ||||
|     label { | ||||
|       font-family: 'Roboto'; | ||||
|       font-size: 16px; | ||||
|       color: #fff; | ||||
|       width: 100px; | ||||
|       display: inline-block; | ||||
|     } | ||||
|  | ||||
|     input[type=file] { | ||||
|       width: 280px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .fields-group { | ||||
|     margin-bottom: 25px; | ||||
|   } | ||||
|  | ||||
|   .boolean-field { | ||||
|     margin-bottom: 5px; | ||||
|  | ||||
|     label { | ||||
|       font-family: 'Roboto'; | ||||
|       font-size: 14px; | ||||
|       color: #9baec8; | ||||
|     } | ||||
|  | ||||
|     input[type=checkbox] { | ||||
|       display: inline-block; | ||||
|       margin-bottom: -13px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   input[type=text], input[type=email], input[type=password], textarea { | ||||
|     background: transparent; | ||||
|     border: 0; | ||||
|     border-bottom: 2px solid #9baec8; | ||||
|     padding: 7px 0; | ||||
|     font-size: 16px; | ||||
|     color: #fff; | ||||
|     display: block; | ||||
|     width: 100%; | ||||
|     outline: 0; | ||||
|     font-family: 'Roboto'; | ||||
|  | ||||
|     &:invalid { | ||||
|       box-shadow: none; | ||||
|     } | ||||
|  | ||||
|     &:focus:invalid { | ||||
|       border-bottom-color: #df405a; | ||||
|     } | ||||
|  | ||||
|     &:required:valid { | ||||
|       border-bottom-color: #79bd9a; | ||||
|     } | ||||
|  | ||||
|     &:active, &:focus { | ||||
|       border-bottom-color: #2b90d9; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .field_with_error { | ||||
|     input[type=text], input[type=email], input[type=password] { | ||||
|       border-bottom-color: #df405a; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .prompt { | ||||
|     font-size: 16px; | ||||
|     color: #9baec8; | ||||
|     text-align: center; | ||||
|  | ||||
|     .prompt-highlight { | ||||
|       font-weight: 500; | ||||
|       color: #fff; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   code.copypasteable { | ||||
|     display: block; | ||||
|     font-family: 'Roboto Mono', monospace; | ||||
|     font-weight: 400; | ||||
|     font-size: 12px; | ||||
|     margin-top: 20px; | ||||
|     background: #282c37; | ||||
|     border-radius: 4px; | ||||
|     padding: 2px; | ||||
|     word-wrap: break-word; | ||||
|   } | ||||
|  | ||||
|   .actions { | ||||
|     margin-top: 30px; | ||||
|  | ||||
|     button { | ||||
|       display: block; | ||||
|       width: 100%; | ||||
|       border: 0; | ||||
|       border-radius: 4px; | ||||
|       background: #2b90d9; | ||||
|       color: #fff; | ||||
|       font-size: 18px; | ||||
|       padding: 10px; | ||||
|       text-transform: uppercase; | ||||
|       cursor: pointer; | ||||
|       font-weight: 500; | ||||
|       outline: 0; | ||||
|       margin-bottom: 10px; | ||||
|  | ||||
|       &:hover { | ||||
|         background-color: lighten(#2b90d9, 5%); | ||||
|       } | ||||
|  | ||||
|       &:active, &:focus { | ||||
|         position: relative; | ||||
|         top: 1px; | ||||
|         background-color: darken(#2b90d9, 5%); | ||||
|       } | ||||
|  | ||||
|       &.negative { | ||||
|         background: #df405a; | ||||
|  | ||||
|         &:hover { | ||||
|           background-color: lighten(#df405a, 5%); | ||||
|         } | ||||
|  | ||||
|         &:active, &:focus { | ||||
|           background-color: darken(#df405a, 5%); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .flash-message { | ||||
|     text-align: center; | ||||
|     font-size: 14px; | ||||
|     margin-bottom: 30px; | ||||
|     font-weight: 500; | ||||
|   } | ||||
|  | ||||
|   .form-footer { | ||||
|     margin-top: 30px; | ||||
|     text-align: center; | ||||
|  | ||||
|     a { | ||||
|       color: #9baec8; | ||||
|       text-decoration: none; | ||||
|  | ||||
|       &:hover { | ||||
|         color: #d9e1e8; | ||||
|         text-decoration: underline; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   #error_explanation { | ||||
|     background: #282c37; | ||||
|     color: #9baec8; | ||||
|     border-radius: 4px; | ||||
|     padding: 15px 10px; | ||||
|     margin-bottom: 30px; | ||||
|     box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); | ||||
|  | ||||
|     h2 { | ||||
|       font-weight: 500; | ||||
|       margin-bottom: 5px; | ||||
|     } | ||||
|  | ||||
|     li { | ||||
|       margin-left: 15px; | ||||
|       list-style: circle; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .no-list { | ||||
|   list-style: none; | ||||
|  | ||||
| @@ -415,6 +229,7 @@ body { | ||||
|   } | ||||
| } | ||||
|  | ||||
| @import 'forms'; | ||||
| @import 'accounts'; | ||||
| @import 'stream_entries'; | ||||
| @import 'components'; | ||||
|   | ||||
							
								
								
									
										182
									
								
								app/assets/stylesheets/forms.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								app/assets/stylesheets/forms.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,182 @@ | ||||
| .form-container { | ||||
|   max-width: 400px; | ||||
|   padding: 20px; | ||||
|   margin: 0 auto; | ||||
| } | ||||
|  | ||||
| .simple_form { | ||||
|   .input { | ||||
|     margin-bottom: 15px; | ||||
|   } | ||||
|  | ||||
|   .input.file { | ||||
|     padding: 15px 0; | ||||
|     margin-bottom: 0; | ||||
|  | ||||
|     label { | ||||
|       font-family: 'Roboto'; | ||||
|       font-size: 16px; | ||||
|       color: #fff; | ||||
|       width: 100px; | ||||
|       display: inline-block; | ||||
|     } | ||||
|  | ||||
|     input[type=file] { | ||||
|       width: 280px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .fields-group { | ||||
|     margin-bottom: 25px; | ||||
|   } | ||||
|  | ||||
|   .input.boolean { | ||||
|     margin-bottom: 5px; | ||||
|  | ||||
|     label { | ||||
|       font-family: 'Roboto'; | ||||
|       font-size: 14px; | ||||
|       color: #9baec8; | ||||
|     } | ||||
|  | ||||
|     input[type=checkbox] { | ||||
|       display: inline-block; | ||||
|       margin-bottom: -13px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   input[type=text], input[type=email], input[type=password], textarea { | ||||
|     background: transparent; | ||||
|     border: 0; | ||||
|     border-bottom: 2px solid #9baec8; | ||||
|     padding: 7px 0; | ||||
|     font-size: 16px; | ||||
|     color: #fff; | ||||
|     display: block; | ||||
|     width: 100%; | ||||
|     outline: 0; | ||||
|     font-family: 'Roboto'; | ||||
|  | ||||
|     &:invalid { | ||||
|       box-shadow: none; | ||||
|     } | ||||
|  | ||||
|     &:focus:invalid { | ||||
|       border-bottom-color: #df405a; | ||||
|     } | ||||
|  | ||||
|     &:required:valid { | ||||
|       border-bottom-color: #79bd9a; | ||||
|     } | ||||
|  | ||||
|     &:active, &:focus { | ||||
|       border-bottom-color: #2b90d9; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .input.field_with_errors { | ||||
|     input[type=text], input[type=email], input[type=password] { | ||||
|       border-bottom-color: #df405a; | ||||
|     } | ||||
|  | ||||
|     .error { | ||||
|       font-weight: 500; | ||||
|       color: #df405a; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .prompt { | ||||
|     font-size: 16px; | ||||
|     color: #9baec8; | ||||
|     text-align: center; | ||||
|  | ||||
|     .prompt-highlight { | ||||
|       font-weight: 500; | ||||
|       color: #fff; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   code.copypasteable { | ||||
|     display: block; | ||||
|     font-family: 'Roboto Mono', monospace; | ||||
|     font-weight: 400; | ||||
|     font-size: 12px; | ||||
|     margin-top: 20px; | ||||
|     background: #282c37; | ||||
|     border-radius: 4px; | ||||
|     padding: 2px; | ||||
|     word-wrap: break-word; | ||||
|   } | ||||
|  | ||||
|   .actions { | ||||
|     margin-top: 30px; | ||||
|  | ||||
|     button { | ||||
|       display: block; | ||||
|       width: 100%; | ||||
|       border: 0; | ||||
|       border-radius: 4px; | ||||
|       background: #2b90d9; | ||||
|       color: #fff; | ||||
|       font-size: 18px; | ||||
|       padding: 10px; | ||||
|       text-transform: uppercase; | ||||
|       cursor: pointer; | ||||
|       font-weight: 500; | ||||
|       outline: 0; | ||||
|       margin-bottom: 10px; | ||||
|  | ||||
|       &:hover { | ||||
|         background-color: lighten(#2b90d9, 5%); | ||||
|       } | ||||
|  | ||||
|       &:active, &:focus { | ||||
|         position: relative; | ||||
|         top: 1px; | ||||
|         background-color: darken(#2b90d9, 5%); | ||||
|       } | ||||
|  | ||||
|       &.negative { | ||||
|         background: #df405a; | ||||
|  | ||||
|         &:hover { | ||||
|           background-color: lighten(#df405a, 5%); | ||||
|         } | ||||
|  | ||||
|         &:active, &:focus { | ||||
|           background-color: darken(#df405a, 5%); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .flash-message { | ||||
|   background: #282c37; | ||||
|   color: #9baec8; | ||||
|   border-radius: 4px; | ||||
|   padding: 15px 10px; | ||||
|   margin-bottom: 30px; | ||||
|   box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); | ||||
|   text-align: center; | ||||
|  | ||||
|   strong { | ||||
|     font-weight: 500; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .form-footer { | ||||
|   margin-top: 30px; | ||||
|   text-align: center; | ||||
|  | ||||
|   a { | ||||
|     color: #9baec8; | ||||
|     text-decoration: none; | ||||
|  | ||||
|     &:hover { | ||||
|       color: #d9e1e8; | ||||
|       text-decoration: underline; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1,5 +1,6 @@ | ||||
| class XrdController < ApplicationController | ||||
|   before_action :set_default_format | ||||
|   before_action :set_default_format_json, only: :webfinger | ||||
|   before_action :set_default_format_xml, only: :host_meta | ||||
|  | ||||
|   def host_meta | ||||
|     @webfinger_template = "#{webfinger_url}?resource={uri}" | ||||
| @@ -24,7 +25,11 @@ class XrdController < ApplicationController | ||||
|  | ||||
|   private | ||||
|  | ||||
|   def set_default_format | ||||
|   def set_default_format_xml | ||||
|     request.format = 'xml' if request.headers["HTTP_ACCEPT"].nil? && params[:format].nil? | ||||
|   end | ||||
|  | ||||
|   def set_default_format_json | ||||
|     request.format = 'json' if request.headers["HTTP_ACCEPT"].nil? && params[:format].nil? | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| - content_for :page_title do | ||||
|   Confirmation instructions | ||||
|  | ||||
| = form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| | ||||
|   = devise_error_messages! | ||||
| = simple_form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| | ||||
|   = render 'shared/error_messages', object: resource | ||||
|  | ||||
|   = f.input :email, autofocus: true, required: true, placeholder: 'E-mail address' | ||||
|  | ||||
|   .field | ||||
|     = f.email_field :email, autofocus: true, required: true, placeholder: 'E-mail address' | ||||
|   .actions | ||||
|     = f.button "Resend confirmation instructions", type: 'submit' | ||||
|     = f.button :button, "Resend confirmation instructions", type: :submit | ||||
|  | ||||
| .form-footer= render "auth/shared/links" | ||||
|   | ||||
| @@ -1,15 +1,14 @@ | ||||
| - content_for :page_title do | ||||
|   Set new password | ||||
|  | ||||
| = form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| | ||||
|   = devise_error_messages! | ||||
|   = f.hidden_field :reset_password_token | ||||
| = simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| | ||||
|   = render 'shared/error_messages', object: resource | ||||
|   = f.input :reset_password_token, as: :hidden | ||||
|  | ||||
|   = f.input :password, autofocus: true, autocomplete: "off", placeholder: 'New password' | ||||
|   = f.input :password_confirmation, autocomplete: "off", placeholder: 'Confirm new password' | ||||
|  | ||||
|   .field | ||||
|     = f.password_field :password, autofocus: true, autocomplete: "off", placeholder: 'New password' | ||||
|   .field | ||||
|     = f.password_field :password_confirmation, autocomplete: "off", placeholder: 'Confirm new password' | ||||
|   .actions | ||||
|     = f.button "Change my password", type: :submit | ||||
|     = f.button :button, "Change my password", type: :submit | ||||
|  | ||||
| = render "devise/shared/links" | ||||
| .form-footer= render "devise/shared/links" | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| - content_for :page_title do | ||||
|   Reset password | ||||
|  | ||||
| = form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| | ||||
|   = devise_error_messages! | ||||
| = simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| | ||||
|   = render 'shared/error_messages', object: resource | ||||
|  | ||||
|   = f.input :email, autofocus: true, required: true, placeholder: 'E-mail address' | ||||
|  | ||||
|   .field | ||||
|     = f.email_field :email, autofocus: true, required: true, placeholder: 'E-mail address' | ||||
|   .actions | ||||
|     = f.button "Reset password", type: 'submit' | ||||
|     = f.button :button, "Reset password", type: :submit | ||||
|  | ||||
| .form-footer= render "auth/shared/links" | ||||
|   | ||||
| @@ -1,19 +1,15 @@ | ||||
| - content_for :page_title do | ||||
|   Change password | ||||
|  | ||||
| = form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| | ||||
|   = devise_error_messages! | ||||
| = simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| | ||||
|   = render 'shared/error_messages', object: resource | ||||
|  | ||||
|   .field | ||||
|     = f.email_field :email, placeholder: 'E-mail address' | ||||
|   .field | ||||
|     = f.password_field :password, autocomplete: "off", placeholder: 'New password' | ||||
|   .field | ||||
|     = f.password_field :password_confirmation, autocomplete: "off", placeholder: 'Confirm new password' | ||||
|   .field | ||||
|     = f.password_field :current_password, autocomplete: "off", placeholder: 'Current password' | ||||
|   = f.input :email, placeholder: 'E-mail address' | ||||
|   = f.input :password, autocomplete: "off", placeholder: 'New password' | ||||
|   = f.input :password_confirmation, autocomplete: "off", placeholder: 'Confirm new password' | ||||
|   = f.input :current_password, autocomplete: "off", placeholder: 'Current password' | ||||
|  | ||||
|   .actions | ||||
|     = f.button "Save changes", type: 'submit' | ||||
|     = f.button :button, "Save changes", type: :submit | ||||
|  | ||||
| .form-footer= render "settings/shared/links" | ||||
|   | ||||
| @@ -1,20 +1,17 @@ | ||||
| - content_for :page_title do | ||||
|   Sign up | ||||
|  | ||||
| = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| | ||||
|   = devise_error_messages! | ||||
| = simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| | ||||
|   = render 'shared/error_messages', object: resource | ||||
|  | ||||
|   = f.fields_for :account do |ff| | ||||
|     .field | ||||
|       = ff.text_field :username, autofocus: true, placeholder: 'Username', required: true | ||||
|   = f.simple_fields_for :account do |ff| | ||||
|     = ff.input :username, autofocus: true, placeholder: 'Username', required: true | ||||
|  | ||||
|   = f.input :email, placeholder: 'E-mail address', required: true | ||||
|   = f.input :password, autocomplete: "off", placeholder: 'Password', required: true | ||||
|   = f.input :password_confirmation, autocomplete: "off", placeholder: 'Confirm password', required: true | ||||
|  | ||||
|   .field | ||||
|     = f.email_field :email, placeholder: 'E-mail address', required: true | ||||
|   .field | ||||
|     = f.password_field :password, autocomplete: "off", placeholder: 'Password', required: true | ||||
|   .field | ||||
|     = f.password_field :password_confirmation, autocomplete: "off", placeholder: 'Confirm password', required: true | ||||
|   .actions | ||||
|     = f.button "Sign up", type: 'submit' | ||||
|     = f.button :button, "Sign up", type: :submit | ||||
|  | ||||
| .form-footer= render "auth/shared/links" | ||||
|   | ||||
| @@ -1,12 +1,11 @@ | ||||
| - content_for :page_title do | ||||
|   Log in | ||||
|  | ||||
| = form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| | ||||
|   .field | ||||
|     = f.email_field :email, autofocus: true, placeholder: 'E-mail address', required: true | ||||
|   .field | ||||
|     = f.password_field :password, autocomplete: "off", placeholder: 'Password', required: true | ||||
| = simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| | ||||
|   = f.input :email, autofocus: true, placeholder: 'E-mail address', required: true | ||||
|   = f.input :password, placeholder: 'Password', required: true | ||||
|  | ||||
|   .actions | ||||
|     = f.button "Log in", type: 'submit' | ||||
|     = f.button :button, "Log in", type: :submit | ||||
|  | ||||
| .form-footer= render "auth/shared/links" | ||||
|   | ||||
| @@ -4,14 +4,15 @@ | ||||
|       %h1 | ||||
|         = link_to root_path do | ||||
|           = image_tag 'logo.png' | ||||
|           %small= Rails.configuration.x.local_domain | ||||
|  | ||||
|     .form-container | ||||
|       - if flash[:notice] | ||||
|         .flash-message.notice= flash[:notice] | ||||
|         .flash-message.notice | ||||
|           %strong= flash[:notice] | ||||
|  | ||||
|       - if flash[:alert] | ||||
|         .flash-message.alert= flash[:alert] | ||||
|         .flash-message.alert | ||||
|           %strong= flash[:alert] | ||||
|  | ||||
|       = yield | ||||
|  | ||||
|   | ||||
| @@ -1,22 +1,16 @@ | ||||
| - content_for :page_title do | ||||
|   Preferences | ||||
|  | ||||
| = form_for current_user, url: settings_preferences_path, html: { method: :put } do |f| | ||||
|   = f.fields_for :notification_emails, current_user.settings(:notification_emails) do |ff| | ||||
|     .boolean-field | ||||
|       = ff.check_box :follow | ||||
|       = ff.label :follow, 'Send e-mail when someone follows you' | ||||
|     .boolean-field | ||||
|       = ff.check_box :reblog | ||||
|       = ff.label :reblog, 'Send e-mail when someone reblogs your status' | ||||
|     .boolean-field | ||||
|       = ff.check_box :favourite | ||||
|       = ff.label :favourite, 'Send e-mail when someone favourites your status' | ||||
|     .boolean-field | ||||
|       = ff.check_box :mention | ||||
|       = ff.label :mention, 'Send e-mail when someone mentions you' | ||||
| = simple_form_for current_user, url: settings_preferences_path, html: { method: :put } do |f| | ||||
|   = render 'shared/error_messages', object: current_user | ||||
|  | ||||
|   = f.simple_fields_for :notification_emails, current_user.settings(:notification_emails) do |ff| | ||||
|     = ff.input :follow, as: :boolean, wrapper: :with_label, label: 'Send e-mail when someone follows you' | ||||
|     = ff.input :reblog, as: :boolean, wrapper: :with_label, label: 'Send e-mail when someone reblogs your status' | ||||
|     = ff.input :favourite, as: :boolean, wrapper: :with_label, label: 'Send e-mail when someone favourites your status' | ||||
|     = ff.input :mention, as: :boolean, wrapper: :with_label, label: 'Send e-mail when someone mentions you' | ||||
|  | ||||
|   .actions | ||||
|     = f.button 'Save changes', type: :submit | ||||
|     = f.button :button, 'Save changes', type: :submit | ||||
|  | ||||
| .form-footer= render "settings/shared/links" | ||||
|   | ||||
| @@ -1,19 +1,15 @@ | ||||
| - content_for :page_title do | ||||
|   Edit profile | ||||
|  | ||||
| = form_for @account, url: settings_profile_path, html: { method: :put } do |f| | ||||
|   .field | ||||
|     = f.text_field :display_name, placeholder: 'Display name' | ||||
|   .field | ||||
|     = f.text_area :note, placeholder: 'Bio' | ||||
|   .file-field | ||||
|     = f.label :avatar | ||||
|     = f.file_field :avatar | ||||
|   .file-field | ||||
|     = f.label :header | ||||
|     = f.file_field :header | ||||
| = simple_form_for @account, url: settings_profile_path, html: { method: :put } do |f| | ||||
|   = render 'shared/error_messages', object: @account | ||||
|  | ||||
|   = f.input :display_name, placeholder: 'Display name' | ||||
|   = f.input :note, placeholder: 'Bio' | ||||
|   = f.input :avatar, wrapper: :with_label | ||||
|   = f.input :header, wrapper: :with_label | ||||
|  | ||||
|   .actions | ||||
|     = f.button 'Save changes', type: :submit | ||||
|     = f.button :button, 'Save changes', type: :submit | ||||
|  | ||||
| .form-footer= render "settings/shared/links" | ||||
|   | ||||
							
								
								
									
										6
									
								
								app/views/shared/_error_messages.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								app/views/shared/_error_messages.html.haml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| - if object.errors.any? | ||||
|   .flash-message#error_explanation | ||||
|     %strong | ||||
|       Something isn't quite right yet! Please review | ||||
|       = pluralize(object.errors.count, 'error') | ||||
|       below: | ||||
| @@ -40,7 +40,7 @@ SimpleForm.setup do |config| | ||||
|     b.optional :readonly | ||||
|  | ||||
|     ## Inputs | ||||
|     b.use :label_input | ||||
|     b.use :input | ||||
|     b.use :hint,  wrap_with: { tag: :span, class: :hint } | ||||
|     b.use :error, wrap_with: { tag: :span, class: :error } | ||||
|  | ||||
| @@ -51,6 +51,14 @@ SimpleForm.setup do |config| | ||||
|     # b.use :full_error, wrap_with: { tag: :span, class: :error } | ||||
|   end | ||||
|  | ||||
|   config.wrappers :with_label, class: :input, | ||||
|     hint_class: :field_with_hint, error_class: :field_with_errors do |b| | ||||
|     b.use :html5 | ||||
|     b.use :hint,  wrap_with: { tag: :span, class: :hint } | ||||
|     b.use :error, wrap_with: { tag: :span, class: :error } | ||||
|     b.use :label_input | ||||
|   end | ||||
|  | ||||
|   # The default wrapper to be used by the FormBuilder. | ||||
|   config.default_wrapper = :default | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user