fomantic-ui 2.9.4-beta.5 → 2.9.4-beta.51

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 (248) hide show
  1. package/.all-contributorsrc +20 -1
  2. package/.eslintrc.js +17 -0
  3. package/.github/FUNDING.yml +1 -1
  4. package/.github/workflows/ci.yml +5 -5
  5. package/.github/workflows/depsreview.yml +14 -0
  6. package/.github/workflows/nightly.yml +1 -1
  7. package/.github/workflows/release.yml +1 -1
  8. package/CONTRIBUTORS.md +2 -0
  9. package/README.md +2 -12
  10. package/dist/components/accordion.css +1 -1
  11. package/dist/components/accordion.js +4 -2
  12. package/dist/components/accordion.min.css +1 -1
  13. package/dist/components/accordion.min.js +2 -2
  14. package/dist/components/ad.css +1 -1
  15. package/dist/components/ad.min.css +1 -1
  16. package/dist/components/api.js +7 -3
  17. package/dist/components/api.min.js +2 -2
  18. package/dist/components/breadcrumb.css +1 -1
  19. package/dist/components/breadcrumb.min.css +1 -1
  20. package/dist/components/button.css +19 -3
  21. package/dist/components/button.min.css +2 -2
  22. package/dist/components/calendar.css +1 -1
  23. package/dist/components/calendar.js +15 -3
  24. package/dist/components/calendar.min.css +1 -1
  25. package/dist/components/calendar.min.js +3 -3
  26. package/dist/components/card.css +1 -1
  27. package/dist/components/card.min.css +1 -1
  28. package/dist/components/checkbox.css +1 -1
  29. package/dist/components/checkbox.js +10 -4
  30. package/dist/components/checkbox.min.css +1 -1
  31. package/dist/components/checkbox.min.js +3 -3
  32. package/dist/components/comment.css +1 -1
  33. package/dist/components/comment.min.css +1 -1
  34. package/dist/components/container.css +1 -1
  35. package/dist/components/container.min.css +1 -1
  36. package/dist/components/dimmer.css +7 -3
  37. package/dist/components/dimmer.js +4 -2
  38. package/dist/components/dimmer.min.css +2 -2
  39. package/dist/components/dimmer.min.js +2 -2
  40. package/dist/components/divider.css +1 -1
  41. package/dist/components/divider.min.css +1 -1
  42. package/dist/components/dropdown.css +41 -38
  43. package/dist/components/dropdown.js +102 -33
  44. package/dist/components/dropdown.min.css +2 -2
  45. package/dist/components/dropdown.min.js +3 -3
  46. package/dist/components/embed.css +1 -1
  47. package/dist/components/embed.js +17 -7
  48. package/dist/components/embed.min.css +1 -1
  49. package/dist/components/embed.min.js +3 -3
  50. package/dist/components/emoji.css +1 -1
  51. package/dist/components/emoji.min.css +1 -1
  52. package/dist/components/feed.css +12 -1
  53. package/dist/components/feed.min.css +2 -2
  54. package/dist/components/flag.css +1 -1
  55. package/dist/components/flag.min.css +1 -1
  56. package/dist/components/flyout.css +1 -1
  57. package/dist/components/flyout.js +4 -2
  58. package/dist/components/flyout.min.css +1 -1
  59. package/dist/components/flyout.min.js +2 -2
  60. package/dist/components/form.css +15 -5
  61. package/dist/components/form.js +46 -20
  62. package/dist/components/form.min.css +2 -2
  63. package/dist/components/form.min.js +3 -3
  64. package/dist/components/grid.css +5 -5
  65. package/dist/components/grid.min.css +2 -2
  66. package/dist/components/header.css +4 -1
  67. package/dist/components/header.min.css +2 -2
  68. package/dist/components/icon.css +1 -1
  69. package/dist/components/icon.min.css +1 -1
  70. package/dist/components/image.css +1 -1
  71. package/dist/components/image.min.css +1 -1
  72. package/dist/components/input.css +30 -10
  73. package/dist/components/input.min.css +2 -2
  74. package/dist/components/item.css +1 -1
  75. package/dist/components/item.min.css +1 -1
  76. package/dist/components/label.css +1 -2
  77. package/dist/components/label.min.css +2 -2
  78. package/dist/components/list.css +1 -1
  79. package/dist/components/list.min.css +1 -1
  80. package/dist/components/loader.css +1 -1
  81. package/dist/components/loader.min.css +1 -1
  82. package/dist/components/menu.css +1 -2
  83. package/dist/components/menu.min.css +2 -2
  84. package/dist/components/message.css +1 -1
  85. package/dist/components/message.min.css +1 -1
  86. package/dist/components/modal.css +1 -1
  87. package/dist/components/modal.js +7 -3
  88. package/dist/components/modal.min.css +1 -1
  89. package/dist/components/modal.min.js +2 -2
  90. package/dist/components/nag.css +1 -1
  91. package/dist/components/nag.js +11 -5
  92. package/dist/components/nag.min.css +1 -1
  93. package/dist/components/nag.min.js +3 -3
  94. package/dist/components/placeholder.css +1 -1
  95. package/dist/components/placeholder.min.css +1 -1
  96. package/dist/components/popup.css +1 -2
  97. package/dist/components/popup.js +10 -4
  98. package/dist/components/popup.min.css +2 -2
  99. package/dist/components/popup.min.js +2 -2
  100. package/dist/components/progress.css +1 -1
  101. package/dist/components/progress.js +4 -2
  102. package/dist/components/progress.min.css +1 -1
  103. package/dist/components/progress.min.js +2 -2
  104. package/dist/components/rail.css +1 -1
  105. package/dist/components/rail.min.css +1 -1
  106. package/dist/components/rating.css +1 -1
  107. package/dist/components/rating.js +4 -2
  108. package/dist/components/rating.min.css +1 -1
  109. package/dist/components/rating.min.js +2 -2
  110. package/dist/components/reset.css +1 -1
  111. package/dist/components/reset.min.css +1 -1
  112. package/dist/components/reveal.css +1 -1
  113. package/dist/components/reveal.min.css +1 -1
  114. package/dist/components/search.css +1 -1
  115. package/dist/components/search.js +67 -14
  116. package/dist/components/search.min.css +1 -1
  117. package/dist/components/search.min.js +3 -3
  118. package/dist/components/segment.css +1 -1
  119. package/dist/components/segment.min.css +1 -1
  120. package/dist/components/shape.css +1 -1
  121. package/dist/components/shape.js +4 -2
  122. package/dist/components/shape.min.css +1 -1
  123. package/dist/components/shape.min.js +2 -2
  124. package/dist/components/sidebar.css +1 -1
  125. package/dist/components/sidebar.js +4 -2
  126. package/dist/components/sidebar.min.css +1 -1
  127. package/dist/components/sidebar.min.js +2 -2
  128. package/dist/components/site.css +14 -6
  129. package/dist/components/site.js +4 -2
  130. package/dist/components/site.min.css +2 -2
  131. package/dist/components/site.min.js +2 -2
  132. package/dist/components/slider.css +1 -1
  133. package/dist/components/slider.js +4 -2
  134. package/dist/components/slider.min.css +1 -1
  135. package/dist/components/slider.min.js +2 -2
  136. package/dist/components/state.js +4 -2
  137. package/dist/components/state.min.js +2 -2
  138. package/dist/components/statistic.css +1 -1
  139. package/dist/components/statistic.min.css +1 -1
  140. package/dist/components/step.css +1 -1
  141. package/dist/components/step.min.css +1 -1
  142. package/dist/components/sticky.css +1 -1
  143. package/dist/components/sticky.js +4 -2
  144. package/dist/components/sticky.min.css +1 -1
  145. package/dist/components/sticky.min.js +2 -2
  146. package/dist/components/tab.css +1 -1
  147. package/dist/components/tab.js +4 -2
  148. package/dist/components/tab.min.css +1 -1
  149. package/dist/components/tab.min.js +2 -2
  150. package/dist/components/table.css +32 -21
  151. package/dist/components/table.min.css +2 -2
  152. package/dist/components/text.css +1 -1
  153. package/dist/components/text.min.css +1 -1
  154. package/dist/components/toast.css +1 -1
  155. package/dist/components/toast.js +7 -3
  156. package/dist/components/toast.min.css +1 -1
  157. package/dist/components/toast.min.js +3 -3
  158. package/dist/components/transition.css +1 -1
  159. package/dist/components/transition.js +7 -3
  160. package/dist/components/transition.min.css +1 -1
  161. package/dist/components/transition.min.js +2 -2
  162. package/dist/components/visibility.js +4 -2
  163. package/dist/components/visibility.min.js +2 -2
  164. package/dist/semantic.css +239 -139
  165. package/dist/semantic.js +360 -130
  166. package/dist/semantic.min.css +3 -3
  167. package/dist/semantic.min.js +3 -3
  168. package/dist/themes/basic/assets/fonts/LICENSE.txt +91 -0
  169. package/dist/themes/default/assets/fonts/LICENSE_Lato.txt +94 -0
  170. package/dist/themes/default/assets/fonts/LICENSE_icons.txt +165 -0
  171. package/dist/themes/github/assets/fonts/LICENSE.txt +94 -0
  172. package/dist/themes/material/assets/fonts/LICENSE.txt +202 -0
  173. package/package.json +3 -3
  174. package/src/definitions/behaviors/api.js +6 -2
  175. package/src/definitions/behaviors/form.js +45 -19
  176. package/src/definitions/behaviors/state.js +3 -1
  177. package/src/definitions/behaviors/visibility.js +3 -1
  178. package/src/definitions/collections/form.less +14 -4
  179. package/src/definitions/collections/grid.less +4 -4
  180. package/src/definitions/collections/table.less +69 -54
  181. package/src/definitions/elements/button.less +25 -3
  182. package/src/definitions/elements/header.less +5 -0
  183. package/src/definitions/elements/input.less +14 -6
  184. package/src/definitions/globals/site.js +3 -1
  185. package/src/definitions/globals/site.less +17 -12
  186. package/src/definitions/modules/accordion.js +3 -1
  187. package/src/definitions/modules/calendar.js +14 -2
  188. package/src/definitions/modules/checkbox.js +9 -3
  189. package/src/definitions/modules/dimmer.js +3 -1
  190. package/src/definitions/modules/dimmer.less +8 -5
  191. package/src/definitions/modules/dropdown.js +101 -32
  192. package/src/definitions/modules/dropdown.less +38 -27
  193. package/src/definitions/modules/embed.js +16 -6
  194. package/src/definitions/modules/flyout.js +3 -1
  195. package/src/definitions/modules/modal.js +6 -2
  196. package/src/definitions/modules/nag.js +10 -4
  197. package/src/definitions/modules/popup.js +9 -3
  198. package/src/definitions/modules/progress.js +3 -1
  199. package/src/definitions/modules/rating.js +3 -1
  200. package/src/definitions/modules/search.js +66 -13
  201. package/src/definitions/modules/search.less +9 -2
  202. package/src/definitions/modules/shape.js +3 -1
  203. package/src/definitions/modules/sidebar.js +3 -1
  204. package/src/definitions/modules/slider.js +3 -1
  205. package/src/definitions/modules/sticky.js +3 -1
  206. package/src/definitions/modules/tab.js +3 -1
  207. package/src/definitions/modules/toast.js +6 -2
  208. package/src/definitions/modules/transition.js +6 -2
  209. package/src/definitions/views/feed.less +11 -0
  210. package/src/themes/basic/assets/fonts/LICENSE.txt +91 -0
  211. package/src/themes/default/assets/fonts/LICENSE_Lato.txt +94 -0
  212. package/src/themes/default/assets/fonts/LICENSE_icons.txt +165 -0
  213. package/src/themes/default/collections/form.variables +1 -0
  214. package/src/themes/default/elements/button.variables +2 -0
  215. package/src/themes/default/globals/site.variables +3 -0
  216. package/src/themes/default/globals/variation.variables +3 -0
  217. package/src/themes/default/modules/dropdown.variables +3 -0
  218. package/src/themes/default/modules/search.variables +3 -0
  219. package/src/themes/default/views/feed.variables +3 -0
  220. package/src/themes/github/assets/fonts/LICENSE.txt +94 -0
  221. package/src/themes/material/assets/fonts/LICENSE.txt +202 -0
  222. package/types/fomantic-ui-accordion.d.ts +1 -1
  223. package/types/fomantic-ui-api.d.ts +9 -3
  224. package/types/fomantic-ui-calendar.d.ts +93 -8
  225. package/types/fomantic-ui-checkbox.d.ts +14 -4
  226. package/types/fomantic-ui-dimmer.d.ts +1 -1
  227. package/types/fomantic-ui-dropdown.d.ts +48 -35
  228. package/types/fomantic-ui-embed.d.ts +19 -2
  229. package/types/fomantic-ui-flyout.d.ts +24 -10
  230. package/types/fomantic-ui-form.d.ts +123 -15
  231. package/types/fomantic-ui-modal.d.ts +75 -5
  232. package/types/fomantic-ui-nag.d.ts +4 -4
  233. package/types/fomantic-ui-popup.d.ts +11 -11
  234. package/types/fomantic-ui-progress.d.ts +12 -6
  235. package/types/fomantic-ui-rating.d.ts +1 -1
  236. package/types/fomantic-ui-search.d.ts +125 -14
  237. package/types/fomantic-ui-shape.d.ts +2 -2
  238. package/types/fomantic-ui-sidebar.d.ts +4 -4
  239. package/types/fomantic-ui-slider.d.ts +1 -1
  240. package/types/fomantic-ui-sticky.d.ts +1 -1
  241. package/types/fomantic-ui-tab.d.ts +5 -5
  242. package/types/fomantic-ui-toast.d.ts +14 -2
  243. package/types/fomantic-ui-transition.d.ts +29 -1
  244. package/types/fomantic-ui-visibility.d.ts +3 -3
  245. package/types/index.d.ts +25 -25
  246. package/types/tests.ts +188 -0
  247. package/types/tsconfig.json +1 -1
  248. package/types/fomantic-ui-tests.ts +0 -25
