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.
- package/.eslint/eqeqeq-rule.js +18 -0
- package/.eslint/index.js +26 -0
- package/.eslint/no-extra-parens-rule.js +17 -0
- package/.eslint/package.json +11 -0
- package/.eslintrc.js +7 -13
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +24 -24
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +2 -2
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +58 -58
- package/dist/components/api.min.js +2 -2
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +1 -1
- package/dist/components/button.min.css +1 -1
- package/dist/components/calendar.css +1 -1
- package/dist/components/calendar.js +84 -72
- package/dist/components/calendar.min.css +1 -1
- package/dist/components/calendar.min.js +2 -2
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +17 -17
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +2 -2
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +1 -1
- package/dist/components/dimmer.js +18 -18
- package/dist/components/dimmer.min.css +1 -1
- package/dist/components/dimmer.min.js +2 -2
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +1 -1
- package/dist/components/dropdown.js +264 -254
- package/dist/components/dropdown.min.css +1 -1
- package/dist/components/dropdown.min.js +2 -2
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +19 -19
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +2 -2
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +1 -1
- package/dist/components/flag.min.css +1 -1
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +29 -25
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +1 -1
- package/dist/components/form.js +158 -141
- package/dist/components/form.min.css +1 -1
- package/dist/components/form.min.js +2 -2
- package/dist/components/grid.css +1 -1
- package/dist/components/grid.min.css +1 -1
- package/dist/components/header.css +1 -1
- package/dist/components/header.min.css +1 -1
- package/dist/components/icon.css +1 -1
- package/dist/components/icon.min.css +1 -1
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +1 -1
- package/dist/components/input.min.css +1 -1
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +1 -1
- package/dist/components/label.min.css +1 -1
- package/dist/components/list.css +1 -1
- package/dist/components/list.min.css +1 -1
- package/dist/components/loader.css +1 -1
- package/dist/components/loader.min.css +1 -1
- package/dist/components/message.css +1 -1
- package/dist/components/message.min.css +1 -1
- package/dist/components/modal.css +1 -1
- package/dist/components/modal.js +32 -28
- package/dist/components/modal.min.css +1 -1
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +10 -10
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +2 -2
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +1 -1
- package/dist/components/popup.js +79 -71
- package/dist/components/popup.min.css +1 -1
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +40 -42
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +2 -2
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +13 -13
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +2 -2
- package/dist/components/reset.css +1 -1
- package/dist/components/reset.min.css +1 -1
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +1 -1
- package/dist/components/search.js +42 -42
- package/dist/components/search.min.css +1 -1
- package/dist/components/search.min.js +2 -2
- package/dist/components/segment.css +1 -1
- package/dist/components/segment.min.css +1 -1
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +36 -36
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +2 -2
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +29 -29
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +2 -2
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +16 -16
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +2 -2
- package/dist/components/slider.js +79 -58
- package/dist/components/slider.min.js +2 -2
- package/dist/components/state.js +14 -14
- package/dist/components/state.min.js +2 -2
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +1 -1
- package/dist/components/step.min.css +1 -1
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +25 -25
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +2 -2
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +34 -34
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +2 -2
- package/dist/components/table.css +1 -1
- package/dist/components/table.min.css +1 -1
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +43 -19
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +26 -26
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +2 -2
- package/dist/components/visibility.js +29 -29
- package/dist/components/visibility.min.js +2 -2
- package/dist/semantic.css +50 -50
- package/dist/semantic.js +1218 -1120
- package/dist/semantic.min.css +1 -1
- package/dist/semantic.min.js +2 -2
- package/gulpfile.js +1 -1
- package/package.json +2 -1
- package/scripts/nightly-version.js +3 -1
- package/src/definitions/behaviors/api.js +57 -57
- package/src/definitions/behaviors/form.js +157 -140
- package/src/definitions/behaviors/state.js +13 -13
- package/src/definitions/behaviors/visibility.js +28 -28
- package/src/definitions/globals/site.js +15 -15
- package/src/definitions/modules/accordion.js +23 -23
- package/src/definitions/modules/calendar.js +83 -71
- package/src/definitions/modules/checkbox.js +16 -16
- package/src/definitions/modules/dimmer.js +17 -17
- package/src/definitions/modules/dropdown.js +263 -253
- package/src/definitions/modules/embed.js +18 -18
- package/src/definitions/modules/flyout.js +28 -24
- package/src/definitions/modules/modal.js +31 -27
- package/src/definitions/modules/nag.js +9 -9
- package/src/definitions/modules/popup.js +78 -70
- package/src/definitions/modules/progress.js +39 -41
- package/src/definitions/modules/rating.js +12 -12
- package/src/definitions/modules/search.js +41 -41
- package/src/definitions/modules/shape.js +35 -35
- package/src/definitions/modules/sidebar.js +28 -28
- package/src/definitions/modules/slider.js +78 -57
- package/src/definitions/modules/sticky.js +24 -24
- package/src/definitions/modules/tab.js +33 -33
- package/src/definitions/modules/toast.js +42 -18
- package/src/definitions/modules/transition.js +25 -25
- package/tasks/admin/components/create.js +1 -1
- package/tasks/admin/components/init.js +2 -2
- package/tasks/admin/components/update.js +4 -4
- package/tasks/admin/distributions/create.js +6 -7
- package/tasks/admin/distributions/init.js +2 -2
- package/tasks/admin/distributions/update.js +4 -4
- package/tasks/admin/publish.js +1 -3
- package/tasks/admin/register.js +5 -5
- package/tasks/admin/release.js +1 -3
- package/tasks/build/assets.js +1 -1
- package/tasks/build.js +1 -1
- package/tasks/check-install.js +1 -1
- package/tasks/clean.js +1 -1
- package/tasks/collections/admin.js +1 -1
- package/tasks/collections/rtl.js +1 -1
- package/tasks/config/admin/github.js +3 -4
- package/tasks/config/npm/gulpfile.js +1 -1
- package/tasks/config/project/config.js +10 -8
- package/tasks/config/project/install.js +14 -14
- package/tasks/config/project/release.js +3 -2
- package/tasks/config/tasks.js +4 -4
- package/tasks/config/user.js +5 -3
- package/tasks/docs/build.js +1 -1
- package/tasks/docs/metadata.js +2 -2
- package/tasks/docs/serve.js +2 -1
- package/tasks/install.js +3 -3
- package/tasks/rtl/build.js +1 -3
- package/tasks/rtl/watch.js +1 -3
- package/tasks/version.js +1 -3
- package/tasks/watch.js +1 -1
- package/test/modules/module.spec.js +1 -1
package/dist/components/form.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.1-beta.
|
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 =
|
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 =
|
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 =
|
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 =
|
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 (!
|
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 =
|
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
|
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
|
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
|
349
|
-
if (initialValue
|
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
|
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
|
379
|
+
return history[0] === 'dirty';
|
380
380
|
},
|
381
381
|
justClean: function () {
|
382
|
-
return
|
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 =
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 =
|
536
|
-
requiresName =
|
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
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
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 =
|
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 =
|
580
|
-
?
|
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 =
|
702
|
-
isCalendar =
|
703
|
-
isChecked =
|
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] =
|
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
|
-
|
736
|
-
|
737
|
-
|
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
|
-
|
743
|
-
|
744
|
-
|
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
|
-
|
769
|
-
|
770
|
-
|
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
|
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 =
|
885
|
+
promptExists = $prompt.length > 0
|
877
886
|
;
|
878
|
-
errors =
|
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 =
|
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 =
|
1021
|
-
value =
|
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 =
|
1061
|
-
isCalendar =
|
1062
|
-
fieldExists =
|
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 =
|
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
|
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 =
|
1170
|
+
bool = bool !== false;
|
1162
1171
|
$.each(validation, function (fieldName, field) {
|
1163
|
-
if (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 =
|
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 =
|
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 =
|
1314
|
+
var value = isCheckbox ? $(field).filter(':checked').val() : $(field).val();
|
1306
1315
|
// cast to string avoiding encoding special values
|
1307
|
-
value =
|
1316
|
+
value = value === undefined || value === '' || value === null
|
1308
1317
|
? ''
|
1309
|
-
: (settings.shouldTrim && rule.shouldTrim !== false) || rule.shouldTrim
|
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 =
|
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
|
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
|
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
|
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
|
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 =
|
1727
|
+
regExp = regExpParts.length >= 2
|
1717
1728
|
? regExpParts[1]
|
1718
1729
|
: regExp;
|
1719
|
-
flags =
|
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('..')
|
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 =
|
1796
|
+
text = typeof text === 'string'
|
1786
1797
|
? text.toLowerCase()
|
1787
1798
|
: text;
|
1788
|
-
value =
|
1799
|
+
value = typeof value === 'string'
|
1789
1800
|
? value.toLowerCase()
|
1790
1801
|
: value;
|
1791
1802
|
|
1792
|
-
return
|
1803
|
+
return value == text;
|
1793
1804
|
},
|
1794
1805
|
|
1795
1806
|
// is value
|
1796
1807
|
isExactly: function (value, text) {
|
1797
|
-
return
|
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 =
|
1813
|
+
value = typeof value === 'string'
|
1803
1814
|
? value.toLowerCase()
|
1804
1815
|
: value;
|
1805
|
-
notValue =
|
1816
|
+
notValue = typeof notValue === 'string'
|
1806
1817
|
? notValue.toLowerCase()
|
1807
1818
|
: notValue;
|
1808
1819
|
|
1809
|
-
return
|
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
|
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
|
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
|
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
|
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
|
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
|
1852
|
-
?
|
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
|
1859
|
-
?
|
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
|
1866
|
-
?
|
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
|
1897
|
-
?
|
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
|
1929
|
-
?
|
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 =
|
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:
|
2001
|
-
pattern:
|
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:
|
2017
|
-
pattern:
|
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
|
2049
|
+
return sum % 10 === 0 && sum > 0;
|
2039
2050
|
},
|
2040
2051
|
|
2041
2052
|
minCount: function (value, minCount) {
|
2042
|
-
|
2053
|
+
minCount = Number(minCount);
|
2054
|
+
|
2055
|
+
if (minCount === 0) {
|
2043
2056
|
return true;
|
2044
2057
|
}
|
2045
|
-
if (minCount
|
2046
|
-
return
|
2058
|
+
if (minCount === 1) {
|
2059
|
+
return value !== '';
|
2047
2060
|
}
|
2048
2061
|
|
2049
|
-
return
|
2062
|
+
return value.split(',').length >= minCount;
|
2050
2063
|
},
|
2051
2064
|
|
2052
2065
|
exactCount: function (value, exactCount) {
|
2053
|
-
|
2054
|
-
|
2066
|
+
exactCount = Number(exactCount);
|
2067
|
+
|
2068
|
+
if (exactCount === 0) {
|
2069
|
+
return value === '';
|
2055
2070
|
}
|
2056
|
-
if (exactCount
|
2057
|
-
return
|
2071
|
+
if (exactCount === 1) {
|
2072
|
+
return value !== '' && value.search(',') === -1;
|
2058
2073
|
}
|
2059
2074
|
|
2060
|
-
return
|
2075
|
+
return value.split(',').length === exactCount;
|
2061
2076
|
},
|
2062
2077
|
|
2063
2078
|
maxCount: function (value, maxCount) {
|
2064
|
-
|
2079
|
+
maxCount = Number(maxCount);
|
2080
|
+
|
2081
|
+
if (maxCount === 0) {
|
2065
2082
|
return false;
|
2066
2083
|
}
|
2067
|
-
if (maxCount
|
2068
|
-
return
|
2084
|
+
if (maxCount === 1) {
|
2085
|
+
return value.search(',') === -1;
|
2069
2086
|
}
|
2070
2087
|
|
2071
|
-
return
|
2088
|
+
return value.split(',').length <= maxCount;
|
2072
2089
|
},
|
2073
2090
|
},
|
2074
2091
|
|