Skip to content

Commit

Permalink
Merge pull request #116 from DavyJonesLocker/feature/insert-before-fo…
Browse files Browse the repository at this point in the history
…rm-text

Insert validation feedback before help text
  • Loading branch information
tagliala committed Mar 26, 2021
2 parents e4de512 + c4000d3 commit e3a4514
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 14 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Expand Up @@ -2,7 +2,8 @@

## main / unreleased

* Add CSV 18.0 compatibility
* [FEATURE] Insert validation feedback before help text [#116](https://github.com/DavyJonesLocker/client_side_validations-simple_form/pull/116) **POSSIBLE BREAKING CHANGE!**
* [ENHANCEMENT] Test against jQuery 3.6.0 by default
* [ENHANCEMENT] Update development dependencies

## 12.1.0 / 2020-02-13
Expand Down
10 changes: 8 additions & 2 deletions dist/simple-form.bootstrap4.esm.js
@@ -1,5 +1,5 @@
/*!
* Client Side Validations Simple Form JS (Default) - v0.1.3 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Client Side Validations Simple Form JS (Default) - v0.2.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Copyright (c) 2021 Geremia Taglialatela, Brian Cardarella
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
*/
Expand All @@ -24,11 +24,17 @@ ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
var errorElement = wrapperElement.find(settings.error_tag + '.invalid-feedback');

if (!errorElement.length) {
var formTextElement = wrapperElement.find('.form-text');
errorElement = $('<' + settings.error_tag + '>', {
"class": 'invalid-feedback',
text: message
});
wrapperElement.append(errorElement);

if (formTextElement.length) {
formTextElement.before(errorElement);
} else {
wrapperElement.append(errorElement);
}
}

wrapperElement.addClass(settings.wrapper_error_class);
Expand Down
10 changes: 8 additions & 2 deletions dist/simple-form.bootstrap4.js
@@ -1,5 +1,5 @@
/*!
* Client Side Validations Simple Form JS (Bootstrap 4) - v0.1.3 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Client Side Validations Simple Form JS (Bootstrap 4) - v0.2.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Copyright (c) 2021 Geremia Taglialatela, Brian Cardarella
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
*/
Expand Down Expand Up @@ -32,11 +32,17 @@
var errorElement = wrapperElement.find(settings.error_tag + '.invalid-feedback');

if (!errorElement.length) {
var formTextElement = wrapperElement.find('.form-text');
errorElement = $__default['default']('<' + settings.error_tag + '>', {
"class": 'invalid-feedback',
text: message
});
wrapperElement.append(errorElement);

if (formTextElement.length) {
formTextElement.before(errorElement);
} else {
wrapperElement.append(errorElement);
}
}

wrapperElement.addClass(settings.wrapper_error_class);
Expand Down
2 changes: 1 addition & 1 deletion dist/simple-form.esm.js
@@ -1,5 +1,5 @@
/*!
* Client Side Validations Simple Form JS (Default) - v0.1.3 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Client Side Validations Simple Form JS (Default) - v0.2.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Copyright (c) 2021 Geremia Taglialatela, Brian Cardarella
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
*/
Expand Down
2 changes: 1 addition & 1 deletion dist/simple-form.js
@@ -1,5 +1,5 @@
/*!
* Client Side Validations Simple Form JS (Default) - v0.1.3 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Client Side Validations Simple Form JS (Default) - v0.2.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Copyright (c) 2021 Geremia Taglialatela, Brian Cardarella
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
*/
Expand Down
2 changes: 1 addition & 1 deletion lib/client_side_validations/simple_form/version.rb
Expand Up @@ -2,6 +2,6 @@

module ClientSideValidations
module SimpleForm
VERSION = '12.1.0'
VERSION = '13.0.0'
end
end
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -58,7 +58,7 @@
"/vendor/"
]
},
"version": "0.1.3",
"version": "0.2.0",
"directories": {
"lib": "lib",
"test": "test"
Expand Down
8 changes: 7 additions & 1 deletion src/main.bootstrap4.js
Expand Up @@ -19,8 +19,14 @@ ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
let errorElement = wrapperElement.find(settings.error_tag + '.invalid-feedback')

if (!errorElement.length) {
const formTextElement = wrapperElement.find('.form-text')
errorElement = $('<' + settings.error_tag + '>', { class: 'invalid-feedback', text: message })
wrapperElement.append(errorElement)

if (formTextElement.length) {
formTextElement.before(errorElement)
} else {
wrapperElement.append(errorElement)
}
}

wrapperElement.addClass(settings.wrapper_error_class)
Expand Down
Expand Up @@ -20,7 +20,8 @@ QUnit.module('Validate SimpleForm Bootstrap 4', {
},
validators: {
'user[name]': { presence: [{ message: 'must be present' }], format: [{ message: 'is invalid', 'with': { options: 'g', source: '\\d+' } }] },
'user[username]': { presence: [{ message: 'must be present' }] }
'user[username]': { presence: [{ message: 'must be present' }] },
'user[password]': { presence: [{ message: 'must be present' }] }
}
}

Expand All @@ -38,6 +39,14 @@ QUnit.module('Validate SimpleForm Bootstrap 4', {
$('<label for="user_name" class="string form-control-label">Name</label>'))
.append(
$('<input />', { 'class': 'form-control', name: 'user[name]', id: 'user_name', type: 'text' })))
.append(
$('<div>', { 'class': 'form-group' })
.append(
$('<label for="user_password" class="string form-control-label">Password</label>'))
.append(
$('<input />', { 'class': 'form-control', name: 'user[password]', id: 'user_password', type: 'password' }))
.append(
$('<small />', { 'class': 'form-text text-muted', text: 'Minimum 8 characters' })))
.append(
$('<div>', { 'class': 'form-group' })
.append(
Expand Down Expand Up @@ -116,4 +125,13 @@ for (var i = 0; i < wrappers.length; i++) {
input.trigger('focusout')
assert.ok(input.closest('.input-group').find('div.invalid-feedback').length === 0)
})

QUnit.test(wrapper + ' - Inserts before form texts', function (assert) {
var form = $('form#new_user')
var input = form.find('input#user_password')
form[0].ClientSideValidations.settings.html_settings.wrapper = wrapper

input.trigger('focusout')
assert.ok(input.parent().find('.invalid-feedback:contains("must be present") + .form-text')[0])
})
}
@@ -1,5 +1,5 @@
/*!
* Client Side Validations Simple Form JS (Bootstrap 4) - v0.1.3 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Client Side Validations Simple Form JS (Bootstrap 4) - v0.2.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Copyright (c) 2021 Geremia Taglialatela, Brian Cardarella
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
*/
Expand Down Expand Up @@ -32,11 +32,17 @@
var errorElement = wrapperElement.find(settings.error_tag + '.invalid-feedback');

if (!errorElement.length) {
var formTextElement = wrapperElement.find('.form-text');
errorElement = $__default['default']('<' + settings.error_tag + '>', {
"class": 'invalid-feedback',
text: message
});
wrapperElement.append(errorElement);

if (formTextElement.length) {
formTextElement.before(errorElement);
} else {
wrapperElement.append(errorElement);
}
}

wrapperElement.addClass(settings.wrapper_error_class);
Expand Down
2 changes: 1 addition & 1 deletion vendor/assets/javascripts/rails.validations.simple_form.js
@@ -1,5 +1,5 @@
/*!
* Client Side Validations Simple Form JS (Default) - v0.1.3 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Client Side Validations Simple Form JS (Default) - v0.2.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
* Copyright (c) 2021 Geremia Taglialatela, Brian Cardarella
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
*/
Expand Down

0 comments on commit e3a4514

Please sign in to comment.