fomantic-ui 2.9.0-beta.18 → 2.9.0-beta.183

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 (234) hide show
  1. package/.all-contributorsrc +197 -3
  2. package/CONTRIBUTORS.md +74 -37
  3. package/README.md +1 -1
  4. package/dist/components/accordion.css +50 -6
  5. package/dist/components/accordion.js +1 -1
  6. package/dist/components/accordion.min.css +2 -2
  7. package/dist/components/accordion.min.js +1 -1
  8. package/dist/components/ad.css +1 -1
  9. package/dist/components/ad.min.css +1 -1
  10. package/dist/components/api.js +29 -25
  11. package/dist/components/api.min.js +2 -2
  12. package/dist/components/breadcrumb.css +1 -1
  13. package/dist/components/breadcrumb.min.css +1 -1
  14. package/dist/components/button.css +81 -81
  15. package/dist/components/button.min.css +2 -2
  16. package/dist/components/calendar.css +1 -1
  17. package/dist/components/calendar.js +6 -7
  18. package/dist/components/calendar.min.css +1 -1
  19. package/dist/components/calendar.min.js +2 -2
  20. package/dist/components/card.css +26 -19
  21. package/dist/components/card.min.css +2 -2
  22. package/dist/components/checkbox.css +2 -1
  23. package/dist/components/checkbox.js +17 -11
  24. package/dist/components/checkbox.min.css +2 -2
  25. package/dist/components/checkbox.min.js +2 -2
  26. package/dist/components/comment.css +11 -11
  27. package/dist/components/comment.min.css +1 -1
  28. package/dist/components/container.css +77 -1
  29. package/dist/components/container.min.css +2 -2
  30. package/dist/components/dimmer.css +28 -14
  31. package/dist/components/dimmer.js +1 -1
  32. package/dist/components/dimmer.min.css +2 -2
  33. package/dist/components/dimmer.min.js +1 -1
  34. package/dist/components/divider.css +1 -1
  35. package/dist/components/divider.min.css +1 -1
  36. package/dist/components/dropdown.css +30 -7
  37. package/dist/components/dropdown.js +58 -33
  38. package/dist/components/dropdown.min.css +2 -2
  39. package/dist/components/dropdown.min.js +2 -2
  40. package/dist/components/embed.css +1 -1
  41. package/dist/components/embed.js +1 -1
  42. package/dist/components/embed.min.css +1 -1
  43. package/dist/components/embed.min.js +1 -1
  44. package/dist/components/emoji.css +2 -2
  45. package/dist/components/feed.css +28 -28
  46. package/dist/components/feed.min.css +2 -2
  47. package/dist/components/flag.css +731 -625
  48. package/dist/components/flag.min.css +2 -2
  49. package/dist/components/form.css +106 -55
  50. package/dist/components/form.js +25 -23
  51. package/dist/components/form.min.css +2 -2
  52. package/dist/components/form.min.js +2 -2
  53. package/dist/components/grid.css +11 -8
  54. package/dist/components/grid.min.css +2 -2
  55. package/dist/components/header.css +1 -1
  56. package/dist/components/header.min.css +1 -1
  57. package/dist/components/icon.css +6 -1
  58. package/dist/components/icon.min.css +2 -2
  59. package/dist/components/image.css +1 -1
  60. package/dist/components/image.min.css +1 -1
  61. package/dist/components/input.css +734 -17
  62. package/dist/components/input.min.css +2 -2
  63. package/dist/components/item.css +13 -13
  64. package/dist/components/item.min.css +1 -1
  65. package/dist/components/label.css +1 -1
  66. package/dist/components/label.min.css +1 -1
  67. package/dist/components/list.css +1 -1
  68. package/dist/components/list.min.css +1 -1
  69. package/dist/components/loader.css +1 -1
  70. package/dist/components/loader.min.css +1 -1
  71. package/dist/components/menu.css +29 -5
  72. package/dist/components/menu.min.css +1 -1
  73. package/dist/components/message.css +41 -41
  74. package/dist/components/message.min.css +2 -2
  75. package/dist/components/modal.css +3 -1
  76. package/dist/components/modal.js +94 -30
  77. package/dist/components/modal.min.css +2 -2
  78. package/dist/components/modal.min.js +2 -2
  79. package/dist/components/nag.css +1 -1
  80. package/dist/components/nag.js +1 -1
  81. package/dist/components/nag.min.css +1 -1
  82. package/dist/components/nag.min.js +1 -1
  83. package/dist/components/placeholder.css +1 -1
  84. package/dist/components/placeholder.min.css +1 -1
  85. package/dist/components/popup.css +5 -3
  86. package/dist/components/popup.js +1 -1
  87. package/dist/components/popup.min.css +2 -2
  88. package/dist/components/popup.min.js +1 -1
  89. package/dist/components/progress.css +1 -1
  90. package/dist/components/progress.js +4 -1
  91. package/dist/components/progress.min.css +1 -1
  92. package/dist/components/progress.min.js +2 -2
  93. package/dist/components/rail.css +1 -1
  94. package/dist/components/rail.min.css +1 -1
  95. package/dist/components/rating.css +7 -46
  96. package/dist/components/rating.js +1 -1
  97. package/dist/components/rating.min.css +2 -2
  98. package/dist/components/rating.min.js +1 -1
  99. package/dist/components/reset.css +1 -1
  100. package/dist/components/reset.min.css +1 -1
  101. package/dist/components/reveal.css +1 -1
  102. package/dist/components/reveal.min.css +1 -1
  103. package/dist/components/search.css +1 -1
  104. package/dist/components/search.js +1 -1
  105. package/dist/components/search.min.css +1 -1
  106. package/dist/components/search.min.js +1 -1
  107. package/dist/components/segment.css +90 -6
  108. package/dist/components/segment.min.css +2 -2
  109. package/dist/components/shape.css +1 -1
  110. package/dist/components/shape.js +1 -1
  111. package/dist/components/shape.min.css +1 -1
  112. package/dist/components/shape.min.js +1 -1
  113. package/dist/components/sidebar.css +4 -2
  114. package/dist/components/sidebar.js +1 -1
  115. package/dist/components/sidebar.min.css +2 -2
  116. package/dist/components/sidebar.min.js +1 -1
  117. package/dist/components/site.css +61 -39
  118. package/dist/components/site.js +1 -1
  119. package/dist/components/site.min.css +2 -2
  120. package/dist/components/site.min.js +1 -1
  121. package/dist/components/slider.js +1 -1
  122. package/dist/components/slider.min.js +1 -1
  123. package/dist/components/state.js +1 -1
  124. package/dist/components/state.min.js +1 -1
  125. package/dist/components/statistic.css +1 -1
  126. package/dist/components/statistic.min.css +1 -1
  127. package/dist/components/step.css +4 -4
  128. package/dist/components/step.min.css +2 -2
  129. package/dist/components/sticky.css +1 -1
  130. package/dist/components/sticky.js +1 -1
  131. package/dist/components/sticky.min.css +1 -1
  132. package/dist/components/sticky.min.js +1 -1
  133. package/dist/components/tab.css +1 -1
  134. package/dist/components/tab.js +23 -5
  135. package/dist/components/tab.min.css +1 -1
  136. package/dist/components/tab.min.js +2 -2
  137. package/dist/components/table.css +1168 -26
  138. package/dist/components/table.min.css +2 -2
  139. package/dist/components/text.css +1 -1
  140. package/dist/components/text.min.css +1 -1
  141. package/dist/components/toast.css +39 -1
  142. package/dist/components/toast.js +54 -27
  143. package/dist/components/toast.min.css +2 -2
  144. package/dist/components/toast.min.js +2 -2
  145. package/dist/components/transition.css +1 -1
  146. package/dist/components/transition.js +1 -1
  147. package/dist/components/transition.min.css +1 -1
  148. package/dist/components/transition.min.js +1 -1
  149. package/dist/components/visibility.js +1 -1
  150. package/dist/components/visibility.min.js +1 -1
  151. package/dist/semantic.css +4081 -1303
  152. package/dist/semantic.js +326 -178
  153. package/dist/semantic.min.css +2 -2
  154. package/dist/semantic.min.js +2 -2
  155. package/examples/assets/library/iframe-content.js +5 -5
  156. package/package.json +2 -2
  157. package/src/definitions/behaviors/api.js +28 -24
  158. package/src/definitions/behaviors/form.js +24 -22
  159. package/src/definitions/collections/form.less +193 -140
  160. package/src/definitions/collections/grid.less +716 -680
  161. package/src/definitions/collections/menu.less +173 -126
  162. package/src/definitions/collections/message.less +48 -46
  163. package/src/definitions/collections/table.less +849 -262
  164. package/src/definitions/elements/button.less +360 -347
  165. package/src/definitions/elements/container.less +126 -8
  166. package/src/definitions/elements/emoji.less +15 -9
  167. package/src/definitions/elements/flag.less +7 -17
  168. package/src/definitions/elements/header.less +42 -35
  169. package/src/definitions/elements/icon.less +38 -31
  170. package/src/definitions/elements/input.less +256 -21
  171. package/src/definitions/elements/label.less +92 -91
  172. package/src/definitions/elements/list.less +55 -45
  173. package/src/definitions/elements/loader.less +30 -29
  174. package/src/definitions/elements/segment.less +146 -27
  175. package/src/definitions/elements/step.less +52 -48
  176. package/src/definitions/elements/text.less +17 -15
  177. package/src/definitions/globals/site.less +23 -2
  178. package/src/definitions/modules/accordion.less +55 -5
  179. package/src/definitions/modules/calendar.js +5 -6
  180. package/src/definitions/modules/checkbox.js +16 -10
  181. package/src/definitions/modules/checkbox.less +34 -178
  182. package/src/definitions/modules/dimmer.less +21 -8
  183. package/src/definitions/modules/dropdown.js +57 -32
  184. package/src/definitions/modules/dropdown.less +101 -69
  185. package/src/definitions/modules/modal.js +93 -29
  186. package/src/definitions/modules/modal.less +2 -0
  187. package/src/definitions/modules/nag.less +20 -19
  188. package/src/definitions/modules/popup.less +5 -1
  189. package/src/definitions/modules/progress.js +3 -0
  190. package/src/definitions/modules/progress.less +19 -18
  191. package/src/definitions/modules/rating.less +49 -42
  192. package/src/definitions/modules/search.less +32 -16
  193. package/src/definitions/modules/sidebar.less +33 -19
  194. package/src/definitions/modules/slider.less +39 -38
  195. package/src/definitions/modules/tab.js +22 -4
  196. package/src/definitions/modules/toast.js +53 -26
  197. package/src/definitions/modules/toast.less +48 -16
  198. package/src/definitions/views/card.less +402 -361
  199. package/src/definitions/views/comment.less +92 -81
  200. package/src/definitions/views/feed.less +164 -144
  201. package/src/definitions/views/item.less +249 -196
  202. package/src/definitions/views/statistic.less +90 -88
  203. package/src/themes/bookish/elements/header.overrides +1 -1
  204. package/src/themes/chubby/elements/button.overrides +1 -1
  205. package/src/themes/chubby/elements/header.overrides +1 -1
  206. package/src/themes/default/collections/menu.variables +6 -0
  207. package/src/themes/default/collections/table.variables +52 -0
  208. package/src/themes/default/elements/button.variables +2 -1
  209. package/src/themes/default/elements/container.variables +8 -0
  210. package/src/themes/default/elements/flag.overrides +1635 -986
  211. package/src/themes/default/elements/flag.variables +7 -5
  212. package/src/themes/default/elements/icon.overrides +35 -28
  213. package/src/themes/default/elements/icon.variables +1 -0
  214. package/src/themes/default/elements/input.variables +15 -0
  215. package/src/themes/default/elements/segment.variables +8 -0
  216. package/src/themes/default/elements/step.overrides +1 -1
  217. package/src/themes/default/globals/site.variables +6 -0
  218. package/src/themes/default/globals/variation.variables +130 -6
  219. package/src/themes/default/modules/accordion.variables +15 -0
  220. package/src/themes/default/modules/checkbox.variables +5 -5
  221. package/src/themes/default/modules/dimmer.variables +1 -1
  222. package/src/themes/default/modules/dropdown.variables +1 -1
  223. package/src/themes/default/modules/toast.variables +3 -0
  224. package/src/themes/famfamfam/elements/flag.overrides +1026 -0
  225. package/src/themes/famfamfam/elements/flag.variables +13 -0
  226. package/src/themes/instagram/views/card.overrides +1 -1
  227. package/src/themes/material/collections/menu.overrides +1 -1
  228. package/src/themes/material/elements/button.overrides +1 -1
  229. package/src/themes/material/elements/header.overrides +1 -1
  230. package/src/themes/material/modules/dropdown.overrides +1 -1
  231. package/src/themes/material/modules/modal.overrides +1 -1
  232. package/src/themes/rtl/globals/site.overrides +1 -1
  233. package/tasks/build/css.js +6 -1
  234. package/test/helpers/sinon.js +1 -1
@@ -66,7 +66,8 @@ $.fn.modal = function(parameters) {
66
66
 
67
67
  $module = $(this),
68
68
  $context = $(settings.context),
69
- $close = $module.find(selector.close),
69
+ $closeIcon = $module.find(selector.closeIcon),
70
+ $inputs,
70
71
 
71
72
  $allModals,
72
73
  $otherModals,
@@ -92,6 +93,7 @@ $.fn.modal = function(parameters) {
92
93
  module = {
93
94
 
94
95
  initialize: function() {
96
+ module.create.id();
95
97
  if(!$module.hasClass('modal')) {
96
98
  module.create.modal();
97
99
  if(!$.isFunction(settings.onHidden)) {
@@ -116,15 +118,17 @@ $.fn.modal = function(parameters) {
116
118
  $actions.empty();
117
119
  }
118
120
  settings.actions.forEach(function (el) {
119
- var icon = el[fields.icon] ? '<i class="' + module.helpers.deQuote(el[fields.icon]) + ' icon"></i>' : '',
121
+ var icon = el[fields.icon] ? '<i '+(el[fields.text] ? 'aria-hidden="true"' : '')+' class="' + module.helpers.deQuote(el[fields.icon]) + ' icon"></i>' : '',
120
122
  text = module.helpers.escape(el[fields.text] || '', settings.preserveHTML),
121
123
  cls = module.helpers.deQuote(el[fields.class] || ''),
122
124
  click = el[fields.click] && $.isFunction(el[fields.click]) ? el[fields.click] : function () {};
123
125
  $actions.append($('<button/>', {
124
126
  html: icon + text,
127
+ 'aria-label': $('<div>'+(el[fields.text] || el[fields.icon] || '')+'</div>').text(),
125
128
  class: className.button + ' ' + cls,
126
129
  click: function () {
127
- if (click.call(element, $module) === false) {
130
+ var button = $(this);
131
+ if (button.is(selector.approve) || button.is(selector.deny) || click.call(element, $module) === false) {
128
132
  return;
129
133
  }
130
134
  module.hide();
@@ -135,7 +139,6 @@ $.fn.modal = function(parameters) {
135
139
  module.cache = {};
136
140
  module.verbose('Initializing dimmer', $context);
137
141
 
138
- module.create.id();
139
142
  module.create.dimmer();
140
143
 
141
144
  if ( settings.allowMultiple ) {
@@ -145,11 +148,9 @@ $.fn.modal = function(parameters) {
145
148
  $module.addClass('top aligned');
146
149
  }
147
150
  module.refreshModals();
148
-
151
+ module.refreshInputs();
149
152
  module.bind.events();
150
- if(settings.observeChanges) {
151
- module.observeChanges();
152
- }
153
+ module.observeChanges();
153
154
  module.instantiate();
154
155
  if(settings.autoShow){
155
156
  module.show();
@@ -166,16 +167,20 @@ $.fn.modal = function(parameters) {
166
167
 
167
168
  create: {
168
169
  modal: function() {
169
- $module = $('<div/>', {class: className.modal});
170
+ $module = $('<div/>', {class: className.modal, role: 'dialog', 'aria-modal': true});
170
171
  if (settings.closeIcon) {
171
- $close = $('<i/>', {class: className.close})
172
- $module.append($close);
172
+ $closeIcon = $('<i/>', {class: className.close, role: 'button', tabindex: 0, 'aria-label': settings.text.close})
173
+ $module.append($closeIcon);
173
174
  }
174
175
  if (settings.title !== '') {
175
- $('<div/>', {class: className.title}).appendTo($module);
176
+ var titleId = '_' + module.get.id() + 'title';
177
+ $module.attr('aria-labelledby', titleId);
178
+ $('<div/>', {class: className.title, id: titleId}).appendTo($module);
176
179
  }
177
180
  if (settings.content !== '') {
178
- $('<div/>', {class: className.content}).appendTo($module);
181
+ var descId = '_' + module.get.id() + 'desc';
182
+ $module.attr('aria-describedby', descId);
183
+ $('<div/>', {class: className.content, id: descId}).appendTo($module);
179
184
  }
180
185
  if (module.has.configActions()) {
181
186
  $('<div/>', {class: className.actions}).appendTo($module);
@@ -228,15 +233,21 @@ $.fn.modal = function(parameters) {
228
233
  ;
229
234
  $window.off(elementEventNamespace);
230
235
  $dimmer.off(elementEventNamespace);
231
- $close.off(eventNamespace);
236
+ $closeIcon.off(elementEventNamespace);
237
+ if($inputs) {
238
+ $inputs.off(elementEventNamespace);
239
+ }
232
240
  $context.dimmer('destroy');
233
241
  },
234
242
 
235
243
  observeChanges: function() {
236
244
  if('MutationObserver' in window) {
237
245
  observer = new MutationObserver(function(mutations) {
238
- module.debug('DOM tree modified, refreshing');
239
- module.refresh();
246
+ if(settings.observeChanges) {
247
+ module.debug('DOM tree modified, refreshing');
248
+ module.refresh();
249
+ }
250
+ module.refreshInputs();
240
251
  });
241
252
  observer.observe(element, {
242
253
  childList : true,
@@ -261,6 +272,23 @@ $.fn.modal = function(parameters) {
261
272
  $allModals = $otherModals.add($module);
262
273
  },
263
274
 
275
+ refreshInputs: function(){
276
+ if($inputs){
277
+ $inputs
278
+ .off('keydown' + elementEventNamespace)
279
+ ;
280
+ }
281
+ $inputs = $module.find('[tabindex], :input').filter(':visible').filter(function() {
282
+ return $(this).closest('.disabled').length === 0;
283
+ });
284
+ $inputs.first()
285
+ .on('keydown' + elementEventNamespace, module.event.inputKeyDown.first)
286
+ ;
287
+ $inputs.last()
288
+ .on('keydown' + elementEventNamespace, module.event.inputKeyDown.last)
289
+ ;
290
+ },
291
+
264
292
  attachEvents: function(selector, event) {
265
293
  var
266
294
  $toggle = $(selector)
@@ -289,6 +317,9 @@ $.fn.modal = function(parameters) {
289
317
  .on('click' + eventNamespace, selector.approve, module.event.approve)
290
318
  .on('click' + eventNamespace, selector.deny, module.event.deny)
291
319
  ;
320
+ $closeIcon
321
+ .on('keyup' + elementEventNamespace, module.event.closeKeyUp)
322
+ ;
292
323
  $window
293
324
  .on('resize' + elementEventNamespace, module.event.resize)
294
325
  ;
@@ -307,7 +338,7 @@ $.fn.modal = function(parameters) {
307
338
 
308
339
  get: {
309
340
  id: function() {
310
- return (Math.random().toString(16) + '000000000').substr(2, 8);
341
+ return id;
311
342
  },
312
343
  element: function() {
313
344
  return $module;
@@ -346,10 +377,38 @@ $.fn.modal = function(parameters) {
346
377
  close: function() {
347
378
  module.hide();
348
379
  },
380
+ closeKeyUp: function(event){
381
+ var
382
+ keyCode = event.which
383
+ ;
384
+ if ((keyCode === settings.keys.enter || keyCode === settings.keys.space) && $module.hasClass(className.front)) {
385
+ module.hide();
386
+ }
387
+ },
388
+ inputKeyDown: {
389
+ first: function(event) {
390
+ var
391
+ keyCode = event.which
392
+ ;
393
+ if (keyCode === settings.keys.tab && event.shiftKey) {
394
+ $inputs.last().focus();
395
+ event.preventDefault();
396
+ }
397
+ },
398
+ last: function(event) {
399
+ var
400
+ keyCode = event.which
401
+ ;
402
+ if (keyCode === settings.keys.tab && !event.shiftKey) {
403
+ $inputs.first().focus();
404
+ event.preventDefault();
405
+ }
406
+ }
407
+ },
349
408
  mousedown: function(event) {
350
409
  var
351
410
  $target = $(event.target),
352
- isRtl = module.is.rtl();
411
+ isRtl = module.is.rtl()
353
412
  ;
354
413
  initialMouseDownInModal = ($target.closest(selector.modal).length > 0);
355
414
  if(initialMouseDownInModal) {
@@ -397,10 +456,9 @@ $.fn.modal = function(parameters) {
397
456
  },
398
457
  keyboard: function(event) {
399
458
  var
400
- keyCode = event.which,
401
- escapeKey = 27
459
+ keyCode = event.which
402
460
  ;
403
- if(keyCode == escapeKey) {
461
+ if(keyCode === settings.keys.escape) {
404
462
  if(settings.closable) {
405
463
  module.debug('Escape key pressed hiding modal');
406
464
  if ( $module.hasClass(className.front) ) {
@@ -715,7 +773,7 @@ $.fn.modal = function(parameters) {
715
773
  $module
716
774
  .off('mousedown' + elementEventNamespace)
717
775
  ;
718
- }
776
+ }
719
777
  $dimmer
720
778
  .off('mousedown' + elementEventNamespace)
721
779
  ;
@@ -900,13 +958,10 @@ $.fn.modal = function(parameters) {
900
958
  set: {
901
959
  autofocus: function() {
902
960
  var
903
- $inputs = $module.find('[tabindex], :input').filter(':visible').filter(function() {
904
- return $(this).closest('.disabled').length === 0;
905
- }),
906
961
  $autofocus = $inputs.filter('[autofocus]'),
907
962
  $input = ($autofocus.length > 0)
908
963
  ? $autofocus.first()
909
- : $inputs.first()
964
+ : ($inputs.length > 1 ? $inputs.filter(':not(i.close)') : $inputs).first()
910
965
  ;
911
966
  if($input.length > 0) {
912
967
  $input.focus();
@@ -988,7 +1043,7 @@ $.fn.modal = function(parameters) {
988
1043
  ? $(document).scrollTop() + settings.padding
989
1044
  : $(document).scrollTop() + (module.cache.contextHeight - module.cache.height - settings.padding),
990
1045
  marginLeft: -(module.cache.width / 2)
991
- })
1046
+ })
992
1047
  ;
993
1048
  } else {
994
1049
  $module
@@ -997,7 +1052,7 @@ $.fn.modal = function(parameters) {
997
1052
  ? -(module.cache.height / 2)
998
1053
  : settings.padding / 2,
999
1054
  marginLeft: -(module.cache.width / 2)
1000
- })
1055
+ })
1001
1056
  ;
1002
1057
  }
1003
1058
  module.verbose('Setting modal offset for legacy mode');
@@ -1323,11 +1378,19 @@ $.fn.modal.settings = {
1323
1378
  // called after deny selector match
1324
1379
  onDeny : function(){ return true; },
1325
1380
 
1381
+ keys : {
1382
+ space : 32,
1383
+ enter : 13,
1384
+ escape : 27,
1385
+ tab : 9,
1386
+ },
1387
+
1326
1388
  selector : {
1327
1389
  title : '> .header',
1328
1390
  content : '> .content',
1329
1391
  actions : '> .actions',
1330
1392
  close : '> .close',
1393
+ closeIcon: '> .close',
1331
1394
  approve : '.actions .positive, .actions .approve, .actions .ok',
1332
1395
  deny : '.actions .negative, .actions .deny, .actions .cancel',
1333
1396
  modal : '.ui.modal',
@@ -1363,7 +1426,8 @@ $.fn.modal.settings = {
1363
1426
  },
1364
1427
  text: {
1365
1428
  ok : 'Ok',
1366
- cancel: 'Cancel'
1429
+ cancel: 'Cancel',
1430
+ close : 'Close'
1367
1431
  }
1368
1432
  };
1369
1433
 
@@ -80,8 +80,10 @@
80
80
  height: @closeHitbox;
81
81
  padding: @closePadding;
82
82
  }
83
+ .ui.modal > .close:focus,
83
84
  .ui.modal > .close:hover {
84
85
  opacity: 1;
86
+ outline: none;
85
87
  }
86
88
 
87
89
  /*--------------
@@ -169,28 +169,29 @@ a.ui.nag {
169
169
  /*--------------
170
170
  Colors
171
171
  -------------- */
172
-
173
- each(@colors, {
174
- @color: replace(@key, '@', '');
175
- @c: @colors[@@color][color];
176
- @l: @colors[@@color][light];
177
- @isVeryDark: @colors[@@color][isVeryDark];
178
-
179
- .ui.@{color}.nag {
180
- background-color: @c;
181
- & when (@isVeryDark) {
182
- color: @invertedTextColor;
172
+ & when not (@variationNagColors = false) {
173
+ each(@variationNagColors, {
174
+ @color: @value;
175
+ @c: @colors[@@color][color];
176
+ @l: @colors[@@color][light];
177
+ @isVeryDark: @colors[@@color][isVeryDark];
178
+
179
+ .ui.@{color}.nag {
180
+ background-color: @c;
181
+ & when (@isVeryDark) {
182
+ color: @invertedTextColor;
183
+ }
183
184
  }
184
- }
185
- & when (@variationNagInverted) {
186
- .ui.inverted.@{color}.nag {
187
- background-color: @l;
188
- & .title when (@isVeryDark) {
189
- color: @titleColor;
185
+ & when (@variationNagInverted) {
186
+ .ui.inverted.@{color}.nag {
187
+ background-color: @l;
188
+ & .title when (@isVeryDark) {
189
+ color: @titleColor;
190
+ }
190
191
  }
191
192
  }
192
- }
193
- })
193
+ })
194
+ }
194
195
 
195
196
  & when (@variationNagGroups) {
196
197
  /*******************************
@@ -337,7 +337,6 @@
337
337
  left: 50%;
338
338
  margin-left: @tooltipArrowHorizontalOffset;
339
339
  margin-top: -@arrowOffset;
340
- transform-origin: center top;
341
340
  }
342
341
  }
343
342
  & when (@variationPopupLeft) {
@@ -448,6 +447,11 @@
448
447
  }
449
448
  }
450
449
  & when (@variationPopupCenter) {
450
+ & when (@variationPopupBottom) {
451
+ [data-position="bottom center"][data-tooltip]:before {
452
+ transform-origin: center top;
453
+ }
454
+ }
451
455
  & when (@variationPopupLeft) {
452
456
  [data-position="left center"][data-tooltip]:before {
453
457
  transform-origin: top center;
@@ -607,6 +607,9 @@ $.fn.progress = function(parameters) {
607
607
  }
608
608
  else {
609
609
  module.remove.active();
610
+ module.remove.warning();
611
+ module.remove.error();
612
+ module.remove.success();
610
613
  module.set.label(settings.text.active);
611
614
  }
612
615
  },
@@ -446,25 +446,26 @@
446
446
  /*--------------
447
447
  Colors
448
448
  ---------------*/
449
-
450
- each(@colors, {
451
- @color: replace(@key, '@', '');
452
- @c: @colors[@@color][color];
453
- @l: @colors[@@color][light];
454
-
455
- .ui.indeterminate.@{color}.progress .bar::before,
456
- .ui.@{color}.progress .bar,
457
- .ui.progress .@{color}.bar {
458
- background-color: @c;
459
- }
460
- & when (@variationProgressInverted) {
461
- .ui.inverted.indeterminate.@{color}.progress .bar::before,
462
- .ui.@{color}.inverted.progress .bar,
463
- .ui.inverted.progress .@{color}.bar {
464
- background-color: @l;
449
+ & when not (@variationProgressColors = false) {
450
+ each(@variationProgressColors, {
451
+ @color: @value;
452
+ @c: @colors[@@color][color];
453
+ @l: @colors[@@color][light];
454
+
455
+ .ui.indeterminate.@{color}.progress .bar::before,
456
+ .ui.@{color}.progress .bar,
457
+ .ui.progress .@{color}.bar {
458
+ background-color: @c;
465
459
  }
466
- }
467
- })
460
+ & when (@variationProgressInverted) {
461
+ .ui.inverted.indeterminate.@{color}.progress .bar::before,
462
+ .ui.@{color}.inverted.progress .bar,
463
+ .ui.inverted.progress .@{color}.bar {
464
+ background-color: @l;
465
+ }
466
+ }
467
+ })
468
+ }
468
469
 
469
470
  /*--------------
470
471
  Sizes
@@ -69,13 +69,20 @@
69
69
  color: @activeColor;
70
70
  }
71
71
 
72
- /* Partially Active Icon */
73
- .ui.rating .icon.partial.active {
74
- background: linear-gradient(to right, @activeColor 0% var(--full), @inactiveColor var(--full) 100%);
75
- background-clip: text;
76
- color: transparent;
77
- }
72
+ & when (@variationRatingPartial) {
73
+ /* Partially Active Icon */
74
+ .ui.rating .icon.partial.active {
75
+ background: linear-gradient(to right, @activeColor 0% var(--full), @inactiveColor var(--full) 100%);
76
+ }
78
77
 
78
+ /* central override for colors */
79
+ .ui.ui.rating .icon.partial.active {
80
+ -webkit-background-clip: text;
81
+ background-clip: text;
82
+ color: transparent;
83
+ text-shadow: none;
84
+ }
85
+ }
79
86
  /* Selected Icon */
80
87
  .ui.rating .icon.selected,
81
88
  .ui.rating .icon.selected.active,
@@ -88,42 +95,42 @@
88
95
  /*--------------
89
96
  Colors
90
97
  -------------- */
91
-
92
- each(@colors, {
93
- @color: replace(@key, '@', '');
94
- @c: @colors[@@color][color];
95
- @l: @colors[@@color][light];
96
- @h: @colors[@@color][hover];
97
- @lh: @colors[@@color][lightHover];
98
-
99
- .ui.@{color}.rating .active.icon {
100
- color: @l;
101
- text-shadow: 0px -@shadowWidth 0px @c,
102
- -@shadowWidth 0px 0px @c,
103
- 0px @shadowWidth 0px @c,
104
- @shadowWidth 0px 0px @c;
105
- }
106
- .ui.@{color}.rating .icon.selected,
107
- .ui.@{color}.rating .icon.selected.active,
108
- .ui.@{color}.rating .icon.selected.partial.active {
109
- background: inherit;
110
- color: @lh;
111
- text-shadow: 0px -@shadowWidth 0px @h,
112
- -@shadowWidth 0px 0px @h,
113
- 0px @shadowWidth 0px @h,
114
- @shadowWidth 0px 0px @h;
115
-
116
- -webkit-text-stroke: unset;
117
- background-clip: unset;
118
- }
119
- .ui.@{color}.rating .icon.partial.active {
120
- background: linear-gradient(to right, @l 0% var(--full), @inactiveColor var(--full) 100%);
121
- text-shadow: none;
122
- -webkit-text-stroke: @c 0.78px;
123
- background-clip: text;
124
- color: transparent;
125
- }
126
- })
98
+ & when not (@variationRatingColors = false) {
99
+ each(@variationRatingColors, {
100
+ @color: @value;
101
+ @c: @colors[@@color][color];
102
+ @l: @colors[@@color][light];
103
+ @h: @colors[@@color][hover];
104
+ @lh: @colors[@@color][lightHover];
105
+
106
+ .ui.@{color}.rating .active.icon {
107
+ color: @l;
108
+ text-shadow: 0px -@shadowWidth 0px @c,
109
+ -@shadowWidth 0px 0px @c,
110
+ 0px @shadowWidth 0px @c,
111
+ @shadowWidth 0px 0px @c;
112
+ }
113
+ .ui.@{color}.rating .icon.selected,
114
+ .ui.@{color}.rating .icon.selected.active,
115
+ .ui.@{color}.rating .icon.selected.partial.active {
116
+ background: inherit;
117
+ color: @lh;
118
+ text-shadow: 0px -@shadowWidth 0px @h,
119
+ -@shadowWidth 0px 0px @h,
120
+ 0px @shadowWidth 0px @h,
121
+ @shadowWidth 0px 0px @h;
122
+
123
+ -webkit-text-stroke: unset;
124
+ background-clip: unset;
125
+ }
126
+ & when (@variationRatingPartial) {
127
+ .ui.@{color}.rating .icon.partial.active {
128
+ background: linear-gradient(to right, @l 0% var(--full), @inactiveColor var(--full) 100%);
129
+ -webkit-text-stroke: @c 0.78px;
130
+ }
131
+ }
132
+ })
133
+ }
127
134
 
128
135
 
129
136
  /*******************************
@@ -437,16 +437,20 @@
437
437
  .ui.search.short > .results {
438
438
  max-height: @scrollingMobileMaxResultsHeight;
439
439
  }
440
- .ui.search[class*="very short"] > .results {
441
- max-height: @scrollingMobileMaxResultsHeight * 0.75;
440
+ & when (@variationSearchVeryShort) {
441
+ .ui.search[class*="very short"] > .results {
442
+ max-height: @scrollingMobileMaxResultsHeight * 0.75;
443
+ }
442
444
  }
443
445
  }
444
446
  & when (@variationSearchLong) {
445
447
  .ui.search.long > .results {
446
448
  max-height: @scrollingMobileMaxResultsHeight * 2;
447
449
  }
448
- .ui.search[class*="very long"] > .results {
449
- max-height: @scrollingMobileMaxResultsHeight * 3;
450
+ & when (@variationSearchVeryLong) {
451
+ .ui.search[class*="very long"] > .results {
452
+ max-height: @scrollingMobileMaxResultsHeight * 3;
453
+ }
450
454
  }
451
455
  }
452
456
  }
@@ -455,16 +459,20 @@
455
459
  .ui.search.short > .results {
456
460
  max-height: @scrollingTabletMaxResultsHeight;
457
461
  }
458
- .ui.search[class*="very short"] > .results {
459
- max-height: @scrollingTabletMaxResultsHeight * 0.75;
462
+ & when (@variationSearchVeryShort) {
463
+ .ui.search[class*="very short"] > .results {
464
+ max-height: @scrollingTabletMaxResultsHeight * 0.75;
465
+ }
460
466
  }
461
467
  }
462
468
  & when (@variationSearchLong) {
463
469
  .ui.search.long > .results {
464
470
  max-height: @scrollingTabletMaxResultsHeight * 2;
465
471
  }
466
- .ui.search[class*="very long"] > .results {
467
- max-height: @scrollingTabletMaxResultsHeight * 3;
472
+ & when (@variationSearchVeryLong) {
473
+ .ui.search[class*="very long"] > .results {
474
+ max-height: @scrollingTabletMaxResultsHeight * 3;
475
+ }
468
476
  }
469
477
  }
470
478
  }
@@ -473,16 +481,20 @@
473
481
  .ui.search.short > .results {
474
482
  max-height: @scrollingComputerMaxResultsHeight;
475
483
  }
476
- .ui.search[class*="very short"] > .results {
477
- max-height: @scrollingComputerMaxResultsHeight * 0.75;
484
+ & when (@variationSearchVeryShort) {
485
+ .ui.search[class*="very short"] > .results {
486
+ max-height: @scrollingComputerMaxResultsHeight * 0.75;
487
+ }
478
488
  }
479
489
  }
480
490
  & when (@variationSearchLong) {
481
491
  .ui.search.long > .results {
482
492
  max-height: @scrollingComputerMaxResultsHeight * 2;
483
493
  }
484
- .ui.search[class*="very long"] > .results {
485
- max-height: @scrollingComputerMaxResultsHeight * 3;
494
+ & when (@variationSearchVeryLong) {
495
+ .ui.search[class*="very long"] > .results {
496
+ max-height: @scrollingComputerMaxResultsHeight * 3;
497
+ }
486
498
  }
487
499
  }
488
500
  }
@@ -491,16 +503,20 @@
491
503
  .ui.search.short > .results {
492
504
  max-height: @scrollingWidescreenMaxResultsHeight;
493
505
  }
494
- .ui.search[class*="very short"] > .results {
495
- max-height: @scrollingWidescreenMaxResultsHeight * 0.75;
506
+ & when (@variationSearchVeryShort) {
507
+ .ui.search[class*="very short"] > .results {
508
+ max-height: @scrollingWidescreenMaxResultsHeight * 0.75;
509
+ }
496
510
  }
497
511
  }
498
512
  & when (@variationSearchLong) {
499
513
  .ui.search.long > .results {
500
514
  max-height: @scrollingWidescreenMaxResultsHeight * 2;
501
515
  }
502
- .ui.search[class*="very long"] > .results {
503
- max-height: @scrollingWidescreenMaxResultsHeight * 3;
516
+ & when (@variationSearchVeryLong) {
517
+ .ui.search[class*="very long"] > .results {
518
+ max-height: @scrollingWidescreenMaxResultsHeight * 3;
519
+ }
504
520
  }
505
521
  }
506
522
  }