fomantic-ui 2.9.1-beta.23 → 2.9.1-beta.25

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 (216) hide show
  1. package/.eslint/eqeqeq-rule.js +18 -0
  2. package/.eslint/index.js +26 -0
  3. package/.eslint/no-extra-parens-rule.js +17 -0
  4. package/.eslint/package.json +11 -0
  5. package/.eslintrc.js +7 -13
  6. package/dist/components/accordion.css +1 -1
  7. package/dist/components/accordion.js +24 -24
  8. package/dist/components/accordion.min.css +1 -1
  9. package/dist/components/accordion.min.js +2 -2
  10. package/dist/components/ad.css +1 -1
  11. package/dist/components/ad.min.css +1 -1
  12. package/dist/components/api.js +58 -58
  13. package/dist/components/api.min.js +2 -2
  14. package/dist/components/breadcrumb.css +1 -1
  15. package/dist/components/breadcrumb.min.css +1 -1
  16. package/dist/components/button.css +1 -1
  17. package/dist/components/button.min.css +1 -1
  18. package/dist/components/calendar.css +1 -1
  19. package/dist/components/calendar.js +84 -72
  20. package/dist/components/calendar.min.css +1 -1
  21. package/dist/components/calendar.min.js +2 -2
  22. package/dist/components/card.css +1 -1
  23. package/dist/components/card.min.css +1 -1
  24. package/dist/components/checkbox.css +1 -1
  25. package/dist/components/checkbox.js +17 -17
  26. package/dist/components/checkbox.min.css +1 -1
  27. package/dist/components/checkbox.min.js +2 -2
  28. package/dist/components/comment.css +1 -1
  29. package/dist/components/comment.min.css +1 -1
  30. package/dist/components/container.css +1 -1
  31. package/dist/components/container.min.css +1 -1
  32. package/dist/components/dimmer.css +1 -1
  33. package/dist/components/dimmer.js +18 -18
  34. package/dist/components/dimmer.min.css +1 -1
  35. package/dist/components/dimmer.min.js +2 -2
  36. package/dist/components/divider.css +1 -1
  37. package/dist/components/divider.min.css +1 -1
  38. package/dist/components/dropdown.css +1 -1
  39. package/dist/components/dropdown.js +264 -254
  40. package/dist/components/dropdown.min.css +1 -1
  41. package/dist/components/dropdown.min.js +2 -2
  42. package/dist/components/embed.css +1 -1
  43. package/dist/components/embed.js +19 -19
  44. package/dist/components/embed.min.css +1 -1
  45. package/dist/components/embed.min.js +2 -2
  46. package/dist/components/feed.css +1 -1
  47. package/dist/components/feed.min.css +1 -1
  48. package/dist/components/flag.css +1 -1
  49. package/dist/components/flag.min.css +1 -1
  50. package/dist/components/flyout.css +1 -1
  51. package/dist/components/flyout.js +29 -25
  52. package/dist/components/flyout.min.css +1 -1
  53. package/dist/components/flyout.min.js +2 -2
  54. package/dist/components/form.css +1 -1
  55. package/dist/components/form.js +158 -141
  56. package/dist/components/form.min.css +1 -1
  57. package/dist/components/form.min.js +2 -2
  58. package/dist/components/grid.css +1 -1
  59. package/dist/components/grid.min.css +1 -1
  60. package/dist/components/header.css +1 -1
  61. package/dist/components/header.min.css +1 -1
  62. package/dist/components/icon.css +1 -1
  63. package/dist/components/icon.min.css +1 -1
  64. package/dist/components/image.css +1 -1
  65. package/dist/components/image.min.css +1 -1
  66. package/dist/components/input.css +1 -1
  67. package/dist/components/input.min.css +1 -1
  68. package/dist/components/item.css +1 -1
  69. package/dist/components/item.min.css +1 -1
  70. package/dist/components/label.css +1 -1
  71. package/dist/components/label.min.css +1 -1
  72. package/dist/components/list.css +1 -1
  73. package/dist/components/list.min.css +1 -1
  74. package/dist/components/loader.css +1 -1
  75. package/dist/components/loader.min.css +1 -1
  76. package/dist/components/message.css +1 -1
  77. package/dist/components/message.min.css +1 -1
  78. package/dist/components/modal.css +1 -1
  79. package/dist/components/modal.js +32 -28
  80. package/dist/components/modal.min.css +1 -1
  81. package/dist/components/modal.min.js +2 -2
  82. package/dist/components/nag.css +1 -1
  83. package/dist/components/nag.js +10 -10
  84. package/dist/components/nag.min.css +1 -1
  85. package/dist/components/nag.min.js +2 -2
  86. package/dist/components/placeholder.css +1 -1
  87. package/dist/components/placeholder.min.css +1 -1
  88. package/dist/components/popup.css +1 -1
  89. package/dist/components/popup.js +79 -71
  90. package/dist/components/popup.min.css +1 -1
  91. package/dist/components/popup.min.js +2 -2
  92. package/dist/components/progress.css +1 -1
  93. package/dist/components/progress.js +40 -42
  94. package/dist/components/progress.min.css +1 -1
  95. package/dist/components/progress.min.js +2 -2
  96. package/dist/components/rail.css +1 -1
  97. package/dist/components/rail.min.css +1 -1
  98. package/dist/components/rating.css +1 -1
  99. package/dist/components/rating.js +13 -13
  100. package/dist/components/rating.min.css +1 -1
  101. package/dist/components/rating.min.js +2 -2
  102. package/dist/components/reset.css +1 -1
  103. package/dist/components/reset.min.css +1 -1
  104. package/dist/components/reveal.css +1 -1
  105. package/dist/components/reveal.min.css +1 -1
  106. package/dist/components/search.css +1 -1
  107. package/dist/components/search.js +42 -42
  108. package/dist/components/search.min.css +1 -1
  109. package/dist/components/search.min.js +2 -2
  110. package/dist/components/segment.css +1 -1
  111. package/dist/components/segment.min.css +1 -1
  112. package/dist/components/shape.css +1 -1
  113. package/dist/components/shape.js +36 -36
  114. package/dist/components/shape.min.css +1 -1
  115. package/dist/components/shape.min.js +2 -2
  116. package/dist/components/sidebar.css +1 -1
  117. package/dist/components/sidebar.js +29 -29
  118. package/dist/components/sidebar.min.css +1 -1
  119. package/dist/components/sidebar.min.js +2 -2
  120. package/dist/components/site.css +1 -1
  121. package/dist/components/site.js +16 -16
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +2 -2
  124. package/dist/components/slider.js +79 -58
  125. package/dist/components/slider.min.js +2 -2
  126. package/dist/components/state.js +14 -14
  127. package/dist/components/state.min.js +2 -2
  128. package/dist/components/statistic.css +1 -1
  129. package/dist/components/statistic.min.css +1 -1
  130. package/dist/components/step.css +1 -1
  131. package/dist/components/step.min.css +1 -1
  132. package/dist/components/sticky.css +1 -1
  133. package/dist/components/sticky.js +25 -25
  134. package/dist/components/sticky.min.css +1 -1
  135. package/dist/components/sticky.min.js +2 -2
  136. package/dist/components/tab.css +1 -1
  137. package/dist/components/tab.js +34 -34
  138. package/dist/components/tab.min.css +1 -1
  139. package/dist/components/tab.min.js +2 -2
  140. package/dist/components/table.css +1 -1
  141. package/dist/components/table.min.css +1 -1
  142. package/dist/components/text.css +1 -1
  143. package/dist/components/text.min.css +1 -1
  144. package/dist/components/toast.css +1 -1
  145. package/dist/components/toast.js +43 -19
  146. package/dist/components/toast.min.css +1 -1
  147. package/dist/components/toast.min.js +2 -2
  148. package/dist/components/transition.css +1 -1
  149. package/dist/components/transition.js +26 -26
  150. package/dist/components/transition.min.css +1 -1
  151. package/dist/components/transition.min.js +2 -2
  152. package/dist/components/visibility.js +29 -29
  153. package/dist/components/visibility.min.js +2 -2
  154. package/dist/semantic.css +50 -50
  155. package/dist/semantic.js +1218 -1120
  156. package/dist/semantic.min.css +1 -1
  157. package/dist/semantic.min.js +2 -2
  158. package/gulpfile.js +1 -1
  159. package/package.json +2 -1
  160. package/scripts/nightly-version.js +3 -1
  161. package/src/definitions/behaviors/api.js +57 -57
  162. package/src/definitions/behaviors/form.js +157 -140
  163. package/src/definitions/behaviors/state.js +13 -13
  164. package/src/definitions/behaviors/visibility.js +28 -28
  165. package/src/definitions/globals/site.js +15 -15
  166. package/src/definitions/modules/accordion.js +23 -23
  167. package/src/definitions/modules/calendar.js +83 -71
  168. package/src/definitions/modules/checkbox.js +16 -16
  169. package/src/definitions/modules/dimmer.js +17 -17
  170. package/src/definitions/modules/dropdown.js +263 -253
  171. package/src/definitions/modules/embed.js +18 -18
  172. package/src/definitions/modules/flyout.js +28 -24
  173. package/src/definitions/modules/modal.js +31 -27
  174. package/src/definitions/modules/nag.js +9 -9
  175. package/src/definitions/modules/popup.js +78 -70
  176. package/src/definitions/modules/progress.js +39 -41
  177. package/src/definitions/modules/rating.js +12 -12
  178. package/src/definitions/modules/search.js +41 -41
  179. package/src/definitions/modules/shape.js +35 -35
  180. package/src/definitions/modules/sidebar.js +28 -28
  181. package/src/definitions/modules/slider.js +78 -57
  182. package/src/definitions/modules/sticky.js +24 -24
  183. package/src/definitions/modules/tab.js +33 -33
  184. package/src/definitions/modules/toast.js +42 -18
  185. package/src/definitions/modules/transition.js +25 -25
  186. package/tasks/admin/components/create.js +1 -1
  187. package/tasks/admin/components/init.js +2 -2
  188. package/tasks/admin/components/update.js +4 -4
  189. package/tasks/admin/distributions/create.js +6 -7
  190. package/tasks/admin/distributions/init.js +2 -2
  191. package/tasks/admin/distributions/update.js +4 -4
  192. package/tasks/admin/publish.js +1 -3
  193. package/tasks/admin/register.js +5 -5
  194. package/tasks/admin/release.js +1 -3
  195. package/tasks/build/assets.js +1 -1
  196. package/tasks/build.js +1 -1
  197. package/tasks/check-install.js +1 -1
  198. package/tasks/clean.js +1 -1
  199. package/tasks/collections/admin.js +1 -1
  200. package/tasks/collections/rtl.js +1 -1
  201. package/tasks/config/admin/github.js +3 -4
  202. package/tasks/config/npm/gulpfile.js +1 -1
  203. package/tasks/config/project/config.js +10 -8
  204. package/tasks/config/project/install.js +14 -14
  205. package/tasks/config/project/release.js +3 -2
  206. package/tasks/config/tasks.js +4 -4
  207. package/tasks/config/user.js +5 -3
  208. package/tasks/docs/build.js +1 -1
  209. package/tasks/docs/metadata.js +2 -2
  210. package/tasks/docs/serve.js +2 -1
  211. package/tasks/install.js +3 -3
  212. package/tasks/rtl/build.js +1 -3
  213. package/tasks/rtl/watch.js +1 -3
  214. package/tasks/version.js +1 -3
  215. package/tasks/watch.js +1 -1
  216. package/test/modules/module.spec.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.1-beta.23+27384cb - Form Validation
