fomantic-ui 2.9.3-beta.2 → 2.9.3-beta.20

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 (246) hide show
  1. package/.github/workflows/ci.yml +1 -1
  2. package/dist/components/accordion.css +1 -1
  3. package/dist/components/accordion.js +1 -1
  4. package/dist/components/accordion.min.css +1 -1
  5. package/dist/components/accordion.min.js +1 -1
  6. package/dist/components/ad.css +1 -1
  7. package/dist/components/ad.min.css +1 -1
  8. package/dist/components/api.js +1 -1
  9. package/dist/components/api.min.js +1 -1
  10. package/dist/components/breadcrumb.css +1 -1
  11. package/dist/components/breadcrumb.min.css +1 -1
  12. package/dist/components/button.css +2 -2
  13. package/dist/components/button.min.css +2 -2
  14. package/dist/components/calendar.css +6 -6
  15. package/dist/components/calendar.js +1 -1
  16. package/dist/components/calendar.min.css +2 -2
  17. package/dist/components/calendar.min.js +1 -1
  18. package/dist/components/card.css +1 -1
  19. package/dist/components/card.min.css +1 -1
  20. package/dist/components/checkbox.css +1 -1
  21. package/dist/components/checkbox.js +1 -1
  22. package/dist/components/checkbox.min.css +1 -1
  23. package/dist/components/checkbox.min.js +1 -1
  24. package/dist/components/comment.css +1 -1
  25. package/dist/components/comment.min.css +1 -1
  26. package/dist/components/container.css +62 -1
  27. package/dist/components/container.min.css +2 -2
  28. package/dist/components/dimmer.css +3 -3
  29. package/dist/components/dimmer.js +1 -1
  30. package/dist/components/dimmer.min.css +2 -2
  31. package/dist/components/dimmer.min.js +1 -1
  32. package/dist/components/divider.css +1 -1
  33. package/dist/components/divider.min.css +1 -1
  34. package/dist/components/dropdown.css +42 -4
  35. package/dist/components/dropdown.js +22 -12
  36. package/dist/components/dropdown.min.css +2 -2
  37. package/dist/components/dropdown.min.js +2 -2
  38. package/dist/components/embed.css +1 -1
  39. package/dist/components/embed.js +1 -1
  40. package/dist/components/embed.min.css +1 -1
  41. package/dist/components/embed.min.js +1 -1
  42. package/dist/components/emoji.css +1 -1
  43. package/dist/components/emoji.min.css +1 -1
  44. package/dist/components/feed.css +1 -1
  45. package/dist/components/feed.min.css +1 -1
  46. package/dist/components/flag.css +3 -2
  47. package/dist/components/flag.min.css +2 -2
  48. package/dist/components/flyout.css +1 -1
  49. package/dist/components/flyout.js +26 -20
  50. package/dist/components/flyout.min.css +1 -1
  51. package/dist/components/flyout.min.js +2 -2
  52. package/dist/components/form.css +53 -20
  53. package/dist/components/form.js +74 -43
  54. package/dist/components/form.min.css +2 -2
  55. package/dist/components/form.min.js +2 -2
  56. package/dist/components/grid.css +107 -107
  57. package/dist/components/grid.min.css +2 -2
  58. package/dist/components/header.css +1 -1
  59. package/dist/components/header.min.css +1 -1
  60. package/dist/components/icon.css +1 -1
  61. package/dist/components/icon.min.css +1 -1
  62. package/dist/components/image.css +1 -1
  63. package/dist/components/image.min.css +1 -1
  64. package/dist/components/input.css +3 -27
  65. package/dist/components/input.min.css +2 -2
  66. package/dist/components/item.css +1 -1
  67. package/dist/components/item.min.css +1 -1
  68. package/dist/components/label.css +21 -2
  69. package/dist/components/label.min.css +2 -2
  70. package/dist/components/list.css +13 -13
  71. package/dist/components/list.min.css +2 -2
  72. package/dist/components/loader.css +282 -282
  73. package/dist/components/loader.min.css +2 -2
  74. package/dist/components/menu.css +9 -3
  75. package/dist/components/menu.min.css +2 -2
  76. package/dist/components/message.css +1 -1
  77. package/dist/components/message.min.css +1 -1
  78. package/dist/components/modal.css +10 -3
  79. package/dist/components/modal.js +31 -26
  80. package/dist/components/modal.min.css +2 -2
  81. package/dist/components/modal.min.js +2 -2
  82. package/dist/components/nag.css +1 -1
  83. package/dist/components/nag.js +1 -1
  84. package/dist/components/nag.min.css +1 -1
  85. package/dist/components/nag.min.js +1 -1
  86. package/dist/components/placeholder.css +1 -1
  87. package/dist/components/placeholder.min.css +1 -1
  88. package/dist/components/popup.css +41 -40
  89. package/dist/components/popup.js +8 -6
  90. package/dist/components/popup.min.css +2 -2
  91. package/dist/components/popup.min.js +2 -2
  92. package/dist/components/progress.css +1 -1
  93. package/dist/components/progress.js +1 -1
  94. package/dist/components/progress.min.css +1 -1
  95. package/dist/components/progress.min.js +1 -1
  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 +1 -1
  100. package/dist/components/rating.min.css +1 -1
  101. package/dist/components/rating.min.js +1 -1
  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 +17 -1
  107. package/dist/components/search.js +3 -2
  108. package/dist/components/search.min.css +2 -2
  109. package/dist/components/search.min.js +2 -2
  110. package/dist/components/segment.css +159 -33
  111. package/dist/components/segment.min.css +2 -2
  112. package/dist/components/shape.css +1 -1
  113. package/dist/components/shape.js +1 -1
  114. package/dist/components/shape.min.css +1 -1
  115. package/dist/components/shape.min.js +1 -1
  116. package/dist/components/sidebar.css +1 -1
  117. package/dist/components/sidebar.js +1 -1
  118. package/dist/components/sidebar.min.css +1 -1
  119. package/dist/components/sidebar.min.js +1 -1
  120. package/dist/components/site.css +1 -1
  121. package/dist/components/site.js +1 -1
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +1 -1
  124. package/dist/components/slider.css +1 -1
  125. package/dist/components/slider.js +122 -26
  126. package/dist/components/slider.min.css +1 -1
  127. package/dist/components/slider.min.js +2 -2
  128. package/dist/components/state.js +1 -1
  129. package/dist/components/state.min.js +1 -1
  130. package/dist/components/statistic.css +1 -1
  131. package/dist/components/statistic.min.css +1 -1
  132. package/dist/components/step.css +1 -1
  133. package/dist/components/step.min.css +1 -1
  134. package/dist/components/sticky.css +1 -1
  135. package/dist/components/sticky.js +1 -1
  136. package/dist/components/sticky.min.css +1 -1
  137. package/dist/components/sticky.min.js +1 -1
  138. package/dist/components/tab.css +1 -1
  139. package/dist/components/tab.js +1 -1
  140. package/dist/components/tab.min.css +1 -1
  141. package/dist/components/tab.min.js +1 -1
  142. package/dist/components/table.css +65 -1
  143. package/dist/components/table.min.css +2 -2
  144. package/dist/components/text.css +1 -1
  145. package/dist/components/text.min.css +1 -1
  146. package/dist/components/toast.css +6 -1
  147. package/dist/components/toast.js +2 -2
  148. package/dist/components/toast.min.css +2 -2
  149. package/dist/components/toast.min.js +2 -2
  150. package/dist/components/transition.css +1 -1
  151. package/dist/components/transition.js +1 -1
  152. package/dist/components/transition.min.css +1 -1
  153. package/dist/components/transition.min.js +1 -1
  154. package/dist/components/visibility.js +1 -1
  155. package/dist/components/visibility.min.js +1 -1
  156. package/dist/semantic.css +1055 -593
  157. package/dist/semantic.js +306 -155
  158. package/dist/semantic.min.css +2 -2
  159. package/dist/semantic.min.js +2 -2
  160. package/package.json +1 -1
  161. package/src/definitions/behaviors/form.js +73 -42
  162. package/src/definitions/collections/breadcrumb.less +2 -1
  163. package/src/definitions/collections/form.less +27 -13
  164. package/src/definitions/collections/grid.less +108 -107
  165. package/src/definitions/collections/menu.less +29 -21
  166. package/src/definitions/collections/message.less +2 -1
  167. package/src/definitions/collections/table.less +68 -1
  168. package/src/definitions/elements/button.less +4 -2
  169. package/src/definitions/elements/container.less +65 -1
  170. package/src/definitions/elements/divider.less +2 -1
  171. package/src/definitions/elements/emoji.less +2 -1
  172. package/src/definitions/elements/flag.less +2 -1
  173. package/src/definitions/elements/header.less +2 -1
  174. package/src/definitions/elements/icon.less +2 -1
  175. package/src/definitions/elements/image.less +2 -1
  176. package/src/definitions/elements/input.less +4 -3
  177. package/src/definitions/elements/label.less +23 -2
  178. package/src/definitions/elements/list.less +14 -13
  179. package/src/definitions/elements/loader.less +73 -72
  180. package/src/definitions/elements/placeholder.less +2 -1
  181. package/src/definitions/elements/rail.less +2 -1
  182. package/src/definitions/elements/reveal.less +2 -1
  183. package/src/definitions/elements/segment.less +112 -14
  184. package/src/definitions/elements/step.less +2 -1
  185. package/src/definitions/elements/text.less +2 -1
  186. package/src/definitions/globals/reset.less +2 -1
  187. package/src/definitions/globals/site.less +2 -1
  188. package/src/definitions/modules/accordion.less +2 -1
  189. package/src/definitions/modules/calendar.less +3 -2
  190. package/src/definitions/modules/checkbox.less +2 -1
  191. package/src/definitions/modules/dimmer.less +4 -3
  192. package/src/definitions/modules/dropdown.js +21 -11
  193. package/src/definitions/modules/dropdown.less +55 -4
  194. package/src/definitions/modules/embed.less +2 -1
  195. package/src/definitions/modules/flyout.js +25 -19
  196. package/src/definitions/modules/flyout.less +2 -1
  197. package/src/definitions/modules/modal.js +30 -25
  198. package/src/definitions/modules/modal.less +13 -3
  199. package/src/definitions/modules/nag.less +3 -1
  200. package/src/definitions/modules/popup.js +7 -5
  201. package/src/definitions/modules/popup.less +42 -39
  202. package/src/definitions/modules/progress.less +2 -1
  203. package/src/definitions/modules/rating.less +2 -1
  204. package/src/definitions/modules/search.js +2 -1
  205. package/src/definitions/modules/search.less +20 -1
  206. package/src/definitions/modules/shape.less +2 -1
  207. package/src/definitions/modules/sidebar.less +2 -1
  208. package/src/definitions/modules/slider.js +121 -25
  209. package/src/definitions/modules/slider.less +2 -1
  210. package/src/definitions/modules/sticky.less +2 -1
  211. package/src/definitions/modules/tab.less +2 -1
  212. package/src/definitions/modules/toast.js +1 -1
  213. package/src/definitions/modules/toast.less +9 -1
  214. package/src/definitions/modules/transition.less +2 -1
  215. package/src/definitions/views/ad.less +2 -1
  216. package/src/definitions/views/card.less +2 -1
  217. package/src/definitions/views/comment.less +2 -1
  218. package/src/definitions/views/feed.less +2 -1
  219. package/src/definitions/views/item.less +2 -1
  220. package/src/definitions/views/statistic.less +2 -1
  221. package/src/overrides.less +7 -0
  222. package/src/theme.less +7 -6
  223. package/src/themes/amazon/elements/button.variables +5 -1
  224. package/src/themes/bootstrap3/elements/button.variables +5 -1
  225. package/src/themes/chubby/elements/header.variables +6 -1
  226. package/src/themes/default/collections/message.variables +3 -9
  227. package/src/themes/default/collections/table.variables +3 -0
  228. package/src/themes/default/elements/button.variables +1 -3
  229. package/src/themes/default/elements/container.variables +3 -0
  230. package/src/themes/default/elements/flag.variables +1 -1
  231. package/src/themes/default/elements/label.variables +5 -0
  232. package/src/themes/default/elements/segment.variables +8 -0
  233. package/src/themes/default/globals/site.variables +20 -1
  234. package/src/themes/default/globals/variation.variables +7 -1
  235. package/src/themes/default/modules/dropdown.variables +6 -0
  236. package/src/themes/default/modules/modal.variables +4 -0
  237. package/src/themes/default/modules/popup.variables +3 -1
  238. package/src/themes/default/modules/search.variables +3 -0
  239. package/src/themes/default/modules/toast.variables +1 -0
  240. package/src/themes/default/views/card.variables +4 -12
  241. package/src/themes/github/elements/button.variables +5 -1
  242. package/src/themes/twitter/elements/button.variables +5 -1
  243. package/tasks/admin/distributions/create.js +8 -3
  244. package/tasks/config/project/install.js +3 -0
  245. package/tasks/config/tasks.js +1 -8
  246. package/tasks/install.js +15 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fomantic-ui",
