Skip to content

Commit 1b7acd2

Browse files
authored
Merge pull request #184 from DavyJonesLocker/feature/drop-older-browsers
Drop older browsers support
2 parents d318027 + 44919d9 commit 1b7acd2

18 files changed

+117
-284
lines changed

.github/workflows/eslint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- name: Set up Node
2020
uses: actions/setup-node@v4
2121
with:
22-
node-version: '18'
22+
node-version: '22'
2323
- name: Install node dependencies
2424
run: pnpm install
2525
- name: Run JavaScript linter

.github/workflows/javascript.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Set up Node
2525
uses: actions/setup-node@v4
2626
with:
27-
node-version: '18'
27+
node-version: '22'
2828
- name: Install node dependencies
2929
run: pnpm install
3030
- name: Run tests

.github/workflows/ruby.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,14 @@ jobs:
1515
runs-on: ubuntu-latest
1616
strategy:
1717
matrix:
18-
ruby-version: ['2.7', '3.0', '3.1', '3.2', '3.3']
18+
ruby-version: ['3.1', '3.2', '3.3']
1919
gemfile: [ csv_22.0 ]
2020
channel: ['stable']
2121

2222
include:
2323
- ruby-version: 'head'
2424
gemfile: csv_22.0
2525
channel: 'experimental'
26-
- ruby-version: '2.7'
27-
gemfile: csv_edge
28-
channel: 'experimental'
29-
- ruby-version: '3.0'
30-
gemfile: csv_edge
31-
channel: 'experimental'
3226
- ruby-version: '3.1'
3327
gemfile: csv_edge
3428
channel: 'experimental'

.rubocop.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require:
77

88
AllCops:
99
TargetRailsVersion: 6.1
10-
TargetRubyVersion: 2.7
10+
TargetRubyVersion: 3.1
1111
NewCops: enable
1212
DisplayStyleGuide: true
1313
ExtraDetails: true

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# Changelog
22

3-
## main / unreleased
3+
## 17.0.0 / unreleased
44

5+
* [FEATURE] Drop Internet Explorer and other older browsers support
56
* [ENHANCEMENT] Test against Ruby 3.3
6-
* [ENHANCEMENT] Update QUnit to 2.21.0
7+
* [ENHANCEMENT] Update QUnit to 2.23.0
78

89
## 16.0.0 / 2023-09-02
910

Rakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace :test do
1616
desc %(Test Ruby code)
1717
Rake::TestTask.new(:ruby) do |test|
1818
test.libs << 'lib' << 'test'
19-
test.test_files = Dir.glob("#{File.dirname(__FILE__)}/test/**/test_*.rb").sort
19+
test.test_files = Dir.glob("#{File.dirname(__FILE__)}/test/**/test_*.rb")
2020
test.warning = false
2121
end
2222

client_side_validations-simple_form.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
2525
spec.require_paths = ['lib']
2626

2727
spec.platform = Gem::Platform::RUBY
28-
spec.required_ruby_version = '>= 2.7'
28+
spec.required_ruby_version = '>= 3.1'
2929

30-
spec.add_dependency 'client_side_validations', '~> 22.0'
30+
spec.add_dependency 'client_side_validations', '>= 22.0', '< 24'
3131
spec.add_dependency 'simple_form', '~> 5.2'
3232
end

dist/simple-form.bootstrap4.esm.js

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,39 @@
11
/*!
2-
* Client Side Validations Simple Form JS (Default) - v0.4.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
2+
* Client Side Validations Simple Form JS (Default) - v0.5.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
33
* Copyright (c) 2024 Geremia Taglialatela, Brian Cardarella
44
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
55
*/
66

77
import ClientSideValidations from '@client-side-validations/client-side-validations';
88

