fomantic-ui 2.9.4-beta.10 → 2.9.4-beta.100

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 (295) hide show
  1. package/.all-contributorsrc +29 -1
  2. package/.eslintrc.js +17 -0
  3. package/.github/FUNDING.yml +1 -1
  4. package/.github/workflows/ci.yml +8 -8
  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 +5 -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 +21 -3
  21. package/dist/components/button.min.css +2 -2
  22. package/dist/components/calendar.css +1 -1
  23. package/dist/components/calendar.js +47 -12
  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 +46 -38
  43. package/dist/components/dropdown.js +109 -34
  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 +4309 -3713
  51. package/dist/components/emoji.min.css +2 -2
  52. package/dist/components/feed.css +12 -1
  53. package/dist/components/feed.min.css +2 -2
  54. package/dist/components/flag.css +3 -1
  55. package/dist/components/flag.min.css +2 -2
  56. package/dist/components/flyout.css +3 -3
  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 -3
  61. package/dist/components/form.js +66 -23
  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 +1 -1
  67. package/dist/components/header.min.css +1 -1
  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 +1 -1
  73. package/dist/components/input.min.css +1 -1
  74. package/dist/components/item.css +1 -1
  75. package/dist/components/item.min.css +1 -1
  76. package/dist/components/label.css +7 -1
  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 -1
  83. package/dist/components/menu.min.css +1 -1
  84. package/dist/components/message.css +2 -1
  85. package/dist/components/message.min.css +2 -2
  86. package/dist/components/modal.css +3 -3
  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 -1
  97. package/dist/components/popup.js +10 -4
  98. package/dist/components/popup.min.css +1 -1
  99. package/dist/components/popup.min.js +2 -2
  100. package/dist/components/progress.css +15 -6
  101. package/dist/components/progress.js +4 -2
  102. package/dist/components/progress.min.css +2 -2
  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 +34 -23
  115. package/dist/components/search.js +78 -14
  116. package/dist/components/search.min.css +2 -2
  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 +7 -5
  122. package/dist/components/shape.min.css +1 -1
  123. package/dist/components/shape.min.js +3 -3
  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 +152 -2
  133. package/dist/components/slider.js +142 -44
  134. package/dist/components/slider.min.css +2 -2
  135. package/dist/components/slider.min.js +3 -3
  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 +992 -86
  141. package/dist/components/step.min.css +2 -2
  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 +6179 -3968
  165. package/dist/semantic.js +571 -188
  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 +14 -14
  174. package/semantic.json.example +1 -1
  175. package/src/definitions/behaviors/api.js +6 -2
  176. package/src/definitions/behaviors/form.js +65 -22
  177. package/src/definitions/behaviors/state.js +3 -1
  178. package/src/definitions/behaviors/visibility.js +3 -1
  179. package/src/definitions/collections/form.less +43 -23
  180. package/src/definitions/collections/grid.less +85 -70
  181. package/src/definitions/collections/menu.less +38 -27
  182. package/src/definitions/collections/message.less +1 -0
  183. package/src/definitions/collections/table.less +183 -157
  184. package/src/definitions/elements/button.less +61 -25
  185. package/src/definitions/elements/container.less +6 -4
  186. package/src/definitions/elements/divider.less +4 -1
  187. package/src/definitions/elements/emoji.less +3 -1
  188. package/src/definitions/elements/header.less +7 -4
  189. package/src/definitions/elements/icon.less +35 -28
  190. package/src/definitions/elements/input.less +21 -13
  191. package/src/definitions/elements/label.less +19 -8
  192. package/src/definitions/elements/list.less +28 -21
  193. package/src/definitions/elements/loader.less +17 -12
  194. package/src/definitions/elements/segment.less +12 -7
  195. package/src/definitions/elements/step.less +405 -87
  196. package/src/definitions/globals/site.js +3 -1
  197. package/src/definitions/globals/site.less +17 -12
  198. package/src/definitions/modules/accordion.js +3 -1
  199. package/src/definitions/modules/accordion.less +15 -13
  200. package/src/definitions/modules/calendar.js +46 -11
  201. package/src/definitions/modules/calendar.less +6 -4
  202. package/src/definitions/modules/checkbox.js +9 -3
  203. package/src/definitions/modules/checkbox.less +12 -6
  204. package/src/definitions/modules/dimmer.js +3 -1
  205. package/src/definitions/modules/dimmer.less +16 -10
  206. package/src/definitions/modules/dropdown.js +108 -33
  207. package/src/definitions/modules/dropdown.less +109 -78
  208. package/src/definitions/modules/embed.js +16 -6
  209. package/src/definitions/modules/flyout.js +3 -1
  210. package/src/definitions/modules/flyout.less +51 -45
  211. package/src/definitions/modules/modal.js +6 -2
  212. package/src/definitions/modules/modal.less +109 -82
  213. package/src/definitions/modules/nag.js +10 -4
  214. package/src/definitions/modules/nag.less +8 -4
  215. package/src/definitions/modules/popup.js +9 -3
  216. package/src/definitions/modules/popup.less +3 -1
  217. package/src/definitions/modules/progress.js +3 -1
  218. package/src/definitions/modules/progress.less +24 -6
  219. package/src/definitions/modules/rating.js +3 -1
  220. package/src/definitions/modules/search.js +77 -13
  221. package/src/definitions/modules/search.less +41 -25
  222. package/src/definitions/modules/shape.js +6 -4
  223. package/src/definitions/modules/sidebar.js +3 -1
  224. package/src/definitions/modules/slider.js +141 -43
  225. package/src/definitions/modules/slider.less +129 -27
  226. package/src/definitions/modules/sticky.js +3 -1
  227. package/src/definitions/modules/tab.js +3 -1
  228. package/src/definitions/modules/toast.js +6 -2
  229. package/src/definitions/modules/toast.less +35 -24
  230. package/src/definitions/modules/transition.js +6 -2
  231. package/src/definitions/views/card.less +7 -5
  232. package/src/definitions/views/feed.less +14 -1
  233. package/src/definitions/views/item.less +7 -5
  234. package/src/themes/basic/assets/fonts/LICENSE.txt +91 -0
  235. package/src/themes/default/assets/fonts/LICENSE_Lato.txt +94 -0
  236. package/src/themes/default/assets/fonts/LICENSE_icons.txt +165 -0
  237. package/src/themes/default/elements/button.variables +3 -0
  238. package/src/themes/default/elements/emoji.variables +172 -23
  239. package/src/themes/default/elements/flag.variables +3 -3
  240. package/src/themes/default/elements/step.variables +33 -0
  241. package/src/themes/default/globals/site.variables +3 -0
  242. package/src/themes/default/globals/variation.variables +23 -2
  243. package/src/themes/default/modules/dropdown.variables +3 -0
  244. package/src/themes/default/modules/progress.variables +1 -1
  245. package/src/themes/default/modules/search.variables +15 -12
  246. package/src/themes/default/modules/slider.variables +10 -0
  247. package/src/themes/default/views/feed.variables +3 -0
  248. package/src/themes/github/assets/fonts/LICENSE.txt +94 -0
  249. package/src/themes/joypixels/elements/emoji.variables +183 -22
  250. package/src/themes/material/assets/fonts/LICENSE.txt +202 -0
  251. package/tasks/admin/components/create.js +4 -4
  252. package/tasks/admin/components/init.js +2 -2
  253. package/tasks/admin/components/update.js +3 -3
  254. package/tasks/admin/distributions/create.js +3 -3
  255. package/tasks/admin/distributions/init.js +2 -2
  256. package/tasks/admin/distributions/update.js +4 -4
  257. package/tasks/build/assets.js +1 -1
  258. package/tasks/build/css.js +19 -10
  259. package/tasks/build/javascript.js +12 -5
  260. package/tasks/check-install.js +1 -1
  261. package/tasks/config/defaults.js +4 -0
  262. package/tasks/config/project/release.js +19 -1
  263. package/tasks/config/tasks.js +7 -7
  264. package/tasks/docs/build.js +3 -3
  265. package/tasks/docs/metadata.js +1 -1
  266. package/tasks/docs/serve.js +3 -1
  267. package/tasks/install.js +2 -2
  268. package/tasks/watch.js +1 -1
  269. package/types/fomantic-ui-accordion.d.ts +1 -1
  270. package/types/fomantic-ui-api.d.ts +9 -3
  271. package/types/fomantic-ui-calendar.d.ts +114 -13
  272. package/types/fomantic-ui-checkbox.d.ts +14 -4
  273. package/types/fomantic-ui-dimmer.d.ts +1 -1
  274. package/types/fomantic-ui-dropdown.d.ts +82 -44
  275. package/types/fomantic-ui-embed.d.ts +19 -2
  276. package/types/fomantic-ui-flyout.d.ts +25 -11
  277. package/types/fomantic-ui-form.d.ts +123 -15
  278. package/types/fomantic-ui-modal.d.ts +101 -5
  279. package/types/fomantic-ui-nag.d.ts +4 -4
  280. package/types/fomantic-ui-popup.d.ts +38 -12
  281. package/types/fomantic-ui-progress.d.ts +12 -6
  282. package/types/fomantic-ui-rating.d.ts +1 -1
  283. package/types/fomantic-ui-search.d.ts +138 -22
  284. package/types/fomantic-ui-shape.d.ts +2 -2
  285. package/types/fomantic-ui-sidebar.d.ts +4 -4
  286. package/types/fomantic-ui-slider.d.ts +56 -4
  287. package/types/fomantic-ui-sticky.d.ts +1 -1
  288. package/types/fomantic-ui-tab.d.ts +6 -6
  289. package/types/fomantic-ui-toast.d.ts +14 -2
  290. package/types/fomantic-ui-transition.d.ts +41 -7
  291. package/types/fomantic-ui-visibility.d.ts +3 -3
  292. package/types/index.d.ts +25 -25
  293. package/types/tests.ts +188 -0
  294. package/types/tsconfig.json +1 -1
  295. package/types/fomantic-ui-tests.ts +0 -25