@@ -647,7 +647,9 @@
647
647
  module.debug('Adding error state');
648
648
  module.set.error();
649
649
  if (module.should.removeError()) {
650
- setTimeout(function () { module.remove.error(); }, settings.errorDuration);
650
+ setTimeout(function () {
651
+ module.remove.error();
652
+ }, settings.errorDuration);
651
653
  }
652
654
  }
653
655
  module.debug('API Request failed', errorMessage, xhr);
@@ -971,7 +973,9 @@
971
973
  });
972
974
  }
973
975
  clearTimeout(module.performance.timer);
974
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
976
+ module.performance.timer = setTimeout(function () {
977
+ module.performance.display();
978
+ }, 500);
975
979
  },
976
980
  display: function () {
977
981
  var
@@ -538,6 +538,13 @@
538
538
  fullFields[name].rules.push({ type: rule });
539
539
  });
540
540
  }
541
+
542
+ $.each(fullFields[name].rules, function (index, rule) {
543
+ var ruleName = module.get.ruleName(rule);
544
+ if (ruleName === 'empty') {
545
+ module.warn('*** DEPRECATED *** : Rule "empty" for field "' + name + '" will be removed in a future version. -> Use "notEmpty" rule instead.');
546
+ }
547
+ });
541
548
  });
542
549
 