3
- "version": "2.9.3-beta.2+824a375",
3
+ "version": "2.9.3-beta.20+1e3f606",
4
4
  "description": "Fomantic empowers designers and developers by creating a shared vocabulary for UI.",
5
5
  "keywords": [
6
6
  "fomantic-ui",
@@ -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
- $(window).on('beforeunload' + eventNamespace, module.event.beforeUnload);
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
- $.each(validation, function (fieldName, field) {
268
- if (!module.validate.field(field, fieldName, true)) {
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
- $fieldGroup = $field.closest($group),
431
- validationRules = module.get.validation($field)
458
+ validationRules = module.get.validation($field) || {},
459
+ identifier = module.get.identifier(validationRules, $field)
432
460
  ;
433
- if (validationRules && (settings.on === 'blur' || ($fieldGroup.hasClass(className.error) && settings.revalidate))) {
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
- $fieldGroup = $field.closest($group),
445
- validationRules = module.get.validation($field)
472
+ validationRules = module.get.validation($field) || {},
473
+ identifier = module.get.identifier(validationRules, $field)
446
474
  ;
447
- if (validationRules && (settings.on === 'change' || ($fieldGroup.hasClass(className.error) && settings.revalidate))) {
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
- if (type === 'checkbox' || type === 'radio' || type === 'hidden' || $input.is('select')) {
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 = validation.identifier || $el.attr('id') || $el.attr('name') || $el.data(metadata.validate)
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,24 @@
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
1312
1335
  ;
1313
1336
  if (!field.identifier) {
1314
1337
  module.debug('Using field name as identifier', identifier);
1315
1338
  field.identifier = identifier;
1316
1339
  }
1317
- var isDisabled = $field.filter(':not(:disabled)').length === 0;
1340
+ if (validationMessage) {
1341
+ module.debug('Field is natively invalid', identifier);
1342
+ fieldErrors.push(validationMessage);
1343
+ fieldValid = false;
1344
+ if (showErrors) {
1345
+ $field.closest($group).addClass(className.error);
1346
+ }
1347
+ } else if (showErrors) {
1348
+ $field.closest($group).removeClass(className.error);
1349
+ }
1318
1350
  if (isDisabled) {
1319
1351
  module.debug('Field is disabled. Skipping', identifier);
1320
1352
  } else if (field.optional && module.is.blank($field)) {
@@ -1322,9 +1354,6 @@
1322
1354
  } else if (field.depends && module.is.empty($dependsField)) {
1323
1355
  module.debug('Field depends on another value that is not present or empty. Skipping', $dependsField);
1324
1356
  } else if (field.rules !== undefined) {
1325
- if (showErrors) {
1326
- $field.closest($group).removeClass(className.error);
1327
- }
1328
1357
  $.each(field.rules, function (index, rule) {
1329
1358
  if (module.has.field(identifier)) {
1330
1359
  var invalidFields = module.validate.rule(field, rule, true) || [];
@@ -1341,7 +1370,7 @@
1341
1370
  }
1342
1371
  if (fieldValid) {
1343
1372
  if (showErrors) {
1344
- module.remove.prompt(identifier, fieldErrors);
1373
+ module.remove.prompt(identifier);
1345
1374
  settings.onValid.call($field);
1346
1375
  }
1347
1376
  } else {
@@ -1631,8 +1660,8 @@
1631
1660
  isExactly: '{name} must be exactly "{ruleValue}"',
1632
1661
  not: '{name} cannot be set to "{ruleValue}"',
1633
1662
  notExactly: '{name} cannot be set to exactly "{ruleValue}"',
1634
- contain: '{name} must contain "{ruleValue}"',
1635
- containExactly: '{name} must contain exactly "{ruleValue}"',
1663
+ contains: '{name} must contain "{ruleValue}"',
1664
+ containsExactly: '{name} must contain exactly "{ruleValue}"',
1636
1665
  doesntContain: '{name} cannot contain "{ruleValue}"',
1637
1666
  doesntContainExactly: '{name} cannot contain exactly "{ruleValue}"',
1638
1667
  minLength: '{name} must be at least {ruleValue} characters',
@@ -1651,9 +1680,10 @@
1651
1680
  selector: {
1652
1681
  checkbox: 'input[type="checkbox"], input[type="radio"]',
1653
1682
  clear: '.clear',
1654
- field: 'input:not(.search):not([type="file"]):not([type="reset"]):not([type="button"]):not([type="submit"]), textarea, select',
1683
+ field: 'input:not(.search):not([type="reset"]):not([type="button"]):not([type="submit"]), textarea, select',
1684
+ file: 'input[type="file"]',
1655
1685
  group: '.field',
1656
- input: 'input:not([type="file"])',
1686
+ input: 'input',
1657
1687
  message: '.error.message',
1658
1688
  prompt: '.prompt.label',
1659
1689
  radio: 'input[type="radio"]',
@@ -1665,6 +1695,7 @@
1665
1695
  },
1666
1696
 
1667
1697
  className: {
1698
+ initial: 'initial',
1668
1699
  error: 'error',
1669
1700
  label: 'ui basic red pointing prompt label',
1670
1701
  pressed: 'down',
@@ -115,4 +115,5 @@
115
115
  });
116
116
  }
117
117
 
118
- .loadUIOverrides();
118
+ // stylelint-disable no-invalid-position-at-import-rule
119
+ @import (multiple, optional) "../../overrides.less";
@@ -527,6 +527,12 @@
527
527
  color: @c;
528
528
  }
529
529
 
530
+ @supports selector(:has(.f)) {
531
+ .ui.form .fields:has(.@{state}) > label {
532
+ color: @c;
533
+ }
534
+ }
535
+
530
536
  .ui.form .fields.@{state} .field .ui.label,
531
537
  .ui.form .field.@{state} .ui.label {
532
538
  background-color: @lbg;
@@ -579,14 +585,7 @@
579
585
  box-shadow: @formStates[@@state][boxShadow];
580
586
  }
581
587
  & when (@state=error) and (@variationFormInvalid) {
582
- .ui.form .field input:not(:placeholder-shown):invalid {
583
- color: @c;
584
- background: @bg;
585
- border-color: @formStates[@@state][borderColor];
586
- border-radius: @formStates[@@state][borderRadius];
587
- box-shadow: @formStates[@@state][boxShadow];
588
- }
589
- .ui.form .field input:not(:-ms-input-placeholder):invalid when (@supportIE) {
588
+ .ui.form:not(.initial) .field input:invalid {
590
589
  color: @c;
591
590
  background: @bg;
592
591
  border-color: @formStates[@@state][borderColor];
@@ -729,6 +728,12 @@
729
728
  .ui.inverted.form .@{state}.field label {
730
729
  color: @lbg;
731
730
  }
731
+
732
+ @supports selector(:has(.f)) {
733
+ .ui.inverted.form .fields:has(.@{state}) > label {
734
+ color: @lbg;
735
+ }
736
+ }
732
737
  }
733
738
  });
734
739
  }
@@ -804,10 +809,11 @@
804
809
  Required Field
805
810
  --------------------- */
806
811
 
807
- .ui.form .required.fields:not(.grouped) > .field > label::after,
812
+ .ui.form .required.fields:not(.grouped):not(.inline) > .field > label::after,
813
+ .ui.form .required.fields.inline > label::after,
808
814
  .ui.form .required.fields.grouped > label::after,
809
815
  .ui.form .required.field > label::after,
810
- .ui.form .required.fields:not(.grouped) > .field > .checkbox::after,
816
+ .ui.form .required.fields:not(.grouped):not(.inline) > .field > .checkbox::after,
811
817
  .ui.form .required.field > .checkbox::after,
812
818
  .ui.form label.required::after {
813
819
  margin: @requiredMargin;
@@ -815,7 +821,8 @@
815
821
  color: @requiredColor;
816
822
  }
817
823
 
818
- .ui.form .required.fields:not(.grouped) > .field > label::after,
824
+ .ui.form .required.fields:not(.grouped):not(.inline) > .field > label::after,
825
+ .ui.form .required.fields.inline > label::after,
819
826
  .ui.form .required.fields.grouped > label::after,
820
827
  .ui.form .required.field > label::after,
821
828
  .ui.form label.required::after {
@@ -823,7 +830,7 @@
823
830
  vertical-align: top;
824
831
  }
825
832
 
826
- .ui.form .required.fields:not(.grouped) > .field > .checkbox::after,
833
+ .ui.form .required.fields:not(.grouped):not(.inline) > .field > .checkbox::after,
827
834
  .ui.form .required.field > .checkbox::after {
828
835
  position: absolute;
829
836
  top: 0;
@@ -831,6 +838,12 @@
831
838
  }
832
839
  }
833
840
 
841
+ .ui.ui.ui.ui.form .fields > label:empty::after,
842
+ .ui.ui.ui.ui.form .field > label:empty::after {
843
+ content: " ";
844
+ display: inline-block;
845
+ }
846
+
834
847
  /*******************************
835
848
  Variations
836
849
  *******************************/
@@ -1160,4 +1173,5 @@
1160
1173
  });
1161
1174
  }
1162
1175
 
1163
- .loadUIOverrides();
1176
+ // stylelint-disable no-invalid-position-at-import-rule
1177
+ @import (multiple, optional) "../../overrides.less";