@@ -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)) {
@@ -1267,7 +1358,9 @@
1267
1358
  });
1268
1359
  }
1269
1360
  clearTimeout(module.performance.timer);
1270
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
1361
+ module.performance.timer = setTimeout(function () {
1362
+ module.performance.display();
1363
+ }, 500);
1271
1364
  },
1272
1365
  display: function () {
1273
1366
  var
@@ -1380,6 +1473,7 @@
1380
1473
  method: 'The method you called is not defined.',
1381
1474
  notrange: 'This slider is not a range slider',
1382
1475
  invalidRanges: 'Invalid range settings (start/end/minRange/maxRange)',
1476
+ invalidLetterNumber: 'Negative values or decimal places for labelType: "letter" are not supported',
1383
1477
  },
1384
1478
 
1385
1479
  metadata: {
@@ -1402,6 +1496,7 @@
1402
1496
  preventCrossover: true,
1403
1497
  fireOnInit: false,
1404
1498
  interpretLabel: false,
1499
+ letters: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
1405
1500
 
1406
1501
  // the decimal place to round to if step is undefined
1407
1502
  decimalPlaces: 2,
@@ -1419,6 +1514,8 @@
1419
1514
  vertical: 'vertical',
1420
1515
  range: 'range',
1421
1516
  smooth: 'smooth',
1517
+ label: 'label',
1518
+ active: 'active',
1422
1519
  },