543
550
  return fullFields;
@@ -551,9 +558,10 @@
551
558
  ancillary = module.get.ancillaryValue(rule),
552
559
  $field = module.get.field(field.identifier),
553
560
  value = $field.val(),
554
- prompt = isFunction(rule.prompt)
555
- ? rule.prompt(value)
556
- : rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,
561
+ promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,
562
+ prompt = String(isFunction(promptCheck)
563
+ ? promptCheck.call($field[0], value)
564
+ : promptCheck),
557
565
  requiresValue = prompt.search('{value}') !== -1,
558
566
  requiresName = prompt.search('{name}') !== -1,
559
567
  parts,
@@ -591,10 +599,10 @@
591
599
  },
592
600
  settings: function () {
593
601
  if ($.isPlainObject(parameters)) {
594
- if (parameters.fields) {
595
- parameters.fields = module.get.fieldsFromShorthand(parameters.fields);
596
- }
597
602
  settings = $.extend(true, {}, $.fn.form.settings, parameters);
603
+ if (settings.fields) {
604
+ settings.fields = module.get.fieldsFromShorthand(settings.fields);
605
+ }
598
606
  validation = $.extend(true, {}, $.fn.form.settings.defaults, settings.fields);
599
607
  module.verbose('Extending settings', validation, settings);
600
608
  } else {
@@ -711,7 +719,7 @@
711
719
  var
712
720
  $field = $(field),
713
721
  $calendar = $field.closest(selector.uiCalendar),
714
- name = $field.prop('name'),
722
+ name = $field.prop('name') || $field.prop('id'),
715
723
  value = $field.val(),
716
724
  isCheckbox = $field.is(selector.checkbox),
717
725
  isRadio = $field.is(selector.radio),
@@ -1237,20 +1245,20 @@
1237
1245
  isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required),
1238
1246
  isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled),
