fomantic-ui 2.10.0-beta.8 → 2.10.0-beta.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/.eslintrc.js +6 -23
  2. package/.github/workflows/ci.yml +9 -9
  3. package/.github/workflows/depsreview.yml +1 -1
  4. package/.github/workflows/nightly.yml +7 -5
  5. package/.github/workflows/release.yml +2 -2
  6. package/.stylelintrc.js +1 -15
  7. package/CHANGELOG.md +5289 -2325
  8. package/README.md +8 -4
  9. package/changelog-setup.js +32 -10
  10. package/changelog-template.hbs +256 -251
  11. package/dist/components/accordion.css +1 -1
  12. package/dist/components/accordion.js +62 -73
  13. package/dist/components/accordion.min.css +1 -1
  14. package/dist/components/accordion.min.js +3 -3
  15. package/dist/components/ad.css +1 -1
  16. package/dist/components/ad.min.css +1 -1
  17. package/dist/components/api.js +101 -161
  18. package/dist/components/api.min.js +3 -3
  19. package/dist/components/breadcrumb.css +1 -1
  20. package/dist/components/breadcrumb.min.css +1 -1
  21. package/dist/components/button.css +5 -6
  22. package/dist/components/button.min.css +2 -2
  23. package/dist/components/calendar.css +3 -3
  24. package/dist/components/calendar.js +283 -332
  25. package/dist/components/calendar.min.css +2 -2
  26. package/dist/components/calendar.min.js +3 -3
  27. package/dist/components/card.css +1 -1
  28. package/dist/components/card.min.css +1 -1
  29. package/dist/components/checkbox.css +1 -1
  30. package/dist/components/checkbox.js +58 -79
  31. package/dist/components/checkbox.min.css +1 -1
  32. package/dist/components/checkbox.min.js +3 -3
  33. package/dist/components/comment.css +1 -1
  34. package/dist/components/comment.min.css +1 -1
  35. package/dist/components/container.css +1 -1
  36. package/dist/components/container.min.css +1 -1
  37. package/dist/components/dimmer.css +2 -2
  38. package/dist/components/dimmer.js +39 -52
  39. package/dist/components/dimmer.min.css +2 -2
  40. package/dist/components/dimmer.min.js +3 -3
  41. package/dist/components/divider.css +1 -1
  42. package/dist/components/divider.min.css +1 -1
  43. package/dist/components/dropdown.css +21 -35
  44. package/dist/components/dropdown.js +435 -531
  45. package/dist/components/dropdown.min.css +2 -2
  46. package/dist/components/dropdown.min.js +3 -3
  47. package/dist/components/embed.css +1 -1
  48. package/dist/components/embed.js +55 -68
  49. package/dist/components/embed.min.css +1 -1
  50. package/dist/components/embed.min.js +3 -3
  51. package/dist/components/emoji.css +3809 -7617
  52. package/dist/components/emoji.min.css +2 -2
  53. package/dist/components/feed.css +1 -1
  54. package/dist/components/feed.min.css +1 -1
  55. package/dist/components/flag.css +1 -1
  56. package/dist/components/flag.min.css +1 -1
  57. package/dist/components/flyout.css +1 -1
  58. package/dist/components/flyout.js +149 -168
  59. package/dist/components/flyout.min.css +1 -1
  60. package/dist/components/flyout.min.js +3 -3
  61. package/dist/components/form.css +3 -5
  62. package/dist/components/form.js +244 -269
  63. package/dist/components/form.min.css +2 -2
  64. package/dist/components/form.min.js +3 -3
  65. package/dist/components/grid.css +2 -2
  66. package/dist/components/grid.min.css +2 -2
  67. package/dist/components/header.css +6 -6
  68. package/dist/components/header.min.css +2 -2
  69. package/dist/components/icon.css +10 -37
  70. package/dist/components/icon.min.css +2 -2
  71. package/dist/components/image.css +1 -1
  72. package/dist/components/image.min.css +1 -1
  73. package/dist/components/input.css +284 -12
  74. package/dist/components/input.min.css +2 -2
  75. package/dist/components/item.css +1 -1
  76. package/dist/components/item.min.css +1 -1
  77. package/dist/components/label.css +6 -14
  78. package/dist/components/label.min.css +2 -2
  79. package/dist/components/list.css +3 -3
  80. package/dist/components/list.min.css +2 -2
  81. package/dist/components/loader.css +53 -53
  82. package/dist/components/loader.min.css +2 -2
  83. package/dist/components/menu.css +45 -60
  84. package/dist/components/menu.min.css +2 -2
  85. package/dist/components/message.css +2 -2
  86. package/dist/components/message.min.css +2 -2
  87. package/dist/components/modal.css +5 -5
  88. package/dist/components/modal.js +161 -170
  89. package/dist/components/modal.min.css +2 -2
  90. package/dist/components/modal.min.js +3 -3
  91. package/dist/components/nag.css +1 -1
  92. package/dist/components/nag.js +74 -88
  93. package/dist/components/nag.min.css +1 -1
  94. package/dist/components/nag.min.js +3 -3
  95. package/dist/components/placeholder.css +2 -2
  96. package/dist/components/placeholder.min.css +2 -2
  97. package/dist/components/popup.css +19 -73
  98. package/dist/components/popup.js +105 -138
  99. package/dist/components/popup.min.css +2 -2
  100. package/dist/components/popup.min.js +3 -3
  101. package/dist/components/progress.css +4 -13
  102. package/dist/components/progress.js +75 -97
  103. package/dist/components/progress.min.css +2 -2
  104. package/dist/components/progress.min.js +3 -3
  105. package/dist/components/rail.css +1 -1
  106. package/dist/components/rail.min.css +1 -1
  107. package/dist/components/rating.css +1 -1
  108. package/dist/components/rating.js +49 -61
  109. package/dist/components/rating.min.css +1 -1
  110. package/dist/components/rating.min.js +3 -3
  111. package/dist/components/reset.css +48 -208
  112. package/dist/components/reset.min.css +2 -2
  113. package/dist/components/reveal.css +2 -5
  114. package/dist/components/reveal.min.css +2 -2
  115. package/dist/components/search.css +2 -3
  116. package/dist/components/search.js +178 -198
  117. package/dist/components/search.min.css +2 -2
  118. package/dist/components/search.min.js +3 -3
  119. package/dist/components/segment.css +6 -6
  120. package/dist/components/segment.min.css +2 -2
  121. package/dist/components/shape.css +1 -1
  122. package/dist/components/shape.js +59 -69
  123. package/dist/components/shape.min.css +1 -1
  124. package/dist/components/shape.min.js +3 -3
  125. package/dist/components/sidebar.css +1 -1
  126. package/dist/components/sidebar.js +81 -101
  127. package/dist/components/sidebar.min.css +1 -1
  128. package/dist/components/sidebar.min.js +3 -3
  129. package/dist/components/site.css +1 -1
  130. package/dist/components/site.js +37 -58
  131. package/dist/components/site.min.css +1 -1
  132. package/dist/components/site.min.js +3 -3
  133. package/dist/components/slider.css +1 -1
  134. package/dist/components/slider.js +169 -183
  135. package/dist/components/slider.min.css +1 -1
  136. package/dist/components/slider.min.js +3 -3
  137. package/dist/components/state.js +45 -59
  138. package/dist/components/state.min.js +3 -3
  139. package/dist/components/statistic.css +1 -1
  140. package/dist/components/statistic.min.css +1 -1
  141. package/dist/components/step.css +4 -4
  142. package/dist/components/step.min.css +2 -2
  143. package/dist/components/sticky.css +1 -1
  144. package/dist/components/sticky.js +95 -117
  145. package/dist/components/sticky.min.css +1 -1
  146. package/dist/components/sticky.min.js +3 -3
  147. package/dist/components/tab.css +1 -1
  148. package/dist/components/tab.js +83 -115
  149. package/dist/components/tab.min.css +1 -1
  150. package/dist/components/tab.min.js +3 -3
  151. package/dist/components/table.css +8 -8
  152. package/dist/components/table.min.css +2 -2
  153. package/dist/components/text.css +1 -1
  154. package/dist/components/text.min.css +1 -1
  155. package/dist/components/toast.css +1 -1
  156. package/dist/components/toast.js +64 -74
  157. package/dist/components/toast.min.css +1 -1
  158. package/dist/components/toast.min.js +3 -3
  159. package/dist/components/transition.css +1 -1
  160. package/dist/components/transition.js +61 -85
  161. package/dist/components/transition.min.css +1 -1
  162. package/dist/components/transition.min.js +3 -3
  163. package/dist/components/visibility.js +120 -140
  164. package/dist/components/visibility.min.js +3 -3
  165. package/dist/semantic.css +4480 -8222
  166. package/dist/semantic.js +2881 -3485
  167. package/dist/semantic.min.css +3 -3
  168. package/dist/semantic.min.js +3 -3
  169. package/examples/attached.html +1 -1
  170. package/examples/components/menu.html +1 -1
  171. package/package.json +8 -5
  172. package/scripts/nightly-version.js +4 -4
  173. package/src/definitions/behaviors/api.js +100 -160
  174. package/src/definitions/behaviors/form.js +243 -268
  175. package/src/definitions/behaviors/state.js +44 -58
  176. package/src/definitions/behaviors/visibility.js +119 -139
  177. package/src/definitions/collections/breadcrumb.less +0 -1
  178. package/src/definitions/collections/form.less +3 -9
  179. package/src/definitions/collections/grid.less +1 -2
  180. package/src/definitions/collections/menu.less +106 -117
  181. package/src/definitions/collections/message.less +1 -2
  182. package/src/definitions/collections/table.less +7 -8
  183. package/src/definitions/elements/button.less +4 -6
  184. package/src/definitions/elements/container.less +0 -1
  185. package/src/definitions/elements/divider.less +1 -2
  186. package/src/definitions/elements/emoji.less +1 -1
  187. package/src/definitions/elements/flag.less +1 -1
  188. package/src/definitions/elements/header.less +4 -5
  189. package/src/definitions/elements/icon.less +10 -37
  190. package/src/definitions/elements/image.less +0 -1
  191. package/src/definitions/elements/input.less +4 -7
  192. package/src/definitions/elements/label.less +5 -14
  193. package/src/definitions/elements/list.less +2 -3
  194. package/src/definitions/elements/loader.less +10 -11
  195. package/src/definitions/elements/placeholder.less +1 -2
  196. package/src/definitions/elements/rail.less +0 -1
  197. package/src/definitions/elements/reveal.less +1 -5
  198. package/src/definitions/elements/segment.less +5 -6
  199. package/src/definitions/elements/step.less +3 -4
  200. package/src/definitions/elements/text.less +0 -1
  201. package/src/definitions/globals/reset.less +0 -1
  202. package/src/definitions/globals/site.js +36 -57
  203. package/src/definitions/globals/site.less +0 -1
  204. package/src/definitions/modules/accordion.js +61 -72
  205. package/src/definitions/modules/accordion.less +0 -1
  206. package/src/definitions/modules/calendar.js +282 -331
  207. package/src/definitions/modules/calendar.less +2 -3
  208. package/src/definitions/modules/checkbox.js +57 -78
  209. package/src/definitions/modules/checkbox.less +0 -1
  210. package/src/definitions/modules/dimmer.js +38 -51
  211. package/src/definitions/modules/dimmer.less +1 -2
  212. package/src/definitions/modules/dropdown.js +434 -530
  213. package/src/definitions/modules/dropdown.less +27 -38
  214. package/src/definitions/modules/embed.js +54 -67
  215. package/src/definitions/modules/embed.less +0 -1
  216. package/src/definitions/modules/flyout.js +148 -167
  217. package/src/definitions/modules/flyout.less +0 -1
  218. package/src/definitions/modules/modal.js +160 -169
  219. package/src/definitions/modules/modal.less +3 -4
  220. package/src/definitions/modules/nag.js +73 -87
  221. package/src/definitions/modules/nag.less +0 -1
  222. package/src/definitions/modules/popup.js +104 -137
  223. package/src/definitions/modules/popup.less +18 -73
  224. package/src/definitions/modules/progress.js +74 -96
  225. package/src/definitions/modules/progress.less +3 -13
  226. package/src/definitions/modules/rating.js +48 -60
  227. package/src/definitions/modules/rating.less +0 -1
  228. package/src/definitions/modules/search.js +177 -197
  229. package/src/definitions/modules/search.less +2 -4
  230. package/src/definitions/modules/shape.js +58 -68
  231. package/src/definitions/modules/shape.less +0 -1
  232. package/src/definitions/modules/sidebar.js +80 -100
  233. package/src/definitions/modules/sidebar.less +0 -1
  234. package/src/definitions/modules/slider.js +168 -182
  235. package/src/definitions/modules/slider.less +0 -1
  236. package/src/definitions/modules/sticky.js +94 -116
  237. package/src/definitions/modules/sticky.less +0 -1
  238. package/src/definitions/modules/tab.js +82 -114
  239. package/src/definitions/modules/tab.less +0 -1
  240. package/src/definitions/modules/toast.js +63 -73
  241. package/src/definitions/modules/toast.less +0 -1
  242. package/src/definitions/modules/transition.js +60 -84
  243. package/src/definitions/modules/transition.less +1 -2
  244. package/src/definitions/views/ad.less +0 -1
  245. package/src/definitions/views/card.less +0 -1
  246. package/src/definitions/views/comment.less +0 -1
  247. package/src/definitions/views/feed.less +0 -1
  248. package/src/definitions/views/item.less +0 -1
  249. package/src/definitions/views/statistic.less +0 -1
  250. package/src/semantic.less +1 -1
  251. package/src/themes/amazon/elements/button.overrides +1 -1
  252. package/src/themes/amazon/elements/button.variables +5 -6
  253. package/src/themes/amazon/globals/site.variables +2 -3
  254. package/src/themes/bookish/elements/header.variables +2 -2
  255. package/src/themes/bootstrap3/elements/button.variables +4 -5
  256. package/src/themes/chubby/collections/menu.variables +1 -1
  257. package/src/themes/chubby/elements/button.overrides +4 -4
  258. package/src/themes/chubby/modules/accordion.overrides +1 -1
  259. package/src/themes/chubby/views/comment.overrides +2 -2
  260. package/src/themes/chubby/views/comment.variables +2 -2
  261. package/src/themes/classic/collections/table.variables +2 -2
  262. package/src/themes/classic/elements/button.variables +11 -11
  263. package/src/themes/classic/modules/progress.variables +2 -2
  264. package/src/themes/classic/views/card.variables +2 -2
  265. package/src/themes/default/collections/form.variables +2 -3
  266. package/src/themes/default/collections/menu.variables +28 -28
  267. package/src/themes/default/collections/message.variables +1 -1
  268. package/src/themes/default/collections/table.variables +4 -4
  269. package/src/themes/default/elements/button.variables +9 -10
  270. package/src/themes/default/elements/divider.variables +1 -1
  271. package/src/themes/default/elements/icon.variables +2 -2
  272. package/src/themes/default/elements/image.variables +1 -1
  273. package/src/themes/default/elements/input.variables +2 -2
  274. package/src/themes/default/elements/label.variables +4 -4
  275. package/src/themes/default/elements/list.variables +1 -1
  276. package/src/themes/default/elements/placeholder.variables +6 -6
  277. package/src/themes/default/elements/segment.variables +8 -8
  278. package/src/themes/default/globals/reset.overrides +45 -201
  279. package/src/themes/default/globals/site.variables +50 -50
  280. package/src/themes/default/globals/variation.variables +3 -2
  281. package/src/themes/default/modules/accordion.variables +0 -1
  282. package/src/themes/default/modules/checkbox.variables +1 -1
  283. package/src/themes/default/modules/dimmer.variables +12 -12
  284. package/src/themes/default/modules/dropdown.variables +17 -16
  285. package/src/themes/default/modules/embed.variables +2 -2
  286. package/src/themes/default/modules/flyout.variables +3 -3
  287. package/src/themes/default/modules/modal.variables +14 -14
  288. package/src/themes/default/modules/nag.variables +1 -1
  289. package/src/themes/default/modules/rating.variables +1 -1
  290. package/src/themes/default/modules/search.variables +1 -1
  291. package/src/themes/default/modules/shape.variables +1 -1
  292. package/src/themes/default/modules/sidebar.variables +2 -2
  293. package/src/themes/default/modules/toast.variables +4 -4
  294. package/src/themes/default/views/card.variables +6 -7
  295. package/src/themes/default/views/feed.variables +4 -4
  296. package/src/themes/default/views/item.variables +2 -3
  297. package/src/themes/flat/collections/form.variables +1 -1
  298. package/src/themes/flat/globals/site.variables +9 -9
  299. package/src/themes/github/collections/form.overrides +3 -3
  300. package/src/themes/github/collections/form.variables +3 -3
  301. package/src/themes/github/collections/menu.overrides +1 -1
  302. package/src/themes/github/collections/menu.variables +10 -10
  303. package/src/themes/github/collections/message.variables +6 -6
  304. package/src/themes/github/elements/button.variables +17 -17
  305. package/src/themes/github/elements/input.variables +3 -3
  306. package/src/themes/github/elements/segment.variables +2 -2
  307. package/src/themes/github/elements/step.overrides +4 -4
  308. package/src/themes/github/elements/step.variables +3 -3
  309. package/src/themes/github/globals/site.variables +2 -2
  310. package/src/themes/github/modules/dropdown.variables +1 -3
  311. package/src/themes/gmail/collections/message.variables +2 -2
  312. package/src/themes/material/collections/menu.variables +1 -1
  313. package/src/themes/material/elements/button.overrides +4 -4
  314. package/src/themes/material/elements/button.variables +5 -5
  315. package/src/themes/material/modules/dropdown.variables +1 -1
  316. package/src/themes/material/modules/modal.variables +1 -1
  317. package/src/themes/raised/elements/button.variables +1 -1
  318. package/src/themes/round/elements/button.variables +12 -12
  319. package/src/themes/striped/modules/progress.overrides +3 -3
  320. package/src/themes/timeline/views/feed.variables +2 -2
  321. package/src/themes/twitter/elements/button.overrides +1 -1
  322. package/src/themes/twitter/elements/button.variables +4 -5
  323. package/tasks/admin/components/create.js +12 -15
  324. package/tasks/admin/components/init.js +11 -12
  325. package/tasks/admin/components/update.js +19 -20
  326. package/tasks/admin/distributions/create.js +30 -51
  327. package/tasks/admin/distributions/init.js +11 -12
  328. package/tasks/admin/distributions/update.js +18 -19
  329. package/tasks/admin/register.js +7 -7
  330. package/tasks/build/assets.js +1 -1
  331. package/tasks/build/css.js +5 -5
  332. package/tasks/build/javascript.js +1 -1
  333. package/tasks/config/admin/github.js +1 -1
  334. package/tasks/config/admin/templates/css-package.js +1 -1
  335. package/tasks/config/admin/templates/less-package.js +1 -1
  336. package/tasks/config/project/config.js +10 -10
  337. package/tasks/config/project/install.js +12 -12
  338. package/tasks/config/project/release.js +6 -12
  339. package/tasks/config/tasks.js +15 -11
  340. package/tasks/config/user.js +1 -4
  341. package/tasks/docs/metadata.js +18 -20
  342. package/tasks/install.js +14 -12
  343. package/test/meteor/assets.js +4 -4
  344. package/test/meteor/fonts.js +10 -11
  345. package/test/modules/module.spec.js +18 -18