2
+ * # Fomantic-UI 2.9.1-beta.25+bbe4e58 - Form Validation
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -15,7 +15,7 @@
15
15
  return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
16
  }
17
17
 
18
- window = (window !== undefined && window.Math === Math)
18
+ window = window !== undefined && window.Math === Math
19
19
  ? window
20
20
  : globalThis;
21
21
 
@@ -29,7 +29,7 @@
29
29
 
30
30
  query = arguments[0],
31
31
  legacyParameters = arguments[1],
32
- methodInvoked = (typeof query === 'string'),
32
+ methodInvoked = typeof query === 'string',
33
33
  queryArguments = [].slice.call(arguments, 1),
34
34
  returnedValue
35
35
  ;
@@ -196,7 +196,7 @@
196
196
  defaultValue = $field.data(metadata.defaultValue) || '',
197
197
  isCheckbox = $element.is(selector.uiCheckbox),
198
198
  isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'),
199
- isCalendar = ($calendar.length > 0 && module.can.useElement('calendar')),
199
+ isCalendar = $calendar.length > 0 && module.can.useElement('calendar'),
200
200
  isErrored = $fieldGroup.hasClass(className.error)
201
201
  ;
202
202
  if (isErrored) {
@@ -230,7 +230,7 @@
230
230
  defaultValue = $field.data(metadata.defaultValue),
231
231
  isCheckbox = $element.is(selector.uiCheckbox),
232
232
  isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'),
233
- isCalendar = ($calendar.length > 0 && module.can.useElement('calendar')),
233
+ isCalendar = $calendar.length > 0 && module.can.useElement('calendar'),
234
234
  isErrored = $fieldGroup.hasClass(className.error)
235
235
  ;
236
236
  if (defaultValue === undefined) {
@@ -263,7 +263,7 @@
263
263
  allValid = true
264
264
  ;
265
265
  $.each(validation, function (fieldName, field) {
266
- if (!(module.validate.field(field, fieldName, true))) {
266
+ if (!module.validate.field(field, fieldName, true)) {
267
267
  allValid = false;
268
268
  }
269
269
  });
@@ -276,7 +276,7 @@
276
276
  $field.each(function (index, el) {
277
277
  var
278
278
  $el = $(el),
279
- isCheckbox = ($el.filter(selector.checkbox).length > 0),
279
+ isCheckbox = $el.filter(selector.checkbox).length > 0,
280
280
  isDirty
281
281
  ;
282
282
 
@@ -299,11 +299,11 @@
299
299
 
300
300
  is: {
301
301
  bracketedRule: function (rule) {
302
- return (rule.type && rule.type.match(settings.regExp.bracket));
302
+ return rule.type && rule.type.match(settings.regExp.bracket);
303
303
  },
304
304
  // duck type rule test
305
305
  shorthandRules: function (rules) {
306
- return (typeof rules === 'string' || Array.isArray(rules));
306
+ return typeof rules === 'string' || Array.isArray(rules);
307
307
  },
308
308
  empty: function ($field) {
309
309
  if (!$field || $field.length === 0) {
@@ -345,14 +345,14 @@
345
345
  },
346
346
  fieldDirty: function ($el) {
347
347
  var initialValue = $el.data(metadata.defaultValue);
348
- // Explicitly check for null/undefined here as value may be `false`, so ($el.data(dataInitialValue) || '') would not work
349
- if (initialValue == null) {
348
+ // Explicitly check for undefined/null here as value may be `false`, so ($el.data(dataInitialValue) || '') would not work
349
+ if (initialValue === undefined || initialValue === null) {
350
350
  initialValue = '';
351
351
  } else if (Array.isArray(initialValue)) {
352
352
  initialValue = initialValue.toString();
353
353
  }
354
354
  var currentValue = $el.val();
355
- if (currentValue == null) {
355
+ if (currentValue === undefined || currentValue === null) {
356
356
  currentValue = '';
357
357
  } else if (Array.isArray(currentValue)) {
358
358
  // multiple select values are returned as arrays which are never equal, so do string conversion first
@@ -376,10 +376,10 @@
376
376
  return initialValue !== currentValue;
377
377
  },
378
378
  justDirty: function () {
379
- return (history[0] === 'dirty');
379
+ return history[0] === 'dirty';
380
380
  },
381
381
  justClean: function () {
382
- return (history[0] === 'clean');
382
+ return history[0] === 'clean';
383
383
  },
384
384
  },
385
385
 
@@ -397,19 +397,19 @@
397
397
  key = event.which,
398
398
  isInput = $field.is(selector.input),
399
399
  isCheckbox = $field.is(selector.checkbox),
400
- isInDropdown = ($field.closest(selector.uiDropdown).length > 0),
400
+ isInDropdown = $field.closest(selector.uiDropdown).length > 0,
401
401
  keyCode = {
402
402
  enter: 13,
403
403
  escape: 27,
404
404
  }
405
405
  ;
406
- if (key == keyCode.escape) {
406
+ if (key === keyCode.escape) {
407
407
  module.verbose('Escape key pressed blurring field');
408
408
  $field[0]
409
409
  .blur()
410
410
  ;
411
411
  }
412
- if (!event.ctrlKey && key == keyCode.enter && isInput && !isInDropdown && !isCheckbox) {
412
+ if (!event.ctrlKey && key === keyCode.enter && isInput && !isInDropdown && !isCheckbox) {
413
413
  if (!keyHeldDown) {
414
414
  $field.one('keyup' + eventNamespace, module.event.field.keyup);
415
415
  module.submit();
@@ -428,7 +428,7 @@
428
428
  $fieldGroup = $field.closest($group),
429
429
  validationRules = module.get.validation($field)
430
430
  ;
431
- if (validationRules && (settings.on == 'blur' || ($fieldGroup.hasClass(className.error) && settings.revalidate))) {
431
+ if (validationRules && (settings.on === 'blur' || ($fieldGroup.hasClass(className.error) && settings.revalidate))) {
432
432
  module.debug('Revalidating field', $field, validationRules);
433
433
  module.validate.field(validationRules);
434
434
  if (!settings.inline) {
@@ -442,7 +442,7 @@
442
442
  $fieldGroup = $field.closest($group),
443
443
  validationRules = module.get.validation($field)
444
444
  ;
445
- if (validationRules && (settings.on == 'change' || ($fieldGroup.hasClass(className.error) && settings.revalidate))) {
445
+ if (validationRules && (settings.on === 'change' || ($fieldGroup.hasClass(className.error) && settings.revalidate))) {
446
446
  clearTimeout(module.timer);
447
447
  module.timer = setTimeout(function () {
448
448
  module.debug('Revalidating field', $field, validationRules);
@@ -476,7 +476,7 @@
476
476
  return false;
477
477
  }
478
478
 
479
- return (rule.value !== undefined)
479
+ return rule.value !== undefined
480
480
  ? rule.value
481
481
  : rule.type.match(settings.regExp.bracket)[1] + '';
482
482
  },
@@ -488,18 +488,18 @@
488
488
  return rule.type;
489
489
  },
490
490
  changeEvent: function (type, $input) {
491
- if (type == 'checkbox' || type == 'radio' || type == 'hidden' || $input.is('select')) {
491
+ if (type === 'checkbox' || type === 'radio' || type === 'hidden' || $input.is('select')) {
492
492
  return 'change';
493
493
  }
494
494
 
495
495
  return module.get.inputEvent();
496
496
  },
497
497
  inputEvent: function () {
498
- return (document.createElement('input').oninput !== undefined)
498
+ return document.createElement('input').oninput !== undefined
499
499
  ? 'input'
500
- : (document.createElement('input').onpropertychange !== undefined)
500
+ : (document.createElement('input').onpropertychange !== undefined
501
501
  ? 'propertychange'
502
- : 'keyup';
502
+ : 'keyup');
503
503
  },
504
504
  fieldsFromShorthand: function (fields) {
505
505
  var
@@ -532,8 +532,8 @@
532
532
  prompt = isFunction(rule.prompt)
533
533
  ? rule.prompt(value)
534
534
  : rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,
535
- requiresValue = (prompt.search('{value}') !== -1),
536
- requiresName = (prompt.search('{name}') !== -1),
535
+ requiresValue = prompt.search('{value}') !== -1,
536
+ requiresName = prompt.search('{name}') !== -1,
537
537
  $label,
538
538
  name,
539
539
  parts,
@@ -542,13 +542,11 @@
542
542
  if (ancillary && ['integer', 'decimal', 'number'].indexOf(ruleName) >= 0 && ancillary.indexOf('..') >= 0) {
543
543
  parts = ancillary.split('..', 2);
544
544
  if (!rule.prompt) {
545
- suffixPrompt = (
546
- parts[0] === ''
547
- ? settings.prompt.maxValue.replace(/{ruleValue}/g, '{max}')
548
- : parts[1] === ''
549
- ? settings.prompt.minValue.replace(/{ruleValue}/g, '{min}')
550
- : settings.prompt.range
551
- );
545
+ suffixPrompt = parts[0] === ''
546
+ ? settings.prompt.maxValue.replace(/{ruleValue}/g, '{max}')
547
+ : (parts[1] === ''
548
+ ? settings.prompt.minValue.replace(/{ruleValue}/g, '{min}')
549
+ : settings.prompt.range);
552
550
  prompt += suffixPrompt.replace(/{name}/g, ' ' + settings.text.and);
553
551
  }
554
552
  prompt = prompt.replace(/{min}/g, parts[0]);
@@ -559,7 +557,7 @@
559
557
  }
560
558
  if (requiresName) {
561
559
  $label = $field.closest(selector.group).find('label').eq(0);
562
- name = ($label.length == 1)
560
+ name = $label.length === 1
563
561
  ? $label.text()
564
562
  : $field.prop('placeholder') || settings.text.unspecifiedField;
565
563
  prompt = prompt.replace(/{name}/g, name);
@@ -576,8 +574,8 @@
576
574
  if ($.isPlainObject(parameters)) {
577
575
  var
578
576
  keys = Object.keys(parameters),
579
- isLegacySettings = (keys.length > 0)
580
- ? (parameters[keys[0]].identifier !== undefined && parameters[keys[0]].rules !== undefined)
577
+ isLegacySettings = keys.length > 0
578
+ ? parameters[keys[0]].identifier !== undefined && parameters[keys[0]].rules !== undefined
581
579
  : false
582
580
  ;
583
581
  if (isLegacySettings) {
@@ -698,9 +696,9 @@
698
696
  value = $field.val(),
699
697
  isCheckbox = $field.is(selector.checkbox),
700
698
  isRadio = $field.is(selector.radio),
701
- isMultiple = (name.indexOf('[]') !== -1),
702
- isCalendar = ($calendar.length > 0 && module.can.useElement('calendar')),
703
- isChecked = (isCheckbox)
699
+ isMultiple = name.indexOf('[]') !== -1,
700
+ isCalendar = $calendar.length > 0 && module.can.useElement('calendar'),
701
+ isChecked = isCheckbox
704
702
  ? $field.is(':checked')
705
703
  : false
706
704
  ;
@@ -722,7 +720,7 @@
722
720
  } else {
723
721
  if (isRadio) {
724
722
  if (values[name] === undefined || values[name] === false) {
725
- values[name] = (isChecked)
723
+ values[name] = isChecked
726
724
  ? value || true
727
725
  : false;
728
726
  }
@@ -732,42 +730,53 @@
732
730
  var date = $calendar.calendar('get date');
733
731
 
734
732
  if (date !== null) {
735
- if (settings.dateHandling == 'date') {
736
- values[name] = date;
737
- } else if (settings.dateHandling == 'input') {
738
- values[name] = $calendar.calendar('get input date');
739
- } else if (settings.dateHandling == 'formatter') {
740
- var type = $calendar.calendar('setting', 'type');
733
+ switch (settings.dateHandling) {
734
+ case 'date': {
735
+ values[name] = date;
741
736
 
742
- switch (type) {
743
- case 'date':
744
- values[name] = settings.formatter.date(date);
745
-
746
- break;
747
-
748
- case 'datetime':
749
- values[name] = settings.formatter.datetime(date);
750
-
751
- break;
752
-
753
- case 'time':
754
- values[name] = settings.formatter.time(date);
755
-
756
- break;
757
-
758
- case 'month':
759
- values[name] = settings.formatter.month(date);
760
-
761
- break;
762
-
763
- case 'year':
764
- values[name] = settings.formatter.year(date);
765
-
766
- break;
737
+ break;
738
+ }
739
+ case 'input': {
740
+ values[name] = $calendar.calendar('get input date');
767
741
 
768
- default:
769
- module.debug('Wrong calendar mode', $calendar, type);
770
- values[name] = '';
742
+ break;
743
+ }
744
+ case 'formatter': {
745
+ var type = $calendar.calendar('setting', 'type');
746
+
747
+ switch (type) {
748
+ case 'date': {
749
+ values[name] = settings.formatter.date(date);
750
+
751
+ break;
752
+ }
753
+ case 'datetime': {
754
+ values[name] = settings.formatter.datetime(date);
755
+
756
+ break;
757
+ }
758
+ case 'time': {
759
+ values[name] = settings.formatter.time(date);
760
+
761
+ break;
762
+ }
763
+ case 'month': {
764
+ values[name] = settings.formatter.month(date);
765
+
766
+ break;
767
+ }
768
+ case 'year': {
769
+ values[name] = settings.formatter.year(date);
770
+
771
+ break;
772
+ }
773
+ default: {
774
+ module.debug('Wrong calendar mode', $calendar, type);
775
+ values[name] = '';
776
+ }
777
+ }
778
+
779
+ break;
771
780
  }
772
781
  }
773
782
  } else {
@@ -856,7 +865,7 @@
856
865
  // For each new rule, check if there's not already one with the same type
857
866
  $.each(newValidation.rules, function (_index, rule) {
858
867
  if ($.grep(validation[name].rules, function (item) {
859
- return item.type == rule.type;
868
+ return item.type === rule.type;
860
869
  }).length === 0) {
861
870
  validation[name].rules.push(rule);
862
871
  }
@@ -873,9 +882,9 @@
873
882
  $field = module.get.field(identifier),
874
883
  $fieldGroup = $field.closest($group),
875
884
  $prompt = $fieldGroup.children(selector.prompt),
876
- promptExists = ($prompt.length > 0)
885
+ promptExists = $prompt.length > 0
877
886
  ;
878
- errors = (typeof errors === 'string')
887
+ errors = typeof errors === 'string'
879
888
  ? [errors]
880
889
  : errors;
881
890
  module.verbose('Adding field error state', identifier);
@@ -1014,11 +1023,11 @@
1014
1023
  var
1015
1024
  $el = $(el),
1016
1025
  $parent = $el.parent(),
1017
- isCheckbox = ($el.filter(selector.checkbox).length > 0),
1026
+ isCheckbox = $el.filter(selector.checkbox).length > 0,
1018
1027
  isDropdown = $parent.is(selector.uiDropdown) && module.can.useElement('dropdown'),
1019
1028
  $calendar = $el.closest(selector.uiCalendar),
1020
- isCalendar = ($calendar.length > 0 && module.can.useElement('calendar')),
1021
- value = (isCheckbox)
1029
+ isCalendar = $calendar.length > 0 && module.can.useElement('calendar'),
1030
+ value = isCheckbox
1022
1031
  ? $el.is(':checked')
1023
1032
  : $el.val()
1024
1033
  ;
@@ -1057,9 +1066,9 @@
1057
1066
  isMultiple = Array.isArray(value),
1058
1067
  isCheckbox = $element.is(selector.uiCheckbox) && module.can.useElement('checkbox'),
1059
1068
  isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'),
1060
- isRadio = ($field.is(selector.radio) && isCheckbox),
1061
- isCalendar = ($calendar.length > 0 && module.can.useElement('calendar')),
1062
- fieldExists = ($field.length > 0),
1069
+ isRadio = $field.is(selector.radio) && isCheckbox,
1070
+ isCalendar = $calendar.length > 0 && module.can.useElement('calendar'),
1071
+ fieldExists = $field.length > 0,
1063
1072
  $multipleField
1064
1073
  ;
1065
1074
  if (fieldExists) {
@@ -1135,13 +1144,13 @@
1135
1144
  var
1136
1145
  $el = $(el),
1137
1146
  $elGroup = $el.closest($group),
1138
- isCheckbox = ($el.filter(selector.checkbox).length > 0),
1147
+ isCheckbox = $el.filter(selector.checkbox).length > 0,
1139
1148
  isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required),
1140
1149
  isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled),
1141
1150
  validation = module.get.validation($el),
1142
1151
  hasEmptyRule = validation
1143
1152
  ? $.grep(validation.rules, function (rule) {
1144
- return rule.type == 'empty';
1153
+ return rule.type === 'empty';
1145
1154
  }) !== 0
1146
1155
  : false,
1147
1156
  identifier = validation.identifier || $el.attr('id') || $el.attr('name') || $el.data(metadata.validate)
@@ -1158,9 +1167,9 @@
1158
1167
  });
1159
1168
  },
1160
1169
  optional: function (identifier, bool) {
1161
- bool = (bool !== false);
1170
+ bool = bool !== false;
1162
1171
  $.each(validation, function (fieldName, field) {
1163
- if (identifier == fieldName || identifier == field.identifier) {
1172
+ if (identifier === fieldName || identifier === field.identifier) {
1164
1173
  field.optional = bool;
1165
1174
  }
1166
1175
  });
@@ -1228,7 +1237,7 @@
1228
1237
 
1229
1238
  // takes a validation object and returns whether field passes validation
1230
1239
  field: function (field, fieldName, showErrors) {
1231
- showErrors = (showErrors !== undefined)
1240
+ showErrors = showErrors !== undefined
1232
1241
  ? showErrors
1233
1242
  : true;
1234
1243
  if (typeof field === 'string') {
@@ -1239,7 +1248,7 @@
1239
1248
  var
1240
1249
  identifier = field.identifier || fieldName,
1241
1250
  $field = module.get.field(identifier),
1242
- $dependsField = (field.depends)
1251
+ $dependsField = field.depends
1243
1252
  ? module.get.field(field.depends)
1244
1253
  : false,
1245
1254
  fieldValid = true,
@@ -1302,11 +1311,13 @@
1302
1311
  invalidFields = [],
1303
1312
  isCheckbox = $field.is(selector.checkbox),
1304
1313
  isValid = function (field) {
1305
- var value = (isCheckbox ? $(field).filter(':checked').val() : $(field).val());
1314
+ var value = isCheckbox ? $(field).filter(':checked').val() : $(field).val();
1306
1315
  // cast to string avoiding encoding special values
1307
- value = (value === undefined || value === '' || value === null)
1316
+ value = value === undefined || value === '' || value === null
1308
1317
  ? ''
1309
- : (settings.shouldTrim && rule.shouldTrim !== false) || rule.shouldTrim ? String(value + '').trim() : String(value + '');
1318
+ : ((settings.shouldTrim && rule.shouldTrim !== false) || rule.shouldTrim
1319
+ ? String(value + '').trim()
1320
+ : String(value + ''));
1310
1321
 
1311
1322
  return ruleFunction.call(field, value, ancillary, $module);
1312
1323
  }
@@ -1442,16 +1453,16 @@
1442
1453
  query = query.split(/[ .]/);
1443
1454
  maxDepth = query.length - 1;
1444
1455
  $.each(query, function (depth, value) {
1445
- var camelCaseValue = (depth != maxDepth)
1456
+ var camelCaseValue = depth !== maxDepth
1446
1457
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1447
1458
  : query;
1448
- if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
1459
+ if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
1449
1460
  object = object[camelCaseValue];
1450
1461
  } else if (object[camelCaseValue] !== undefined) {
1451
1462
  found = object[camelCaseValue];
1452
1463
 
1453
1464
  return false;
1454
- } else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
1465
+ } else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
1455
1466
  object = object[value];
1456
1467
  } else if (object[value] !== undefined) {
1457
1468
  found = object[value];
@@ -1481,7 +1492,7 @@
1481
1492
  module.initialize();
1482
1493
  });
1483
1494
 
1484
- return (returnedValue !== undefined)
1495
+ return returnedValue !== undefined
1485
1496
  ? returnedValue
1486
1497
  : this;
1487
1498
  };
@@ -1689,7 +1700,7 @@
1689
1700
 
1690
1701
  // checkbox checked
1691
1702
  checked: function () {
1692
- return ($(this).filter(':checked').length > 0);
1703
+ return $(this).filter(':checked').length > 0;
1693
1704
  },
1694
1705
 
1695
1706
  // is most likely an email
@@ -1713,10 +1724,10 @@
1713
1724
  ;
1714
1725
  // regular expression specified as /baz/gi (flags)
1715
1726
  if (regExpParts) {
1716
- regExp = (regExpParts.length >= 2)
1727
+ regExp = regExpParts.length >= 2
1717
1728
  ? regExpParts[1]
1718
1729
  : regExp;
1719
- flags = (regExpParts.length >= 3)
1730
+ flags = regExpParts.length >= 3
1720
1731
  ? regExpParts[2]
1721
1732
  : '';
1722
1733
  }
@@ -1748,7 +1759,7 @@
1748
1759
  if (!range || ['', '..'].indexOf(range) !== -1) {
1749
1760
 
1750
1761
  // do nothing
1751
- } else if (range.indexOf('..') == -1) {
1762
+ } else if (range.indexOf('..') === -1) {
1752
1763
  if (regExp.test(range)) {
1753
1764
  min = range - 0;
1754
1765
  max = min;
@@ -1782,36 +1793,36 @@
1782
1793
 
1783
1794
  // is value (case insensitive)
1784
1795
  is: function (value, text) {
1785
- text = (typeof text === 'string')
1796
+ text = typeof text === 'string'
1786
1797
  ? text.toLowerCase()
1787
1798
  : text;
1788
- value = (typeof value === 'string')
1799
+ value = typeof value === 'string'
1789
1800
  ? value.toLowerCase()
1790
1801
  : value;
1791
1802
 
1792
- return (value == text);
1803
+ return value == text;
1793
1804
  },
1794
1805
 
1795
1806
  // is value
1796
1807
  isExactly: function (value, text) {
1797
- return (value == text);
1808
+ return value == text;
1798
1809
  },
1799
1810
 
1800
1811
  // value is not another value (case insensitive)
1801
1812
  not: function (value, notValue) {
1802
- value = (typeof value === 'string')
1813
+ value = typeof value === 'string'
1803
1814
  ? value.toLowerCase()
1804
1815
  : value;
1805
- notValue = (typeof notValue === 'string')
1816
+ notValue = typeof notValue === 'string'
1806
1817
  ? notValue.toLowerCase()
1807
1818
  : notValue;
1808
1819
 
1809
- return (value != notValue);
1820
+ return value != notValue;
1810
1821
  },
1811
1822
 
1812
1823
  // value is not another value (case sensitive)
1813
1824
  notExactly: function (value, notValue) {
1814
- return (value != notValue);
1825
+ return value != notValue;
1815
1826
  },
1816
1827
 
1817
1828
  // value contains text (insensitive)
@@ -1819,7 +1830,7 @@
1819
1830
  // escape regex characters
1820
1831
  text = text.replace($.fn.form.settings.regExp.escape, '\\$&');
1821
1832
 
1822
- return (value.search(new RegExp(text, 'i')) !== -1);
1833
+ return value.search(new RegExp(text, 'i')) !== -1;
1823
1834
  },
1824
1835
 
1825
1836
  // value contains text (case sensitive)
@@ -1827,7 +1838,7 @@
1827
1838
  // escape regex characters
1828
1839
  text = text.replace($.fn.form.settings.regExp.escape, '\\$&');
1829
1840
 
1830
- return (value.search(new RegExp(text)) !== -1);
1841
+ return value.search(new RegExp(text)) !== -1;
1831
1842
  },
1832
1843
 
1833
1844
  // value contains text (insensitive)
@@ -1835,7 +1846,7 @@
1835
1846
  // escape regex characters
1836
1847
  text = text.replace($.fn.form.settings.regExp.escape, '\\$&');
1837
1848
 
1838
- return (value.search(new RegExp(text, 'i')) === -1);
1849
+ return value.search(new RegExp(text, 'i')) === -1;
1839
1850
  },
1840
1851
 
1841
1852
  // value contains text (case sensitive)
@@ -1843,27 +1854,27 @@
1843
1854
  // escape regex characters
1844
1855
  text = text.replace($.fn.form.settings.regExp.escape, '\\$&');
1845
1856
 
1846
- return (value.search(new RegExp(text)) === -1);
1857
+ return value.search(new RegExp(text)) === -1;
1847
1858
  },
1848
1859
 
1849
1860
  // is at least string length
1850
1861
  minLength: function (value, requiredLength) {
1851
- return (value !== undefined)
1852
- ? (value.length >= requiredLength)
1862
+ return value !== undefined
1863
+ ? value.length >= requiredLength
1853
1864
  : false;
1854
1865
  },
1855
1866
 
1856
1867
  // is exactly length
1857
1868
  exactLength: function (value, requiredLength) {
1858
- return (value !== undefined)
1859
- ? (value.length == requiredLength)
1869
+ return value !== undefined
1870
+ ? value.length === Number(requiredLength)
1860
1871
  : false;
1861
1872
  },
1862
1873
 
1863
1874
  // is less than length
1864
1875
  maxLength: function (value, maxLength) {
1865
- return (value !== undefined)
1866
- ? (value.length <= maxLength)
1876
+ return value !== undefined
1877
+ ? value.length <= maxLength
1867
1878
  : false;
1868
1879
  },
1869
1880
 
@@ -1893,8 +1904,8 @@
1893
1904
  }
1894
1905
  }
1895
1906
 
1896
- return (matchingValue !== undefined)
1897
- ? (value.toString() == matchingValue.toString())
1907
+ return matchingValue !== undefined
1908
+ ? value.toString() === matchingValue.toString()
1898
1909
  : false;
1899
1910
  },
1900
1911
 
@@ -1925,8 +1936,8 @@
1925
1936
  }
1926
1937
  }
1927
1938
 
1928
- return (matchingValue !== undefined)
1929
- ? (value.toString() !== matchingValue.toString())
1939
+ return matchingValue !== undefined
1940
+ ? value.toString() !== matchingValue.toString()
1930
1941
  : false;
1931
1942
  },
1932
1943
 
@@ -1976,7 +1987,7 @@
1976
1987
  },
1977
1988
  valid = {},
1978
1989
  validCard = false,
1979
- requiredTypes = (typeof cardTypes === 'string')
1990
+ requiredTypes = typeof cardTypes === 'string'
1980
1991
  ? cardTypes.split(',')
1981
1992
  : false,
1982
1993
  unionPay,
@@ -1997,8 +2008,8 @@
1997
2008
  validation = cards[type];
1998
2009
  if (validation) {
1999
2010
  valid = {
2000
- length: ($.inArray(cardNumber.length, validation.length) !== -1),
2001
- pattern: (cardNumber.search(validation.pattern) !== -1),
2011
+ length: $.inArray(cardNumber.length, validation.length) !== -1,
2012
+ pattern: cardNumber.search(validation.pattern) !== -1,
2002
2013
  };
2003
2014
  if (valid.length > 0 && valid.pattern) {
2004
2015
  validCard = true;
@@ -2013,8 +2024,8 @@
2013
2024
 
2014
2025
  // skip luhn for UnionPay
2015
2026
  unionPay = {
2016
- number: ($.inArray(cardNumber.length, cards.unionPay.length) !== -1),
2017
- pattern: (cardNumber.search(cards.unionPay.pattern) !== -1),
2027
+ number: $.inArray(cardNumber.length, cards.unionPay.length) !== -1,
2028
+ pattern: cardNumber.search(cards.unionPay.pattern) !== -1,
2018
2029
  };
2019
2030
  if (unionPay.number && unionPay.pattern) {
2020
2031
  return true;
@@ -2035,40 +2046,46 @@
2035
2046
  multiple ^= 1; // eslint-disable-line no-bitwise
2036
2047
  }
2037
2048
 
2038
- return (sum % 10 === 0 && sum > 0);
2049
+ return sum % 10 === 0 && sum > 0;
2039
2050
  },
2040
2051
 
2041
2052
  minCount: function (value, minCount) {
2042
- if (minCount == 0) {
2053
+ minCount = Number(minCount);
2054
+
2055
+ if (minCount === 0) {
2043
2056
  return true;
2044
2057
  }
2045
- if (minCount == 1) {
2046
- return (value !== '');
2058
+ if (minCount === 1) {
2059
+ return value !== '';
2047
2060
  }
2048
2061
 
2049
- return (value.split(',').length >= minCount);
2062
+ return value.split(',').length >= minCount;
2050
2063
  },
2051
2064
 
2052
2065
  exactCount: function (value, exactCount) {
2053
- if (exactCount == 0) {
2054
- return (value === '');
2066
+ exactCount = Number(exactCount);
2067
+
2068
+ if (exactCount === 0) {
2069
+ return value === '';
2055
2070
  }
2056
- if (exactCount == 1) {
2057
- return (value !== '' && value.search(',') === -1);
2071
+ if (exactCount === 1) {
2072
+ return value !== '' && value.search(',') === -1;
2058
2073
  }
2059
2074
 
2060
- return (value.split(',').length == exactCount);
2075
+ return value.split(',').length === exactCount;
2061
2076
  },
2062
2077
 
2063
2078
  maxCount: function (value, maxCount) {
2064
- if (maxCount == 0) {
2079
+ maxCount = Number(maxCount);
2080
+
2081
+ if (maxCount === 0) {
2065
2082
  return false;
2066
2083
  }
2067
- if (maxCount == 1) {
2068
- return (value.search(',') === -1);
2084
+ if (maxCount === 1) {
2085
+ return value.search(',') === -1;
2069
2086
  }
2070
2087
 
2071
- return (value.split(',').length <= maxCount);
2088
+ return value.split(',').length <= maxCount;
2072
2089
  },
2073
2090
  },
2074
2091