1239
1247
  validation = module.get.validation($el),
1240
- hasEmptyRule = validation
1248
+ hasNotEmptyRule = validation
1241
1249
  ? $.grep(validation.rules, function (rule) {
1242
- return rule.type === 'empty';
1243
- }) !== 0
1250
+ return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0;
1251
+ }).length > 0
1244
1252
  : false,
1245
1253
  identifier = module.get.identifier(validation, $el)
1246
1254
  ;
1247
- if (isRequired && !isDisabled && !hasEmptyRule && identifier !== undefined) {
1255
+ if (isRequired && !isDisabled && !hasNotEmptyRule && identifier !== undefined) {
1248
1256
  if (isCheckbox) {
1249
1257
  module.verbose("Adding 'checked' rule on field", identifier);
1250
1258
  module.add.rule(identifier, 'checked');
1251
1259
  } else {
1252
- module.verbose("Adding 'empty' rule on field", identifier);
1253
- module.add.rule(identifier, 'empty');
1260
+ module.verbose("Adding 'notEmpty' rule on field", identifier);
1261
+ module.add.rule(identifier, 'notEmpty');
1254
1262
  }
1255
1263
  }
1256
1264
  });
@@ -1342,28 +1350,30 @@
1342
1350
  var
1343
1351
  identifier = field.identifier || fieldName,
1344
1352
  $field = module.get.field(identifier),
1353
+ $fieldGroup = $field.closest($group),
1345
1354
  $dependsField = field.depends
1346
1355
  ? module.get.field(field.depends)
1347
1356
  : false,
1348
1357
  fieldValid = true,
1349
1358
  fieldErrors = [],
1350
- isDisabled = $field.filter(':not(:disabled)').length === 0,
1359
+ isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled),
1351
1360
  validationMessage = $field[0].validationMessage,
1361
+ noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0,
1352
1362
  errorLimit
1353
1363
  ;
1354
1364
  if (!field.identifier) {
1355
1365
  module.debug('Using field name as identifier', identifier);
1356
1366
  field.identifier = identifier;
1357
1367
  }
1358
- if (validationMessage) {
1368
+ if (validationMessage && !noNativeValidation && !isDisabled) {
1359
1369
  module.debug('Field is natively invalid', identifier);
1360
1370
  fieldErrors.push(validationMessage);
1361
1371
  fieldValid = false;
1362
1372
  if (showErrors) {
1363
- $field.closest($group).addClass(className.error);
1373
+ $fieldGroup.addClass(className.error);
1364
1374
  }
1365
1375
  } else if (showErrors) {
1366
- $field.closest($group).removeClass(className.error);
1376
+ $fieldGroup.removeClass(className.error);
1367
1377
  }
1368
1378
  if (isDisabled) {
1369
1379
  module.debug('Field is disabled. Skipping', identifier);
@@ -1491,6 +1501,12 @@
1491
1501
  module.error.apply(console, arguments);
1492
1502
  }
1493
1503
  },
1504
+ warn: function () {
1505
+ if (!settings.silent) {
1506
+ module.warn = Function.prototype.bind.call(console.warn, console, settings.name + ':');
1507
+ module.warn.apply(console, arguments);
1508
+ }
1509
+ },
1494
1510
  performance: {
1495
1511
  log: function (message) {
1496
1512
  var
@@ -1511,7 +1527,9 @@
1511
1527
  });
1512
1528
  }
1513
1529
  clearTimeout(module.performance.timer);