@@ -19,20 +19,20 @@
19
19
  ? window
20
20
  : globalThis;
21
21
 
22
- $.fn.form = function (parameters) {
23
- let $allModules = $(this);
24
- let $window = $(window);
22
+ $.fn.form = function (...args) {
23
+ const $allModules = $(this);
24
+ const $window = $(window);
25
25
 
26
26
  let time = Date.now();
27
27
  let performance = [];
28
28
 
29
- let query = arguments[0];
30
- let methodInvoked = typeof query === 'string';
31
- let queryArguments = [].slice.call(arguments, 1);
29
+ const parameters = args[0];
30
+ const methodInvoked = typeof parameters === 'string';
31
+ const queryArguments = args.slice(1);
32
32
  let returnedValue;
33
33
  $allModules.each(function () {
34
- let $module = $(this);
35
- let element = this;
34
+ const $module = $(this);
35
+ const element = this;
36
36
 
37
37
  let formErrors = [];
38
38
  let formErrorsTracker = {};
@@ -64,12 +64,11 @@
64
64
 
65
65
  let submitting = false;
66
66
  let dirty = false;
67
- let history = ['clean', 'clean'];
67
+ const history = ['clean', 'clean'];
68
68
 
69
69
  let instance;
70
- let module;
71
70
 
72
- module = {
71
+ const module = {
73
72
 
74
73
  initialize: function () {
75
74
  // settings grabbed at run time
@@ -79,7 +78,7 @@
79
78
  if (instance === undefined) {
80
79
  module.instantiate();
81
80
  }
82
- module.invoke(query);
81
+ module.invoke(parameters);
83
82
  } else {
84
83
  if (instance !== undefined) {
85
84
  instance.invoke('destroy');
@@ -162,9 +161,9 @@
162
161
  $module.on('keydown' + eventNamespace, selector.field, module.event.field.keydown);
163
162
  }
164
163
  $field.each(function (index, el) {
165
- let $input = $(el);
166
- let type = $input.prop('type');
167
- let inputEvent = module.get.changeEvent(type, $input);
164
+ const $input = $(el);
165
+ const type = $input.prop('type');
166
+ const inputEvent = module.get.changeEvent(type, $input);
168
167
  $input.on(inputEvent + eventNamespace, module.event.field.change);
169
168
  });
170
169
 
@@ -177,16 +176,16 @@
177
176
  + ' click' + eventNamespace
178
177
  + ' keyup' + eventNamespace
179
178
  + ' keydown' + eventNamespace
180
- + ' blur' + eventNamespace, function (e) {
181
- module.determine.isDirty();
179
+ + ' blur' + eventNamespace, function (event) {
180
+ module.determine.isDirty(event);
182
181
  });
183
182
 
184
- $module.on('dirty' + eventNamespace, function (e) {
185
- settings.onDirty.call();
183
+ $module.on('dirty' + eventNamespace, function (event) {
184
+ settings.onDirty.call(element, event);
186
185
  });
187
186
 
188
- $module.on('clean' + eventNamespace, function (e) {
189
- settings.onClean.call();
187
+ $module.on('clean' + eventNamespace, function (event) {
188
+ settings.onClean.call(element, event);
190
189
  });
191
190
  if (attachEventsSelector) {
192
191
  module.attachEvents(attachEventsSelector, attachEventsAction);
@@ -195,16 +194,16 @@
195
194
 
196
195
  clear: function () {
197
196
  $field.each(function (index, el) {
198
- let $field = $(el);
199
- let $element = $field.parent();
200
- let $fieldGroup = $field.closest($group);
201
- let $prompt = $fieldGroup.find(selector.prompt);
202
- let $calendar = $field.closest(selector.uiCalendar);
203
- let defaultValue = $field.data(metadata.defaultValue) || '';
204
- let isCheckbox = $field.is(selector.checkbox);
205
- let isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown');
206
- let isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
207
- let isErrored = $fieldGroup.hasClass(className.error);
197
+ const $field = $(el);
198
+ const $element = $field.parent();
199
+ const $fieldGroup = $field.closest($group);
200
+ const $prompt = $fieldGroup.find(selector.prompt);
201
+ const $calendar = $field.closest(selector.uiCalendar);
202
+ const defaultValue = $field.data(metadata.defaultValue) || '';
203
+ const isCheckbox = $field.is(selector.checkbox);
204
+ const isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown');
205
+ const isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
206
+ const isErrored = $fieldGroup.hasClass(className.error);
208
207
  if (isErrored) {
209
208
  module.verbose('Resetting error on field', $fieldGroup);
210
209
  $fieldGroup.removeClass(className.error);
@@ -227,17 +226,17 @@
227
226
 
228
227
  reset: function () {
229
228
  $field.each(function (index, el) {
230
- let $field = $(el);
231
- let $element = $field.parent();
232
- let $fieldGroup = $field.closest($group);
233
- let $calendar = $field.closest(selector.uiCalendar);
234
- let $prompt = $fieldGroup.find(selector.prompt);
235
- let defaultValue = $field.data(metadata.defaultValue);
236
- let isCheckbox = $field.is(selector.checkbox);
237
- let isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown');
238
- let isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
239
- let isFile = $field.is(selector.file);
240
- let isErrored = $fieldGroup.hasClass(className.error);
229
+ const $field = $(el);
230
+ const $element = $field.parent();
231
+ const $fieldGroup = $field.closest($group);
232
+ const $calendar = $field.closest(selector.uiCalendar);
233
+ const $prompt = $fieldGroup.find(selector.prompt);
234
+ const defaultValue = $field.data(metadata.defaultValue);
235
+ const isCheckbox = $field.is(selector.checkbox);
236
+ const isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown');
237
+ const isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
238
+ const isFile = $field.is(selector.file);
239
+ const isErrored = $fieldGroup.hasClass(className.error);
241
240
  if (defaultValue === undefined) {
242
241
  return;
243
242
  }
@@ -266,9 +265,9 @@
266
265
  isValid: function () {
267
266
  let allValid = true;
268
267
  $field.each(function (index, el) {
269
- let $el = $(el);
270
- let validation = module.get.validation($el) || {};
271
- let identifier = module.get.identifier(validation, $el);
268
+ const $el = $(el);
269
+ const validation = module.get.validation($el) || {};
270
+ const identifier = module.get.identifier(validation, $el);
272
271
  if (!module.validate.field(validation, identifier, true)) {
273
272
  allValid = false;
274
273
  }
@@ -276,15 +275,14 @@
276
275
 
277
276
  return allValid;
278
277
  },
279
- isDirty: function (e) {
278
+ isDirty: function (event) {
280
279
  let formIsDirty = false;
281
280
 
282
281
  $field.each(function (index, el) {
283
- let $el = $(el);
284
- let isCheckbox = $el.filter(selector.checkbox).length > 0;
285
- let isDirty;
282
+ const $el = $(el);
283
+ const isCheckbox = $el.filter(selector.checkbox).length > 0;
286
284
 
287
- isDirty = isCheckbox
285
+ const isDirty = isCheckbox
288
286
  ? module.is.checkboxDirty($el)
289
287
  : module.is.fieldDirty($el);
290
288
 
@@ -361,10 +359,10 @@
361
359
  currentValue = currentValue.toString();
362
360
  }
363
361
  // Boolean values can be encoded as "true/false" or "True/False" depending on underlying frameworks, so we need a case-insensitive comparison
364
- let boolRegex = /^(true|false)$/i;
365
- let isBoolValue = boolRegex.test(initialValue) && boolRegex.test(currentValue);
362
+ const boolRegex = /^(true|false)$/i;
363
+ const isBoolValue = boolRegex.test(initialValue) && boolRegex.test(currentValue);
366
364
  if (isBoolValue) {
367
- let regex = new RegExp('^' + initialValue + '$', 'i');
365
+ const regex = new RegExp('^' + initialValue + '$', 'i');
368
366
 
369
367
  return !regex.test(currentValue);
370
368
  }
@@ -372,8 +370,8 @@
372
370
  return currentValue !== initialValue;
373
371
  },
374
372
  checkboxDirty: function ($el) {
375
- let initialValue = $el.data(metadata.defaultValue);
376
- let currentValue = $el.is(':checked');
373
+ const initialValue = $el.data(metadata.defaultValue);
374
+ const currentValue = $el.is(':checked');
377
375
 
378
376
  return initialValue !== currentValue;
379
377
  },
@@ -401,12 +399,12 @@
401
399
  event: {
402
400
  field: {
403
401
  keydown: function (event) {
404
- let $field = $(this);
405
- let key = event.which;
406
- let isInput = $field.is(selector.input);
407
- let isCheckbox = $field.is(selector.checkbox);
408
- let isInDropdown = $field.closest(selector.uiDropdown).length > 0;
409
- let keyCode = {
402
+ const $field = $(this);
403
+ const key = event.which;
404
+ const isInput = $field.is(selector.input);
405
+ const isCheckbox = $field.is(selector.checkbox);
406
+ const isInDropdown = $field.closest(selector.uiDropdown).length > 0;
407
+ const keyCode = {
410
408
  enter: 13,
411
409
  escape: 27,
412
410
  };
@@ -431,9 +429,9 @@
431
429
  event.preventDefault();
432
430
  },
433
431
  blur: function (event) {
434
- let $field = $(this);
435
- let validationRules = module.get.validation($field) || {};
436
- let identifier = module.get.identifier(validationRules, $field);
432
+ const $field = $(this);
433
+ const validationRules = module.get.validation($field) || {};
434
+ const identifier = module.get.identifier(validationRules, $field);
437
435
  if (settings.on === 'blur' || (!$module.hasClass(className.initial) && settings.revalidate)) {
438
436
  module.debug('Revalidating field', $field, validationRules);
439
437
  module.validate.field(validationRules, identifier);
@@ -443,9 +441,9 @@
443
441
  }
444
442
  },
445
443
  change: function (event) {
446
- let $field = $(this);
447
- let validationRules = module.get.validation($field) || {};
448
- let identifier = module.get.identifier(validationRules, $field);
444
+ const $field = $(this);
445
+ const validationRules = module.get.validation($field) || {};
446
+ const identifier = module.get.identifier(validationRules, $field);
449
447
  if (settings.on === 'change' || (!$module.hasClass(className.initial) && settings.revalidate)) {
450
448
  clearTimeout(module.timer);
451
449
  module.timer = setTimeout(function () {
@@ -492,10 +490,10 @@
492
490
  return rule.type;
493
491
  },
494
492
  changeEvent: function (type, $input) {
495
- return ['file', 'checkbox', 'radio', 'hidden'].indexOf(type) >= 0 || $input.is('select') ? 'change' : 'input';
493
+ return ['file', 'checkbox', 'radio', 'hidden'].includes(type) || $input.is('select') ? 'change' : 'input';
496
494
  },
497
495
  fieldsFromShorthand: function (fields) {
498
- let fullFields = {};
496
+ const fullFields = {};
499
497
  $.each(fields, function (name, rules) {
500
498
  if (!Array.isArray(rules) && typeof rules === 'object') {
501
499
  fullFields[name] = rules;
@@ -510,13 +508,6 @@
510
508
  fullFields[name].rules.push({ type: rule });
511
509
  });
512
510
  }
513
-
514
- $.each(fullFields[name].rules, function (index, rule) {
515
- let ruleName = module.get.ruleName(rule);
516
- if (ruleName === 'empty') {
517
- module.warn('*** DEPRECATED *** : Rule "empty" for field "' + name + '" will be removed in a future version. -> Use "notEmpty" rule instead.');
518
- }
519
- });
520
511
  });
521
512
 
522
513
  return fullFields;
@@ -525,42 +516,42 @@
525
516
  return validation.identifier || $el.attr('id') || $el.attr('name') || $el.data(metadata.validate);
526
517
  },
527
518
  prompt: function (rule, field) {
528
- let ruleName = module.get.ruleName(rule);
529
- let ancillary = module.get.ancillaryValue(rule);
530
- let $field = module.get.field(field.identifier);
531
- let value = $field.val();
532
- let promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule;
519
+ const ruleName = module.get.ruleName(rule);
520
+ const ancillary = module.get.ancillaryValue(rule);
521
+ const $field = module.get.field(field.identifier);
522
+ const value = $field.val();
523
+ const promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule;
533
524
  let prompt = String(isFunction(promptCheck)
534
525
  ? promptCheck.call($field[0], value)
535
526
  : promptCheck);
536
- let requiresValue = prompt.search('{value}') !== -1;
537
- let requiresName = prompt.search('{name}') !== -1;
527
+ const requiresValue = prompt.search('{value}') !== -1;
528
+ const requiresName = prompt.search('{name}') !== -1;
538
529
  let parts;
539
530
  let suffixPrompt;
540
- if (ancillary && ['integer', 'decimal', 'number', 'size'].indexOf(ruleName) >= 0 && ancillary.indexOf('..') >= 0) {
531
+ if (ancillary && ['integer', 'decimal', 'number', 'size'].includes(ruleName) && ancillary.includes('..')) {
541
532
  parts = ancillary.split('..', 2);
542
533
  if (!rule.prompt && ruleName !== 'size') {
543
534
  suffixPrompt = parts[0] === ''
544
- ? settings.prompt.maxValue.replace(/{ruleValue}/g, '{max}')
535
+ ? settings.prompt.maxValue.replaceAll('{ruleValue}', '{max}')
545
536
  : (parts[1] === ''
546
- ? settings.prompt.minValue.replace(/{ruleValue}/g, '{min}')
537
+ ? settings.prompt.minValue.replaceAll('{ruleValue}', '{min}')
547
538
  : settings.prompt.range);
548
- prompt += suffixPrompt.replace(/{name}/g, ' ' + settings.text.and);
539
+ prompt += suffixPrompt.replaceAll('{name}', ' ' + settings.text.and);
549
540
  }
550
- prompt = prompt.replace(/{min}/g, parts[0]);
551
- prompt = prompt.replace(/{max}/g, parts[1]);
541
+ prompt = prompt.replaceAll('{min}', parts[0]);
542
+ prompt = prompt.replaceAll('{max}', parts[1]);
552
543
  }
553
- if (ancillary && ['match', 'different'].indexOf(ruleName) >= 0) {
554
- prompt = prompt.replace(/{ruleValue}/g, module.get.fieldLabel(ancillary, true));
544
+ if (ancillary && ['match', 'different'].includes(ruleName)) {
545
+ prompt = prompt.replaceAll('{ruleValue}', module.get.fieldLabel(ancillary, true));
555
546
  }
556
547
  if (requiresValue) {
557
- prompt = prompt.replace(/{value}/g, $field.val());
548
+ prompt = prompt.replaceAll('{value}', $field.val());
558
549
  }
559
550
  if (requiresName) {
560
- prompt = prompt.replace(/{name}/g, module.get.fieldLabel($field));
551
+ prompt = prompt.replaceAll('{name}', module.get.fieldLabel($field));
561
552
  }
562
- prompt = prompt.replace(/{identifier}/g, field.identifier);
563
- prompt = prompt.replace(/{ruleValue}/g, ancillary);
553
+ prompt = prompt.replaceAll('{identifier}', field.identifier);
554
+ prompt = prompt.replaceAll('{ruleValue}', ancillary);
564
555
  if (!rule.prompt) {
565
556
  module.verbose('Using default validation prompt for type', prompt, ruleName);
566
557
  }
@@ -631,10 +622,10 @@
631
622
  return $fields;
632
623
  },
633
624
  fieldLabel: function (identifier, useIdAsFallback) {
634
- let $field = typeof identifier === 'string'
625
+ const $field = typeof identifier === 'string'
635
626
  ? module.get.field(identifier)
636
627
  : identifier;
637
- let $label = $field.closest(selector.group).find('label:not(:empty)').eq(0);
628
+ const $label = $field.closest(selector.group).find('label:not(:empty)').eq(0);
638
629
 
639
630
  return $label.length === 1
640
631
  ? $label.text()
@@ -661,30 +652,28 @@
661
652
  return fieldValidation || false;
662
653
  },
663
654
  value: function (field, strict) {
664
- let fields = [];
665
- let results;
666
- let resultKeys;
655
+ const fields = [];
667
656
  fields.push(field);
668
- results = module.get.values.call(element, fields, strict);
669
- resultKeys = Object.keys(results);
657
+ const results = module.get.values.call(element, fields, strict);
658
+ const resultKeys = Object.keys(results);
670
659
 
671
660
  return resultKeys.length > 0 ? results[resultKeys[0]] : undefined;
672
661
  },
673
662
  values: function (fields, strict) {
674
- let $fields = Array.isArray(fields) && fields.length > 0
663
+ const $fields = Array.isArray(fields) && fields.length > 0
675
664
  ? module.get.fields(fields, strict)
676
665
  : $field;
677
- let values = {};
666
+ const values = {};
678
667
  $fields.each(function (index, field) {
679
- let $field = $(field);
680
- let $calendar = $field.closest(selector.uiCalendar);
668
+ const $field = $(field);
669
+ const $calendar = $field.closest(selector.uiCalendar);
681
670
  let name = $field.prop('name') || $field.prop('id');
682
- let value = $field.val();
683
- let isCheckbox = $field.is(selector.checkbox);
684
- let isRadio = $field.is(selector.radio);
685
- let isMultiple = name.indexOf('[]') !== -1;
686
- let isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
687
- let isChecked = isCheckbox
671
+ const value = $field.val();
672
+ const isCheckbox = $field.is(selector.checkbox);
673
+ const isRadio = $field.is(selector.radio);
674
+ const isMultiple = name.includes('[]');
675
+ const isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
676
+ const isChecked = isCheckbox
688
677
  ? $field.is(':checked')
689
678
  : false;
690
679
  if (name) {
@@ -702,74 +691,73 @@
702
691
  } else {
703
692
  values[name].push(value);
704
693
  }
705
- } else {
706
- if (isRadio) {
707
- if (values[name] === undefined || values[name] === false) {
708
- values[name] = isChecked
709
- ? value || true
710
- : false;
711
- }
712
- } else if (isCheckbox) {
713
- values[name] = isChecked ? value || true : false;
714
- } else if (isCalendar) {
715
- let date = $calendar.calendar('get date');
694
+ } else if (isRadio) {
695
+ if (values[name] === undefined || values[name] === false) {
696
+ values[name] = isChecked
697
+ ? value || true
698
+ : false;
699
+ }
700
+ } else if (isCheckbox) {
701
+ values[name] = isChecked ? value || true : false;
702
+ } else if (isCalendar) {
703
+ const date = $calendar.calendar('get date');
716
704
 
717
- if (date !== null) {
718
- switch (settings.dateHandling) {
719
- case 'date': {
720
- values[name] = date;
705
+ if (date !== null) {
706
+ switch (settings.dateHandling) {
707
+ case 'date': {
708
+ values[name] = date;
721
709
 
722
- break;
723
- }
724
- case 'input': {
725
- values[name] = $calendar.calendar('get input date');
710
+ break;
711
+ }
712
+ case 'input': {
713
+ values[name] = $calendar.calendar('get input date');
726
714
 
727
- break;
728
- }
729
- case 'formatter': {
730
- let type = $calendar.calendar('setting', 'type');
731
-
732
- switch (type) {
733
- case 'date': {
734
- values[name] = settings.formatter.date(date);
735
-
736
- break;
737
- }
738
- case 'datetime': {
739
- values[name] = settings.formatter.datetime(date);
740
-
741
- break;
742
- }
743
- case 'time': {
744
- values[name] = settings.formatter.time(date);
745
-
746
- break;
747
- }
748
- case 'month': {
749
- values[name] = settings.formatter.month(date);
750
-
751
- break;
752
- }
753
- case 'year': {
754
- values[name] = settings.formatter.year(date);
755
-
756
- break;
757
- }
758
- default: {
759
- module.debug('Wrong calendar mode', $calendar, type);
760
- values[name] = '';
761
- }
715
+ break;
716
+ }
717
+ case 'formatter': {
718
+ const type = $calendar.calendar('setting', 'type');
719
+
720
+ switch (type) {
721
+ case 'date': {
722
+ values[name] = settings.formatter.date(date);
723
+
724
+ break;
725
+ }
726
+ case 'datetime': {
727
+ values[name] = settings.formatter.datetime(date);
728
+
729
+ break;
730
+ }
731
+ case 'time': {
732
+ values[name] = settings.formatter.time(date);
733
+
734
+ break;
735
+ }
736
+ case 'month': {
737
+ values[name] = settings.formatter.month(date);
738
+
739
+ break;
762
740
  }
741
+ case 'year': {
742
+ values[name] = settings.formatter.year(date);
763
743
 
764
- break;
744
+ break;
745
+ }
746
+ default: {
747
+ module.debug('Wrong calendar mode', $calendar, type);
748
+ values[name] = '';
749
+ }
765
750
  }
751
+
752
+ break;
766
753
  }
767
- } else {
768
- values[name] = '';
754
+ // no default
769
755
  }
770
756
  } else {
771
- values[name] = value;
757
+ values[name] = '';
772
758
  }
759
+ } else {
760
+ values[name] = value;
773
761
  }
774
762
  }
775
763
  });
@@ -832,7 +820,7 @@
832
820
  rules: [],
833
821
  };
834
822
  }
835
- let newValidation = {
823
+ const newValidation = {
836
824
  rules: [],
837
825
  };
838
826
  if (module.is.shorthandRules(rules)) {
@@ -865,11 +853,11 @@
865
853
  if (errors === false) {
866
854
  return;
867
855
  }
868
- let $field = module.get.field(identifier);
869
- let $fieldGroup = $field.closest($group);
856
+ const $field = module.get.field(identifier);
857
+ const $fieldGroup = $field.closest($group);
870
858
  let $prompt = $fieldGroup.children(selector.prompt);
871
859
  let promptExists = $prompt.length > 0;
872
- let canTransition = settings.transition && module.can.useElement('transition');
860
+ const canTransition = settings.transition && module.can.useElement('transition');
873
861
  module.verbose('Adding field error state', identifier);
874
862
  if (!internal) {
875
863
  $fieldGroup
@@ -930,8 +918,8 @@
930
918
  if (tempErrors !== false) {
931
919
  $.each(tempErrors, function (index, tempError) {
932
920
  customErrors.push(settings.prompt.addErrors
933
- .replace(/{name}/g, module.get.fieldLabel(id))
934
- .replace(/{error}/g, tempError));
921
+ .replaceAll('{name}', module.get.fieldLabel(id))
922
+ .replaceAll('{error}', tempError));
935
923
  });
936
924
  }
937
925
  }
@@ -960,7 +948,7 @@
960
948
  module.determine.isDirty();
961
949
  },
962
950
  rule: function (field, rule) {
963
- let rules = Array.isArray(rule)
951
+ const rules = Array.isArray(rule)
964
952
  ? rule
965
953
  : [rule];
966
954
  if (validation[field] === undefined || !Array.isArray(validation[field].rules)) {
@@ -977,14 +965,14 @@
977
965
  return;
978
966
  }
979
967
  $.each(validation[field].rules, function (index, rule) {
980
- if (rule && rules.indexOf(rule.type) !== -1) {
968
+ if (rule && rules.includes(rule.type)) {
981
969
  module.debug('Removed rule', rule.type);
982
970
  validation[field].rules.splice(index, 1);
983
971
  }
984
972
  });
985
973
  },
986
974
  field: function (field) {
987
- let fields = Array.isArray(field)
975
+ const fields = Array.isArray(field)
988
976
  ? field
989
977
  : [field];
990
978
  $.each(fields, function (index, field) {
@@ -1006,9 +994,9 @@
1006
994
  module.remove.field(fields);
1007
995
  },
1008
996
  prompt: function (identifier) {
1009
- let $field = module.get.field(identifier);
1010
- let $fieldGroup = $field.closest($group);
1011
- let $prompt = $fieldGroup.children(selector.prompt);
997
+ const $field = module.get.field(identifier);
998
+ const $fieldGroup = $field.closest($group);
999
+ const $prompt = $fieldGroup.children(selector.prompt);
1012
1000
  $fieldGroup
1013
1001
  .removeClass(className.error);
1014
1002
  if (settings.inline && $prompt.is(':visible')) {
@@ -1035,13 +1023,13 @@
1035
1023
  },
1036
1024
  defaults: function () {
1037
1025
  $field.each(function (index, el) {
1038
- let $el = $(el);
1039
- let $parent = $el.parent();
1040
- let isCheckbox = $el.filter(selector.checkbox).length > 0;
1041
- let isDropdown = ($parent.is(selector.uiDropdown) || $el.is(selector.uiDropdown)) && module.can.useElement('dropdown');
1042
- let $calendar = $el.closest(selector.uiCalendar);
1043
- let isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
1044
- let value = isCheckbox
1026
+ const $el = $(el);
1027
+ const $parent = $el.parent();
1028
+ const isCheckbox = $el.filter(selector.checkbox).length > 0;
1029
+ const isDropdown = ($parent.is(selector.uiDropdown) || $el.is(selector.uiDropdown)) && module.can.useElement('dropdown');
1030
+ const $calendar = $el.closest(selector.uiCalendar);
1031
+ const isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
1032
+ const value = isCheckbox
1045
1033
  ? $el.is(':checked')
1046
1034
  : $el.val();
1047
1035
  if (isDropdown) {
@@ -1063,7 +1051,7 @@
1063
1051
  .addClass(className.error);
1064
1052
  },
1065
1053
  value: function (field, value) {
1066
- let fields = {};
1054
+ const fields = {};
1067
1055
  fields[field] = value;
1068
1056
 
1069
1057
  return module.set.values.call(element, fields);
@@ -1073,16 +1061,16 @@
1073
1061
  return;
1074
1062
  }
1075
1063
  $.each(fields, function (key, value) {
1076
- let $field = module.get.field(key);
1064
+ const $field = module.get.field(key);
1077
1065
  let $element = $field.parent();
1078
- let $calendar = $field.closest(selector.uiCalendar);
1079
- let isFile = $field.is(selector.file);
1080
- let isMultiple = Array.isArray(value);
1081
- let isCheckbox = $element.is(selector.uiCheckbox) && module.can.useElement('checkbox');
1082
- let isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown');
1083
- let isRadio = $field.is(selector.radio) && isCheckbox;
1084
- let isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
1085
- let fieldExists = $field.length > 0;
1066
+ const $calendar = $field.closest(selector.uiCalendar);
1067
+ const isFile = $field.is(selector.file);
1068
+ const isMultiple = Array.isArray(value);
1069
+ const isCheckbox = $element.is(selector.uiCheckbox) && module.can.useElement('checkbox');
1070
+ const isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown');
1071
+ const isRadio = $field.is(selector.radio) && isCheckbox;
1072
+ const isCalendar = $calendar.length > 0 && module.can.useElement('calendar');
1073
+ const fieldExists = $field.length > 0;
1086
1074
  let $multipleField;
1087
1075
  if (fieldExists) {
1088
1076
  if (isMultiple && isCheckbox) {
@@ -1161,18 +1149,18 @@
1161
1149
  });
1162
1150
  }
1163
1151
  $field.each(function (_index, el) {
1164
- let $el = $(el);
1165
- let $elGroup = $el.closest($group);
1166
- let isCheckbox = $el.filter(selector.checkbox).length > 0;
1167
- let isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required);
1168
- let isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled);
1169
- let validation = module.get.validation($el);
1170
- let hasNotEmptyRule = validation
1152
+ const $el = $(el);
1153
+ const $elGroup = $el.closest($group);
1154
+ const isCheckbox = $el.filter(selector.checkbox).length > 0;
1155
+ const isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required);
1156
+ const isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled);
1157
+ const validation = module.get.validation($el);
1158
+ const hasNotEmptyRule = validation
1171
1159
  ? $.grep(validation.rules, function (rule) {
1172
- return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0;
1160
+ return ['notEmpty', 'checked'].includes(rule.type);
1173
1161
  }).length > 0
1174
1162
  : false;
1175
- let identifier = module.get.identifier(validation, $el);
1163
+ const identifier = module.get.identifier(validation, $el);
1176
1164
  if (isRequired && !isDisabled && !hasNotEmptyRule && identifier !== undefined) {
1177
1165
  if (isCheckbox) {
1178
1166
  module.verbose("Adding 'checked' rule on field", identifier);
@@ -1197,7 +1185,7 @@
1197
1185
  validate: {
1198
1186
 
1199
1187
  form: function (event, ignoreCallbacks) {
1200
- let values = module.get.values();
1188
+ const values = module.get.values();
1201
1189
 
1202
1190
  // input keydown event will fire submit repeatedly by browser default
1203
1191
  if (keyHeldDown) {
@@ -1253,10 +1241,7 @@
1253
1241
  },
1254
1242
 
1255
1243
  // takes a validation object and returns whether field passes validation
1256
- field: function (field, fieldName, showErrors) {
1257
- showErrors = showErrors !== undefined
1258
- ? showErrors
1259
- : true;
1244
+ field: function (field, fieldName, showErrors = true) {
1260
1245
  if (typeof field === 'string') {
1261
1246
  module.verbose('Validating field', field);
1262
1247
  fieldName = field;
@@ -1267,17 +1252,17 @@
1267
1252
 
1268
1253
  return true;
1269
1254
  }
1270
- let identifier = field.identifier || fieldName;
1271
- let $field = module.get.field(identifier);
1272
- let $fieldGroup = $field.closest($group);
1273
- let $dependsField = field.depends
1255
+ const identifier = field.identifier || fieldName;
1256
+ const $field = module.get.field(identifier);
1257
+ const $fieldGroup = $field.closest($group);
1258
+ const $dependsField = field.depends
1274
1259
  ? module.get.field(field.depends)
1275
1260
  : false;
1276
1261
  let fieldValid = true;
1277
- let fieldErrors = [];
1278
- let isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled);
1279
- let validationMessage = $field[0].validationMessage;
1280
- let noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0;
1262
+ const fieldErrors = [];
1263
+ const isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled);
1264
+ const validationMessage = $field[0].validationMessage;
1265
+ const noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0;
1281
1266
  let errorLimit;
1282
1267
  if (!field.identifier) {
1283
1268
  module.debug('Using field name as identifier', identifier);
@@ -1303,16 +1288,16 @@
1303
1288
  errorLimit = field.errorLimit || settings.errorLimit;
1304
1289
  $.each(field.rules, function (index, rule) {
1305
1290
  if (module.has.field(identifier) && (!errorLimit || fieldErrors.length < errorLimit)) {
1306
- let invalidFields = module.validate.rule(field, rule, true) || [];
1291
+ const invalidFields = module.validate.rule(field, rule, true) || [];
1307
1292
  if (invalidFields.length > 0) {
1308
1293
  module.debug('Field is invalid', identifier, rule.type);
1309
- let fieldError = module.get.prompt(rule, field);
1294
+ const fieldError = module.get.prompt(rule, field);
1310
1295
  if (!settings.inline) {
1311
1296
  if (
1312
1297
  // Always allow the first error prompt for new field identifiers
1313
1298
  (!(identifier in formErrorsTracker)
1314
1299
  // Also allow multiple error prompts per field identifier but make sure each prompt is unique
1315
- || formErrorsTracker[identifier].indexOf(fieldError) === -1)
1300
+ || !formErrorsTracker[identifier].includes(fieldError))
1316
1301
  // Limit the number of unique error prompts for every field identifier if specified
1317
1302
  && (!errorLimit || (formErrorsTracker[identifier] || []).length < errorLimit)
1318
1303
  ) {
@@ -1337,7 +1322,7 @@
1337
1322
  }
1338
1323
  } else {
1339
1324
  if (showErrors && fieldErrors.length > 0) {
1340
- formErrors = formErrors.concat(fieldErrors);
1325
+ formErrors = [...formErrors, ...fieldErrors];
1341
1326
  module.add.prompt(identifier, fieldErrors, true);
1342
1327
  settings.onInvalid.call($field, fieldErrors);
1343
1328
  }
@@ -1350,13 +1335,13 @@
1350
1335
 
1351
1336
  // takes validation rule and returns whether field passes rule
1352
1337
  rule: function (field, rule, internal) {
1353
- let $field = module.get.field(field.identifier);
1354
- let ancillary = module.get.ancillaryValue(rule);
1355
- let ruleName = module.get.ruleName(rule);
1356
- let ruleFunction = settings.rules[ruleName];
1338
+ const $field = module.get.field(field.identifier);
1339
+ const ancillary = module.get.ancillaryValue(rule);
1340
+ const ruleName = module.get.ruleName(rule);
1341
+ const ruleFunction = settings.rules[ruleName];
1357
1342
  let invalidFields = [];
1358
- let isCheckbox = $field.is(selector.checkbox);
1359
- let isValid = function (field) {
1343
+ const isCheckbox = $field.is(selector.checkbox);
1344
+ const isValid = function (field) {
1360
1345
  let value = isCheckbox ? $(field).filter(':checked').val() : $(field).val();
1361
1346
  // cast to string avoiding encoding special values
1362
1347
  value = value === undefined || value === '' || value === null
@@ -1406,36 +1391,36 @@
1406
1391
  return module[name];
1407
1392
  }
1408
1393
  },
1409
- debug: function () {
1394
+ debug: function (...args) {
1410
1395
  if (!settings.silent && settings.debug) {
1411
1396
  if (settings.performance) {
1412
- module.performance.log(arguments);
1397
+ module.performance.log(args);
1413
1398
  } else {
1414
1399
  module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
1415
- module.debug.apply(console, arguments);
1400
+ module.debug.apply(console, args);
1416
1401
  }
1417
1402
  }
1418
1403
  },
1419
- verbose: function () {
1404
+ verbose: function (...args) {
1420
1405
  if (!settings.silent && settings.verbose && settings.debug) {
1421
1406
  if (settings.performance) {
1422
- module.performance.log(arguments);
1407
+ module.performance.log(args);
1423
1408
  } else {
1424
1409
  module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
1425
- module.verbose.apply(console, arguments);
1410
+ module.verbose.apply(console, args);
1426
1411
  }
1427
1412
  }
1428
1413
  },
1429
- error: function () {
1414
+ error: function (...args) {
1430
1415
  if (!settings.silent) {
1431
1416
  module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
1432
- module.error.apply(console, arguments);
1417
+ module.error.apply(console, args);
1433
1418
  }
1434
1419
  },
1435
- warn: function () {
1420
+ warn: function (...args) {
1436
1421
  if (!settings.silent) {
1437
1422
  module.warn = Function.prototype.bind.call(console.warn, console, settings.name + ':');
1438
- module.warn.apply(console, arguments);
1423
+ module.warn.apply(console, args);
1439
1424
  }
1440
1425
  },
1441
1426
  performance: {
@@ -1450,7 +1435,7 @@
1450
1435
  time = currentTime;
1451
1436
  performance.push({
1452
1437
  Name: message[0],
1453
- Arguments: [].slice.call(message, 1) || '',
1438
+ Arguments: message.slice(1),
1454
1439
  Element: element,
1455
1440
  'Execution Time': executionTime,
1456
1441
  });
@@ -1474,30 +1459,22 @@
1474
1459
  }
1475
1460
  if (performance.length > 0) {
1476
1461
  console.groupCollapsed(title);
1477
- if (console.table) {
1478
- console.table(performance);
1479
- } else {
1480
- $.each(performance, function (index, data) {
1481
- console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
1482
- });
1483
- }
1462
+ console.table(performance);
1484
1463
  console.groupEnd();
1485
1464
  }
1486
1465
  performance = [];
1487
1466
  },
1488
1467
  },
1489
- invoke: function (query, passedArguments, context) {
1468
+ invoke: function (query, passedArguments = queryArguments, context = element) {
1490
1469
  let object = instance;
1491
1470
  let maxDepth;
1492
1471
  let found;
1493
1472
  let response;
1494
- passedArguments = passedArguments || queryArguments;
1495
- context = context || element;
1496
1473
  if (typeof query === 'string' && object !== undefined) {
1497
1474
  query = query.split(/[ .]/);
1498
1475
  maxDepth = query.length - 1;
1499
1476
  $.each(query, function (depth, value) {
1500
- let camelCaseValue = depth !== maxDepth
1477
+ const camelCaseValue = depth !== maxDepth
1501
1478
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1502
1479
  : query;
1503
1480
  if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
@@ -1613,7 +1590,6 @@
1613
1590
  range: '{name} must be in a range from {min} to {max}',
1614
1591
  maxValue: '{name} must have a maximum value of {ruleValue}',
1615
1592
  minValue: '{name} must have a minimum value of {ruleValue}',
1616
- empty: '{name} must have a value',
1617
1593
  notEmpty: '{name} must have a value',
1618
1594
  checked: '{name} must be checked',
1619
1595
  email: '{name} must be a valid e-mail',
@@ -1646,7 +1622,7 @@
1646
1622
  selector: {
1647
1623
  checkbox: 'input[type="checkbox"], input[type="radio"]',
1648
1624
  clear: '.clear',
1649
- field: 'input:not(.search):not([type="reset"]):not([type="button"]):not([type="submit"]), textarea, select',
1625
+ field: 'input:not(.search, [type="reset"], [type="button"], [type="submit"]), textarea, select',
1650
1626
  file: 'input[type="file"]',
1651
1627
  group: '.field',
1652
1628
  input: 'input',
@@ -1767,7 +1743,7 @@
1767
1743
  if (regExp instanceof RegExp) {
1768
1744
  return value.match(regExp);
1769
1745
  }
1770
- let regExpParts = regExp.match($.fn.form.settings.regExp.flags);
1746
+ const regExpParts = regExp.match($.fn.form.settings.regExp.flags);
1771
1747
  let flags;
1772
1748
  // regular expression specified as /baz/gi (flags)
1773
1749
  if (regExpParts) {
@@ -1801,10 +1777,10 @@
1801
1777
  let min;
1802
1778
  let max;
1803
1779
  let parts;
1804
- if (!range || ['', '..'].indexOf(range) !== -1) {
1780
+ if (!range || ['', '..'].includes(range)) {
1805
1781
 
1806
1782
  // do nothing
1807
- } else if (range.indexOf('..') === -1) {
1783
+ } else if (!range.includes('..')) {
1808
1784
  if (regExp.test(range)) {
1809
1785
  min = range - 0;
1810
1786
  max = min;
@@ -1926,7 +1902,7 @@
1926
1902
 
1927
1903
  // matches another field
1928
1904
  match: function (value, identifier, module) {
1929
- let matchingValue = module.get.value(identifier, true);
1905
+ const matchingValue = module.get.value(identifier, true);
1930
1906
 
1931
1907
  return matchingValue !== undefined
1932
1908
  ? value.toString() === matchingValue.toString()
@@ -1935,7 +1911,7 @@
1935
1911
 
1936
1912
  // different from another field
1937
1913
  different: function (value, identifier, module) {
1938
- let matchingValue = module.get.value(identifier, true);
1914
+ const matchingValue = module.get.value(identifier, true);
1939
1915
 
1940
1916
  return matchingValue !== undefined
1941
1917
  ? value.toString() !== matchingValue.toString()
@@ -1943,7 +1919,7 @@
1943
1919
  },
1944
1920
 
1945
1921
  creditCard: function (cardNumber, cardTypes) {
1946
- let cards = {
1922
+ const cards = {
1947
1923
  visa: {
1948
1924
  pattern: /^4/,
1949
1925
  length: [16],
@@ -1987,10 +1963,9 @@
1987
1963
  };
1988
1964
  let valid = {};
1989
1965
  let validCard = false;
1990
- let requiredTypes = typeof cardTypes === 'string'
1966
+ const requiredTypes = typeof cardTypes === 'string'
1991
1967
  ? cardTypes.split(',')
1992
1968
  : false;
1993
- let unionPay;
1994
1969
  let validation;
1995
1970
 
1996
1971
  if (typeof cardNumber !== 'string' || cardNumber.length === 0) {
@@ -2007,7 +1982,7 @@
2007
1982
  validation = cards[type];
2008
1983
  if (validation) {
2009
1984
  valid = {
2010
- length: $.inArray(cardNumber.length, validation.length) !== -1,
1985
+ length: validation.length.includes(cardNumber.length),
2011
1986
  pattern: cardNumber.search(validation.pattern) !== -1,
2012
1987
  };
2013
1988
  if (valid.length > 0 && valid.pattern) {
@@ -2022,8 +1997,8 @@
2022
1997
  }
2023
1998
 
2024
1999
  // skip luhn for UnionPay
2025
- unionPay = {
2026
- number: $.inArray(cardNumber.length, cards.unionPay.length) !== -1,
2000
+ const unionPay = {
2001
+ number: cards.unionPay.length.includes(cardNumber.length),
2027
2002
  pattern: cardNumber.search(cards.unionPay.pattern) !== -1,
2028
2003
  };
2029
2004
  if (unionPay.number && unionPay.pattern) {
@@ -2033,13 +2008,13 @@
2033
2008
  // verify luhn, adapted from <https://gist.github.com/2134376>
2034
2009
  let length = cardNumber.length;
2035
2010
  let multiple = 0;
2036
- let producedValue = [
2011
+ const producedValue = [
2037
2012
  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
2038
2013
  [0, 2, 4, 6, 8, 1, 3, 5, 7, 9],
2039
2014
  ];
2040
2015
  let sum = 0;
2041
2016
  while (length--) {
2042
- sum += producedValue[multiple][parseInt(cardNumber.charAt(length), 10)];
2017
+ sum += producedValue[multiple][Number.parseInt(cardNumber.charAt(length), 10)];
2043
2018
  multiple ^= 1; // eslint-disable-line no-bitwise
2044
2019
  }
2045
2020