1423
1520
 
1424
1521
  keys: {
@@ -1431,6 +1528,7 @@
1431
1528
  },
1432
1529
 
1433
1530
  restrictedLabels: [],
1531
+ highlightRange: false,
1434
1532
  showThumbTooltip: false,
1435
1533
  tooltipConfig: {
1436
1534
  position: 'top center',
@@ -17,16 +17,23 @@
17
17
 
18
18
  @import (multiple) "../../theme.config";
19
19
 
20
- .ui.slider:not(.vertical):not(.checkbox) {
20
+ @notVertical: if(@variationSliderVertical, e(":not(.vertical)"));
21
+ @notDisabled: if(@variationSliderDisabled, e(":not(.disabled)"));
22
+ @notBottom: if(@variationSliderBottomAligned, e(":not(.bottom)"));
23
+ @notRight: if(@variationSliderRightAligned, e(":not(.right)"));
24
+
25
+ @notCheckbox: if(@variationCheckboxSlider, e(":not(.checkbox)"));
26
+
27
+ .ui.slider@{notVertical}@{notCheckbox} {
21
28
  width: 100%;
22
29
  padding: @padding;
23
30
  }
24
31
 
25
- .ui.slider:not(.checkbox) {
32
+ .ui.slider@{notCheckbox} {
26
33
  position: relative;
27
34
  }
28
35
 
29
- .ui.slider:not(.checkbox):focus {
36
+ .ui.slider@{notCheckbox}:focus {
30
37
  outline: 0;
31
38
  }
32
39
 
@@ -35,7 +42,7 @@
35
42
  z-index: 2;
36
43
  }
37
44
 
38
- .ui.slider:not(.vertical) .inner {
45
+ .ui.slider@{notVertical} .inner {
39
46
  height: @height;
40
47
  }
41
48
 
@@ -49,7 +56,7 @@
49
56
  background-color: @trackColor;
50
57
  }
51
58
 
52
- .ui.slider:not(.vertical) .inner .track {
59
+ .ui.slider@{notVertical} .inner .track {
53
60
  width: 100%;
54
61
  height: @trackHeight;
55
62
  top: @trackPositionTop;
@@ -62,7 +69,7 @@
62
69
  background-color: @trackFillColor;
63
70
  }
64
71
 
65
- .ui.slider:not(.vertical) .inner .track-fill {
72
+ .ui.slider@{notVertical} .inner .track-fill {
66
73
  height: @trackFillHeight;
67
74
  top: @trackPositionTop;
68
75
  left: 0;
@@ -80,12 +87,12 @@
80
87
  transition: @thumbTransition;
81
88
  }
82
89
 
83
- .ui.slider:not(.disabled) .inner .thumb:hover {
90
+ .ui.slider@{notDisabled} .inner .thumb:hover {
84
91
  cursor: @thumbHoverPointer;
85
92
  background: @thumbHoverBackground;
86
93
  }
87
94
 
88
- .ui.slider:not(.disabled):focus .inner .thumb {
95
+ .ui.slider@{notDisabled}:focus .inner .thumb {
89
96
  background: @thumbHoverBackground;
90
97
  }
91
98
 
@@ -98,7 +105,7 @@
98
105
  Disabled
99
106
  --------------- */
100
107
 
101
- .ui.disabled.slider:not(.checkbox) {
108
+ .ui.disabled.slider@{notCheckbox} {
102
109
  opacity: @disabledOpactiy;
103
110
  }
104
111
 
@@ -121,7 +128,7 @@
121
128
  right: 0;
122
129
  }
123
130
 
124
- .ui.reversed.slider:not(.vertical) .inner .thumb {
131
+ .ui.reversed.slider@{notVertical} .inner .thumb {
125
132
  left: auto;
126
133
  right: 0;
127
134
  }
@@ -198,21 +205,24 @@
198
205
  right: 0;
199
206
  }
200
207
 
201
- .ui.labeled.slider:not(.vertical) > .labels {
208
+ .ui.labeled.slider@{notVertical} > .labels {
202
209
  transform: translateY(-50%);
203
210
  }
204
211
 
205
212
  .ui.labeled.slider > .labels .label {
206
213
  display: inline-flex;
207
- padding: @labelPadding;
208
214
  position: absolute;
209
215
  transform: translate(-50%, -100%);
210
216
  white-space: nowrap;
217
+ &:not(.ui) {
218
+ padding: @labelPadding;
219
+ }
211
220
  }
212
-
213
- .ui.bottom.aligned.labeled.slider > .labels .label {
214
- bottom: 0;
215
- transform: translate(-50%, 100%);
221
+ & when (@variationSliderBottomAligned) {
222
+ .ui.bottom.aligned.labeled.slider > .labels .label {
223
+ bottom: 0;
224
+ transform: translate(-50%, 100%);
225
+ }
216
226
  }
217
227
  & when (@variationSliderTicked) {
218
228
  .ui.labeled.ticked.slider > .labels .label::after {
@@ -224,13 +234,39 @@
224
234
  top: 100%;
225
235
  left: 50%;
226
236
  }
227
- .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
228
- top: auto;
229
- bottom: 100%;
237
+ & when (@variationSliderBottomAligned) {
238
+ .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
239
+ top: auto;
240
+ bottom: 100%;
241
+ }
242
+ & when (@variationSliderUiLabel) {
243
+ .ui.labeled.slider.bottom.aligned .labels .ui.label {
244
+ margin-bottom: -@uiLabelMargin;
245
+ }
246
+ .ui.labeled.ticked.slider.bottom.aligned .labels .ui.label::after {
247
+ margin-bottom: @uiLabelMargin;
248
+ }
249
+ }
230
250
  }
231
251
  .ui.labeled.ticked.slider > .labels .halftick.label::after {
232
252
  height: (@labelHeight / 2);
233
253
  }
254
+ & when (@variationSliderInverted) {
255
+ .ui.inverted.labeled.ticked.slider > .labels .label::after {
256
+ background: @invertedLabelColor;
257
+ }
258
+ }
259
+ }
260
+ & when (@variationSliderUiLabel) {
261
+ .ui.labeled.slider@{notVertical}@{notBottom} .labels .ui.label {
262
+ margin-top: -@uiLabelMargin;
263
+ }
264
+ .ui.labeled.ticked.slider@{notVertical}@{notBottom} .labels .ui.label::after {
265
+ margin-top: @uiLabelMargin;
266
+ }
267
+ .ui.labeled.ticked.slider@{notVertical} > .labels .ui.label::after {
268
+ height: @uiLabelTickHeight;
269
+ }
234
270
  }
235
271
 
236
272
  & when (@variationSliderVertical) {
@@ -259,6 +295,9 @@
259
295
  width: (@labelHeight / 2);
260
296
  height: @labelWidth;
261
297
  }
298
+ .ui.labeled.vertical.slider@{notRight} > .labels .halftick.label::after {
299
+ margin-left: @verticalTickDistance;
300
+ }
262
301
 
263
302
  & when (@variationSliderReversed) {
264
303
  /* Vertical Reversed Labels */
@@ -266,6 +305,39 @@
266
305
  transform: translate(-100%, 50%);
267
306
  }
268
307
  }
308
+ & when (@variationSliderUiLabel) {
309
+ .ui.labeled.ticked.vertical.slider@{notRight} > .labels .ui.label::after {
310
+ margin-left: @verticalUiLabelMargin;
311
+ }
312
+ }
313
+ & when (@variationSliderRightAligned) {
314
+ .ui.labeled.vertical.right.aligned.slider > .labels {
315
+ transform: translateX(50%);
316
+ left: e(%("calc(100%% + %d)", @verticalTickDistance));
317
+ }
318
+ .ui.labeled.vertical.right.aligned.slider > .labels .label {
319
+ transform: translate(100%, -50%);
320
+ right: 100%;
321
+ }
322
+
323
+ .ui.labeled.vertical.right.aligned.slider > .labels .label::after {
324
+ right: 100%;
325
+ left: auto;
326
+ }
327
+ .ui.labeled.vertical.right.aligned.slider > .labels .halftick.label::after {
328
+ margin-right: @verticalTickDistance;
329
+ }
330
+ & when (@variationSliderReversed) {
331
+ .ui.labeled.vertical.reversed.right.aligned.slider > .labels .label {
332
+ transform: translate(100%, 50%);
333
+ }
334
+ }
335
+ & when (@variationSliderUiLabel) {
336
+ .ui.labeled.ticked.vertical.right.aligned.slider > .labels .ui.label::after {
337
+ margin-right: @verticalUiLabelMargin;
338
+ }
339
+ }
340
+ }
269
341
  }
270
342
  }
271
343
 
@@ -278,8 +350,8 @@
278
350
  transition: @hoverOpacityTransition;
279
351
  }
280
352
 
281
- .ui.hover.slider:not(.disabled):hover .inner .thumb,
282
- .ui.hover.slider:not(.disabled):focus .inner .thumb {
353
+ .ui.hover.slider@{notDisabled}:hover .inner .thumb,
354
+ .ui.hover.slider@{notDisabled}:focus .inner .thumb {
283
355
  opacity: @hoverVarHoverOpacity;
284
356
  }
285
357
 
@@ -296,6 +368,26 @@
296
368
  background-color: @transparentWhite;
297
369
  }
298
370
  }
371
+ & when (@variationSliderHighlight) {
372
+ .ui.labeled.slider > .active.labels .label {
373
+ transition: @highlightTransition;
374
+ }
375
+ & when (@variationSliderTicked) {
376
+ .ui.labeled.ticked.slider > .active.labels .active.label::after {
377
+ background: @trackFillColor;
378
+ }
379
+ & when (@variationSliderInverted) {
380
+ .ui.inverted.labeled.ticked.slider > .active.labels .active.label::after {
381
+ background: @invertedTrackFillColor;
382
+ }
383
+ }
384
+ }
385
+
386
+ .ui.labeled.ticked.slider > .active.labels .active.label::after,
387
+ .ui.labeled.slider > .active.labels .label:not(.active) {
388
+ opacity: @highlightOpacity;
389
+ }
390
+ }
299
391
 
300
392
  /* --------------
301
393
  Colors
@@ -338,6 +430,16 @@
338
430
  }
339
431
  }
340
432
  }
433
+ & when (@variationSliderHighlight) and (@variationSliderTicked) {
434
+ .ui.@{color}.labeled.ticked.slider > .active.labels .active.label::after {
435
+ background-color: @c;
436
+ }
437
+ & when (@variationSliderInverted) {
438
+ .ui.@{color}.inverted.labeled.ticked.slider > .active.labels .active.label::after {
439
+ background-color: @l;
440
+ }
441
+ }
442
+ }
341
443
 
342
444
  });
343
445
  }
@@ -386,20 +488,20 @@
386
488
  height: @@h;
387
489
  width: @@h;
388
490
  }
389
- .ui.slider.@{value}:not(.vertical) .inner {
491
+ .ui.slider.@{value}@{notVertical} .inner {
390
492
  height: @@h;
391
493
  }
392
- .ui.slider.@{value}:not(.vertical) .inner .track,
393
- .ui.slider.@{value}:not(.vertical) .inner .track-fill {
494
+ .ui.slider.@{value}@{notVertical} .inner .track,
495
+ .ui.slider.@{value}@{notVertical} .inner .track-fill {
394
496
  height: @@th;
395
497
  top: @@tp;
396
498
  }
397
499
  & when (@variationSliderLabeled) {
398
- .ui.@{value}.labeled.slider:not(.vertical) > .labels,
399
- .ui.@{value}.labeled.slider:not(.vertical) > .labels .label::after {
500
+ .ui.@{value}.labeled.slider@{notVertical} > .labels,
501
+ .ui.@{value}.labeled.slider@{notVertical} > .labels .label::after {
400
502
  height: @@lh;
401
503
  }
402
- .ui.@{value}.labeled.slider:not(.vertical) > .labels .halftick.label::after {
504
+ .ui.@{value}.labeled.slider@{notVertical} > .labels .halftick.label::after {
403
505
  height: (@@lh / 2);
404
506
  }
405
507
  }
@@ -746,7 +746,9 @@
746
746
  });
747
747
  }
748
748
  clearTimeout(module.performance.timer);
749
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 0);
749
+ module.performance.timer = setTimeout(function () {
750
+ module.performance.display();
751
+ }, 0);
750
752
  },
751
753
  display: function () {
752
754
  var
@@ -788,7 +788,9 @@
788
788
  });
789
789
  }
790
790
  clearTimeout(module.performance.timer);
791
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
791
+ module.performance.timer = setTimeout(function () {
792
+ module.performance.display();
793
+ }, 500);
792
794
  },
793
795
  display: function () {
794
796
  var