1514
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
1530
+ module.performance.timer = setTimeout(function () {
1531
+ module.performance.display();
1532
+ }, 500);
1515
1533
  },
1516
1534
  display: function () {
1517
1535
  var
@@ -1605,6 +1623,7 @@
1605
1623
  name: 'Form',
1606
1624
  namespace: 'form',
1607
1625
 
1626
+ silent: false,
1608
1627
  debug: false,
1609
1628
  verbose: false,
1610
1629
  performance: true,
@@ -1627,6 +1646,7 @@
1627
1646
  errorFocus: true,
1628
1647
  dateHandling: 'date', // 'date', 'input', 'formatter'
1629
1648
  errorLimit: 0,
1649
+ noNativeValidation: false,
1630
1650
 
1631
1651
  onValid: function () {},
1632
1652
  onInvalid: function () {},
@@ -1669,6 +1689,7 @@
1669
1689
  maxValue: '{name} must have a maximum value of {ruleValue}',
1670
1690
  minValue: '{name} must have a minimum value of {ruleValue}',
1671
1691
  empty: '{name} must have a value',
1692
+ notEmpty: '{name} must have a value',
1672
1693
  checked: '{name} must be checked',
1673
1694
  email: '{name} must be a valid e-mail',
1674
1695
  url: '{name} must be a valid url',
@@ -1801,10 +1822,15 @@
1801
1822
  rules: {
1802
1823
 
1803
1824
  // is not empty or blank string
1804
- empty: function (value) {
1825
+ notEmpty: function (value) {
1805
1826
  return !(value === undefined || value === '' || (Array.isArray(value) && value.length === 0));
1806
1827
  },
1807
1828
 
1829
+ /* Deprecated */
1830
+ empty: function (value) {
1831
+ return $.fn.form.settings.rules.notEmpty(value);
1832
+ },
1833
+
1808
1834
  // checkbox checked
1809
1835
  checked: function () {
1810
1836
  return $(this).filter(':checked').length > 0;
@@ -482,7 +482,9 @@
482
482
  });
483
483
  }
484
484
  clearTimeout(module.performance.timer);
485
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
485
+ module.performance.timer = setTimeout(function () {
486
+ module.performance.display();
487
+ }, 500);
486
488
  },
487
489
  display: function () {
488
490
  var
@@ -1088,7 +1088,9 @@
1088
1088
  });
1089
1089
  }
1090
1090
  clearTimeout(module.performance.timer);
1091
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
1091
+ module.performance.timer = setTimeout(function () {
1092
+ module.performance.display();
1093
+ }, 500);
1092
1094
  },
1093
1095
  display: function () {
1094
1096
  var
@@ -162,6 +162,11 @@
162
162
  font-family: @inputFont;
163
163
  line-height: @textAreaLineHeight;
164
164
  resize: @textAreaResize;
165
+ min-height: @actionTextareaMinHeight;
166
+ }
167
+ .ui.input > textarea {
168
+ flex: 1 1 auto;
169
+ max-width: 100%;
165
170
  }