9-
function _arrayLikeToArray(r, a) {
10-
(null == a || a > r.length) && (a = r.length);
11-
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
12-
return n;
13-
}
14-
function _arrayWithoutHoles(r) {
15-
if (Array.isArray(r)) return _arrayLikeToArray(r);
16-
}
17-
function _iterableToArray(r) {
18-
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
19-
}
20-
function _nonIterableSpread() {
21-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
22-
}
23-
function _toConsumableArray(r) {
24-
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
25-
}
26-
function _unsupportedIterableToArray(r, a) {
27-
if (r) {
28-
if ("string" == typeof r) return _arrayLikeToArray(r, a);
29-
var t = {}.toString.call(r).slice(8, -1);
30-
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
31-
}
32-
}
33-
34-
var addClass = function addClass(element, customClass) {
9+
const addClass = (element, customClass) => {
3510
if (customClass) {
36-
var _element$classList;
37-
(_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(customClass.split(' ')));
11+
element.classList.add(...customClass.split(' '));
3812
}
3913
};
40-
var removeClass = function removeClass(element, customClass) {
14+
const removeClass = (element, customClass) => {
4115
if (customClass) {
42-
var _element$classList2;
43-
(_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(customClass.split(' ')));
16+
element.classList.remove(...customClass.split(' '));
4417
}
4518
};
4619

4720
ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
48-
add: function add($element, settings, message) {
21+
add: function ($element, settings, message) {
4922
this.wrapper(settings.wrapper).add.call(this, $element[0], settings, message);
5023
},
51-
remove: function remove($element, settings) {
24+
remove: function ($element, settings) {
5225
this.wrapper(settings.wrapper).remove.call(this, $element[0], settings);
5326
},
54-
wrapper: function wrapper(name) {
27+
wrapper: function (name) {
5528
return this.wrappers[name] || this.wrappers.default;
5629
},
5730
wrappers: {
5831
default: {
59-
add: function add(element, settings, message) {
60-
var wrapperElement = element.parentElement;
61-
var errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
32+
add(element, settings, message) {
33+
const wrapperElement = element.parentElement;
34+
let errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
6235
if (!errorElement) {
63-
var formTextElement = wrapperElement.querySelector('.form-text');
36+
const formTextElement = wrapperElement.querySelector('.form-text');
6437
errorElement = document.createElement(settings.error_tag);
6538
addClass(errorElement, 'invalid-feedback');
6639
errorElement.textContent = message;
@@ -74,9 +47,9 @@ ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
7447
addClass(element, 'is-invalid');
7548
errorElement.textContent = message;
7649
},
77-
remove: function remove(element, settings) {
78-
var wrapperElement = element.parentElement;
79-
var errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
50+
remove(element, settings) {
51+
const wrapperElement = element.parentElement;
52+
const errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
8053
removeClass(wrapperElement, settings.wrapper_error_class);
8154
removeClass(element, 'is-invalid');
8255
if (errorElement) {

dist/simple-form.bootstrap4.js

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Client Side Validations Simple Form JS (Bootstrap 4+) - v0.4.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
2+
* Client Side Validations Simple Form JS (Bootstrap 4+) - v0.5.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
33
* Copyright (c) 2024 Geremia Taglialatela, Brian Cardarella
44
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
55
*/
@@ -10,61 +10,34 @@
1010
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ClientSideValidations));
1111
})(this, (function (ClientSideValidations) { 'use strict';
1212

13-
function _arrayLikeToArray(r, a) {
14-
(null == a || a > r.length) && (a = r.length);
15-
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
16-
return n;
17-
}
18-
function _arrayWithoutHoles(r) {
19-
if (Array.isArray(r)) return _arrayLikeToArray(r);
20-
}
21-
function _iterableToArray(r) {
22-
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
23-
}
24-
function _nonIterableSpread() {
25-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
26-
}
27-
function _toConsumableArray(r) {
28-
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
29-
}
30-
function _unsupportedIterableToArray(r, a) {
31-
if (r) {
32-
if ("string" == typeof r) return _arrayLikeToArray(r, a);
33-
var t = {}.toString.call(r).slice(8, -1);
34-
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
35-
}
36-
}
37-
38-
var addClass = function addClass(element, customClass) {
13+
const addClass = (element, customClass) => {
3914
if (customClass) {
40-
var _element$classList;
41-
(_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(customClass.split(' ')));
15+
element.classList.add(...customClass.split(' '));
4216
}
4317
};
44-
var removeClass = function removeClass(element, customClass) {
18+
const removeClass = (element, customClass) => {
4519
if (customClass) {
46-
var _element$classList2;
47-
(_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(customClass.split(' ')));
20+
element.classList.remove(...customClass.split(' '));
4821
}
4922
};
5023

5124
ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
52-
add: function add($element, settings, message) {
25+
add: function ($element, settings, message) {
5326
this.wrapper(settings.wrapper).add.call(this, $element[0], settings, message);
5427
},
55-
remove: function remove($element, settings) {
28+
remove: function ($element, settings) {
5629
this.wrapper(settings.wrapper).remove.call(this, $element[0], settings);
5730
},
58-
wrapper: function wrapper(name) {
31+
wrapper: function (name) {
5932
return this.wrappers[name] || this.wrappers.default;
6033
},
6134
wrappers: {
6235
default: {
63-
add: function add(element, settings, message) {
64-
var wrapperElement = element.parentElement;
65-
var errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
36+
add(element, settings, message) {
37+
const wrapperElement = element.parentElement;
38+
let errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
6639
if (!errorElement) {
67-
var formTextElement = wrapperElement.querySelector('.form-text');
40+
const formTextElement = wrapperElement.querySelector('.form-text');
6841
errorElement = document.createElement(settings.error_tag);
6942
addClass(errorElement, 'invalid-feedback');
7043
errorElement.textContent = message;
@@ -78,9 +51,9 @@
7851
addClass(element, 'is-invalid');
7952
errorElement.textContent = message;
8053
},
81-
remove: function remove(element, settings) {
82-
var wrapperElement = element.parentElement;
83-
var errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
54+
remove(element, settings) {
55+
const wrapperElement = element.parentElement;
56+
const errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".invalid-feedback"));
8457
removeClass(wrapperElement, settings.wrapper_error_class);
8558
removeClass(element, 'is-invalid');
8659
if (errorElement) {

dist/simple-form.esm.js

Lines changed: 14 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,37 @@
11
/*!
2-
* Client Side Validations Simple Form JS (Default) - v0.4.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
2+
* Client Side Validations Simple Form JS (Default) - v0.5.0 (https://github.com/DavyJonesLocker/client_side_validations-simple_form)
33
* Copyright (c) 2024 Geremia Taglialatela, Brian Cardarella
44
* Licensed under MIT (https://opensource.org/licenses/mit-license.php)
55
*/
66

77
import ClientSideValidations from '@client-side-validations/client-side-validations';
88

9-
function _arrayLikeToArray(r, a) {
10-
(null == a || a > r.length) && (a = r.length);
11-
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
12-
return n;
13-
}
14-
function _arrayWithoutHoles(r) {
15-
if (Array.isArray(r)) return _arrayLikeToArray(r);
16-
}
17-
function _iterableToArray(r) {
18-
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
19-
}
20-
function _nonIterableSpread() {
21-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
22-
}
23-
function _toConsumableArray(r) {
24-
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
25-
}
26-
function _unsupportedIterableToArray(r, a) {
27-
if (r) {
28-
if ("string" == typeof r) return _arrayLikeToArray(r, a);
29-
var t = {}.toString.call(r).slice(8, -1);
30-
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
31-
}
32-
}
33-
34-
var addClass = function addClass(element, customClass) {
9+
const addClass = (element, customClass) => {
3510
if (customClass) {
36-
var _element$classList;
37-
(_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(customClass.split(' ')));
11+
element.classList.add(...customClass.split(' '));
3812
}
3913
};
40-
var removeClass = function removeClass(element, customClass) {
14+
const removeClass = (element, customClass) => {
4115
if (customClass) {
42-
var _element$classList2;
43-
(_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(customClass.split(' ')));
16+
element.classList.remove(...customClass.split(' '));
4417
}
4518
};
4619

4720
ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
48-
add: function add($element, settings, message) {
21+
add: function ($element, settings, message) {
4922
this.wrapper(settings.wrapper).add.call(this, $element[0], settings, message);
5023
},
51-
remove: function remove($element, settings) {
24+
remove: function ($element, settings) {
5225
this.wrapper(settings.wrapper).remove.call(this, $element[0], settings);
5326
},
54-
wrapper: function wrapper(name) {
27+
wrapper: function (name) {
5528
return this.wrappers[name] || this.wrappers.default;
5629
},
5730
wrappers: {
5831
default: {
59-
add: function add(element, settings, message) {
60-
var wrapperElement = element.closest("".concat(settings.wrapper_tag, ".").concat(settings.wrapper_class.replace(/ /g, '.')));
61-
var errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".").concat(settings.error_class.replace(/ /g, '.')));
32+
add(element, settings, message) {
33+
const wrapperElement = element.closest("".concat(settings.wrapper_tag, ".").concat(settings.wrapper_class.replace(/ /g, '.')));
34+
let errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".").concat(settings.error_class.replace(/ /g, '.')));
6235
if (!errorElement) {
6336
errorElement = document.createElement(settings.error_tag);
6437
addClass(errorElement, settings.error_class);
@@ -68,9 +41,9 @@ ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
6841
addClass(wrapperElement, settings.wrapper_error_class);
6942
errorElement.textContent = message;
7043
},
71-
remove: function remove(element, settings) {
72-
var wrapperElement = element.closest("".concat(settings.wrapper_tag, ".").concat(settings.wrapper_class.replace(/ /g, '.')));
73-
var errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".").concat(settings.error_class.replace(/ /g, '.')));
44+
remove(element, settings) {
45+
const wrapperElement = element.closest("".concat(settings.wrapper_tag, ".").concat(settings.wrapper_class.replace(/ /g, '.')));
46+
const errorElement = wrapperElement.querySelector("".concat(settings.error_tag, ".").concat(settings.error_class.replace(/ /g, '.')));
7447
removeClass(wrapperElement, settings.wrapper_error_class);
7548
if (errorElement) {
7649
errorElement.remove();

0 commit comments

Comments
 (0)