fomantic-ui 2.9.3-beta.2 → 2.9.3-beta.21
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/.github/workflows/ci.yml +1 -1
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +1 -1
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +1 -1
- package/dist/components/api.min.js +1 -1
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +2 -2
- package/dist/components/button.min.css +2 -2
- package/dist/components/calendar.css +6 -6
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.min.css +2 -2
- package/dist/components/calendar.min.js +1 -1
- 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 +1 -1
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +1 -1
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +62 -1
- package/dist/components/container.min.css +2 -2
- package/dist/components/dimmer.css +3 -3
- package/dist/components/dimmer.js +1 -1
- package/dist/components/dimmer.min.css +2 -2
- package/dist/components/dimmer.min.js +1 -1
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +42 -4
- package/dist/components/dropdown.js +22 -12
- package/dist/components/dropdown.min.css +2 -2
- package/dist/components/dropdown.min.js +2 -2
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +1 -1
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +1 -1
- package/dist/components/emoji.css +1 -1
- package/dist/components/emoji.min.css +1 -1
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +3 -2
- package/dist/components/flag.min.css +2 -2
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +26 -20
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +53 -20
- package/dist/components/form.js +78 -44
- package/dist/components/form.min.css +2 -2
- package/dist/components/form.min.js +2 -2
- package/dist/components/grid.css +107 -107
- package/dist/components/grid.min.css +2 -2
- 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 +3 -27
- package/dist/components/input.min.css +2 -2
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +21 -2
- package/dist/components/label.min.css +2 -2
- package/dist/components/list.css +13 -13
- package/dist/components/list.min.css +2 -2
- package/dist/components/loader.css +282 -282
- package/dist/components/loader.min.css +2 -2
- package/dist/components/menu.css +9 -3
- package/dist/components/menu.min.css +2 -2
- package/dist/components/message.css +1 -1
- package/dist/components/message.min.css +1 -1
- package/dist/components/modal.css +10 -3
- package/dist/components/modal.js +31 -26
- package/dist/components/modal.min.css +2 -2
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +1 -1
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +1 -1
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +41 -40
- package/dist/components/popup.js +8 -6
- package/dist/components/popup.min.css +2 -2
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +1 -1
- 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 +1 -1
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +1 -1
- 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 +17 -1
- package/dist/components/search.js +3 -2
- package/dist/components/search.min.css +2 -2
- package/dist/components/search.min.js +2 -2
- package/dist/components/segment.css +159 -33
- package/dist/components/segment.min.css +2 -2
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +1 -1
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +1 -1
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +1 -1
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +1 -1
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +1 -1
- package/dist/components/slider.css +1 -1
- package/dist/components/slider.js +122 -26
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +2 -2
- package/dist/components/state.js +1 -1
- package/dist/components/state.min.js +1 -1
- 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 +1 -1
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +1 -1
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +1 -1
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +1 -1
- package/dist/components/table.css +65 -1
- package/dist/components/table.min.css +2 -2
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +6 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/toast.min.css +2 -2
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +1 -1
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +1 -1
- package/dist/components/visibility.js +1 -1
- package/dist/components/visibility.min.js +1 -1
- package/dist/semantic.css +1055 -593
- package/dist/semantic.js +310 -156
- package/dist/semantic.min.css +2 -2
- package/dist/semantic.min.js +2 -2
- package/package.json +1 -1
- package/src/definitions/behaviors/form.js +77 -43
- package/src/definitions/collections/breadcrumb.less +2 -1
- package/src/definitions/collections/form.less +27 -13
- package/src/definitions/collections/grid.less +108 -107
- package/src/definitions/collections/menu.less +29 -21
- package/src/definitions/collections/message.less +2 -1
- package/src/definitions/collections/table.less +68 -1
- package/src/definitions/elements/button.less +4 -2
- package/src/definitions/elements/container.less +65 -1
- package/src/definitions/elements/divider.less +2 -1
- package/src/definitions/elements/emoji.less +2 -1
- package/src/definitions/elements/flag.less +2 -1
- package/src/definitions/elements/header.less +2 -1
- package/src/definitions/elements/icon.less +2 -1
- package/src/definitions/elements/image.less +2 -1
- package/src/definitions/elements/input.less +4 -3
- package/src/definitions/elements/label.less +23 -2
- package/src/definitions/elements/list.less +14 -13
- package/src/definitions/elements/loader.less +73 -72
- package/src/definitions/elements/placeholder.less +2 -1
- package/src/definitions/elements/rail.less +2 -1
- package/src/definitions/elements/reveal.less +2 -1
- package/src/definitions/elements/segment.less +112 -14
- package/src/definitions/elements/step.less +2 -1
- package/src/definitions/elements/text.less +2 -1
- package/src/definitions/globals/reset.less +2 -1
- package/src/definitions/globals/site.less +2 -1
- package/src/definitions/modules/accordion.less +2 -1
- package/src/definitions/modules/calendar.less +3 -2
- package/src/definitions/modules/checkbox.less +2 -1
- package/src/definitions/modules/dimmer.less +4 -3
- package/src/definitions/modules/dropdown.js +21 -11
- package/src/definitions/modules/dropdown.less +55 -4
- package/src/definitions/modules/embed.less +2 -1
- package/src/definitions/modules/flyout.js +25 -19
- package/src/definitions/modules/flyout.less +2 -1
- package/src/definitions/modules/modal.js +30 -25
- package/src/definitions/modules/modal.less +13 -3
- package/src/definitions/modules/nag.less +3 -1
- package/src/definitions/modules/popup.js +7 -5
- package/src/definitions/modules/popup.less +42 -39
- package/src/definitions/modules/progress.less +2 -1
- package/src/definitions/modules/rating.less +2 -1
- package/src/definitions/modules/search.js +2 -1
- package/src/definitions/modules/search.less +20 -1
- package/src/definitions/modules/shape.less +2 -1
- package/src/definitions/modules/sidebar.less +2 -1
- package/src/definitions/modules/slider.js +121 -25
- package/src/definitions/modules/slider.less +2 -1
- package/src/definitions/modules/sticky.less +2 -1
- package/src/definitions/modules/tab.less +2 -1
- package/src/definitions/modules/toast.js +1 -1
- package/src/definitions/modules/toast.less +9 -1
- package/src/definitions/modules/transition.less +2 -1
- package/src/definitions/views/ad.less +2 -1
- package/src/definitions/views/card.less +2 -1
- package/src/definitions/views/comment.less +2 -1
- package/src/definitions/views/feed.less +2 -1
- package/src/definitions/views/item.less +2 -1
- package/src/definitions/views/statistic.less +2 -1
- package/src/overrides.less +7 -0
- package/src/theme.less +7 -6
- package/src/themes/amazon/elements/button.variables +5 -1
- package/src/themes/bootstrap3/elements/button.variables +5 -1
- package/src/themes/chubby/elements/header.variables +6 -1
- package/src/themes/default/collections/message.variables +3 -9
- package/src/themes/default/collections/table.variables +3 -0
- package/src/themes/default/elements/button.variables +1 -3
- package/src/themes/default/elements/container.variables +3 -0
- package/src/themes/default/elements/flag.variables +1 -1
- package/src/themes/default/elements/label.variables +5 -0
- package/src/themes/default/elements/segment.variables +8 -0
- package/src/themes/default/globals/site.variables +20 -1
- package/src/themes/default/globals/variation.variables +7 -1
- package/src/themes/default/modules/dropdown.variables +6 -0
- package/src/themes/default/modules/modal.variables +4 -0
- package/src/themes/default/modules/popup.variables +3 -1
- package/src/themes/default/modules/search.variables +3 -0
- package/src/themes/default/modules/toast.variables +1 -0
- package/src/themes/default/views/card.variables +4 -12
- package/src/themes/github/elements/button.variables +5 -1
- package/src/themes/twitter/elements/button.variables +5 -1
- package/tasks/admin/distributions/create.js +8 -3
- package/tasks/config/project/install.js +3 -0
- package/tasks/config/tasks.js +1 -8
- package/tasks/install.js +15 -5
package/dist/components/form.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.3-beta.
|
2
|
+
* # Fomantic-UI 2.9.3-beta.21+491b07a - Form
|
3
3
|
* https://github.com/fomantic/Fomantic-UI/
|
4
4
|
*
|
5
5
|
*
|
@@ -494,6 +494,11 @@
|
|
494
494
|
.ui.ui.form .field.error .input {
|
495
495
|
color: #9f3a38;
|
496
496
|
}
|
497
|
+
@supports selector(:has(.f)) {
|
498
|
+
.ui.form .fields:has(.error) > label {
|
499
|
+
color: #9f3a38;
|
500
|
+
}
|
501
|
+
}
|
497
502
|
.ui.form .fields.error .field .ui.label,
|
498
503
|
.ui.form .field.error .ui.label {
|
499
504
|
background-color: #ecd1d1;
|
@@ -543,21 +548,7 @@
|
|
543
548
|
border-radius: "";
|
544
549
|
box-shadow: none;
|
545
550
|
}
|
546
|
-
.ui.form .field input:
|
547
|
-
color: #9f3a38;
|
548
|
-
background: #fff6f6;
|
549
|
-
border-color: #e0b4b4;
|
550
|
-
border-radius: "";
|
551
|
-
box-shadow: none;
|
552
|
-
}
|
553
|
-
.ui.form .field input:not(:placeholder-shown):invalid {
|
554
|
-
color: #9f3a38;
|
555
|
-
background: #fff6f6;
|
556
|
-
border-color: #e0b4b4;
|
557
|
-
border-radius: "";
|
558
|
-
box-shadow: none;
|
559
|
-
}
|
560
|
-
.ui.form .field input:not(:-ms-input-placeholder):invalid {
|
551
|
+
.ui.form:not(.initial) .field input:invalid {
|
561
552
|
color: #9f3a38;
|
562
553
|
background: #fff6f6;
|
563
554
|
border-color: #e0b4b4;
|
@@ -707,6 +698,11 @@
|
|
707
698
|
.ui.inverted.form .error.field label {
|
708
699
|
color: #ecd1d1;
|
709
700
|
}
|
701
|
+
@supports selector(:has(.f)) {
|
702
|
+
.ui.inverted.form .fields:has(.error) > label {
|
703
|
+
color: #ecd1d1;
|
704
|
+
}
|
705
|
+
}
|
710
706
|
|
711
707
|
/* On Form */
|
712
708
|
.ui.form.info .info.message:not(:empty) {
|
@@ -740,6 +736,11 @@
|
|
740
736
|
.ui.ui.form .field.info .input {
|
741
737
|
color: #276f86;
|
742
738
|
}
|
739
|
+
@supports selector(:has(.f)) {
|
740
|
+
.ui.form .fields:has(.info) > label {
|
741
|
+
color: #276f86;
|
742
|
+
}
|
743
|
+
}
|
743
744
|
.ui.form .fields.info .field .ui.label,
|
744
745
|
.ui.form .field.info .ui.label {
|
745
746
|
background-color: #c6e3e9;
|
@@ -932,6 +933,11 @@
|
|
932
933
|
.ui.inverted.form .info.field label {
|
933
934
|
color: #c6e3e9;
|
934
935
|
}
|
936
|
+
@supports selector(:has(.f)) {
|
937
|
+
.ui.inverted.form .fields:has(.info) > label {
|
938
|
+
color: #c6e3e9;
|
939
|
+
}
|
940
|
+
}
|
935
941
|
|
936
942
|
/* On Form */
|
937
943
|
.ui.form.success .success.message:not(:empty) {
|
@@ -965,6 +971,11 @@
|
|
965
971
|
.ui.ui.form .field.success .input {
|
966
972
|
color: #2c662d;
|
967
973
|
}
|
974
|
+
@supports selector(:has(.f)) {
|
975
|
+
.ui.form .fields:has(.success) > label {
|
976
|
+
color: #2c662d;
|
977
|
+
}
|
978
|
+
}
|
968
979
|
.ui.form .fields.success .field .ui.label,
|
969
980
|
.ui.form .field.success .ui.label {
|
970
981
|
background-color: #b9d1ad;
|
@@ -1157,6 +1168,11 @@
|
|
1157
1168
|
.ui.inverted.form .success.field label {
|
1158
1169
|
color: #b9d1ad;
|
1159
1170
|
}
|
1171
|
+
@supports selector(:has(.f)) {
|
1172
|
+
.ui.inverted.form .fields:has(.success) > label {
|
1173
|
+
color: #b9d1ad;
|
1174
|
+
}
|
1175
|
+
}
|
1160
1176
|
|
1161
1177
|
/* On Form */
|
1162
1178
|
.ui.form.warning .warning.message:not(:empty) {
|
@@ -1190,6 +1206,11 @@
|
|
1190
1206
|
.ui.ui.form .field.warning .input {
|
1191
1207
|
color: #573a08;
|
1192
1208
|
}
|
1209
|
+
@supports selector(:has(.f)) {
|
1210
|
+
.ui.form .fields:has(.warning) > label {
|
1211
|
+
color: #573a08;
|
1212
|
+
}
|
1213
|
+
}
|
1193
1214
|
.ui.form .fields.warning .field .ui.label,
|
1194
1215
|
.ui.form .field.warning .ui.label {
|
1195
1216
|
background-color: #d7ccb5;
|
@@ -1382,6 +1403,11 @@
|
|
1382
1403
|
.ui.inverted.form .warning.field label {
|
1383
1404
|
color: #d7ccb5;
|
1384
1405
|
}
|
1406
|
+
@supports selector(:has(.f)) {
|
1407
|
+
.ui.inverted.form .fields:has(.warning) > label {
|
1408
|
+
color: #d7ccb5;
|
1409
|
+
}
|
1410
|
+
}
|
1385
1411
|
|
1386
1412
|
/* --------------------
|
1387
1413
|
Disabled
|
@@ -1446,29 +1472,36 @@
|
|
1446
1472
|
/* --------------------
|
1447
1473
|
Required Field
|
1448
1474
|
--------------------- */
|
1449
|
-
.ui.form .required.fields:not(.grouped) > .field > label::after,
|
1475
|
+
.ui.form .required.fields:not(.grouped):not(.inline) > .field > label::after,
|
1476
|
+
.ui.form .required.fields.inline > label::after,
|
1450
1477
|
.ui.form .required.fields.grouped > label::after,
|
1451
1478
|
.ui.form .required.field > label::after,
|
1452
|
-
.ui.form .required.fields:not(.grouped) > .field > .checkbox::after,
|
1479
|
+
.ui.form .required.fields:not(.grouped):not(.inline) > .field > .checkbox::after,
|
1453
1480
|
.ui.form .required.field > .checkbox::after,
|
1454
1481
|
.ui.form label.required::after {
|
1455
1482
|
margin: -0.2em 0 0 0.2em;
|
1456
1483
|
content: "*";
|
1457
1484
|
color: #db2828;
|
1458
1485
|
}
|
1459
|
-
.ui.form .required.fields:not(.grouped) > .field > label::after,
|
1486
|
+
.ui.form .required.fields:not(.grouped):not(.inline) > .field > label::after,
|
1487
|
+
.ui.form .required.fields.inline > label::after,
|
1460
1488
|
.ui.form .required.fields.grouped > label::after,
|
1461
1489
|
.ui.form .required.field > label::after,
|
1462
1490
|
.ui.form label.required::after {
|
1463
1491
|
display: inline-block;
|
1464
1492
|
vertical-align: top;
|
1465
1493
|
}
|
1466
|
-
.ui.form .required.fields:not(.grouped) > .field > .checkbox::after,
|
1494
|
+
.ui.form .required.fields:not(.grouped):not(.inline) > .field > .checkbox::after,
|
1467
1495
|
.ui.form .required.field > .checkbox::after {
|
1468
1496
|
position: absolute;
|
1469
1497
|
top: 0;
|
1470
1498
|
left: 100%;
|
1471
1499
|
}
|
1500
|
+
.ui.ui.ui.ui.form .fields > label:empty::after,
|
1501
|
+
.ui.ui.ui.ui.form .field > label:empty::after {
|
1502
|
+
content: " ";
|
1503
|
+
display: inline-block;
|
1504
|
+
}
|
1472
1505
|
|
1473
1506
|
|
1474
1507
|
/*******************************
|
package/dist/components/form.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.3-beta.
|
2
|
+
* # Fomantic-UI 2.9.3-beta.21+491b07a - Form Validation
|
3
3
|
* https://github.com/fomantic/Fomantic-UI/
|
4
4
|
*
|
5
5
|
*
|
@@ -22,6 +22,7 @@
|
|
22
22
|
$.fn.form = function (parameters) {
|
23
23
|
var
|
24
24
|
$allModules = $(this),
|
25
|
+
$window = $(window),
|
25
26
|
|
26
27
|
time = Date.now(),
|
27
28
|
performance = [],
|
@@ -60,6 +61,8 @@
|
|
60
61
|
namespace,
|
61
62
|
moduleNamespace,
|
62
63
|
eventNamespace,
|
64
|
+
attachEventsSelector,
|
65
|
+
attachEventsAction,
|
63
66
|
|
64
67
|
submitting = false,
|
65
68
|
dirty = false,
|
@@ -74,6 +77,7 @@
|
|
74
77
|
initialize: function () {
|
75
78
|
// settings grabbed at run time
|
76
79
|
module.get.settings();
|
80
|
+
$module.addClass(className.initial);
|
77
81
|
if (methodInvoked) {
|
78
82
|
if (instance === undefined) {
|
79
83
|
module.instantiate();
|
@@ -127,10 +131,13 @@
|
|
127
131
|
module.bindEvents();
|
128
132
|
},
|
129
133
|
|
130
|
-
submit: function () {
|
134
|
+
submit: function (event) {
|
131
135
|
module.verbose('Submitting form', $module);
|
132
136
|
submitting = true;
|
133
137
|
$module.trigger('submit');
|
138
|
+
if (event) {
|
139
|
+
event.preventDefault();
|
140
|
+
}
|
134
141
|
},
|
135
142
|
|
136
143
|
attachEvents: function (selector, action) {
|
@@ -142,6 +149,9 @@
|
|
142
149
|
module[action]();
|
143
150
|
event.preventDefault();
|
144
151
|
});
|
152
|
+
|
153
|
+
attachEventsSelector = selector;
|
154
|
+
attachEventsAction = action;
|
145
155
|
},
|
146
156
|
|
147
157
|
bindEvents: function () {
|
@@ -153,6 +163,7 @@
|
|
153
163
|
.on('click' + eventNamespace, selector.reset, module.reset)
|
154
164
|
.on('click' + eventNamespace, selector.clear, module.clear)
|
155
165
|
;
|
166
|
+
$field.on('invalid' + eventNamespace, module.event.field.invalid);
|
156
167
|
if (settings.keyboardShortcuts) {
|
157
168
|
$module.on('keydown' + eventNamespace, selector.field, module.event.field.keydown);
|
158
169
|
}
|
@@ -167,7 +178,7 @@
|
|
167
178
|
|
168
179
|
// Dirty events
|
169
180
|
if (settings.preventLeaving) {
|
170
|
-
$
|
181
|
+
$window.on('beforeunload' + eventNamespace, module.event.beforeUnload);
|
171
182
|
}
|
172
183
|
|
173
184
|
$field.on('change' + eventNamespace
|
@@ -185,6 +196,9 @@
|
|
185
196
|
$module.on('clean' + eventNamespace, function (e) {
|
186
197
|
settings.onClean.call();
|
187
198
|
});
|
199
|
+
if (attachEventsSelector) {
|
200
|
+
module.attachEvents(attachEventsSelector, attachEventsAction);
|
201
|
+
}
|
188
202
|
},
|
189
203
|
|
190
204
|
clear: function () {
|
@@ -233,6 +247,7 @@
|
|
233
247
|
isCheckbox = $field.is(selector.checkbox),
|
234
248
|
isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'),
|
235
249
|
isCalendar = $calendar.length > 0 && module.can.useElement('calendar'),
|
250
|
+
isFile = $field.is(selector.file),
|
236
251
|
isErrored = $fieldGroup.hasClass(className.error)
|
237
252
|
;
|
238
253
|
if (defaultValue === undefined) {
|
@@ -253,7 +268,7 @@
|
|
253
268
|
$calendar.calendar('set date', defaultValue);
|
254
269
|
} else {
|
255
270
|
module.verbose('Resetting field value', $field, defaultValue);
|
256
|
-
$field.val(defaultValue);
|
271
|
+
$field.val(isFile ? '' : defaultValue);
|
257
272
|
}
|
258
273
|
});
|
259
274
|
module.remove.states();
|
@@ -264,8 +279,12 @@
|
|
264
279
|
var
|
265
280
|
allValid = true
|
266
281
|
;
|
267
|
-
|
268
|
-
|
282
|
+
$field.each(function (index, el) {
|
283
|
+
var $el = $(el),
|
284
|
+
validation = module.get.validation($el) || {},
|
285
|
+
identifier = module.get.identifier(validation, $el)
|
286
|
+
;
|
287
|
+
if (!module.validate.field(validation, identifier, true)) {
|
269
288
|
allValid = false;
|
270
289
|
}
|
271
290
|
});
|
@@ -389,6 +408,13 @@
|
|
389
408
|
$module.off(eventNamespace);
|
390
409
|
$field.off(eventNamespace);
|
391
410
|
$submit.off(eventNamespace);
|
411
|
+
if (settings.preventLeaving) {
|
412
|
+
$window.off(eventNamespace);
|
413
|
+
}
|
414
|
+
if (attachEventsSelector) {
|
415
|
+
$(attachEventsSelector).off(eventNamespace);
|
416
|
+
attachEventsSelector = undefined;
|
417
|
+
}
|
392
418
|
},
|
393
419
|
|
394
420
|
event: {
|
@@ -414,9 +440,8 @@
|
|
414
440
|
if (!event.ctrlKey && key === keyCode.enter && isInput && !isInDropdown && !isCheckbox) {
|
415
441
|
if (!keyHeldDown) {
|
416
442
|
$field.one('keyup' + eventNamespace, module.event.field.keyup);
|
417
|
-
module.submit();
|
443
|
+
module.submit(event);
|
418
444
|
module.debug('Enter pressed on input submitting form');
|
419
|
-
event.preventDefault();
|
420
445
|
}
|
421
446
|
keyHeldDown = true;
|
422
447
|
}
|
@@ -424,15 +449,18 @@
|
|
424
449
|
keyup: function () {
|
425
450
|
keyHeldDown = false;
|
426
451
|
},
|
452
|
+
invalid: function (event) {
|
453
|
+
event.preventDefault();
|
454
|
+
},
|
427
455
|
blur: function (event) {
|
428
456
|
var
|
429
457
|
$field = $(this),
|
430
|
-
|
431
|
-
|
458
|
+
validationRules = module.get.validation($field) || {},
|
459
|
+
identifier = module.get.identifier(validationRules, $field)
|
432
460
|
;
|
433
|
-
if (
|
461
|
+
if (settings.on === 'blur' || (!$module.hasClass(className.initial) && settings.revalidate)) {
|
434
462
|
module.debug('Revalidating field', $field, validationRules);
|
435
|
-
module.validate.field(validationRules);
|
463
|
+
module.validate.field(validationRules, identifier);
|
436
464
|
if (!settings.inline) {
|
437
465
|
module.validate.form(false, true);
|
438
466
|
}
|
@@ -441,14 +469,14 @@
|
|
441
469
|
change: function (event) {
|
442
470
|
var
|
443
471
|
$field = $(this),
|
444
|
-
|
445
|
-
|
472
|
+
validationRules = module.get.validation($field) || {},
|
473
|
+
identifier = module.get.identifier(validationRules, $field)
|
446
474
|
;
|
447
|
-
if (
|
475
|
+
if (settings.on === 'change' || (!$module.hasClass(className.initial) && settings.revalidate)) {
|
448
476
|
clearTimeout(module.timer);
|
449
477
|
module.timer = setTimeout(function () {
|
450
478
|
module.debug('Revalidating field', $field, validationRules);
|
451
|
-
module.validate.field(validationRules);
|
479
|
+
module.validate.field(validationRules, identifier);
|
452
480
|
if (!settings.inline) {
|
453
481
|
module.validate.form(false, true);
|
454
482
|
}
|
@@ -490,18 +518,7 @@
|
|
490
518
|
return rule.type;
|
491
519
|
},
|
492
520
|
changeEvent: function (type, $input) {
|
493
|
-
|
494
|
-
return 'change';
|
495
|
-
}
|
496
|
-
|
497
|
-
return module.get.inputEvent();
|
498
|
-
},
|
499
|
-
inputEvent: function () {
|
500
|
-
return document.createElement('input').oninput !== undefined
|
501
|
-
? 'input'
|
502
|
-
: (document.createElement('input').onpropertychange !== undefined
|
503
|
-
? 'propertychange'
|
504
|
-
: 'keyup');
|
521
|
+
return ['file', 'checkbox', 'radio', 'hidden'].indexOf(type) >= 0 || $input.is('select') ? 'change' : 'input';
|
505
522
|
},
|
506
523
|
fieldsFromShorthand: function (fields) {
|
507
524
|
var
|
@@ -525,6 +542,9 @@
|
|
525
542
|
|
526
543
|
return fullFields;
|
527
544
|
},
|
545
|
+
identifier: function (validation, $el) {
|
546
|
+
return validation.identifier || $el.attr('id') || $el.attr('name') || $el.data(metadata.validate);
|
547
|
+
},
|
528
548
|
prompt: function (rule, field) {
|
529
549
|
var
|
530
550
|
ruleName = module.get.ruleName(rule),
|
@@ -637,7 +657,7 @@
|
|
637
657
|
var $field = typeof identifier === 'string'
|
638
658
|
? module.get.field(identifier)
|
639
659
|
: identifier,
|
640
|
-
$label = $field.closest(selector.group).find('label').eq(0)
|
660
|
+
$label = $field.closest(selector.group).find('label:not(:empty)').eq(0)
|
641
661
|
;
|
642
662
|
|
643
663
|
return $label.length === 1
|
@@ -968,7 +988,7 @@
|
|
968
988
|
$message.empty();
|
969
989
|
},
|
970
990
|
states: function () {
|
971
|
-
$module.removeClass(className.error).removeClass(className.success);
|
991
|
+
$module.removeClass(className.error).removeClass(className.success).addClass(className.initial);
|
972
992
|
if (!settings.inline) {
|
973
993
|
module.remove.errors();
|
974
994
|
}
|
@@ -1106,6 +1126,7 @@
|
|
1106
1126
|
$field = module.get.field(key),
|
1107
1127
|
$element = $field.parent(),
|
1108
1128
|
$calendar = $field.closest(selector.uiCalendar),
|
1129
|
+
isFile = $field.is(selector.file),
|
1109
1130
|
isMultiple = Array.isArray(value),
|
1110
1131
|
isCheckbox = $element.is(selector.uiCheckbox) && module.can.useElement('checkbox'),
|
1111
1132
|
isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'),
|
@@ -1148,7 +1169,7 @@
|
|
1148
1169
|
$calendar.calendar('set date', value);
|
1149
1170
|
} else {
|
1150
1171
|
module.verbose('Setting field value', value, $field);
|
1151
|
-
$field.val(value);
|
1172
|
+
$field.val(isFile ? '' : value);
|
1152
1173
|
}
|
1153
1174
|
}
|
1154
1175
|
});
|
@@ -1204,7 +1225,7 @@
|
|
1204
1225
|
return rule.type === 'empty';
|
1205
1226
|
}) !== 0
|
1206
1227
|
: false,
|
1207
|
-
identifier =
|
1228
|
+
identifier = module.get.identifier(validation, $el)
|
1208
1229
|
;
|
1209
1230
|
if (isRequired && !isDisabled && !hasEmptyRule && identifier !== undefined) {
|
1210
1231
|
if (isCheckbox) {
|
@@ -1236,7 +1257,7 @@
|
|
1236
1257
|
if (keyHeldDown) {
|
1237
1258
|
return false;
|
1238
1259
|
}
|
1239
|
-
|
1260
|
+
$module.removeClass(className.initial);
|
1240
1261
|
// reset errors
|
1241
1262
|
formErrors = [];
|
1242
1263
|
if (module.determine.isValid()) {
|
@@ -1308,13 +1329,25 @@
|
|
1308
1329
|
? module.get.field(field.depends)
|
1309
1330
|
: false,
|
1310
1331
|
fieldValid = true,
|
1311
|
-
fieldErrors = []
|
1332
|
+
fieldErrors = [],
|
1333
|
+
isDisabled = $field.filter(':not(:disabled)').length === 0,
|
1334
|
+
validationMessage = $field[0].validationMessage,
|
1335
|
+
errorLimit
|
1312
1336
|
;
|
1313
1337
|
if (!field.identifier) {
|
1314
1338
|
module.debug('Using field name as identifier', identifier);
|
1315
1339
|
field.identifier = identifier;
|
1316
1340
|
}
|
1317
|
-
|
1341
|
+
if (validationMessage) {
|
1342
|
+
module.debug('Field is natively invalid', identifier);
|
1343
|
+
fieldErrors.push(validationMessage);
|
1344
|
+
fieldValid = false;
|
1345
|
+
if (showErrors) {
|
1346
|
+
$field.closest($group).addClass(className.error);
|
1347
|
+
}
|
1348
|
+
} else if (showErrors) {
|
1349
|
+
$field.closest($group).removeClass(className.error);
|
1350
|
+
}
|
1318
1351
|
if (isDisabled) {
|
1319
1352
|
module.debug('Field is disabled. Skipping', identifier);
|
1320
1353
|
} else if (field.optional && module.is.blank($field)) {
|
@@ -1322,11 +1355,9 @@
|
|
1322
1355
|
} else if (field.depends && module.is.empty($dependsField)) {
|
1323
1356
|
module.debug('Field depends on another value that is not present or empty. Skipping', $dependsField);
|
1324
1357
|
} else if (field.rules !== undefined) {
|
1325
|
-
|
1326
|
-
$field.closest($group).removeClass(className.error);
|
1327
|
-
}
|
1358
|
+
errorLimit = field.errorLimit || settings.errorLimit;
|
1328
1359
|
$.each(field.rules, function (index, rule) {
|
1329
|
-
if (module.has.field(identifier)) {
|
1360
|
+
if (module.has.field(identifier) && (!errorLimit || fieldErrors.length < errorLimit)) {
|
1330
1361
|
var invalidFields = module.validate.rule(field, rule, true) || [];
|
1331
1362
|
if (invalidFields.length > 0) {
|
1332
1363
|
module.debug('Field is invalid', identifier, rule.type);
|
@@ -1341,7 +1372,7 @@
|
|
1341
1372
|
}
|
1342
1373
|
if (fieldValid) {
|
1343
1374
|
if (showErrors) {
|
1344
|
-
module.remove.prompt(identifier
|
1375
|
+
module.remove.prompt(identifier);
|
1345
1376
|
settings.onValid.call($field);
|
1346
1377
|
}
|
1347
1378
|
} else {
|
@@ -1578,6 +1609,7 @@
|
|
1578
1609
|
preventLeaving: false,
|
1579
1610
|
errorFocus: true,
|
1580
1611
|
dateHandling: 'date', // 'date', 'input', 'formatter'
|
1612
|
+
errorLimit: 0,
|
1581
1613
|
|
1582
1614
|
onValid: function () {},
|
1583
1615
|
onInvalid: function () {},
|
@@ -1631,8 +1663,8 @@
|
|
1631
1663
|
isExactly: '{name} must be exactly "{ruleValue}"',
|
1632
1664
|
not: '{name} cannot be set to "{ruleValue}"',
|
1633
1665
|
notExactly: '{name} cannot be set to exactly "{ruleValue}"',
|
1634
|
-
|
1635
|
-
|
1666
|
+
contains: '{name} must contain "{ruleValue}"',
|
1667
|
+
containsExactly: '{name} must contain exactly "{ruleValue}"',
|
1636
1668
|
doesntContain: '{name} cannot contain "{ruleValue}"',
|
1637
1669
|
doesntContainExactly: '{name} cannot contain exactly "{ruleValue}"',
|
1638
1670
|
minLength: '{name} must be at least {ruleValue} characters',
|
@@ -1651,9 +1683,10 @@
|
|
1651
1683
|
selector: {
|
1652
1684
|
checkbox: 'input[type="checkbox"], input[type="radio"]',
|
1653
1685
|
clear: '.clear',
|
1654
|
-
field: 'input:not(.search):not([type="
|
1686
|
+
field: 'input:not(.search):not([type="reset"]):not([type="button"]):not([type="submit"]), textarea, select',
|
1687
|
+
file: 'input[type="file"]',
|
1655
1688
|
group: '.field',
|
1656
|
-
input: 'input
|
1689
|
+
input: 'input',
|
1657
1690
|
message: '.error.message',
|
1658
1691
|
prompt: '.prompt.label',
|
1659
1692
|
radio: 'input[type="radio"]',
|
@@ -1665,6 +1698,7 @@
|
|
1665
1698
|
},
|
1666
1699
|
|
1667
1700
|
className: {
|
1701
|
+
initial: 'initial',
|
1668
1702
|
error: 'error',
|
1669
1703
|
label: 'ui basic red pointing prompt label',
|
1670
1704
|
pressed: 'down',
|