166
171
  .ui.form textarea:not([rows]) {
167
172
  height: @textAreaHeight;
@@ -291,8 +296,10 @@
291
296
 
292
297
  /* Auto Input */
293
298
  .ui.form .fields .field .ui.input input,
294
- .ui.form .field .ui.input input {
295
- width: auto;
299
+ .ui.form .fields .field .ui.input textarea,
300
+ .ui.form .field .ui.input input,
301
+ .ui.form .field .ui.input textarea {
302
+ width: 100%;
296
303
  }
297
304
 
298
305
  & when (@variationFormEqualWidth) or (@variationFormWide) {
@@ -441,7 +448,8 @@
441
448
  input[type="text"]:focus,
442
449
  input[type="file"]:focus,
443
450
  input[type="url"]:focus,
444
- input[type="week"]:focus {
451
+ input[type="week"]:focus,
452
+ textarea:focus {
445
453
  border-top-right-radius: 0;
446
454
  border-bottom-right-radius: 0;
447
455
  }
@@ -462,7 +470,8 @@
462
470
  input[type="text"],
463
471
  input[type="file"],
464
472
  input[type="url"],
465
- input[type="week"] {
473
+ input[type="week"],
474
+ textarea {
466
475
  border-bottom-left-radius: 0;
467
476
  border-top-left-radius: 0;
468
477
  }
@@ -857,6 +866,7 @@
857
866
  .ui.form .inverted.segment label,
858
867
  .ui.form .inverted.segment .ui.checkbox label,
859
868
  .ui.inverted.form .ui.checkbox label,
869
+ .ui.inverted.form .grouped.fields > label,
860
870
  .ui.inverted.form .inline.fields > label,
861
871
  .ui.inverted.form .inline.fields .field > label,
862
872
  .ui.inverted.form .inline.fields .field > p,
@@ -1723,10 +1723,10 @@
1723
1723
  border-top: none !important;
1724
1724
  }
1725
1725
  & when (@variationGridInverted) {
1726
- .ui.inverted.stackable.celled.grid > .column:not(.row),
1727
- .ui.inverted.stackable.divided.grid > .column:not(.row),
1728
- .ui.inverted.stackable.celled.grid > .row > .column,
1729
- .ui.inverted.stackable.divided.grid > .row > .column {
1726
+ .ui.ui.inverted.stackable.celled.grid > .column:not(.row),
1727
+ .ui.ui.inverted.stackable.divided.grid > .column:not(.row),
1728
+ .ui.ui.inverted.stackable.celled.grid > .row > .column,
1729
+ .ui.ui.inverted.stackable.divided.grid > .row > .column {
1730
1730
  border-top: @stackableInvertedMobileBorder;
1731
1731
  }
1732
1732
  }
@@ -117,16 +117,16 @@
117
117
  .ui.table > tfoot > tr > td:first-child {
118
118
  border-left: none;
119
119
  }
120
- .ui.table > tfoot > tr:first-child > th:first-child,
121
- .ui.table > tfoot > tr:first-child > td:first-child {
120
+ .ui.table > tfoot > tr:last-child > th:first-child,
121
+ .ui.table > tfoot > tr:last-child > td:first-child {
122
122
  border-radius: 0 0 0 @borderRadius;
123
123
  }
124
- .ui.table > tfoot > tr:first-child > th:last-child,
125
- .ui.table > tfoot > tr:first-child > td:last-child {
124
+ .ui.table > tfoot > tr:last-child > th:last-child,
125
+ .ui.table > tfoot > tr:last-child > td:last-child {
126
126
  border-radius: 0 0 @borderRadius 0;
127
127
  }
128
- .ui.table > tfoot > tr:first-child > th:only-child,
129
- .ui.table > tfoot > tr:first-child > td:only-child {
128
+ .ui.table > tfoot > tr:last-child > th:only-child,
129
+ .ui.table > tfoot > tr:last-child > td:only-child {
130
130
  border-radius: 0 0 @borderRadius @borderRadius;
131
131
  }
132
132
 
@@ -458,13 +458,21 @@
458
458
  display: block;
459
459
  overflow-y: scroll;
460
460
  overscroll-behavior: @overscrollBehavior;
461
- scrollbar-width: thin; /* Firefox */
462
461
  & > tr {
463
462
  display: table;
464
463
  table-layout: fixed;
465
464
  width: 100%;
466
465
  }
467
466
  }
467
+ & when (@useCustomScrollbars) {
468
+ @supports (-moz-appearance: none) {
469
+ .ui.scrolling.table > thead,
470
+ .ui.scrolling.table > tfoot,
471
+ .ui.scrolling.table > tbody {
472
+ scrollbar-width: thin;
473
+ }
474
+ }
475
+ }
468
476
 
469
477
  /* Camouflage scrollbars, we need them only to gain the same width as tbody */
470
478
  .ui.scrolling.table > thead {
@@ -492,61 +500,68 @@
492
500
  background: inherit;
493
501
  border-radius: @borderRadius;
494
502
  }
495
-
496
- /* Firefox & IE */
497
- .ui.scrolling.table > thead,
498
- .ui.scrolling.table > tfoot {
499
- scrollbar-color: currentColor currentColor;
500
- & when (@supportIE) {
501
- scrollbar-face-color: currentColor;
502
- scrollbar-shadow-color: currentColor;
503
- scrollbar-track-color: currentColor;
504
- scrollbar-arrow-color: currentColor;
505
- }
506
- }
507
- & when (@supportIE) {
508
- /* IE scrollbar color needs hex values */
509
- @media all and (-ms-high-contrast: none) {
510
- .ui.scrolling.table > thead {
511
- color: @headerBackgroundHex;
512
- }
503
+ & when (@useCustomScrollbars) {
504
+ @supports (-moz-appearance: none) {
505
+ .ui.scrolling.table > thead,
513
506
  .ui.scrolling.table > tfoot {
514
- color: @footerBackgroundHex;
507
+ scrollbar-color: currentColor currentColor;
515
508
  }
516
- & when (@variationTableInverted) {
517
- .ui.inverted.scrolling.table > thead {
518
- color: @invertedHeaderBackgroundHex;
509
+ }
510
+
511
+ & when (@supportIE) {
512
+ /* IE scrollbar color needs hex values */
513
+ @media all and (-ms-high-contrast: none) {
514
+ .ui.scrolling.table > thead,
515
+ .ui.scrolling.table > tfoot {
516
+ scrollbar-face-color: currentColor;
517
+ scrollbar-shadow-color: currentColor;
518
+ scrollbar-track-color: currentColor;
519
+ scrollbar-arrow-color: currentColor;
520
+ }
521
+ .ui.scrolling.table > thead {
522
+ color: @headerBackgroundHex;
519
523
  }
520
- .ui.inverted.scrolling.table > tfoot {
521
- color: @invertedFooterBackgroundHex;
524
+ .ui.scrolling.table > tfoot {
525
+ color: @footerBackgroundHex;
526
+ }
527
+ & when (@variationTableInverted) {
528
+ .ui.inverted.scrolling.table > thead {
529
+ color: @invertedHeaderBackgroundHex;
530
+ }
531
+ .ui.inverted.scrolling.table > tfoot {
532
+ color: @invertedFooterBackgroundHex;
533
+ }
522
534
  }
523
535
  }
524
536
  }
525
- }
526
- & when (@variationTableInverted) {
527
- .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-track {
528
- background: @trackInvertedBackground;
529
- }
530
- .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb {
531
- background: @thumbInvertedBackground;
532
- }
533
- .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:window-inactive {
534
- background: @thumbInvertedInactiveBackground;
535
- }
536
- .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:hover {
537
- background: @thumbInvertedHoverBackground;
538
- }
539
- .ui.inverted.scrolling.table > tbody {
537
+ & when (@variationTableInverted) {
538
+ .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-track {
539
+ background: @trackInvertedBackground;
540
+ }
541
+ .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb {
542
+ background: @thumbInvertedBackground;
543
+ }
544
+ .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:window-inactive {
545
+ background: @thumbInvertedInactiveBackground;
546
+ }
547
+ .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:hover {
548
+ background: @thumbInvertedHoverBackground;
549
+ }
540
550
  & when (@supportIE) {
541
- /* IE11 */
542
- scrollbar-face-color: @thumbInvertedBackgroundHex;
543
- scrollbar-shadow-color: @thumbInvertedBackgroundHex;
544
- scrollbar-track-color: @trackInvertedBackgroundHex;
545
- scrollbar-arrow-color: @trackInvertedBackgroundHex;
551
+ .ui.inverted.scrolling.table > tbody {
552
+ /* IE11 */
553
+ scrollbar-face-color: @thumbInvertedBackgroundHex;
554
+ scrollbar-shadow-color: @thumbInvertedBackgroundHex;
555
+ scrollbar-track-color: @trackInvertedBackgroundHex;
556
+ scrollbar-arrow-color: @trackInvertedBackgroundHex;
557
+ }
558
+ }
559
+ @supports (-moz-appearance: none) {
560
+ .ui.inverted.scrolling.table > tbody {
561
+ /* firefox: first color thumb, second track */
562
+ scrollbar-color: @thumbInvertedBackground @trackInvertedBackground;
563
+ }
546
564
  }
547
-
548
- /* firefox: first color thumb, second track */
549
- scrollbar-color: @thumbInvertedBackground @trackInvertedBackground;
550
565
  }
551
566
  }
552
567
  & when (@variationTableResizable) {
@@ -885,7 +885,7 @@
885
885
  border-top: @basicGroupBorder;
886
886
  }
887
887
 
888
- .ui.basic.vertical.buttons:not(.spaced) .button:first-child {
888
+ .ui.basic.vertical.buttons:not(.spaced):not(.circular) .button:first-child {
889
889
  border-top: none;
890
890
  }
891
891
  }
@@ -1095,8 +1095,8 @@
1095
1095
  /* --------------
1096
1096
  Circular
1097
1097
  --------------- */
1098
-
1099
- .ui.circular.button {
1098
+ .ui.ui.circular.buttons .button,
1099
+ .ui.ui.ui.ui.circular.button {
1100
1100
  border-radius: @circularBorderRadius;
1101
1101
  }
1102
1102
 
@@ -1104,6 +1104,28 @@
1104
1104
  width: @circularIconWidth;
1105
1105
  vertical-align: baseline;
1106
1106
  }
1107
+
1108
+ .ui.circular.buttons:not(.vertical) .button {
1109
+ margin-right: @circularGroupMargin;
1110
+ }
1111
+
1112
+ & when (@variationButtonVertical) {
1113
+ .ui.vertical.circular.buttons .button {
1114
+ margin-bottom: @circularVerticalGroupMargin;
1115
+ }
1116
+ }
1117
+
1118
+ & when (@variationButtonBasic) {
1119
+ .ui.circular.basic.buttons {
1120
+ border: none;
1121
+ & .button {
1122
+ border: @basicGroupBorder;
1123
+ &.basic {
1124
+ border: none;
1125
+ }
1126
+ }
1127
+ }
1128
+ }
1107
1129
  }
1108
1130
 
1109
1131
  & when (@variationButtonOr) {
@@ -467,6 +467,11 @@
467
467
  .ui.bottom.attached.header {
468
468
  border-radius: 0 0 @attachedBorderRadius @attachedBorderRadius;
469
469
  }
470
+ & when (@variationHeaderSeamless) {
471
+ .ui.seamless.attached:not(.bottom).header {
472
+ border-bottom: none;
473
+ }
474
+ }
470
475
 
471
476
  /* Attached Sizes */
472
477
  .ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
@@ -35,7 +35,7 @@
35
35
  .ui.input > input {
36
36
  margin: 0;
37
37
  max-width: 100%;
38
- flex: 1 0 auto;
38
+ flex: 1 1 auto;
39
39
  outline: none;
40
40
  -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
41
41
  text-align: @textAlign;
@@ -524,7 +524,11 @@
524
524
  .ui.form .field.@{state} > .ui.action.input:not([class*="left action"]) > input + .ui.button,
525
525
  .ui.form .field.@{state} > .ui.right.labeled.input:not([class*="corner labeled"]) > input + .ui.label,
526
526
  .ui.action.input.@{state}:not([class*="left action"]) > input + .ui.button,
527
- .ui.right.labeled.input.@{state}:not([class*="corner labeled"]) > input + .ui.label {
527
+ .ui.right.labeled.input.@{state}:not([class*="corner labeled"]) > input + .ui.label,
528
+ .ui.form .field.@{state} > .ui.action.input:not([class*="left action"]) > textarea + .ui.button,
529
+ .ui.form .field.@{state} > .ui.right.labeled.input:not([class*="corner labeled"]) > textarea + .ui.label,
530
+ .ui.action.input.@{state}:not([class*="left action"]) > textarea + .ui.button,
531
+ .ui.right.labeled.input.@{state}:not([class*="corner labeled"]) > textarea + .ui.label {
528
532
  border-right: @borderWidth solid @borderColor;
529
533
  }
530
534
  .ui.form .field.@{state} > .ui.right.labeled.input:not([class*="corner labeled"]) > .ui.label:first-child,
@@ -553,14 +557,16 @@
553
557
  }
554
558
 
555
559
  /* Input when ui Left */
556
- .ui[class*="left action"].input > input {
560
+ .ui[class*="left action"].input > input,
561
+ .ui[class*="left action"].input > textarea {
557
562
  border-top-left-radius: 0;
558
563
  border-bottom-left-radius: 0;
559
564
  border-left-color: transparent;
560
565
  }
561
566
 
562
567
  /* Input when ui Right */
563
- .ui.action.input:not([class*="left action"]) > input {
568
+ .ui.action.input:not([class*="left action"]) > input,
569
+ .ui.action.input:not([class*="left action"]) > textarea {
564
570
  border-top-right-radius: 0;
565
571
  border-bottom-right-radius: 0;
566
572
  border-right-color: transparent;
@@ -584,11 +590,13 @@
584
590
  }
585
591
 
586
592
  /* Input Focus */
587
- .ui.action.input:not([class*="left action"]) > input:focus {
593
+ .ui.action.input:not([class*="left action"]) > input:focus,
594
+ .ui.action.input:not([class*="left action"]) > textarea:focus {
588
595
  border-right-color: @focusBorderColor;
589
596
  }
590
597
 
591
- .ui.ui[class*="left action"].input > input:focus {
598
+ .ui.ui[class*="left action"].input > input:focus,
599
+ .ui.ui[class*="left action"].input > textarea:focus {
592
600
  border-left-color: @focusBorderColor;
593
601
  }
594
602
  }
@@ -292,7 +292,9 @@
292
292
  });
293
293
  }
294
294
  clearTimeout(module.performance.timer);
295
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
295
+ module.performance.timer = setTimeout(function () {
296
+ module.performance.display();
297
+ }, 500);
296
298
  },
297
299
  display: function () {
298
300
  var
@@ -148,18 +148,21 @@ a:hover {
148
148
  body ::-webkit-scrollbar-thumb:hover {
149
149
  background: @thumbHoverBackground;
150
150
  }
151
- body .ui {
152
- & when (@supportIE) {
151
+ & when (@supportIE) {
152
+ body .ui {
153
153
  /* IE11 */
154
154
  scrollbar-face-color: @thumbBackgroundHex;
155
155
  scrollbar-shadow-color: @thumbBackgroundHex;
156
156
  scrollbar-track-color: @trackBackgroundHex;
157
157
  scrollbar-arrow-color: @trackBackgroundHex;
158
158
  }
159
-
160
- /* firefox: first color thumb, second track */
161
- scrollbar-color: @thumbBackground @trackBackground;
162
- scrollbar-width: thin;
159
+ }
160
+ @supports (-moz-appearance: none) {
161
+ body .ui {
162
+ /* firefox: first color thumb, second track */
163
+ scrollbar-color: @thumbBackground @trackBackground;
164
+ scrollbar-width: thin;
165
+ }
163
166
  }
164
167
 
165
168
  /* Inverted UI */
@@ -175,18 +178,20 @@ a:hover {
175
178
  body .ui.inverted:not(.dimmer)::-webkit-scrollbar-thumb:hover {
176
179
  background: @thumbInvertedHoverBackground;
177
180
  }
178
-
179
- body .ui.inverted:not(.dimmer) {
180
- & when (@supportIE) {
181
+ & when (@supportIE) {
182
+ body .ui.inverted:not(.dimmer) {
181
183
  /* IE11 */
182
184
  scrollbar-face-color: @thumbInvertedBackgroundHex;
183
185
  scrollbar-shadow-color: @thumbInvertedBackgroundHex;
184
186
  scrollbar-track-color: @trackInvertedBackgroundHex;
185
187
  scrollbar-arrow-color: @trackInvertedBackgroundHex;
186
188
  }
187
-
188
- /* firefox: first color thumb, second track */
189
- scrollbar-color: @thumbInvertedBackground @trackInvertedBackground;
189
+ }
190
+ @supports (-moz-appearance: none) {
191
+ body .ui.inverted:not(.dimmer) {
192
+ /* firefox: first color thumb, second track */
193
+ scrollbar-color: @thumbInvertedBackground @trackInvertedBackground;
194
+ }
190
195
  }
191
196
  }
192
197
 
@@ -438,7 +438,9 @@
438
438
  });
439
439
  }
440
440
  clearTimeout(module.performance.timer);
441
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
441
+ module.performance.timer = setTimeout(function () {
442
+ module.performance.display();
443
+ }, 500);
442
444
  },
443
445
  display: function () {
444
446
  var