Merge pull request #1559 from m5o/input-valid_class
allow valid class to inputs if value is present & valid
This commit is contained in:
commit
dd05b56df1
|
@ -5,6 +5,7 @@
|
||||||
* Remove support from Rails 4.0, 4.1 and 4.2. [@feliperenan](https://github.com/feliperenan)
|
* Remove support from Rails 4.0, 4.1 and 4.2. [@feliperenan](https://github.com/feliperenan)
|
||||||
* Add support for citext, hstore, json & jsonb column types. [@swrobel](https://github.com/swrobel)
|
* Add support for citext, hstore, json & jsonb column types. [@swrobel](https://github.com/swrobel)
|
||||||
* Add :valid_class on input wrapper when value is present and valid [@aeberlin](https://github.com/aeberlin), [@m5o](https://github.com/m5o)
|
* Add :valid_class on input wrapper when value is present and valid [@aeberlin](https://github.com/aeberlin), [@m5o](https://github.com/m5o)
|
||||||
|
* Allow :valid_class to inputs when value is present and valid. [@m5o](https://github.com/m5o)
|
||||||
|
|
||||||
### Bug fix
|
### Bug fix
|
||||||
* Fix horizontal form label position, from right to text-right. [@cavpollo](https://github.com/cavpollo)
|
* Fix horizontal form label position, from right to text-right. [@cavpollo](https://github.com/cavpollo)
|
||||||
|
|
|
@ -906,12 +906,12 @@ You can customize _Form components_ passing options to them:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
config.wrappers do |b|
|
config.wrappers do |b|
|
||||||
b.use :label_input, class: 'label-input-class', error_class: 'is-invalid'
|
b.use :label_input, class: 'label-input-class', error_class: 'is-invalid', valid_class: 'is-valid'
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
This you set the input and label class to `'label-input-class'` and will set the class `'is-invalid'`
|
This you set the input and label class to `'label-input-class'` and will set the class `'is-invalid'`
|
||||||
when the input has errors.
|
when the input has errors and `'is-valid'` if the input is valid.
|
||||||
|
|
||||||
If you want to customize the custom _Form components_ on demand you can give it a name like this:
|
If you want to customize the custom _Form components_ on demand you can give it a name like this:
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ SimpleForm.setup do |config|
|
||||||
b.optional :readonly
|
b.optional :readonly
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
# b.use :input, class: 'input', error_class: 'is-invalid'
|
# b.use :input, class: 'input', error_class: 'is-invalid', valid_class: 'is-valid'
|
||||||
b.use :label_input
|
b.use :label_input
|
||||||
b.use :hint, wrap_with: { tag: :span, class: :hint }
|
b.use :hint, wrap_with: { tag: :span, class: :hint }
|
||||||
b.use :error, wrap_with: { tag: :span, class: :error }
|
b.use :error, wrap_with: { tag: :span, class: :error }
|
||||||
|
|
|
@ -211,11 +211,16 @@ module SimpleForm
|
||||||
def set_input_classes(wrapper_options)
|
def set_input_classes(wrapper_options)
|
||||||
wrapper_options = wrapper_options.dup
|
wrapper_options = wrapper_options.dup
|
||||||
error_class = wrapper_options.delete(:error_class)
|
error_class = wrapper_options.delete(:error_class)
|
||||||
|
valid_class = wrapper_options.delete(:valid_class)
|
||||||
|
|
||||||
if error_class.present? && has_errors?
|
if error_class.present? && has_errors?
|
||||||
wrapper_options[:class] = "#{wrapper_options[:class]} #{error_class}"
|
wrapper_options[:class] = "#{wrapper_options[:class]} #{error_class}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if valid_class.present? && valid?
|
||||||
|
wrapper_options[:class] = "#{wrapper_options[:class]} #{valid_class}"
|
||||||
|
end
|
||||||
|
|
||||||
wrapper_options
|
wrapper_options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,9 @@ class WrapperTest < ActionView::TestCase
|
||||||
@user.instance_eval { undef errors }
|
@user.instance_eval { undef errors }
|
||||||
with_form_for @user, :name, wrapper: custom_wrapper_with_input_valid_class
|
with_form_for @user, :name, wrapper: custom_wrapper_with_input_valid_class
|
||||||
assert_select 'div.field_without_errors'
|
assert_select 'div.field_without_errors'
|
||||||
|
assert_select 'input.is-valid'
|
||||||
assert_no_select 'div.field_with_errors'
|
assert_no_select 'div.field_with_errors'
|
||||||
|
assert_no_select 'input.is-invalid'
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'wrapper adds hint class for attribute with a hint' do
|
test 'wrapper adds hint class for attribute with a hint' do
|
||||||
|
|
|
@ -216,7 +216,7 @@ module MiscHelpers
|
||||||
def custom_wrapper_with_input_valid_class
|
def custom_wrapper_with_input_valid_class
|
||||||
SimpleForm.build tag: :div, class: "custom_wrapper", valid_class: :field_without_errors do |b|
|
SimpleForm.build tag: :div, class: "custom_wrapper", valid_class: :field_without_errors do |b|
|
||||||
b.use :label
|
b.use :label
|
||||||
b.use :input, class: 'inline-class'
|
b.use :input, class: 'inline-class', valid_class: 'is-valid'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue