fomantic-ui 2.9.4-beta.81 → 2.9.4-beta.83

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 (166) hide show
  1. package/dist/components/accordion.css +1 -1
  2. package/dist/components/accordion.js +1 -1
  3. package/dist/components/accordion.min.css +1 -1
  4. package/dist/components/accordion.min.js +1 -1
  5. package/dist/components/ad.css +1 -1
  6. package/dist/components/ad.min.css +1 -1
  7. package/dist/components/api.js +1 -1
  8. package/dist/components/api.min.js +1 -1
  9. package/dist/components/breadcrumb.css +1 -1
  10. package/dist/components/breadcrumb.min.css +1 -1
  11. package/dist/components/button.css +1 -1
  12. package/dist/components/button.min.css +1 -1
  13. package/dist/components/calendar.css +1 -1
  14. package/dist/components/calendar.js +1 -1
  15. package/dist/components/calendar.min.css +1 -1
  16. package/dist/components/calendar.min.js +1 -1
  17. package/dist/components/card.css +1 -1
  18. package/dist/components/card.min.css +1 -1
  19. package/dist/components/checkbox.css +1 -1
  20. package/dist/components/checkbox.js +1 -1
  21. package/dist/components/checkbox.min.css +1 -1
  22. package/dist/components/checkbox.min.js +1 -1
  23. package/dist/components/comment.css +1 -1
  24. package/dist/components/comment.min.css +1 -1
  25. package/dist/components/container.css +1 -1
  26. package/dist/components/container.min.css +1 -1
  27. package/dist/components/dimmer.css +1 -1
  28. package/dist/components/dimmer.js +1 -1
  29. package/dist/components/dimmer.min.css +1 -1
  30. package/dist/components/dimmer.min.js +1 -1
  31. package/dist/components/divider.css +1 -1
  32. package/dist/components/divider.min.css +1 -1
  33. package/dist/components/dropdown.css +1 -1
  34. package/dist/components/dropdown.js +5 -2
  35. package/dist/components/dropdown.min.css +1 -1
  36. package/dist/components/dropdown.min.js +2 -2
  37. package/dist/components/embed.css +1 -1
  38. package/dist/components/embed.js +1 -1
  39. package/dist/components/embed.min.css +1 -1
  40. package/dist/components/embed.min.js +1 -1
  41. package/dist/components/emoji.css +1 -1
  42. package/dist/components/emoji.min.css +1 -1
  43. package/dist/components/feed.css +1 -1
  44. package/dist/components/feed.min.css +1 -1
  45. package/dist/components/flag.css +1 -1
  46. package/dist/components/flag.min.css +1 -1
  47. package/dist/components/flyout.css +1 -1
  48. package/dist/components/flyout.js +1 -1
  49. package/dist/components/flyout.min.css +1 -1
  50. package/dist/components/flyout.min.js +1 -1
  51. package/dist/components/form.css +1 -1
  52. package/dist/components/form.js +1 -1
  53. package/dist/components/form.min.css +1 -1
  54. package/dist/components/form.min.js +1 -1
  55. package/dist/components/grid.css +1 -1
  56. package/dist/components/grid.min.css +1 -1
  57. package/dist/components/header.css +1 -1
  58. package/dist/components/header.min.css +1 -1
  59. package/dist/components/icon.css +1 -1
  60. package/dist/components/icon.min.css +1 -1
  61. package/dist/components/image.css +1 -1
  62. package/dist/components/image.min.css +1 -1
  63. package/dist/components/input.css +1 -1
  64. package/dist/components/input.min.css +1 -1
  65. package/dist/components/item.css +1 -1
  66. package/dist/components/item.min.css +1 -1
  67. package/dist/components/label.css +1 -1
  68. package/dist/components/label.min.css +1 -1
  69. package/dist/components/list.css +1 -1
  70. package/dist/components/list.min.css +1 -1
  71. package/dist/components/loader.css +1 -1
  72. package/dist/components/loader.min.css +1 -1
  73. package/dist/components/menu.css +1 -1
  74. package/dist/components/menu.min.css +1 -1
  75. package/dist/components/message.css +1 -1
  76. package/dist/components/message.min.css +1 -1
  77. package/dist/components/modal.css +1 -1
  78. package/dist/components/modal.js +1 -1
  79. package/dist/components/modal.min.css +1 -1
  80. package/dist/components/modal.min.js +1 -1
  81. package/dist/components/nag.css +1 -1
  82. package/dist/components/nag.js +1 -1
  83. package/dist/components/nag.min.css +1 -1
  84. package/dist/components/nag.min.js +1 -1
  85. package/dist/components/placeholder.css +1 -1
  86. package/dist/components/placeholder.min.css +1 -1
  87. package/dist/components/popup.css +1 -1
  88. package/dist/components/popup.js +1 -1
  89. package/dist/components/popup.min.css +1 -1
  90. package/dist/components/popup.min.js +1 -1
  91. package/dist/components/progress.css +1 -1
  92. package/dist/components/progress.js +1 -1
  93. package/dist/components/progress.min.css +1 -1
  94. package/dist/components/progress.min.js +1 -1
  95. package/dist/components/rail.css +1 -1
  96. package/dist/components/rail.min.css +1 -1
  97. package/dist/components/rating.css +1 -1
  98. package/dist/components/rating.js +1 -1
  99. package/dist/components/rating.min.css +1 -1
  100. package/dist/components/rating.min.js +1 -1
  101. package/dist/components/reset.css +1 -1
  102. package/dist/components/reset.min.css +1 -1
  103. package/dist/components/reveal.css +1 -1
  104. package/dist/components/reveal.min.css +1 -1
  105. package/dist/components/search.css +1 -1
  106. package/dist/components/search.js +1 -1
  107. package/dist/components/search.min.css +1 -1
  108. package/dist/components/search.min.js +1 -1
  109. package/dist/components/segment.css +1 -1
  110. package/dist/components/segment.min.css +1 -1
  111. package/dist/components/shape.css +1 -1
  112. package/dist/components/shape.js +1 -1
  113. package/dist/components/shape.min.css +1 -1
  114. package/dist/components/shape.min.js +1 -1
  115. package/dist/components/sidebar.css +1 -1
  116. package/dist/components/sidebar.js +1 -1
  117. package/dist/components/sidebar.min.css +1 -1
  118. package/dist/components/sidebar.min.js +1 -1
  119. package/dist/components/site.css +1 -1
  120. package/dist/components/site.js +1 -1
  121. package/dist/components/site.min.css +1 -1
  122. package/dist/components/site.min.js +1 -1
  123. package/dist/components/slider.css +152 -2
  124. package/dist/components/slider.js +139 -43
  125. package/dist/components/slider.min.css +2 -2
  126. package/dist/components/slider.min.js +2 -2
  127. package/dist/components/state.js +1 -1
  128. package/dist/components/state.min.js +1 -1
  129. package/dist/components/statistic.css +1 -1
  130. package/dist/components/statistic.min.css +1 -1
  131. package/dist/components/step.css +1 -1
  132. package/dist/components/step.min.css +1 -1
  133. package/dist/components/sticky.css +1 -1
  134. package/dist/components/sticky.js +1 -1
  135. package/dist/components/sticky.min.css +1 -1
  136. package/dist/components/sticky.min.js +1 -1
  137. package/dist/components/tab.css +1 -1
  138. package/dist/components/tab.js +1 -1
  139. package/dist/components/tab.min.css +1 -1
  140. package/dist/components/tab.min.js +1 -1
  141. package/dist/components/table.css +1 -1
  142. package/dist/components/table.min.css +1 -1
  143. package/dist/components/text.css +1 -1
  144. package/dist/components/text.min.css +1 -1
  145. package/dist/components/toast.css +1 -1
  146. package/dist/components/toast.js +1 -1
  147. package/dist/components/toast.min.css +1 -1
  148. package/dist/components/toast.min.js +1 -1
  149. package/dist/components/transition.css +1 -1
  150. package/dist/components/transition.js +1 -1
  151. package/dist/components/transition.min.css +1 -1
  152. package/dist/components/transition.min.js +1 -1
  153. package/dist/components/visibility.js +1 -1
  154. package/dist/components/visibility.min.js +1 -1
  155. package/dist/semantic.css +253 -54
  156. package/dist/semantic.js +168 -69
  157. package/dist/semantic.min.css +2 -2
  158. package/dist/semantic.min.js +2 -2
  159. package/package.json +1 -1
  160. package/src/definitions/modules/dropdown.js +4 -1
  161. package/src/definitions/modules/slider.js +138 -42
  162. package/src/definitions/modules/slider.less +103 -8
  163. package/src/themes/default/globals/variation.variables +4 -0
  164. package/src/themes/default/modules/slider.variables +10 -0
  165. package/types/fomantic-ui-dropdown.d.ts +6 -0
  166. package/types/fomantic-ui-slider.d.ts +54 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fomantic-ui",
3
- "version": "2.9.4-beta.81+f3182cf",
3
+ "version": "2.9.4-beta.83+9b313a5",
4
4
  "description": "Fomantic empowers designers and developers by creating a shared vocabulary for UI.",
5
5
  "keywords": [
6
6
  "fomantic-ui",
@@ -1230,7 +1230,9 @@
1230
1230
  if (module.is.searchSelection()) {
1231
1231
  module.remove.searchTerm();
1232
1232
  }
1233
- module.hide();
1233
+ if (settings.collapseOnClearable) {
1234
+ module.hide();
1235
+ }
1234
1236
  event.stopPropagation();
1235
1237
  },
1236
1238
  },
@@ -4096,6 +4098,7 @@
4096
4098
  headerDivider: true, // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
4097
4099
 
4098
4100
  collapseOnActionable: true, // whether the dropdown should collapse upon selection of an actionable item
4101
+ collapseOnClearable: false, // whether the dropdown should collapse upon clicking the clearable icon
4099
4102
 
4100
4103
  // label settings on multi-select
4101
4104
  label: {
@@ -32,8 +32,6 @@
32
32
  methodInvoked = typeof query === 'string',
33
33
  queryArguments = [].slice.call(arguments, 1),
34
34
 
35
- alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
36
-
37
35
  SINGLE_STEP = 1,
38
36
  BIG_STEP = 2,
39
37
  NO_STEP = 0,
@@ -82,7 +80,6 @@
82
80
  position,
83
81
  secondPos,
84
82
  offset,
85
- precision,
86
83
  gapRatio = 1,
87
84
  previousValue,
88
85
 
@@ -125,6 +122,7 @@
125
122
  clearInterval(instance.interval);
126
123
  module.unbind.events();
127
124
  module.unbind.slidingEvents();
125
+ delete module.cache;
128
126
  $module.removeData(moduleNamespace);
129
127
  instance = undefined;
130
128
  },
@@ -141,7 +139,7 @@
141
139
  + '<div class="thumb"></div>'
142
140
  + '</div>');
143
141
  }
144
- precision = module.get.precision();
142
+ module.clear.cache();
145
143
  $thumb = $module.find('.thumb:not(.second)');
146
144
  if (settings.showThumbTooltip) {
147
145
  $thumb
@@ -175,8 +173,14 @@
175
173
  module.setup.autoLabel();
176
174
  }
177
175
 
176
+ if (settings.highlightRange) {
177
+ $labels.addClass(className.active);
178
+ }
179
+
178
180
  if (settings.showLabelTicks) {
179
181
  $module.addClass(className.ticked);
182
+ } else if ($module.hasClass(className.ticked)) {
183
+ settings.showLabelTicks = 'always';
180
184
  }
181
185
  }
182
186
  },
@@ -211,14 +215,20 @@
211
215
  } else {
212
216
  $labels = $module.append('<ul class="auto labels"></ul>').find('.labels');
213
217
  }
214
- for (var i = 0, len = module.get.numLabels(); i <= len; i++) {
218
+ var step = module.get.step(),
219
+ precision = module.get.precision(),
220
+ len = module.get.numLabels(),
221
+ ignoreLabels = len - (settings.autoAdjustLabels !== 'fixed' ? 0 : module.get.max().toString().length + 4)
222
+ ;
223
+ for (var i = 0; i <= len; i++) {
215
224
  var
216
- labelText = module.get.label(i),
225
+ stepValue = Math.round(((i * (step === 0 ? 1 : step)) + module.get.min()) * precision) / precision,
226
+ labelText = module.get.label(i, stepValue),
217
227
  showLabel = settings.restrictedLabels.length === 0 || settings.restrictedLabels.indexOf(labelText) >= 0,
218
228
  $label = labelText !== '' && (showLabel || settings.showLabelTicks === 'always')
219
- ? (!(i % module.get.gapRatio())
220
- ? $('<li class="label">' + (showLabel ? labelText : '') + '</li>')
221
- : $('<li class="halftick label"></li>'))
229
+ ? ((!(i % module.get.gapRatio()) && i < ignoreLabels) || i === len
230
+ ? $('<li/>', { class: className.label, 'data-value': stepValue, html: showLabel ? labelText : '' })
231
+ : $('<li/>', { class: 'halftick label', 'data-value': stepValue }))
222
232
  : null,
223
233
  ratio = i / len
224
234
  ;
@@ -489,6 +499,12 @@
489
499
  },
490
500
  },
491
501
 
502
+ clear: {
503
+ cache: function () {
504
+ module.cache = {};
505
+ },
506
+ },
507
+
492
508
  resync: function () {
493
509
  module.verbose('Resyncing thumb position based on value');
494
510
  if (module.is.range()) {
@@ -538,6 +554,25 @@
538
554
  },
539
555
 
540
556
  is: {
557
+ prime: function (n) {
558
+ if (module.cache['prime' + n] === undefined) {
559
+ var p = true;
560
+ for (var i = 2, s = Math.sqrt(n); i <= s; i++) {
561
+ if (n % i === 0) {
562
+ p = false;
563
+
564
+ break;
565
+ }
566
+ }
567
+ if (p) {
568
+ p = n > 1;
569
+ }
570
+
571
+ module.cache['prime' + n] = p;
572
+ }
573
+
574
+ return module.cache['prime' + n];
575
+ },
541
576
  range: function () {
542
577
  var isRange = $module.hasClass(className.range);
543
578
  if (!isRange && (settings.minRange || settings.maxRange)) {
@@ -652,62 +687,87 @@
652
687
  return margin || '0px';
653
688
  },
654
689
  precision: function () {
655
- var
656
- decimalPlaces,
657
- step = module.get.step()
658
- ;
659
- if (step !== 0) {
660
- var split = String(step).split('.');
661
- decimalPlaces = split.length === 2 ? split[1].length : 0;
662
- } else {
663
- decimalPlaces = settings.decimalPlaces;
690
+ if (module.cache.precision === undefined) {
691
+ var
692
+ decimalPlaces,
693
+ step = module.get.step()
694
+ ;
695
+ if (step !== 0) {
696
+ var split = String(step).split('.');
697
+ decimalPlaces = split.length === 2 ? split[1].length : 0;
698
+ } else {
699
+ decimalPlaces = settings.decimalPlaces;
700
+ }
701
+ var precision = Math.pow(10, decimalPlaces);
702
+ module.debug('Precision determined', precision);
703
+ module.cache.precision = precision;
664
704
  }
665
- var precision = Math.pow(10, decimalPlaces);
666
- module.debug('Precision determined', precision);
667
705
 
668
- return precision;
706
+ return module.cache.precision;
669
707
  },
670
708
  min: function () {
671
709
  return settings.min;
672
710
  },
673
711
  max: function () {
674
- var
675
- step = module.get.step(),
676
- min = module.get.min(),
677
- precision = module.get.precision(),
678
- quotient = step === 0 ? 0 : Math.floor(Math.round(((settings.max - min) / step) * precision) / precision),
679
- remainder = step === 0 ? 0 : (settings.max - min) % step
680
- ;
712
+ if (module.cache.max === undefined) {
713
+ var
714
+ step = module.get.step(),
715
+ min = module.get.min(),
716
+ precision = module.get.precision(),
717
+ quotient = step === 0 ? 0 : Math.floor(Math.round(((settings.max - min) / step) * precision) / precision),
718
+ remainder = step === 0 ? 0 : (settings.max - min) % step
719
+ ;
720
+ if (remainder > 0) {
721
+ module.debug('Max value not divisible by given step. Increasing max value.', settings.max, step);
722
+ }
723
+ module.cache.max = remainder === 0 ? settings.max : min + quotient * step;
724
+ }
681
725
 
682
- return remainder === 0 ? settings.max : min + quotient * step;
726
+ return module.cache.max;
683
727
  },
684
728
  step: function () {
685
729
  return settings.step;
686
730
  },
687
731
  numLabels: function () {
688
- var step = module.get.step(),
689
- precision = module.get.precision(),
690
- value = Math.round(((module.get.max() - module.get.min()) / (step === 0 ? 1 : step)) * precision) / precision;
691
- module.debug('Determined that there should be ' + value + ' labels');
732
+ if (module.cache.numLabels === undefined) {
733
+ var step = module.get.step(),
734
+ precision = module.get.precision(),
735
+ value = Math.round(((module.get.max() - module.get.min()) / (step === 0 ? 1 : step)) * precision) / precision;
736
+ module.debug('Determined that there should be ' + value + ' labels');
737
+ module.cache.numLabels = value;
738
+ }
692
739
 
693
- return value;
740
+ return module.cache.numLabels;
694
741
  },
695
742
  labelType: function () {
696
743
  return settings.labelType;
697
744
  },
698
- label: function (value) {
699
- if (interpretLabel) {
700
- return interpretLabel(value);
745
+ label: function (value, stepValue) {
746
+ if (isFunction(interpretLabel)) {
747
+ return interpretLabel(value, stepValue, module);
701
748
  }
702
749
 
703
750
  switch (settings.labelType) {
704
751
  case settings.labelTypes.number: {
705
- var step = module.get.step();
706
-
707
- return Math.round(((value * (step === 0 ? 1 : step)) + module.get.min()) * precision) / precision;
752
+ return stepValue;
708
753
  }
709
754
  case settings.labelTypes.letter: {
710
- return alphabet[value % 26];
755
+ if (value < 0 || module.get.precision() > 1) {
756
+ module.error(error.invalidLetterNumber, value);
757
+
758
+ return value;
759
+ }
760
+ var letterLabel = '',
761
+ letters = Array.isArray(settings.letters) ? settings.letters : String(settings.letters).split(''),
762
+ lettersLen = letters.length
763
+ ;
764
+
765
+ while (stepValue >= 0) {
766
+ letterLabel = letters[stepValue % lettersLen] + letterLabel;
767
+ stepValue = Math.floor(stepValue / lettersLen) - 1;
768
+ }
769
+
770
+ return letterLabel;
711
771
  }
712
772
  default: {
713
773
  return value;
@@ -717,6 +777,9 @@
717
777
  value: function () {
718
778
  return value;
719
779
  },
780
+ settings: function () {
781
+ return settings;
782
+ },
720
783
  currentThumbValue: function () {
721
784
  return $currThumb !== undefined && $currThumb.hasClass('second') ? module.secondThumbVal : module.thumbVal;
722
785
  },
@@ -761,6 +824,7 @@
761
824
  if (settings.autoAdjustLabels) {
762
825
  var
763
826
  numLabels = module.get.numLabels(),
827
+ primePlus = module.is.prime(numLabels) ? 1 : 0,
764
828
  trackLength = module.get.trackLength(),
765
829
  gapCounter = 1
766
830
  ;
@@ -770,7 +834,7 @@
770
834
  // and apply only if the modulo of the operation is an odd number.
771
835
  if (trackLength > 0) {
772
836
  while ((trackLength / numLabels) * gapCounter < settings.labelDistance) {
773
- if (!(numLabels % gapCounter)) {
837
+ if (!((numLabels + primePlus) % gapCounter) || settings.autoAdjustLabels === 'fixed') {
774
838
  gapRatio = gapCounter;
775
839
  }
776
840
  gapCounter += 1;
@@ -908,6 +972,7 @@
908
972
  },
909
973
  value: function (position) {
910
974
  var
975
+ precision = module.get.precision(),
911
976
  startPos = module.is.reversed() ? module.get.trackEndPos() : module.get.trackStartPos(),
912
977
  endPos = module.is.reversed() ? module.get.trackStartPos() : module.get.trackEndPos(),
913
978
  ratio = (position - startPos) / (endPos - startPos),
@@ -976,6 +1041,30 @@
976
1041
  },
977
1042
 
978
1043
  set: {
1044
+ active: function (thumbVal, secondThumbVal) {
1045
+ if (settings.highlightRange) {
1046
+ if (secondThumbVal < thumbVal) {
1047
+ var tempVal = secondThumbVal;
1048
+ secondThumbVal = thumbVal;
1049
+ thumbVal = tempVal;
1050
+ }
1051
+ var $children = $labels.find('.label');
1052
+ $children.each(function (index) {
1053
+ var
1054
+ $child = $(this),
1055
+ attrValue = $child.attr('data-value')
1056
+ ;
1057
+ if (attrValue) {
1058
+ attrValue = parseInt(attrValue, 10);
1059
+ if (attrValue >= thumbVal && attrValue <= secondThumbVal) {
1060
+ $child.addClass(className.active);
1061
+ } else {
1062
+ $child.removeClass(className.active);
1063
+ }
1064
+ }
1065
+ });
1066
+ }
1067
+ },
979
1068
  value: function (newValue, fireChange) {
980
1069
  fireChange = fireChange !== false;
981
1070
  var toReset = previousValue === undefined;
@@ -1103,6 +1192,7 @@
1103
1192
  position = newPos;
1104
1193
  thumbVal = newValue;
1105
1194
  }
1195
+ module.set.active(thumbVal, secondThumbVal);
1106
1196
  var
1107
1197
  trackPosValue,
1108
1198
  thumbPosValue,
@@ -1210,6 +1300,7 @@
1210
1300
  } else {
1211
1301
  return settings[name];
1212
1302
  }
1303
+ module.clear.cache();
1213
1304
  },
1214
1305
  internal: function (name, value) {
1215
1306
  if ($.isPlainObject(name)) {
@@ -1382,6 +1473,7 @@
1382
1473
  method: 'The method you called is not defined.',
1383
1474
  notrange: 'This slider is not a range slider',
1384
1475
  invalidRanges: 'Invalid range settings (start/end/minRange/maxRange)',
1476
+ invalidLetterNumber: 'Negative values or decimal places for labelType: "letter" are not supported',
1385
1477
  },
1386
1478
 
1387
1479
  metadata: {
@@ -1404,6 +1496,7 @@
1404
1496
  preventCrossover: true,
1405
1497
  fireOnInit: false,
1406
1498
  interpretLabel: false,
1499
+ letters: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
1407
1500
 
1408
1501
  // the decimal place to round to if step is undefined
1409
1502
  decimalPlaces: 2,
@@ -1421,6 +1514,8 @@
1421
1514
  vertical: 'vertical',
1422
1515
  range: 'range',
1423
1516
  smooth: 'smooth',
1517
+ label: 'label',
1518
+ active: 'active',
1424
1519
  },
1425
1520
 
1426
1521
  keys: {
@@ -1433,6 +1528,7 @@
1433
1528
  },
1434
1529
 
1435
1530
  restrictedLabels: [],
1531
+ highlightRange: false,
1436
1532
  showThumbTooltip: false,
1437
1533
  tooltipConfig: {
1438
1534
  position: 'top center',
@@ -204,15 +204,18 @@
204
204
 
205
205
  .ui.labeled.slider > .labels .label {
206
206
  display: inline-flex;
207
- padding: @labelPadding;
208
207
  position: absolute;
209
208
  transform: translate(-50%, -100%);
210
209
  white-space: nowrap;
210
+ &:not(.ui) {
211
+ padding: @labelPadding;
212
+ }
211
213
  }
212
-
213
- .ui.bottom.aligned.labeled.slider > .labels .label {
214
- bottom: 0;
215
- transform: translate(-50%, 100%);
214
+ & when (@variationSliderBottomAligned) {
215
+ .ui.bottom.aligned.labeled.slider > .labels .label {
216
+ bottom: 0;
217
+ transform: translate(-50%, 100%);
218
+ }
216
219
  }
217
220
  & when (@variationSliderTicked) {
218
221
  .ui.labeled.ticked.slider > .labels .label::after {
@@ -224,13 +227,39 @@
224
227
  top: 100%;
225
228
  left: 50%;
226
229
  }
227
- .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
228
- top: auto;
229
- bottom: 100%;
230
+ & when (@variationSliderBottomAligned) {
231
+ .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
232
+ top: auto;
233
+ bottom: 100%;
234
+ }
235
+ & when (@variationSliderUiLabel) {
236
+ .ui.labeled.slider.bottom.aligned .labels .ui.label {
237
+ margin-bottom: -@uiLabelMargin;
238
+ }
239
+ .ui.labeled.ticked.slider.bottom.aligned .labels .ui.label::after {
240
+ margin-bottom: @uiLabelMargin;
241
+ }
242
+ }
230
243
  }
231
244
  .ui.labeled.ticked.slider > .labels .halftick.label::after {
232
245
  height: (@labelHeight / 2);
233
246
  }
247
+ & when (@variationSliderInverted) {
248
+ .ui.inverted.labeled.ticked.slider > .labels .label::after {
249
+ background: @invertedLabelColor;
250
+ }
251
+ }
252
+ }
253
+ & when (@variationSliderUiLabel) {
254
+ .ui.labeled.slider:not(.vertical):not(.bottom) .labels .ui.label {
255
+ margin-top: -@uiLabelMargin;
256
+ }
257
+ .ui.labeled.ticked.slider:not(.vertical):not(.bottom) .labels .ui.label::after {
258
+ margin-top: @uiLabelMargin;
259
+ }
260
+ .ui.labeled.ticked.slider:not(.vertical) > .labels .ui.label::after {
261
+ height: @uiLabelTickHeight;
262
+ }
234
263
  }
235
264
 
236
265
  & when (@variationSliderVertical) {
@@ -259,6 +288,9 @@
259
288
  width: (@labelHeight / 2);
260
289
  height: @labelWidth;
261
290
  }
291
+ .ui.labeled.vertical.slider:not(.right) > .labels .halftick.label::after {
292
+ margin-left: @verticalTickDistance;
293
+ }
262
294
 
263
295
  & when (@variationSliderReversed) {
264
296
  /* Vertical Reversed Labels */
@@ -266,6 +298,39 @@
266
298
  transform: translate(-100%, 50%);
267
299
  }
268
300
  }
301
+ & when (@variationSliderUiLabel) {
302
+ .ui.labeled.ticked.vertical.slider:not(.right) > .labels .ui.label::after {
303
+ margin-left: @verticalUiLabelMargin;
304
+ }
305
+ }
306
+ & when (@variationSliderRightAligned) {
307
+ .ui.labeled.vertical.right.aligned.slider > .labels {
308
+ transform: translateX(50%);
309
+ left: e(%("calc(100%% + %d)", @verticalTickDistance));
310
+ }
311
+ .ui.labeled.vertical.right.aligned.slider > .labels .label {
312
+ transform: translate(100%, -50%);
313
+ right: 100%;
314
+ }
315
+
316
+ .ui.labeled.vertical.right.aligned.slider > .labels .label::after {
317
+ right: 100%;
318
+ left: auto;
319
+ }
320
+ .ui.labeled.vertical.right.aligned.slider > .labels .halftick.label::after {
321
+ margin-right: @verticalTickDistance;
322
+ }
323
+ & when (@variationSliderReversed) {
324
+ .ui.labeled.vertical.reversed.right.aligned.slider > .labels .label {
325
+ transform: translate(100%, 50%);
326
+ }
327
+ }
328
+ & when (@variationSliderUiLabel) {
329
+ .ui.labeled.ticked.vertical.right.aligned.slider > .labels .ui.label::after {
330
+ margin-right: @verticalUiLabelMargin;
331
+ }
332
+ }
333
+ }
269
334
  }
270
335
  }
271
336
 
@@ -296,6 +361,26 @@
296
361
  background-color: @transparentWhite;
297
362
  }
298
363
  }
364
+ & when (@variationSliderHighlight) {
365
+ .ui.labeled.slider > .active.labels .label {
366
+ transition: @highlightTransition;
367
+ }
368
+ & when (@variationSliderTicked) {
369
+ .ui.labeled.ticked.slider > .active.labels .active.label::after {
370
+ background: @trackFillColor;
371
+ }
372
+ & when (@variationSliderInverted) {
373
+ .ui.inverted.labeled.ticked.slider > .active.labels .active.label::after {
374
+ background: @invertedTrackFillColor;
375
+ }
376
+ }
377
+ }
378
+
379
+ .ui.labeled.ticked.slider > .active.labels .active.label::after,
380
+ .ui.labeled.slider > .active.labels .label:not(.active) {
381
+ opacity: @highlightOpacity;
382
+ }
383
+ }
299
384
 
300
385
  /* --------------
301
386
  Colors
@@ -338,6 +423,16 @@
338
423
  }
339
424
  }
340
425
  }
426
+ & when (@variationSliderHighlight) and (@variationSliderTicked) {
427
+ .ui.@{color}.labeled.ticked.slider > .active.labels .active.label::after {
428
+ background-color: @c;
429
+ }
430
+ & when (@variationSliderInverted) {
431
+ .ui.@{color}.inverted.labeled.ticked.slider > .active.labels .active.label::after {
432
+ background-color: @l;
433
+ }
434
+ }
435
+ }
341
436
 
342
437
  });
343
438
  }
@@ -713,6 +713,10 @@
713
713
  @variationSliderTicked: true;
714
714
  @variationSliderVertical: true;
715
715
  @variationSliderBasic: true;
716
+ @variationSliderHighlight: true;
717
+ @variationSliderBottomAligned: true;
718
+ @variationSliderRightAligned: true;
719
+ @variationSliderUiLabel: true;
716
720
  @variationSliderSizes: small, large, big;
717
721
  @variationSliderColors: @variationAllColors;
718
722
 
@@ -14,6 +14,7 @@
14
14
  @trackHeight: 0.4em;
15
15
  @trackPositionTop: (@height / 2) - (@trackHeight / 2);
16
16
  @background: #ccc;
17
+ @invertedBackground: #333;
17
18
  @trackBorderRadius: 4px;
18
19
  @trackColor: @transparentBlack;
19
20
 
@@ -52,14 +53,23 @@
52
53
  Variations
53
54
  -------------------- */
54
55
 
56
+ /* Highlight */
57
+ @highlightOpacity: 0.6;
58
+ @highlightTransition: all 0.2s @defaultEasing;
59
+
55
60
  /* Vertical */
56
61
  @verticalPadding: 0.5em 1em;
62
+ @verticalTickDistance: 0.6em;
63
+ @verticalUiLabelMargin: 0.3em;
57
64
 
58
65
  /* Labeled */
59
66
  @labelHeight: @height;
60
67
  @labelWidth: 1px;
61
68
  @labelColor: @background;
62
69
  @labelPadding: 0.2em 0;
70
+ @invertedLabelColor: @invertedBackground;
71
+ @uiLabelMargin: 0.5em;
72
+ @uiLabelTickHeight: 2em;
63
73
 
64
74
  /* Hover */
65
75
  @hoverVarOpacity: 0;
@@ -480,6 +480,12 @@ declare namespace FomanticUI {
480
480
  */
481
481
  collapseOnActionable: boolean;
482
482
 
483
+ /**
484
+ * Whether the dropdown should collapse upon clicking the clearable icon.
485
+ * @default false
486
+ */
487
+ collapseOnClearable: boolean;
488
+
483
489
  /**
484
490
  * Allows customization of multi-select labels.
485
491
  * @default true
@@ -78,6 +78,18 @@ declare namespace FomanticUI {
78
78
  */
79
79
  end: number;
80
80
 
81
+ /**
82
+ * Makes sure that the two thumbs of a range slider always need to have a difference of the given value.
83
+ * @default false
84
+ */
85
+ minRange: false | number;
86
+
87
+ /**
88
+ * Makes sure that the two thumbs of a range slider don't exceed a difference of the given value.
89
+ * @default false
90
+ */
91
+ maxRange: false | number;
92
+
81
93
  /**
82
94
  * The type of label to display for a labeled slider.
83
95
  * Can be 'number' or 'letter'.
@@ -91,11 +103,41 @@ declare namespace FomanticUI {
91
103
  */
92
104
  interpretLabel: false | ((value: any) => string);
93
105
 
106
+ /**
107
+ * String or array of strings to be used for labelType 'letter'
108
+ * @default 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
109
+ */
110
+ letters: string | string[],
111
+
112
+ /**
113
+ * An array of label values which restrict the displayed labels to only those which are defined
114
+ * @default []
115
+ */
116
+ restrictedLabels: number[];
117
+
118
+ /**
119
+ * If the selected range labels should be highlighted
120
+ * @default false
121
+ */
122
+ highlightRange: boolean;
123
+
124
+ /**
125
+ * Whether a tooltip should be shown to the thumb(s) on hover. Will contain the current slider value.
126
+ * @default false
127
+ */
128
+ showThumbTooltip: boolean;
129
+
130
+ /**
131
+ * Tooltip configuration used when showThumbTooltip is true
132
+ * @default false
133
+ */
134
+ tooltipConfig: object;
135
+
94
136
  /**
95
137
  * Show ticks on a labeled slider.
96
138
  * @default false
97
139
  */
98
- showLabelTicks: boolean;
140
+ showLabelTicks: boolean | 'always';
99
141
 
100
142
  /**
101
143
  * Define smoothness when the slider is moving.
@@ -107,7 +149,7 @@ declare namespace FomanticUI {
107
149
  * Whether labels should auto adjust on window resize.
108
150
  * @default true
109
151
  */
110
- autoAdjustLabels: boolean;
152
+ autoAdjustLabels: boolean | 'fixed';
111
153
 
112
154
  /**
113
155
  * The distance between labels.
@@ -254,6 +296,16 @@ declare namespace FomanticUI {
254
296
  * @default 'smooth'
255
297
  */
256
298
  smooth: string;
299
+
300
+ /**
301
+ * @default 'label'
302
+ */
303
+ label: string;
304
+
305
+ /**
306
+ * @default 'active'
307
+ */
308
+ active: string;
257
309
  }
258
310
 
259
311
  interface Metadatas {